import { queryMandate } from '@/services/SmartOps'; import { UnityAction } from '@/utils/utils'; import { connect, useRequest } from '@umijs/max'; import { Button, Checkbox, Col, ConfigProvider, DatePicker, Divider, Form, Input, Modal, Row, Select, Spin, Table, message, } from 'antd'; import dayjs from 'dayjs'; import { useEffect, useState } from 'react'; import { MandateClass, MandateStatus, MandateType, OrderStatus, OrderType, ignoreReason, } from '../constent'; import styles from './MandateDetail.less'; import zhCN from 'antd/es/locale/zh_CN'; const MandateDetail = (props) => { const { projectID, mandateID, userList, ignoreTask, dispatchTask, autoHandleTask, dispatch, } = props; useEffect(() => { if (userList.length === 0) { dispatch({ type: 'taskUser/fetchUserList', payload: { project_id: projectID }, }); } }, []); const [mandateDetail, setMandateDetail] = useState(); const [mandateChild, setMandateChild] = useState([]); const [handledWorkOrder, setHandledWorkOrder] = useState([]); const [ignoreModalOpen, setIgnoreModalOpen] = useState(false); const [autoHandleModalOpen, setAutoHandleModalOpen] = useState(false); const [mandateSelectModalOpen, setMandateSelectModalOpen] = useState(false); const [selectedTask, setSelectedTask] = useState([]); const [dispatchModalOpen, setDispatchModalOpen] = useState(false); const columns = [ { title: '序号', key: 'index', width: '1rem', render: (_text, _record, index) => { return index + 1 + '、'; }, }, { title: '参数', dataIndex: 'Title', }, { title: '调整内容', dataIndex: 'Content', }, ]; const { run: getMandateInfo, loading } = useRequest(queryMandate, { manual: true, formatResult: (result) => { if (result?.data) { const tempMandate = { ...result.data, Status: MandateStatus.find( (item) => item.value === result.data.Status, ), MandateClass: MandateClass.find( (item) => item.value === result.data.MandateClass, ), MandateType: MandateType.find( (item) => item.value === result.data.MandateType, ), ResponsiblePeople: userList.find( (item) => item.ID === result.data.ResponsiblePeople, ), CreateTime: dayjs(result.data.CreateTime).format('YYYY-MM-DD HH:mm'), }; const workOrder = result.data.Records.map((item) => { return { ...item, CreateTime: dayjs(item.CreateTime).format('YYYY-MM-DD HH:mm'), Status: OrderStatus.find((status) => status.value === item.Status), RecordType: OrderType.find( (type) => type.value === item.RecordType, ), Responsible: userList.find((user) => user.ID === item.Responsible), }; }); setMandateDetail(tempMandate); setMandateChild(tempMandate.MandateChild); setHandledWorkOrder(workOrder); } }, }); // 打开指定弹窗 const openSpecifiedModal = (type) => { switch (type) { case 'ignore': setIgnoreModalOpen(true); break; case 'manual': UnityAction.sendMsg('menuItem', '工艺监控'); break; case 'auto': setAutoHandleModalOpen(true); break; case 'dispatch': setMandateSelectModalOpen(true); break; } }; // 忽略 const onIgnoreConfirm = async (reason) => { const result = await ignoreTask(mandateID, reason); if (result) { setIgnoreModalOpen(false); getMandateInfo({ mandate_id: mandateID }); } }; const onAutoHandleConfirm = async (pw) => { const result = await autoHandleTask(pw, mandateDetail); if (result) { setAutoHandleModalOpen(false); getMandateInfo({ mandate_id: mandateID }); } }; const onManualHandleConfirm = () => { console.log('manual handle Confirm'); }; const onMandateSelected = (records) => { // 打开派单Form弹窗将选中的任务进行派遣 if (records?.length === 0) { message.warning('请先选择要派遣的任务'); return; } setSelectedTask(records); setDispatchModalOpen(true); }; const onDispatchConfirm = async (value) => { const params = { ...value, m_id: Number(mandateID), mc_id: selectedTask.join(), plan_end_time: dayjs(value.plan_end_time).format('YYYY-MM-DD HH:mm:ss'), }; if (params.type === 5) { if (params.mc_id.split(',').length > 1) { message.warning('加药工单不可批量派遣'); return; } params.note = `${ mandateChild .find((mandate) => mandate.Id === Number(params.mc_id)) ?.Title?.split(':')[1] + ',请及时加药' }`; } else { params.note = mandateDetail.Summary; } const result = await dispatchTask(params); if (result) { setDispatchModalOpen(false); getMandateInfo({ mandate_id: mandateID }); } }; const openWorkOrderModal = (record) => { UnityAction.sendMsg( 'OpenWorkOrderModal', `order_id=${record.Id}&order_type=${record.RecordType.value}`, ); }; useEffect(() => { getMandateInfo({ mandate_id: mandateID }); }, []); return (
任务时间:{mandateDetail?.CreateTime || '-'} 任务类别:{mandateDetail?.MandateClass?.label || '-'} 任务状态:{' '} {mandateDetail?.Status.label} 任务负责人:{mandateDetail?.ResponsiblePeople?.CName || '-'}
任务内容: {handledWorkOrder?.length > 0 && } {handledWorkOrder?.map((item) => { return (
工单类型:{item?.RecordType?.label} 时间:{item?.CreateTime} 工单状态: {item?.Status?.label} 工单负责人:{item?.Responsible?.CName}
openWorkOrderModal(item)} > 查看
{/*
openWorkOrderModal(item)} > 关闭工单
*/}
); })} {mandateDetail?.Status?.value === 0 && } {mandateDetail?.Status?.value === 0 && (
{(mandateDetail?.MandateClass?.value === 1 || mandateDetail?.MandateClass?.value === 2) && mandateDetail?.Status?.value === 0 && ( <> )}
)} {/* 弹窗 */} setIgnoreModalOpen(false)} onOk={onIgnoreConfirm} /> setAutoHandleModalOpen(false)} onOk={onAutoHandleConfirm} /> setMandateSelectModalOpen(false)} selectedTask={selectedTask} setSelectedTask={setSelectedTask} onOk={onMandateSelected} list={mandateChild} /> { setDispatchModalOpen(false); }} onOK={onDispatchConfirm} /> ); }; export default connect(({ taskUser }) => { return { userList: taskUser.userList, }; })(MandateDetail); const IgnoreTaskModal = (params) => { const { open, onCancel, onOk } = params; const [ignoreReasonText, setIgnoreReasonText] = useState(''); const [selectedReason, setSelectedReason] = useState({}); const [showInput, setShowInput] = useState(false); const onReasonChange = (reason, option) => { if (reason !== 4) { setSelectedReason(option); setShowInput(false); } else { setShowInput(true); } }; const onReasonTextChange = (e) => { setIgnoreReasonText(e.target.value); }; const handleCancle = () => { setSelectedReason({}); setIgnoreReasonText(''); setShowInput(false); onCancel(); }; const confirmIgnore = () => { if (showInput) { if (!ignoreReasonText.length) { message.warning('请输入忽略理由'); } else { onOk(ignoreReasonText); } } else { if (selectedReason?.label) { onOk(selectedReason.label); } else { message.warning('请选择忽略理由'); } } }; return (
)}
); }; const AutoHandleModal = (props) => { const { open, onCancel, onOk } = props; const [automation, setAutomation] = useState(); const confirmAutoHandle = () => { if (automation.length) { onOk(automation); } else { message.warning('请输入口令'); } }; return (
{ { setAutomation(e.target.value); }} /> }
); }; const MandateSelectModal = (props) => { const { open, onCancel, list, onOk, selectedTask, setSelectedTask } = props; const [checkOptions, setCheckOptions] = useState([]); useEffect(() => { setCheckOptions( list.map((mandate, index) => { return { label: ( {`${index + 1}. ${mandate.Title}为${mandate.Content}`} ), value: mandate.Id, disabled: mandate.Status !== 0, }; }), ); }, [list]); const onDispatchClick = () => { onOk(selectedTask); }; const handleCheckChange = (checkedValue) => { setSelectedTask(checkedValue); }; return ( 取消 , , ]} > ); }; const DispatchTaskModal = (props) => { const { open, onCancel, onOK, userList } = props; const [form] = Form.useForm(); useEffect(() => { if (!open) { form.resetFields(); } }, [open]); const handleDispatchConfirm = async () => { const value = await form.validateFields().catch((err) => err.errorFields.forEach((item) => { message.error(item.errors); }), ); if (!value) { return; } onOK(value); }; return (
{ return { label: item.CName, value: item.ID, }; })} placeholder="请选择操作人" />
); };