import React, { Component } from 'react'; import { withRouter } from 'dva/router'; import moment from 'moment'; import store from 'store'; import axios from 'axios'; import { Modal, Alert, Button, Form, DatePicker, Upload, message, Table, Popconfirm, Tabs, Radio, } from "antd"; import ExistingShiftModal from './ExistingShiftModal'; import DeleteShiftsModal from './DeleteShiftsModal'; import PopconfirmContent from './PopconfirmContent'; import { getTaskGetTaskUnInsPerInfoList, taskComTaskPerShiftPagePerShift, taskComShiftPage, taskComTaskPerShiftListShift, deleteTaskShift } from '../../../services/api'; import LetterElment from '../../../components/LetterElment'; import NewShift from '../AttendanceManagement/NewShift'; import $nModal from '../../../utils//modal/nModal'; import $loading from '../../../utils/loading'; // import TaskDetailPersonnelPlacement from '../TaskDetail/TaskDetailPersonnelPlacement'; import '../Task.less'; const { MonthPicker } = DatePicker; const { TabPane } = Tabs; @withRouter export default class SchedulingModal extends Component { constructor(props, context) { super(props, context); this.state = { comTaskId: '', unInsPers: [], //未进行投保人员 existingShifts: [], //已有班次 addedShifts: [], //已添加的班次 shiftAliasAlphaMap: {}, //排班id所对应的班次名称 cycleList: [], //排班周期 allCycleDetailMap: {}, //排班周期所对应的班次名称 existingShiftShow: false, //添加已有班次模态框 addShiftVisible: false, //新增班次模态框 deleteVisible: false, //移除班次模态框 perShiftAllMap: [], //列表数据 columns: [], month: moment().format('YYYY-MM'), pagenav: { current: 1, pageSize: 10, showQuickJumper: true, showSizeChanger: true, showTotal: total => `总共 ${total} 条`, onShowSizeChange: (current, pageSize) => { const pagenav = Object.assign({}, this.state.pagenav); // pagenav.current = current; pagenav.current = 1; pagenav.pageSize = pageSize; this.setState({ pagenav }, () => this._getTableData()); }, onChange: (page, pageSize) => { const pagenav = Object.assign({}, this.state.pagenav); pagenav.current = page; pagenav.pageSize = pageSize; this.setState({ pagenav }, () => this._getTableData()); }, total: 0 }, } } componentWillReceiveProps(props) { if (props.visible && props.comTaskId && props.comTaskId != this.state.comTaskId) { this.setState({ pagenav: { ...this.state.pagenav, current: 1, pageSize: 10 } }, () => { this._init(); }); } } componentDidMount() { } _init = () => { //获取驻勤未进行投保人员列表 getTaskGetTaskUnInsPerInfoList({ comTaskId: this.props.comTaskId }).then(res => { if (res.data && res.data.length) { this.setState({ unInsPers: res.data }); } }); this._getAddedShifts(); this._getTableData(); } //获得某年某月的天数 _getDaysInOneMonth = (year, month) => { month = parseInt(month, 10); let d = new Date(year, month, 0); return d.getDate(); }; _getTableData = () => { const { month, pagenav } = this.state; const { comTaskId } = this.props; taskComTaskPerShiftPagePerShift({ month, comTaskId, key: '', pageSize: pagenav.pageSize, pageNumber: pagenav.current }).then(res => { if (res.data) { let perShiftAllMap = res.data.perShiftAllMap || []; const { perList } = res.data; this.setState({ perShiftAllMap, pagenav: { ...this.state.pagenav, total: perList.total } }, () => { this.setState({ columns: this._arrangeColumns() }); }); } }); } // 整理表格数据 _arrangeColumns = () => { const { perShiftAllMap } = this.state; const dataItem = perShiftAllMap[0]; const columns = []; columns.push({ title: '姓名', key: 'name', dataIndex: 'name', width: 130, fixed: 'left' }); if (!dataItem) { for (let key = 1; key <= 30; key++) { columns.push({ title: (key + '').slice(1) == '' ? '0' + key : key, key, dataIndex: key, width: 80 }); } } else { const dateArray = Object.keys(dataItem).filter(key => { const dateReg = /^\d{4}-\d{2}-\d{2}$/; return dateReg.test(key); }) // .sort((a, b) => { // const aDate = a.split('-')[2]; // const bDate = b.split('-')[2]; // if (!aDate) { // return -1; // } // if (!bDate) { // return 1; // } // return aDate - bDate; // }); dateArray.forEach(key => { columns.push({ title: key.split('-')[2], key: key + '', dataIndex: key + '', width: 80, render: (text, record, index) => { const { shiftDate, comTaskId } = this.props; const startDate = shiftDate.startDate ? moment(shiftDate.startDate.replace(/-/g, '/')).valueOf() : ''; const endDate = shiftDate.endDate ? moment(shiftDate.endDate.replace(/-/g, '/')).valueOf() : ''; const currentDate = moment(key.replace(/-/g, '/')).valueOf(); const nowDate = moment().subtract(1, 'days').valueOf(); const { isActive } = record; let disable = true; if ( isActive == 1 && currentDate > startDate && currentDate <= endDate && currentDate > nowDate ) { disable = false; } if (disable) { return (
有 {unInsPers.length} 个驻勤成员 未购买保险 ,执行驻勤可能存在风险,请点击【去投保】购买保险保障。
{ unInsPers.map((val, index) => ( {val} )) } > ), onOk: close => { this.props.history.push( `/insurancemanagement/enterpriseinsurance` ); close(); } }); }} > 查看名单{val.cycleAlias}
{val.cycleShiftName}