import { getCraftRecordList, getMaintainRecordList, getReagentOrderDetail, getRepairRecordList, getWorkOrderFlow, } from '@/services/TaskManage'; import { CloseCircleFilled } from '@ant-design/icons'; import { connect, useLocation, useParams, useRequest } from '@umijs/max'; import { Button, Col, Divider, Row, Steps } from 'antd'; import dayjs from 'dayjs'; import { useEffect, useState } from 'react'; import ReactZmage from 'react-zmage'; import SubTitle from '../components/SubTitle'; import { OrderStatus, OrderType } from '../constent'; import styles from './WorkOrderModal.less'; import { UnityAction } from '@/utils/utils'; const WorkOrderModal = (props) => { const { userList, dispatch } = props; const { projectID } = useParams(); const location = useLocation(); const queryParams = new URLSearchParams(location.search); const order_id = Number(queryParams.get('order_id')); const order_type = Number(queryParams.get('order_type')); const mandate_class = Number(queryParams.get('mandate_class')); const [orderInfo, setOrderInfo] = useState({}); const [additionalInfo, setAdditionalInfo] = useState({}); const [stepInfo, setStepInfo] = useState([]); const { run: getCraftDetail } = useRequest(getCraftRecordList, { manual: true, formatResult: (result) => { if (result?.data?.list) { const temp = result.data.list[0]; const tempDetail = { ...temp, CreateTime: dayjs(temp.start_time).format('YYYY-MM-DD HH:mm'), PlanTime: dayjs(temp.plan_end_time).format('YYYY-MM-DD HH:mm'), RepairTime: (temp.actual_end_time && dayjs(temp.actual_end_time).format('YYYY-MM-DD HH:mm')) || '-', Reason: mandate_class !== 2 ? temp.detail : renderReason(temp.detail), Repairman: userList.find((item) => item.ID === temp.checker_id) || '-', DispatchMan: userList.find((item) => item.ID === temp.operator_id) || '-', OrderStatus: OrderStatus.find((item) => item.value === temp.status) || '-', MandateImages: temp?.mandate_images?.length > 0 ? temp.mandate_images.map((item) => { console.log(item); if (item.type === 2) { return { src: item.val, }; } return { src: `data:image/png;base64,${item.val}`, }; }) : [], }; setOrderInfo(tempDetail); // 根据不同的工单类型查询工单操作详情 } }, }); const { run: getRepairDetail } = useRequest(getRepairRecordList, { manual: true, formatResult: (result) => { if (result?.data?.list) { const temp = result.data.list[0]; const tempDetail = { ...temp, CreateTime: dayjs(temp.CreateTime).format('YYYY-MM-DD HH:mm'), PlanTime: dayjs(temp.PlanTime).format('YYYY-MM-DD HH:mm'), RepairTime: (temp.RepairTime && dayjs(temp.RepairTime).format('YYYY-MM-DD HH:mm')) || '-', Reason: temp.Reason, Repairman: userList.find((item) => item.ID === temp.Repairman) || '-', DispatchMan: userList.find((item) => item.ID === temp.operator_id) || '-', OrderStatus: OrderStatus.find((item) => item.value === temp.AcceptanceStatus) || '-', MandateImages: temp?.mandate_images?.length > 0 ? temp.mandate_images.map((item) => { if (item.type === 2) { return { src: item.val, }; } return { src: `data:image/png;base64,${item.val}`, }; }) : [], }; setOrderInfo(tempDetail); } }, }); const { run: getMaintainDetail } = useRequest(getMaintainRecordList, { manual: true, formatResult: (result) => { if (result?.data?.list) { const temp = result.data.list[0]; const tempDetail = { ...temp, CreateTime: dayjs(temp.CreateTime).format('YYYY-MM-DD HH:mm'), PlanTime: dayjs(temp.PlanTime).format('YYYY-MM-DD HH:mm'), RepairTime: dayjs(temp.RepairTime).format('YYYY-MM-DD HH:mm') || '-', Reason: temp.Note, Repairman: userList.find((item) => item.ID === temp.MaintenancePerson) || '-', DispatchMan: userList.find( (item) => (item.ID = temp.Operators[0]?.Operator?.ID), ) || '-', OrderStatus: OrderStatus.find((item) => item.value === temp.Status) || '-', MandateImages: temp?.mandate_images?.length > 0 ? temp.mandate_images.map((item) => { if (item.type === 2) { return { src: item.val, }; } return { src: `data:image/png;base64,${item.val}`, }; }) : [], }; setOrderInfo(tempDetail); } }, }); const { run: getDosingOrder } = useRequest(getReagentOrderDetail, { manual: true, formatResult: (result) => { const temp = { ...result, CreateTime: result?.start_time?.Valid ? dayjs(result?.start_time?.Time).format('YYYY-MM-DD HH:mm') : '-', PlanTime: result?.plan_end_time?.Valid ? dayjs(result.plan_end_time.Time).format('YYYY-MM-DD HH:mm') : '-', RepairTime: result?.actual_end_time?.Valid ? dayjs(result.actual_end_time.Time).format('YYYY-MM-DD HH:mm') : '-', Reason: result.note, Repairman: '-', DispatchMan: userList.find((user) => user.ID === result.operator_id) || '-', OrderStatus: OrderStatus.find((status) => status.value === result.status) || '-', }; setOrderInfo(temp); setAdditionalInfo(temp); }, }); useRequest(getWorkOrderFlow, { defaultParams: [{ work_type: order_type, work_id: order_id }], formatResult(res) { if (res && res?.length) { setStepInfo(res); } }, }); const closePage = () => { // ToDo: send message to unity to close this page UnityAction.sendMsg('CloseWorkOrder'); }; const renderImg = () => { return ( {orderInfo?.MandateImages?.length > 0 && orderInfo?.MandateImages?.map((item, index) => { return ( ); })} ); }; useEffect(() => { switch (order_type) { case 1: case 4: case 6: getCraftDetail({ project_id: projectID, work_id: order_id }); break; case 2: getRepairDetail({ project_id: projectID, id: order_id }); break; case 3: getMaintainDetail({ project_id: projectID, id: order_id }); break; case 5: getDosingOrder(order_id); break; default: break; } }, []); return (
工单信息
); }; export default connect(({ taskUser }) => { return { userList: taskUser.userList, }; })(WorkOrderModal);