/* eslint-disable react-hooks/exhaustive-deps */ /* 维修工单 * @Author: Li Hanlin * @Date: 2022-12-02 11:41:03 * @Last Modified by: Li Hanlin * @Last Modified time: 2023-03-07 11:34:10 */ import * as React from 'react'; import { useState, useMemo, useRef, useEffect } from 'react'; import DrawerPro from '@/components/DrawerPro'; import AutoTable from '@/components/AutoTable'; import PremButton from '@/components/PremButton'; import { useRequest } from 'ahooks'; import { doFetch } from '@/utils/doFetch'; import { Dropdown, Menu, Button, message } from 'antd'; import InitForm from '@/components/InitForm'; import OrderHandle from '../platform/RepairOrderHandle'; import getcolumns from './columns'; import Detail from '@/components/RepaireDetail/Detail'; import { useModel } from '@umijs/max'; import EditTable from '@/components/InitForm/EditTable'; function Failure(props) { let actionRef = useRef(), formRef = useRef(); const { initialState, error, refresh, setInitialState } = useModel('@@initialState'); console.log(initialState); const [drawer, setdrawer] = useState({ open: false, SpecName: null, }), [activeTabKey, setactiveTabKey] = useState('1'); useEffect(async () => { let res = await doFetch({ url: '/base/pmBaseBusinessData/queryBySpecName', params: { businessSpecName: 'ORDER_RECEIVING_DISTRIBUTE', }, }); setdrawer((s) => ({ ...s, SpecName: res?.data?.data, })); }, []); const { run, loading } = useRequest(doFetch, { manual: true, onSuccess: (res, params) => { if (res?.code == '0000') { actionRef?.current?.reload(); setdrawer((s) => ({ ...s, open: false, })); } }, }); const detail = (text, row, _, action) => { return ( { setdrawer((s) => ({ ...s, open: true, item: row, title: '详情', val: 'detail', title: '详细信息', })); }, }} > 详情 ); }; const edit = (text, row, _, action) => { return ( { setdrawer((s) => ({ ...s, open: true, item: row, title: '编辑', val: 'edit', })); }, }} > 编辑 ); }; const remove = (text, row, _, action) => { return ( { run({ url: pathconfig?.delete || '/delete', params: { id: row?.id } }); }, }} btn={{ size: 'small', type: 'danger', }} > 删除 ); }; // 更多 const More = (text, row, _, action) => { let menulist = []; if (drawer?.SpecName?.businessData !== '2') { // 接单模式 if (row?.status == '2') { menulist = [ { label: ( { let repairContent = ''; if (row?.faultDetailId) { doFetch({ url: '/repair/umFaultSettingDetail/queryById', params: { id: row?.faultDetailId, }, }).then((res) => { setdrawer((s) => ({ ...s, open: true, type: 'wcwx', item: { ...row, repairType: '101', isShutdown: 1, repairContent: res?.data?.data?.faultSolution, repairAssistList: row?.repairAssistList.map((it) => it?.assistUserId), }, val: 'only', title: '完成维修', })); }); } setdrawer((s) => ({ ...s, open: true, type: 'wcwx', item: { ...row, isShutdown: 1, repairType: '101', repairAssistList: row?.repairAssistList.map((it) => it?.assistUserId), }, val: 'only', title: '完成维修', })); }, }} > 完成维修 ), key: '1', }, { label: ( { setdrawer((s) => ({ ...s, open: true, type: 'zzz', item: row, val: 'only', title: '转追踪', })); }, }} > 转追踪 ), key: '2', }, { label: ( { setdrawer((s) => ({ ...s, open: true, type: 'zwx', item: row, val: 'only', title: '转外协', })); }, }} > 转外协 ), key: '3', }, { label: ( { setdrawer((s) => ({ ...s, open: true, type: 'zd', item: row, val: 'only', title: '转单', })); }, }} > 转单 ), key: '4', }, { label: ( { setdrawer((s) => ({ ...s, open: true, type: 'td', item: row, val: 'only', title: '退单', })); }, }} > 退单 ), key: '5', }, ]; } else if (row?.status == '6') { menulist = [ { label: ( { setdrawer((s) => ({ ...s, open: true, type: 'zzsh', item: { ...row, resultFlag: '1' }, val: 'only', title: '追踪审核', })); }, }} > 追踪审核 ), key: '7', }, ]; } else if (row?.status == '4') { menulist = [ { label: ( { setdrawer((s) => ({ ...s, open: true, type: 'wxsh', item: { ...row, resultFlag: '1' }, val: 'only', title: '外协审核', })); }, }} > 外协审核 ), key: '8', }, ]; } else if (row?.status == '7') { menulist = [ { label: ( { setdrawer((s) => ({ ...s, open: true, type: 'tdsh', item: { ...row, resultFlag: '1' }, val: 'only', title: '退单审核', })); }, }} > 退单审核 ), key: '9', }, ]; } else if (row?.status == '3') { menulist = [ { label: ( { setdrawer((s) => ({ ...s, open: true, type: 'xgyz', item: { ...row, resultFlag: '1' }, val: 'only', title: '效果验证', })); }, }} > 效果验证 ), key: '6', }, ]; } else { menulist = [ { label: ( { setdrawer((s) => ({ ...s, open: true, type: 'jd', item: row, val: 'only', title: '接单', })); }, }} > 接单 ), key: '0', }, ]; } } else { if (row?.status == '2') { menulist = [ { label: ( { let repairContent = ''; if (row?.faultDetailId) { doFetch({ url: '/repair/umFaultSettingDetail/queryById', params: { id: row?.faultDetailId, }, }).then((res) => { setdrawer((s) => ({ ...s, open: true, type: 'wcwx', item: { ...row, repairType: '101', isShutdown: 1, repairContent: res?.data?.data?.faultSolution, repairAssistList: row?.repairAssistList.map((it) => it?.assistUserId), }, val: 'only', title: '完成维修', })); }); } setdrawer((s) => ({ ...s, open: true, type: 'wcwx', item: { ...row, repairType: '101', isShutdown: 1, repairAssistList: row?.repairAssistList.map((it) => it?.assistUserId), }, val: 'only', title: '完成维修', })); }, }} > 完成维修 ), key: '1', }, { label: ( { setdrawer((s) => ({ ...s, open: true, type: 'zzz', item: row, val: 'only', title: '转追踪', })); }, }} > 转追踪 ), key: '2', }, { label: ( { setdrawer((s) => ({ ...s, open: true, type: 'zwx', item: row, val: 'only', title: '转外协', })); }, }} > 转外协 ), key: '3', }, { label: ( { setdrawer((s) => ({ ...s, open: true, type: 'zd', item: row, val: 'only', title: '转单', })); }, }} > 转单 ), key: '4', }, { label: ( { setdrawer((s) => ({ ...s, open: true, type: 'td', item: row, val: 'only', title: '退单', })); }, }} > 退单 ), key: '5', }, ]; } else if (row?.status == '6') { menulist = [ { label: ( { setdrawer((s) => ({ ...s, open: true, type: 'zzsh', item: { ...row, resultFlag: '1' }, val: 'only', title: '追踪审核', })); }, }} > 追踪审核 ), key: '7', }, ]; } else if (row?.status == '4') { menulist = [ { label: ( { setdrawer((s) => ({ ...s, open: true, type: 'wxsh', item: { ...row, resultFlag: '1' }, val: 'only', title: '外协审核', })); }, }} > 外协审核 ), key: '8', }, ]; } else if (row?.status == '7') { menulist = [ { label: ( { setdrawer((s) => ({ ...s, open: true, type: 'tdsh', item: row, val: 'only', title: '退单审核', })); }, }} > 退单审核 ), key: '9', }, ]; } else if (row?.status == '3') { menulist = [ { label: ( { setdrawer((s) => ({ ...s, open: true, type: 'xgyz', item: { ...row, resultFlag: '1' }, val: 'only', title: '效果验证', })); }, }} > 效果验证 ), key: '6', }, ]; } else { menulist = [ { label: ( { setdrawer((s) => ({ ...s, open: true, type: 'pd', item: row, val: 'only', title: '派单', })); }, }} > 派单 ), key: '0', }, ]; } } const menu = ; return row?.status == '5' ? ( ) : ( containderef.current} > ); }; // ++++++下拉菜单+++++++ // 接单 const Recevive = () => { return ( ); }; // 派单 const Disp = () => { return ( ); }; // 完成维修 const Finishrepair = () => { const columns_fsmjxh = [ { title: '线边库', dataIndex: 'stockName', key: 'stockName', editable: false, }, { title: '备件料号', dataIndex: 'sparePartNo', key: 'sparePartNo', span: 3, editable: false, }, { title: '备件名称', dataIndex: 'sparePartName', key: 'sparePartName', span: 3, editable: false, }, { title: '供应商编号', dataIndex: 'supplierNo', key: 'supplierNo', span: 3, editable: false, }, { title: '供应商名称', dataIndex: 'supplierName', key: 'supplierName', span: 3, editable: false, }, { title: '可用数量', dataIndex: 'usedStock', key: 'usedStock', search: false, span: 3, editable: false, }, { title: (
消耗数量 *
), search: false, dataIndex: 'operateNum', valueType: 'digit', fieldProps: { precision: 3, }, key: 'operateNum', }, ]; const columns = [ { title: '故障类型', dataIndex: 'faultSettingId', key: 'faultSettingId', formItemProps: { rules: [{ required: true, message: '此项为必填项' }] }, valueType: 'select', options: { path: '/repair/umFaultSetting/selected/queryList', params: { equipmentId: drawer?.item.equipmentId, }, }, }, { title: '故障名称', dataIndex: 'faultDetailId', key: 'faultDetailId', valueType: 'select', formItemProps: { rules: [{ required: true, message: '此项为必填项' }] }, options: { path: '/repair/umFaultSettingDetail/selected/queryList', linkParams: { faultSettingId: '', }, }, }, { title: '故障原因', dataIndex: 'faultCause', formItemProps: { rules: [{ required: true, message: '此项为必填项' }] }, key: 'faultCause', valueType: 'textarea', formItemProps: { rules: [ { required: true, message: '此项为必填项', }, ], }, }, { title: '开始维修时间', dataIndex: 'repairTime', key: 'repairTime', fieldProps: { disabled: true, }, }, { title: '维修类型', dataIndex: 'repairType', key: 'repairType', formItemProps: { rules: [{ required: true, message: '此项为必填项' }] }, valueType: 'select', options: { path: '/base/sysInitData/queryChildrenSelection', params: { parentId: 1, }, }, formItemProps: { rules: [ { required: true, message: '此项为必填项', }, ], }, }, { title: '是否停机维修', dataIndex: 'isShutdown', formItemProps: { rules: [{ required: true, message: '此项为必填项' }] }, key: 'isShutdown', valueType: 'radio', options: [ { value: 1, label: '是', }, { value: 2, label: '否', }, ], formItemProps: { rules: [ { required: true, message: '此项为必填项', }, ], }, }, { title: '维修内容', dataIndex: 'repairContent', key: 'repairContent', formItemProps: { rules: [{ required: true, message: '此项为必填项' }] }, valueType: 'textarea', formItemProps: { rules: [ { required: true, message: '此项为必填项', }, ], }, }, { title: '协助维修人员', dataIndex: 'repairAssistList', key: 'repairAssistList', valueType: 'select', options: { path: '/repair/umRepairOrder/selection', params: { id: drawer?.item.id, permission: 'umRepairOrder:completeRepair' }, }, fieldProps: { placeholder: '请选择', showSearch: true, mode: 'multiple', }, }, { title: '非寿命件消耗', dataIndex: 'supplierList', key: 'supplierList', valueType: 'formSelectList', colProps: { span: 24, }, span: 3, columns: columns_fsmjxh, hideInSearch: true, hideInTable: true, path: '/sparepart/lineStock/queryConsumeStock', rowName: 'supplierList', rowSelection: { type: 'checkbox', getCheckboxProps: (record) => ({ disabled: record.isAsh == '1', }), }, }, { title: '寿命件更换', dataIndex: 'lifePieceStockUseList', key: 'lifePieceStockUseList', valueType: 'Expandable', colProps: { span: 24, }, columns: [ { title: '备件料号', dataIndex: 'sparePartNo', key: 'sparePartNo', }, { title: '备件名称', dataIndex: 'sparePartName', key: 'sparePartName', }, { title: '供应商编号', dataIndex: 'supplierNo', key: 'supplierNo', search: false, }, { title: '供应商名称', dataIndex: 'supplierName', search: false, key: 'supplierName', }, { title: '安装部位', dataIndex: 'installPosition', key: 'installPosition', }, { title: '安装数量', dataIndex: 'installNum', search: false, key: 'installNum', }, { title: '下次更换日期', dataIndex: 'nextReplaceDate', key: 'nextReplaceDateList', valueType: 'dateRange', }, ], path: '/sparepart/lifePieceAccount/queryPageByEquipment', expandablePath: '/sparepart/lineStock/queryReplaceStockAll', extraparams: { equipmentId: drawer?.item?.equipmentId }, }, ]; return ( <> { if (Object.keys(changedValues)[0] == 'faultDetailId') { doFetch({ url: '/repair/umFaultSettingDetail/queryById', params: { id: changedValues?.faultDetailId, }, }).then((res) => { formRef?.current?.setFieldsValue({ repairContent: res?.data?.data.faultSolution, }); }); } }} onFinish={async (vals) => { console.log(vals); let params = { repairComplete: { faultType: vals.faultSettingId, faultName: vals.faultDetailId, faultCause: vals.faultCause, repairType: vals.repairType, isShutdown: vals.isShutdown, repairContent: vals.repairContent, }, id: drawer?.item.id, repairAssistList: vals?.repairAssistList?.map((it) => ({ assistUserId: it })), lineStockUseList: vals?.supplierList?.map((it) => ({ lineStockId: it?.id, operateNum: it?.operateNum, })), lifePieceStockUseList: vals?.lifePieceStockUseList, }; let res = await doFetch({ url: '/repair/umRepairOrder/completeRepair', params, }); if (res.code === '0000') { message.success('操作成功!'); setdrawer((s) => ({ ...s, open: false, })); actionRef.current.reload(); } }} {...drawer} /> ); }; // 转追踪 const Toracking = () => { return ( <> { let params = { repairInfo: { ...vals }, id: drawer?.item.id, }; let res = await doFetch({ url: '/repair/umRepairOrder/transferTracking', params, }); if (res.code === '0000') { message.success('操作成功!'); setdrawer((s) => ({ ...s, open: false, })); actionRef?.current?.reload(); } }} {...drawer} /> ); }; // 转外协 const Toout = () => { return ( <> { let params = { repairInfo: { ...vals }, id: drawer?.item.id, }; let res = await doFetch({ url: '/repair/umRepairOrder/transferOutsourcing', params, }); if (res.code === '0000') { message.success('操作成功!'); setdrawer((s) => ({ ...s, open: false, })); actionRef.current.reload(); } }} {...drawer} /> ); }; // 转单 const Transfer = () => { return ( <> { let params = { repairInfo: { ...vals }, id: drawer?.item.id, }; let res = await doFetch({ url: '/repair/umRepairOrder/documentTransfer', params, }); if (res.code === '0000') { message.success('操作成功!'); setdrawer((s) => ({ ...s, open: false, })); actionRef.current.reload(); } }} {...drawer} /> ); }; // 退单 const Singelback = () => { return ( <> { let params = { repairInfo: { ...vals }, id: drawer?.item.id, }; let res = await doFetch({ url: '/repair/umRepairOrder/chargeback', params, }); if (res.code === '0000') { message.success('操作成功!'); setdrawer((s) => ({ ...s, open: false, })); actionRef.current.reload(); } }} {...drawer} /> ); }; // 效果验证 const EffectCheck = () => { return ( <> { let params = { repairProcess: { reviewerResult: '', remark: vals?.remark, }, resultFlag: vals?.resultFlag, id: drawer?.item.id, }; let res = await doFetch({ url: '/repair/umRepairOrder/completeRepairValidate', params, }); if (res.code === '0000') { message.success('操作成功!'); setdrawer((s) => ({ ...s, open: false, })); actionRef.current.reload(); } }} {...drawer} /> ); }; // 追踪审核 const Rackaudit = () => { return ( <> { let params = { repairProcess: { reviewerResult: '', remark: vals?.remark }, resultFlag: vals.resultFlag, id: drawer?.item.id, }; let res = await doFetch({ url: '/repair/umRepairOrder/transferTrackingAudit', params, }); if (res.code === '0000') { message.success('操作成功!'); setdrawer((s) => ({ ...s, open: false, })); actionRef.current.reload(); } }} {...drawer} /> ); }; // 外协审核 const Outaudit = () => { return ( <> { let params = { repairProcess: { reviewerResult: '', remark: vals?.remark }, resultFlag: vals.resultFlag, id: drawer?.item.id, }; let res = await doFetch({ url: '/repair/umRepairOrder/transferAudit', params, }); if (res.code === '0000') { message.success('操作成功!'); setdrawer((s) => ({ ...s, open: false, })); actionRef.current.reload(); } }} {...drawer} /> ); }; // 退单审核 const Backaudit = () => { return ( <> { let params = { repairProcess: { reviewerResult: '', remark: vals?.remark }, resultFlag: vals.resultFlag, id: drawer?.item.id, }; let res = await doFetch({ url: '/repair/umRepairOrder/chargebackAudit', params, }); if (res.code === '0000') { message.success('操作成功!'); setdrawer((s) => ({ ...s, open: false, })); actionRef.current.reload(); } }} {...drawer} /> ); }; const basecolumns = useMemo(() => { if (activeTabKey == 3) { return [ { title: '创建时间', dataIndex: 'createTime', key: 'createTime', }, { title: '工单状态', dataIndex: 'statusName', key: 'statusName', }, { title: '报修单号', dataIndex: 'repairNo', key: 'repairNo', }, { title: '最新维修人员', dataIndex: 'newRepairUserName', key: 'newRepairUserName', }, { title: '关单时间', dataIndex: 'repairCloseTime', key: 'repairCloseTime', }, ]; } else { return [ { title: '创建时间', dataIndex: 'createTime', key: 'createTime', }, { title: '工单状态', dataIndex: 'statusName', key: 'statusName', }, { title: '报修单号', dataIndex: 'repairNo', key: 'repairNo', }, { title: '最新维修人员', dataIndex: 'newRepairUserName', key: 'newRepairUserName', }, ]; } }, [activeTabKey]); const selectType = { jd: , pd: , wcwx: , zzz: , zwx: , zd: , td: , xgyz: , zzsh: , wxsh: , tdsh: , detail: ( ), }; const columns = useMemo(() => { let defcolumn = getcolumns(setdrawer, drawer?.SpecName?.businessData).filter( (it) => it.key == activeTabKey, )[0]?.columns; let defpath = getcolumns(setdrawer, drawer?.SpecName?.businessData).filter( (it) => it.key == activeTabKey, )[0]?.pathconfig ?? {}; if (activeTabKey == 1) { return defcolumn.concat({ title: '操作', valueType: 'option', width: 150, render: (text, row, _, action) => [More(text, row, _, action)], }); } else { return defcolumn; } }, [activeTabKey, drawer]); const pathconfig = useMemo(() => { let defpath = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.pathconfig ?? {}; return defpath; }, [activeTabKey]); const containderef = useRef(); return (
维修工单} columns={columns} path={pathconfig?.list || '/ngic-auth/sysUser/query/page'} actionRef={actionRef} resizeable={false} tabList={getcolumns()} activeTabKey={activeTabKey} extraparams={activeTabKey == 1 ? { newUserId: initialState?.currentUser?.id } : null} onTabChange={(key) => { setactiveTabKey(key); }} /> { setdrawer((s) => ({ ...s, open: false, })); }} {...drawer} onFinish={(vals) => { if (drawer?.val == 'add') { run({ url: pathconfig?.add || '/add', params: { ...vals } }); } else if (drawer?.val == 'edit') { run({ url: pathconfig?.edit || '/edit', params: { ...vals, id: drawer?.item?.id } }); } }} > {selectType[drawer?.type]}
); } export default Failure;