/* 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-02-09 19:56:18
*/
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 getcolumns from './columns';
import { useRequest } from 'ahooks';
import { doFetch } from '@/utils/doFetch';
import Addform from '@/components/Addform';
import { Menu, Dropdown, Button, message } from 'antd';
import InitForm from '@/components/InitForm';
import Detail from '@/components/RepaireDetail/Detail';
import { useModel } from '@umijs/max';
function Failure(props) {
const { initialState, setInitialState } = useModel('@@initialState');
let actionRef = useRef(),
containderef = useRef(),
formRef = useRef();
const [drawer, setdrawer] = useState({
open: false,
SpecName: null,
}),
[activeTabKey, setactiveTabKey] = useState('1');
const { run, loading } = useRequest(doFetch, {
manual: true,
onSuccess: (res, params) => {
if (res?.code == '0000') {
actionRef?.current?.reload();
setdrawer((s) => ({
...s,
open: false,
}));
}
},
});
useEffect(async () => {
let res = await doFetch({
url: '/base/pmBaseBusinessData/queryBySpecName',
params: { businessSpecName: 'TRANSFER_ORDER_DISTRIBUTE' },
});
setdrawer((s) => ({
...s,
SpecName: res?.data?.data,
}));
}, []);
const detail = (text, row, _, action) => {
return (
{
setdrawer((s) => ({
...s,
open: true,
item: row,
title: '详情',
val: 'detail',
title: '详细信息',
}));
},
}}
>
详情
);
};
// 完成外协
const CompleteOuts = () => {
return (
<>
{
let params = {
otherUnitsFinish: vals,
id: drawer?.item?.id,
};
let res = await doFetch({
url: '/repair/umOtherUnitsOrder/finishOtherUnits',
params,
});
if (res.code === '0000') {
message.success('成功完成外协!');
setdrawer((s) => ({
...s,
open: false,
}));
actionRef.current.reload();
}
}}
/>
>
);
};
// 重新指派
const Reassig = () => {
return (
<>
{
let params = {
otherUnitsAssistList: [{ assistUserId: vals?.otherUnitsAssistList }],
id: drawer?.item?.id,
};
let res = await doFetch({
url: '/repair/umOtherUnitsOrder/againOtherUnits',
params,
});
if (res.code === '0000') {
message.success('重新外协成功!');
setdrawer((s) => ({
...s,
open: false,
}));
actionRef.current.reload();
}
}}
/>
>
);
};
// 外协派单
const Wxpd = () => {
const columns = [
{
title: '外协人员',
dataIndex: 'otherUnitsAssistList',
key: 'otherUnitsAssistList',
valueType: 'select',
options: {
path: '/repair/umOtherUnitsOrder/selection',
params: { id: drawer?.item.id, permission: 'umOtherUnitsOrder:finishOtherUnits' },
},
formItemProps: { rules: [{ required: true, message: '此项为必填项' }] },
},
];
return (
<>
{
let params = {
otherUnitsAssistList: [{ assistUserId: vals?.otherUnitsAssistList }],
id: drawer?.item.id,
};
let res = await doFetch({
url: '/repair/umOtherUnitsOrder/dispatchById',
params,
});
if (res.code === '0000') {
message.success('派单成功!');
setdrawer((s) => ({
...s,
open: false,
}));
actionRef.current.reload();
}
}}
/>
>
);
};
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 (row?.status == '1') {
menulist = [
{
label: (
{
let params = {
id: row?.id,
};
let res = await doFetch({
url: '/repair/umOtherUnitsOrder/orderReceiving',
params,
});
if (res.code === '0000') {
message.success('接单成功!');
setdrawer((s) => ({
...s,
open: false,
}));
actionRef.current.reload();
}
},
}}
>
接单
),
key: '0',
},
];
} else if (row?.status == '3') {
menulist = [
{
label: (
{
setdrawer((s) => ({
...s,
open: true,
type: 'comouts',
item: {
id: row.id,
},
val: 'only',
title: '完成外协',
}));
},
}}
>
完成外协
),
key: '1',
},
];
} else if (row?.status == '2') {
menulist = [
{
label: (
{
setdrawer((s) => ({
...s,
open: true,
type: 'wxpd',
item: row,
val: 'only',
title: '派单',
}));
},
}}
>
派单
),
key: '0',
},
];
}
const menu = ;
return (
containderef.current}
>
);
};
// 未完成按钮
const unfinishBtn = (text, row, _, action) => {
if (row?.status == 1 || row?.status == 2) {
return (
{
run({ url: pathconfig?.delete || '/delete', params: { id: row?.id } });
},
}}
btn={{
size: 'small',
type: 'danger',
}}
>
删除
);
} else {
return (
{
setdrawer((s) => ({
...s,
item: {
...row,
trackAssistList: row?.trackAssistList ? row?.trackAssistList : [],
},
title: '重新指派',
type: 'Reassig',
open: true,
val: 'only',
}));
},
}}
>
重新指派
);
}
};
const columns = useMemo(() => {
let defcolumn = getcolumns(setdrawer, drawer?.SpecName?.businessData).filter(
(it) => it.key == activeTabKey,
)[0]?.columns;
//console.log(defcolumn);
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) => {
return [more(text, row, _, action)];
},
});
} else if (activeTabKey == '2') {
return defcolumn.concat({
title: '操作',
valueType: 'option',
width: 150,
render: (text, row, _, action) => {
return [unfinishBtn(text, row, _, action)];
},
});
} else if (activeTabKey == '3') {
return defcolumn;
}
}, [activeTabKey]);
const pathconfig = useMemo(() => {
let defpath = getcolumns(setdrawer).filter((it) => it.key == activeTabKey)[0]?.pathconfig ?? {};
return defpath;
}, [activeTabKey]);
const basecolumns = useMemo(() => {
if (activeTabKey == 3) {
return [
{
title: '创建人',
dataIndex: 'createUserName',
key: 'createUserName',
},
{
title: '创建时间',
dataIndex: 'createTime',
key: 'createTime',
},
{
title: '工单状态',
dataIndex: 'statusName',
key: 'statusName',
},
{
title: '来源工单',
dataIndex: 'dataSourcesNo',
key: 'dataSourcesNo',
},
{
title: '来源类型',
dataIndex: 'dataSourcesName',
key: 'dataSourcesName',
},
{
title: '最新外协人员',
dataIndex: 'newRepairUserName',
key: 'newRepairUserName',
},
{
title: '关单时间',
dataIndex: 'repairCloseTime',
key: 'repairCloseTime',
},
];
} else {
return [
{
title: '创建人',
dataIndex: 'createUserName',
key: 'createUserName',
},
{
title: '创建时间',
dataIndex: 'createTime',
key: 'createTime',
},
{
title: '工单状态',
dataIndex: 'statusName',
key: 'statusName',
},
{
title: '来源工单',
dataIndex: 'dataSourcesNo',
key: 'dataSourcesNo',
},
{
title: '来源类型',
dataIndex: 'dataSourcesName',
key: 'dataSourcesName',
},
{
title: '最新外协人员',
dataIndex: 'newRepairUserName',
key: 'newRepairUserName',
},
];
}
}, [activeTabKey]);
const selectType = (type) => {
switch (type) {
case 'add':
return (
);
case 'comouts':
return ;
case 'Reassig':
return ;
case 'wxpd':
return ;
case 'detail':
return (
);
default:
break;
}
};
return (
外协工单}
columns={columns}
path={pathconfig?.list || '/ngic-auth/sysUser/query/page'}
actionRef={actionRef}
pageextra={pathconfig?.enableadd ? 'add' : null}
resizeable={false}
addconfig={{
// access: 'sysDepartment_save',
name: '新建外协工单',
btn: {
disabled: false,
type: 'primary',
onClick: () => {
setdrawer((s) => ({
...s,
open: true,
item: {
isShutdown: 1,
},
title: '新建外协工单',
val: 'only',
type: 'add',
}));
},
},
}}
tabList={getcolumns()}
extraparams={activeTabKey == 1 ? { newUserId: initialState?.currentUser?.id } : null}
activeTabKey={activeTabKey}
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;