import React, { useState, useEffect, useRef } from 'react'; import { Modal, Button, Calendar, Popover, Spin, Row, Col, message, } from 'antd'; import AddModal from './AddModal'; import WorkList from './WorkList'; import { connect } from 'dva'; import dayjs from 'dayjs'; import { useRequest, useModel } from '@umijs/max'; function List(props) { const { typeList, dispatch, loading, dataList, projectList, // currentUser, allType, depUserTree, depUserMap, } = props; const { initialState: { user }, } = useModel('@@initialState'); const [visible, setVisible] = useState(false); const [current, setCurrent] = useState({ date: dayjs(), list: [], }); const onAuth = (item, workload) => { if (workload == 0) return message.error('请上报有效工时'); Modal.confirm({ title: '提示', content: '是否上报审批?', okText: '确认', cancelText: '取消', onOk() { console.log(item); let params = [ { type_id: Number(item.type_id), // 父级id parent_type_id: allType[item.type_id].parent_id, data: [ { id: item.id, project_id: item.project_id, workload: workload, day: item.time, pay_dep_id: item.pay_dep_id, }, ], }, ]; dispatch({ type: 'workload/addAuthWorkHours', payload: params, callback: (list) => { let time = current.date.format('YYYY-MM-DD'); setCurrent({ ...current, list: list.filter((item) => item.time == time), }); }, }); }, }); }; const MultiAuth = () => { Modal.confirm({ title: '提示', content: '是否上报全部审批?', okText: '确认', cancelText: '取消', onOk() { let params = []; debugger; for (let i = 0; i < dataList.length; i++) { const element = dataList[i]; if (element.audit_state != 0) continue; var arr = params.find((arr) => arr.type_id == element.type_id); if (arr) { console.log(arr); arr.parent_type_id = allType[element.type_id].parent_id; arr.data.push({ id: element.id, project_id: element.project_id, workload: element.workload, day: element.time, pay_dep_id: element.pay_dep_id, }); } else { let data = []; data.push({ id: element.id, project_id: element.project_id, workload: element.workload, day: element.time, pay_dep_id: element.pay_dep_id, }); params.push({ type_id: Number(element.type_id), // 父级id parent_type_id: allType[element.type_id].parent_id, data: data, }); } } console.log(params); dispatch({ type: 'workload/addAuthWorkHours', payload: params, }); }, }); }; const currentDayAuth = () => { var list = current.list; Modal.confirm({ title: '提示', content: '是否上报本日审批?', okText: '确认', cancelText: '取消', onOk() { let params = []; for (let i = 0; i < list.length; i++) { const element = list[i]; if (element.audit_state != 0) continue; var arr = params.find((arr) => arr.type_id == element.type_id); if (arr) { console.log(arr); arr.parent_type_id = allType[element.type_id].parent_id; arr.data.push({ id: element.id, project_id: element.project_id, workload: element.workload, day: element.time, pay_dep_id: element.pay_dep_id, }); } else { let data = []; data.push({ id: element.id, project_id: element.project_id, workload: element.workload, day: element.time, pay_dep_id: element.pay_dep_id, }); params.push({ type_id: Number(element.type_id), // 父级id parent_type_id: allType[element.type_id].parent_id, data: data, }); } } console.log(params); dispatch({ type: 'workload/addAuthWorkHours', payload: params, }); }, }); }; const onSave = (item, workload) => { let params = [ { type_id: Number(item.type_id), comment: '', // 父级id parent_type_id: allType[item.type_id].parent_id, data: [ { id: item.id, project_id: Number(item.project_id), workload: workload, day: item.time, pay_dep_id: item.pay_dep_id, }, ], }, ]; dispatch({ type: 'workload/addWorkHours', payload: params, callback: (list) => { let time = current.date.format('YYYY-MM-DD'); setCurrent({ ...current, list: list.filter((item) => item.time == time), }); }, }); }; const onDelete = (item) => { Modal.confirm({ title: '提示', content: '确认删除工时?', okText: '确认', cancelText: '取消', onOk() { dispatch({ type: 'workload/deleteWorkHour', payload: { id: item.id }, callback: (list) => { let time = current.date.format('YYYY-MM-DD'); setCurrent({ ...current, list: list.filter((item) => item.time == time), }); }, }); }, }); }; const onAddWork = (data) => { dispatch({ type: 'workload/addWorkHours', payload: data, callback: (list) => { setVisible(false); let time = current.date.format('YYYY-MM-DD'); setCurrent({ ...current, list: list.filter((item) => item.time == time), }); }, }); }; const dateCellRender = (value, info) => { let current = value.format('YYYY-MM-DD'); // console.log(value); let list = dataList.filter( (item) => item.time == current && item.status == 0, ); // let total = list.reduce((total, item) => total + item.workload, 0); let waitTotal = 0, successTotal = 0; list.forEach((item) => { if (item.audit_state == 2) { successTotal += item.workload; } else { waitTotal += item.workload; } }); if (list.length == 0) return info.origin; let content = (
{list.map((item) => (
{getName(item)}-{item.TypeInfo?.name}:{item.workload}小时
))}
); return ( {successTotal !== 0 &&
已审批: {successTotal}
} {waitTotal !== 0 && (
待处理: {waitTotal}
)}
); }; const onChangeDate = (value) => { console.log(value); let time = value.format('YYYY-MM-DD'); if (current.date.format('YYYY-MM') != value.format('YYYY-MM')) { const s_date = value.format('YYYY-MM') + '-01'; const e_date = dayjs(s_date) .add(1, 'month') .add(-1, 'days') .format('YYYY-MM-DD'); dispatch({ type: 'workload/queryWorkHours', payload: { pageSize: 9999, user_id: user.ID, s_time: s_date + ' 00:00:00', e_time: e_date + ' 23:59:59', }, callback: (list) => { setCurrent({ date: value, list: list.filter((item) => item.time == time), }); }, }); } else { setCurrent({ date: value, list: dataList.filter((item) => item.time == time), }); } }; const getName = (item) => { let name; if (item.project_id == '0') { let pid = allType[item.type_id]?.parent_id; if (!pid) return ''; name = allType[pid].name; } else { name = item.Project.Name; } return name; }; useEffect(() => { if (!user.ID) return; // 查询分类以及工时 dispatch({ type: 'workload/queryWorkType', callback: () => { const s_date = current.date.format('YYYY-MM') + '-01'; const e_date = dayjs(s_date) .add(1, 'month') .add(-1, 'days') .format('YYYY-MM-DD'); dispatch({ type: 'workload/queryWorkHours', payload: { pageSize: 9999, user_id: user.ID, s_time: s_date + ' 00:00:00', e_time: e_date + ' 23:59:59', }, callback: (list) => { let time = current.date.format('YYYY-MM-DD'); setCurrent({ ...current, list: list.filter((item) => item.time == time), }); }, }); }, }); // 查询项目列表 // dispatch({ // type: 'workload/queryProject', // }); return () => { // 清空查询数据 dispatch({ type: 'workload/save', payload: { filter: {}, list: [], }, }); }; }, [user.ID]); console.log(current.date); // useEffect(() => { // onChangeDate(current.date); // }, [dataList]); useEffect(() => { dispatch({ type: 'workload/fetchDepV2', }); }, []); return (
{current.list.length > 0 && ( )}
setVisible(false)} depUserTree={depUserTree} />
); } export default connect(({ workload, user, loading }) => ({ dataList: workload.dataList, typeList: workload.typeList, allType: workload.allType, // currentUser: user.currentUser, loading: loading.models.workload, depUserTree: workload.depUserTree, depUserMap: workload.depUserMap, }))(List);