/* 保养计划 * @Author: Li Hanlin * @Date: 2023-01-16 15:35:00 * @Last Modified by: Li Hanlin * @Last Modified time: 2023-02-16 17:45:48 */ import * as React from 'react'; import { useState, useMemo, useRef } from 'react'; import { Switch, Popconfirm, message } from 'antd'; import DrawerPro from '@/components/DrawerPro'; import AutoTable from '@/components/AutoTable'; import AutoTables from '@/components/AutoTable/mtable'; import PremButton from '@/components/PremButton'; import getcolumns from './columns'; import { useRequest } from 'ahooks'; import dayjs from 'dayjs'; import { doFetch } from '@/utils/doFetch'; import InitForm from '@/components/InitForm'; function Plan(props) { let actionRef = useRef(), formRef = useRef(); const [drawer, setdrawer] = useState({ open: false, }), [activeTabKey, setactiveTabKey] = useState('1'); const { run, loading, runAsync } = useRequest(doFetch, { manual: true, onSuccess: (res, params) => { if (res?.code == '0000') { actionRef?.current?.reload(); setdrawer((s) => ({ ...s, open: false, })); } }, }); const editDateColumns = useMemo(() => { const disabledDateOfDay = (current) => { // Can not select days before today and today return current && current < dayjs().endOf('day'); }; const disabledDateOfMonth = (current) => { // Can not select days before today and today return current && current < dayjs().startOf('month'); }; const disabledDate = (current) => { if (drawer?.item?.status == 1) { return current && current < dayjs().endOf('day'); } else { if ( dayjs(drawer?.item?.planCheckDate).endOf('day').valueOf() >= dayjs().endOf('day').valueOf() ) { return current && current <= dayjs(drawer?.item?.planCheckDate).endOf('day'); } else { return current && current < dayjs().endOf('day'); } } }; return [ { title: '计划信息', valueType: 'split', hideInForm: true, }, { title: '保养计划单号', dataIndex: 'maintainNo', key: 'maintainNo', hideInForm: true, }, { title: '设备编号', dataIndex: 'equipmentNo', key: 'equipmentNo', hideInForm: true, }, { title: '设备名称', dataIndex: 'equipmentName', key: 'equipmentName', hideInForm: true, }, { title: '保养类型', dataIndex: 'maintainTypeName', key: 'maintainTypeName', hideInForm: true, }, { title: '下次保养日期', dataIndex: 'nextMaintainDate', key: 'nextMaintainDate', hideInForm: true, }, { title: '调整信息', valueType: 'split', hideInForm: true, }, { title: '保养频次', hideInDescriptions: true, dataIndex: 'maintainFrequencyName', key: 'maintainFrequency', fieldProps: { disabled: true, }, formItemProps: { rules: [ { required: true, message: '此项为必填项', }, ], }, valueType: 'select', mode: 'radio', options: [ { label: '周', value: 0, }, { label: '月度', value: 1, }, { label: '季度', value: 2, }, { label: '半年', value: 3, }, { label: '年度', value: 4, }, ], }, { title: '计划类型', dataIndex: 'isCycle', hideInDescriptions: true, key: 'isCycle', fieldProps: { disabled: true, }, valueType: 'select', mode: 'radio', options: [ { label: '单次', value: 1, }, { label: '周期', value: 2, }, ], }, { title: '下次保养日期', dataIndex: 'nextMaintainDate', key: 'nextMaintainDate', formItemProps: { rules: [ { required: true, message: '此项为必填项', }, ], }, fieldProps: { disabledDate: disabledDateOfDay, }, valueType: 'date', hideInSearch: true, hideInDescriptions: true, hideInForm: { maintainFrequency: { reverse: [0], }, }, }, { title: '下次保养日期', dataIndex: 'nextMaintainDate', key: 'nextMaintainDate', formItemProps: { rules: [ { required: true, message: '此项为必填项', }, ], }, fieldProps: { disabledDate: disabledDateOfMonth, }, valueType: 'dateMonth', hideInForm: { maintainFrequency: [0], }, hideInSearch: true, hideInDescriptions: true, }, ]; }, [drawer?.item]); const detail = (text, row, _, action) => { return ( { setdrawer((s) => ({ ...s, open: true, item: row, title: '详情', val: 'detail', title: '详细信息', })); }, }} > 详情 ); }; const detailsColumns = useMemo(() => { const columnsc = [ { title: '保养项目', dataIndex: 'maintainItemName', key: 'maintainItemName', hideInForm: true, }, { title: '部位', dataIndex: 'maintainPosition', key: 'maintainPosition', hideInForm: true, }, { title: '保养方法', dataIndex: 'maintainWay', key: 'maintainWay', hideInForm: true, }, ]; if (drawer?.val == 'detail') { return [ { title: '计划信息', valueType: 'split', }, { title: '保养计划单号', dataIndex: 'maintainNo', key: 'maintainNo', }, { title: '创建时间', dataIndex: 'createTime', key: 'createTime', }, { title: '状态', dataIndex: 'maintainStatus', key: 'maintainStatus', render: (_, row) => { return row?.maintainStatus == 1 ? '未开始' : '执行中'; }, }, { title: '启用/停用', dataIndex: 'isStopStatusName', key: 'isStopStatusName', }, { title: '下次保养日期', dataIndex: 'nextMaintainDate', key: 'nextMaintainDate', span: activeTabKey == 1 ? 2 : 1, }, { title: '关单日期', dataIndex: 'customsTime', key: 'customsTime', hideInDescriptions: activeTabKey == 1 ? true : false, }, { title: '基本信息', valueType: 'split', }, { title: '设备编号', dataIndex: 'equipmentNo', key: 'equipmentNo', }, { title: '设备名称', dataIndex: 'equipmentName', key: 'equipmentName', }, { title: '设备型号', dataIndex: 'equipmentModelName', key: 'equipmentModelName', }, { title: '工厂名称', dataIndex: 'factoryName', key: 'factoryName', }, { title: '车间名称', dataIndex: 'shopName', key: 'shopName', }, { title: '保养类型', dataIndex: 'maintainTypeName', key: 'maintainTypeName', }, { title: '保养频次', dataIndex: 'maintainFrequencyName', key: 'maintainFrequencyName', }, { title: '计划类型', dataIndex: 'isCycle', key: 'isCycle', span: activeTabKey == 1 ? 3 : 3, render: (_, row) => { return row?.isCycle == 1 ? '单次' : '周期'; }, }, { title: '保养项目', valueType: 'split', }, { dataIndex: 'itemList', key: 'itemList', valueType: 'formList', colProps: { span: 24, }, columns, span: 24, render: (text, row) => { return ( ({ ...it, hideInSearch: true, }))} dataSource={row?.maintainItemList} /> ); }, }, { title: '关单信息', valueType: 'split', hideInDescriptions: drawer?.item?.status != 3 ? true : false, }, { title: '关单人员', dataIndex: 'shutUserName', key: 'shutUserName', hideInDescriptions: drawer?.item?.status != 3 ? true : false, }, { title: '强制关单时间', dataIndex: 'shutTime', key: 'shutTime', hideInDescriptions: drawer?.item?.status != 3 ? true : false, }, ]; } }, [drawer?.val, activeTabKey, drawer?.item?.id]); const close = (text, row, _, action) => { return ( { await runAsync({ url: '/maintain/umMaintainPlan/customsDeclaration', params: { id: row?.id }, }); }, }} btn={{ size: 'small', type: 'danger', }} > 关单 ); }; const remove = (text, row, _, action) => { return ( { run({ url: pathconfig?.delete || '/delete', params: { id: row?.id } }); }, }} btn={{ size: 'small', type: 'danger', }} > 删除 ); }; const editDate = (text, row, _, action) => { return ( { setdrawer((s) => ({ ...s, open: true, item: row, title: '调整日期', val: 'detailaddon', id: row?.id, from: 'tz', })); }, }} > 调整日期 ); }; const columns = useMemo(() => { let defcolumn = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.columns; let defpath = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.pathconfig ?? {}; return activeTabKey == 1 ? defcolumn.concat([ { title: '启用/停用', dataIndex: 'isStopStatus', key: 'isStopStatus', hideInForm: true, hideInSearch: true, valueType: 'switch', render: (text, row, _, action) => { //"1停用 2启用 *" return row.isStopStatus == 1 ? ( { if (row.isStopStatus == 1) { await runAsync({ url: '/maintain/umMaintainPlan/enableDeactivate', params: { id: row.id, isStopFlag: 2 }, }); } }} okText="确定" cancelText="取消" disabled={ !(row.maintainStatus == 1 || (row.maintainStatus == 2 && row.isCycle == 2)) } > ) : ( { if (checked) { setdrawer((s) => ({ ...s, open: true, item: row, title: '启用保养计划', val: 'detailaddon', id: row?.id, from: 'tq', })); } }} /> ); }, hideInDescriptions: true, }, { title: '操作', valueType: 'option', width: 150, render: (text, row, _, action) => [ (row.maintainStatus == 1 || (row.maintainStatus == 2 && row.isCycle == 2)) && editDate(text, row, _, action), row.maintainStatus == 2 && close(text, row, _, action), defpath?.enabledelete && row.maintainStatus == 1 && remove(text, row, _, action), ], }, ]) : defcolumn; }, [activeTabKey]); const pathconfig = useMemo(() => { let defpath = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.pathconfig ?? {}; return defpath; }, [activeTabKey]); return (
保养计划} columns={columns} path={pathconfig?.list || '/ngic-auth/sysUser/query/page'} actionRef={actionRef} pageextra={pathconfig?.enableadd ? 'add' : null} resizeable={false} addconfig={{ // access: 'sysDepartment_save', btn: { disabled: false, type: 'primary', onClick: () => { setdrawer((s) => ({ ...s, open: true, item: null, title: '新增', val: 'add', })); }, }, }} tabList={getcolumns()} activeTabKey={activeTabKey} onTabChange={(key) => { setactiveTabKey(key); }} /> { if (Object.keys(changedValues)[0] == 'maintainFrequency') { formRef?.current?.setFieldsValue({ paramList: [], }); } }} // detailData={drawer?.item} defaultFormValue={drawer?.item} params={{ id: drawer?.item?.id }} formRef={formRef} placement="right" onClose={() => { setdrawer((s) => ({ ...s, open: false, })); }} {...drawer} onFinish={async (vals) => { let flag = vals.paramList?.some((it) => !it.nextMaintainDate); if (flag) { message.warning('下次保养日期必填!'); return; } let params = JSON.parse(JSON.stringify(vals)); params.equipmentList = vals?.paramList?.map((it) => { return { id: it.id, nextMaintainDate: it.nextMaintainDate, }; }); delete params.paramList; if (drawer?.val == 'add') { await runAsync({ url: pathconfig?.add || '/add', params: { ...params } }); } else if (drawer?.val == 'edit') { await runAsync({ url: pathconfig?.edit || '/edit', params: { ...params, id: drawer?.item?.id }, }); } }} > { delete vals.isCycle; delete vals.maintainFrequency; if (drawer?.from == 'tq') { vals.isStopFlag = 1; await runAsync({ url: '/maintain/umMaintainPlan/enableDeactivate', params: { ...vals, id: drawer?.item?.id }, }); } else { await runAsync({ url: '/maintain/umMaintainPlan/adjustDate', params: { ...vals, id: drawer?.item?.id }, }); } }} />
); } export default Plan;