import React, { useEffect, useRef, useReducer } from "react";
import { Button, Tooltip, Row, Divider, Drawer } from "antd";
import AutoTable from "@/components/AutoTable";
import getPrem from "@/utils/getPrem"; //权限判断fn
import { useRequest } from "umi";
import defaultFields from "./fields";
import { doFetch } from "@/utils/doFetch";
import DrawInitForm from "@/components/DrawInitForm";
import Details from "@/components/Details";
import { gatherDetail } from "@/utils/detailTotalCard";
import Coltext from "@/components/Coltext";
import TableTransfer from "@/components/TableTransfer";
const initState = {
vs: false,
fields: {},
iftype: {},
curitem: {},
detail: {
dataSource: {},
totalCard: [],
},
visible: false,
vsc: false,
transferParams: {},
},
otherBasic = {
pmCollectionSiteStationNames: "工位",
};
function reducer(state, action) {
let { type } = action,
newState = {};
switch (type) {
case "add":
newState = {
...state,
vs: true,
iftype: {
title: "新增站点",
val: type,
},
fields: { ...action.fields },
};
break;
case "edit":
newState = {
...state,
vs: true,
iftype: {
title: "编辑站点",
val: type,
},
fields: { ...action.fields },
curitem: action.curitem,
};
break;
case "see":
newState = {
...state,
detail: {
dataSource: action.dataSource,
totalCard: [...gatherDetail],
},
visible: true,
};
break;
case "station":
newState = {
...state,
vsc: true,
transferParams: action.transferParams,
};
break;
case "close":
newState = {
vs: false,
fields: {},
iftype: {},
curitem: {},
detail: {
dataSource: {},
totalCard: [],
},
visible: false,
vsc: false,
transferParams: {},
};
break;
}
return newState;
}
const Gather = (props) => {
let actionRef = useRef(),
ChildRef = null;
function reload() {
actionRef?.current?.reload();
ChildRef?.onRefresh();
}
const { run, loading } = useRequest(doFetch, {
manual: true,
formatResult: (res) => res,
onSuccess: (result, params) => {
if (result.code == "0000") {
reload();
dispatch({ type: "close" });
}
},
}),
[state, dispatch] = useReducer(reducer, initState),
{ vs, fields, iftype, curitem, detail, visible, vsc, transferParams } =
state,
columns = [
{
title: "站点编号",
dataIndex: "collectionSiteCode",
key: "collectionSiteCode",
},
{
title: "站点名称",
dataIndex: "collectionSiteName",
key: "collectionSiteName",
render: (_, row) => {
return (
{
doFetch({
url: "/ngic-workmanship/pmCollectionSite/queryById",
params: { id: row.id },
}).then((res) => {
if (res.code == "0000") {
let dataSource = res?.data?.data ?? {};
dispatch({ type: "see", dataSource });
}
});
}}
>
{row.collectionSiteName}
);
},
},
{
title: "所属工厂",
dataIndex: "factoryName",
key: "factoryName",
},
{
title: "所属车间",
dataIndex: "shopName",
key: "shopName",
},
{
title: "所属产线",
dataIndex: "productionLineName",
key: "productionLineName",
},
{
title: "工序",
dataIndex: "workingProcedureName",
key: "workingProcedureName",
},
{
title: "工序类型",
dataIndex: "workingProcedureTypeName",
key: "workingProcedureTypeName",
options: [
{
label: "生产",
value: 1,
},
{
label: "检验",
value: 2,
},
{
label: "包装",
value: 3,
},
],
valueType: "select",
formItemProps: {
name: "workingProcedureType",
},
},
{
title: "采集方式",
dataIndex: "collectionModeName",
key: "collectionModeName",
options: [
{
label: "上下线",
value: 1,
},
{
label: "一次",
value: 2,
},
{
label: "投料",
value: 3,
},
],
valueType: "select",
formItemProps: {
name: "collectionMode",
},
},
{
title: "描述",
dataIndex: "remark",
key: "remark",
search: false,
},
{
title: "操作",
dataIndex: "option_dataindex",
key: "option_dataindex",
valueType: "option",
width: 255,
render: (text, row, _, action) => extraAction(text, row, _, action),
},
],
rightColumns = [
{
title: "工位编号",
dataIndex: "stationCode",
key: "stationCode",
},
{
title: "工位名称",
dataIndex: "stationName",
key: "stationName",
},
{
title: "工位类型",
dataIndex: "stationTypeName",
key: "stationTypeName",
search: false,
},
{
title: "能力",
dataIndex: "capacity",
key: "capacity",
search: false,
},
],
leftColumns = [
{
title: "工位编号",
dataIndex: "stationCode",
key: "stationCode",
search: false,
},
{
title: "工位名称",
dataIndex: "stationName",
key: "stationName",
search: false,
},
{
title: "所属车间",
dataIndex: "shopName",
key: "shopName",
search: false,
},
{
title: "所属工段",
dataIndex: "sectionName",
key: "sectionName",
search: false,
},
{
title: "所属产线",
dataIndex: "productionLineName",
key: "productionLineName",
search: false,
},
{
title: "工位类型",
dataIndex: "stationTypeName",
key: "stationTypeName",
search: false,
},
{
title: "能力",
dataIndex: "capacity",
key: "capacity",
search: false,
},
];
function extraAction(text, record, _, action) {
return [
getPrem("sysDepartment_save", action, "编辑工位", () => {
let params = {
leftColumns,
rightColumns,
rightPath: "/ngic-auth/sysStation/querySelectedList",
leftPath: "/ngic-workmanship/pmCollectionSiteStation/queryList",
toLeft: "/ngic-workmanship/pmCollectionSiteStation/save",
toRight: "/ngic-workmanship/pmCollectionSiteStation/deleteByIds",
leftCol: { span: 14 },
rightCol: { span: 9 },
leftExtraparams: { collectionSiteId: record.id },
rightExtraparams: {
collectionSiteId: record.id,
workingProcedureId: record.workingProcedureId,
shopId: record.shopId,
productionLineId: record.productionLineId,
},
rightRowName: "stationName",
leftRowName: "stationName",
leftClickParams: { collectionSiteId: record.id },
rightClickParams: { collectionSiteId: record.id },
leftTitle: "工位信息",
rightTitle: "待选工位",
leftRowKey: "stationId",
leftSelectRowKey: "stationIdList",
rightSelectRowKey: "stationIdList",
};
dispatch({ type: "station", transferParams: params });
}),
getPrem("sysDepartment_save", action, "修改", () => {
doFetch({
url: "/ngic-workmanship/pmCollectionSite/queryById",
params: { id: record.id },
}).then((res) => {
if (res.code == "0000") {
let data = res?.data?.data ?? {};
for (let i in defaultFields) {
defaultFields[i].value = data[i];
if (
i == "factoryId" ||
i == "shopId" ||
i == "productionLineId" ||
i == "workingProcedureId"
) {
if (data?.pmCollectionSiteStationList?.length > 0) {
defaultFields[i].disabled = true;
} else {
defaultFields[i].disabled = false;
}
}
}
let names =
data?.pmCollectionSiteStationList?.map((it) => {
return it.stationName;
}) ?? [],
pmCollectionSiteStationNames = names.join(",");
dispatch({
type: "edit",
fields: defaultFields,
curitem: { ...data, pmCollectionSiteStationNames },
});
}
});
}),
getPrem("sysDepartment_deleteById", action, "删除", null, {
title: "确认删除该站点?",
onConfirm: () => {
run({
url: "/ngic-workmanship/pmCollectionSite/deleteById",
params: { id: record.id },
});
},
}),
];
}
let saveData = (values, fn) => {
let newfields = JSON.parse(JSON.stringify(values));
//新增&修改
let difrid = iftype.val == "edit" ? { id: curitem.id } : {};
run({
url: "/ngic-workmanship/pmCollectionSite/save",
params: { ...newfields, ...difrid },
});
};
let extrarender = [
,
];
return (
(ChildRef = node)}
>
dispatch({ type: "close" })}
footer={false}
destroyOnClose={true}
fields={fields}
submitData={(values) => {
saveData(values);
}}
onChange={(changedValues, allValues) => {
//联动操作
}}
submitting={loading || !vs}
width={"50%"}
>
{iftype.val == "edit" && (
<>
{Object.keys(otherBasic).map((it) => {
return (
);
})}
>
)}
dispatch({ type: "close" })}
footer={false}
destroyOnClose={true}
width={"100%"}
{...detail}
>
dispatch({ type: "close" })}
footer={false}
destroyOnClose={true}
width={"100%"}
style={{ position: "absolute" }}
getContainer={false}
maskClosable={false}
>
);
};
export default Gather;