当前位置: 首页 > news >正文

react+antd --- 日期选择器,动态生成日期表格表头

先看一下效果---有当前月的日期

技术:


     1: react

     2:antd-UI库 --  table

     3:moment--时间处理库

代码效果:

import { Button, DatePicker, Table } from 'antd';
import { useEffect, useState } from 'react';
import moment from 'moment';function Club() {const [selectedMonth, setSelectedMonth] = useState(moment()); // 月份选择const [monthColumnsList, setMonthColumnsList] = useState([]); // 月份列数据// 切换月份选择器const handleChangeMonth = (date, datestr) => {setSelectedMonth(date);};useEffect(() => {const daysInMonth = selectedMonth.daysInMonth();const startOfMonth = selectedMonth.clone().startOf('month');console.log(daysInMonth, 'daysInMonth')console.log('startOfMonth', startOfMonth)const monthList = Array.from({ length: daysInMonth }, (_, i) =>startOfMonth.clone().add(i, 'days'));console.log('monthList', monthList)// 格式化日期,以当前月的日期作为表头const columns = monthList.map((item, index) => ({width: '80px',title: item.format('MM-DD'),dataIndex: item.format('MM-DD').toLowerCase() + '_interviewed',align: 'center',//进行右边固定 最后一个形成--------------------------fixed: monthList.length - 1 == index ? 'right' : '',}));setMonthColumnsList(columns);}, [selectedMonth]);useEffect(() => {console.log(monthColumnsList, 'monthColumnsList');}, [monthColumnsList])// 每日过程列表const columns = [{//进行左边边固定fixed: 'left',width: '140px',title: '实际约面数',dataIndex: 'account_id',align: 'center',},...monthColumnsList];//可以根据后端传入的数据进行修改const dataList = [// {//     key: '1',//     account_id: 2,// },// {//     key: '2',//     account_id: 2,// }];return (<div>//时间选择器<DatePickerpicker='month'defaultValue={selectedMonth}onChange={handleChangeMonth}style={{ width: 150 }}allowClear={false}/><Tablescroll={{ x: 1898 }}columns={columns}dataSource={dataList}/></div>);
}export default Club;

 这个是展示当前周的情况--可滚动

代码如下

 
import { Button, DatePicker, Table } from 'antd';
import { useEffect, useState } from 'react';
import moment from 'moment';function Club() {const [selectedMonth, setSelectedMonth] = useState(moment()); // 月份选择const [monthColumnsList, setMonthColumnsList] = useState([]); // 月份列数据// 切换月份选择器const handleChangeMonth = (date, datestr) => {setSelectedMonth(date);};const EnumWeekdays = {Monday: '周一',Tuesday: '周二',Wednesday: '周三',Thursday: '周四',Friday: '周五',Saturday: '周六',Sunday: '周日'}useEffect(() => {// const daysInMonth = selectedMonth.daysInMonth();const daysInMonth = 7;// const startOfMonth = selectedMonth.clone().startOf('month');const startOfMonth = selectedMonth.clone().startOf('week');const monthList = Array.from({ length: daysInMonth }, (_, i) =>startOfMonth.clone().add(i, 'days'));// 保存当前地区const currentLocale = moment.locale();// 设置地区为英文moment.locale('en');const columns = monthList.map((item, index) => (console.log('item.format]', item.format('dddd')),{title: `${item.format('MM-DD')}(${EnumWeekdays[item.format('dddd')]})`,dataIndex: item.format('dddd').toLowerCase() + '_interviewed',width: '80px',fixed: monthList.length - 1 == index ? 'right' : '',}))// huifeng: 恢复当前地区moment.locale(currentLocale);// 格式化日期,以当前月的日期作为表头// const columns = monthList.map((item, index) => ({//     width: '80px',//     fixed: monthList.length - 1 == index ? 'right' : '',//     title: item.format('MM-DD'),//     dataIndex: item.format('MM-DD').toLowerCase() + '_interviewed',//     align: 'center',// }));setMonthColumnsList(columns);}, [selectedMonth]);useEffect(() => {console.log(monthColumnsList, 'monthColumnsList');}, [monthColumnsList])// 每日过程列表const columns = [{fixed: 'left',width: '140px',title: '实际约面数',dataIndex: 'account_id',align: 'center',},...monthColumnsList];const dataList = [// {//     key: '1',//     account_id: 2,// },// {//     key: '2',//     account_id: 2,// }];return (<div><DatePickerpicker='month'defaultValue={selectedMonth}onChange={handleChangeMonth}style={{ width: 150 }}allowClear={false}/><Tablescroll={{ x: 1898 }}columns={columns}dataSource={dataList}/></div>);
}export default Club;

可以直接复制-------粘到自己的项目-----------------------------------------------------------------------------------

http://www.lryc.cn/news/348674.html

相关文章:

  • webgl入门-js与着色器间的数据传输
  • springmvc异常处理
  • 可拖动、连线的React画布组件有哪些? 官网分别是什么?
  • 专访 Staynex 创始人 Yuen Wong:酒店行业的变革者
  • 最新版Ceph( Reef版本)块存储简单对接k8s(上集)
  • 稳态大面积光伏组件IV测试太阳光模拟器
  • 编写HTTP协议代理的一些知识(源码)
  • LabVIEW天然气压缩因子软件设计
  • GCP谷歌云有什么数据库类型,该怎么选择
  • 项目经理之路:裁员与内卷下的生存策略
  • MWM触摸屏工控机维修TEM-EV0 EN00-Z312yy-xx
  • idm下载到99.99%不动了 idm突然不下载了 idm下载到最后没速度咋办 IDM下载后没网了是怎么回事
  • 设计模式-07 设计模式-观察者模式(Observer Pattern)
  • 戒烟网站|基于SSM+vue的戒烟网站系统的设计与实现(源码+数据库+文档)
  • 研发管理之认识DevOps
  • Spring MVC(五) 文件上传
  • Redis——Redis数据分片的三种算法
  • 【专利】一种日志快速分析方法、设备、存储介质
  • HFSS学习-day5-边界条件
  • spring Aop使用示例
  • MySQL-InnoDB数据存储结构
  • 【吊打面试官系列】Java高并发篇 - 什么是 Java Timer 类?如何创建一个有特定时间间隔的任务?
  • Spring生命周期深度解析
  • 基于 Windows 的记事本简单功能开发及部署发布--迭代2.0
  • Java lambda
  • 【智能算法】河马优化算法(HO)原理及实现
  • spring基础使用(案例)
  • 相同的树LeetCode
  • Vue中如何抽取部分代码到单独的ts文件
  • 山东齐鲁文化名人颜廷利:朱郭有文才,曲高‘菏’寡星光路