import React, { useEffect, useReducer, useRef } from "react";
import {
Button,
Drawer,
message,
Form,
Popconfirm,
Switch,
Tabs,
Card,
Row,
Col,
Tooltip,
Checkbox,
Divider,
} from "antd";
import AutoTable from "@/components/AutoTable";
import getPrem from "@/utils/getPrem"; //权限判断fn
import InitForm from "@/components/InitForm";
import { useRequest } from "umi";
import { waitFields, schedulingFields, tableFields } from "./fields";
import moment from "moment";
import { doFetch } from "@/utils/doFetch";
import {
productionLineSelectByShop,
shiftSelectByShopId,
} from "@/services/system";
const CheckboxGroup = Checkbox.Group;
const initState = {
schedulingLeftData: [],
schedulingCheckedData: [],
searchLoading: false,
indeterminate: false,
topfields: {},
bottomfields: {},
checkAll: false,
lastFields: {},
addloading: false,
};
function reducer(state, action) {
let { type } = action,
newState = {};
switch (type) {
case "changeLeftData":
newState = {
...state,
schedulingLeftData: action.schedulingLeftData,
};
break;
case "changeSearchLoading":
newState = {
...state,
searchLoading: action.searchLoading,
};
break;
case "checkItem":
newState = {
...state,
indeterminate: action.indeterminate,
schedulingCheckedData: action.schedulingCheckedData,
checkAll: action.checkAll,
};
break;
case "checkAllData":
newState = {
...state,
indeterminate: false,
schedulingCheckedData: action.schedulingCheckedData,
checkAll: action.checked,
};
break;
case "changetopfields":
newState = {
...state,
topfields: action.topfields,
};
break;
case "changebottomfields":
newState = {
...state,
bottomfields: action.bottomfields,
};
break;
case "changeaddloading":
newState = {
...state,
addloading: action.addloading,
};
break;
case "changelastFields":
newState = {
...state,
lastFields: action.lastFields,
};
break;
case "close":
newState = {
schedulingLeftData: [],
schedulingCheckedData: [],
searchLoading: false,
indeterminate: false,
topfields: {},
bottomfields: {},
checkAll: false,
lastFields: {},
addloading: false,
};
break;
}
return newState;
}
const Scheduling = ({ reset, schedulingVisible }) => {
const [state, dispatch] = useReducer(reducer, initState),
{
schedulingLeftData,
schedulingCheckedData,
topfields,
bottomfields,
searchLoading,
indeterminate,
checkAll,
lastFields,
addloading,
} = state,
[leftFormRef] = Form.useForm(),
[rightFormRef] = Form.useForm(),
[tableFormRef] = Form.useForm();
useEffect(() => {
dispatch({ type: "changetopfields", topfields: { ...waitFields } });
dispatch({
type: "changebottomfields",
bottomfields: { ...schedulingFields },
});
for (let i in tableFields) {
tableFields[i].value = [];
}
dispatch({ type: "changelastFields", lastFields: { ...tableFields } });
}, []);
const { run, loading } = useRequest(doFetch, {
manual: true,
formatResult: (res) => res,
onSuccess: (result, params) => {
if (result.code == "0000") {
reset && reset();
dispatch({ type: "close" });
}
},
});
return (
{}}
onChange={(changedValues, allValues) => {
for (let i in changedValues) {
if (i == "shopId") {
for (let j in schedulingFields) {
if (!changedValues[i]) {
if (j == "productionLineId" || j == "shiftId") {
schedulingFields[j].options = [];
rightFormRef.setFieldsValue({ [j]: "" });
}
} else {
if (j == "productionLineId") {
schedulingFields[j].options = {
database: productionLineSelectByShop,
params: {
shopId: changedValues[i],
},
};
}
if (j == "shiftId") {
schedulingFields[j].options = {
database: shiftSelectByShopId,
params: {
shopId: changedValues[i],
},
};
}
}
}
dispatch({
type: "changebottomfields",
bottomfields: { ...schedulingFields },
});
}
}
}}
actions={(form, submitBtn) => {
return (
);
}}
formRef={leftFormRef}
>
待排产计划
{
dispatch({
type: "checkAllData",
schedulingCheckedData: e.target.checked
? [...schedulingLeftData]
: [],
checked: e.target.checked,
});
}}
>
全选
it.id)}
style={{ width: "100%" }}
onChange={(list) => {
dispatch({
type: "checkItem",
indeterminate:
!!list.length && list.length < schedulingLeftData.length,
schedulingCheckedData:
list.length == 0
? []
: schedulingLeftData.filter(
(it) => list.indexOf(it.id) > -1
),
checkAll: list.length == schedulingLeftData.length,
});
}}
>
{schedulingLeftData.map((it) => {
return (
车间计划编号:{it.shopPlanNo}
物料:
{`${it.materieCode}-${it.materieName}-${it.productionUnitName}`}
未排数:{it.unscheduledQuantity}
计划时间:{`${it.planStartDate}~${it.planEndDate}`}
);
})}
{}}
onChange={(changedValues, allValues) => {
for (let i in allValues) {
tableFields["list"].value = [];
tableFormRef.setFieldsValue({ list: [] });
dispatch({
type: "changelastFields",
lastFields: { ...tableFields },
});
}
}}
actions={(form, submitBtn) => {
return (
);
}}
formRef={rightFormRef}
>
{!addloading && (
{}}
onChange={(changedValues, allValues) => {}}
actions={(form, submitBtn) => {
return (
);
}}
formRef={tableFormRef}
submitting={loading || !schedulingVisible}
>
)}
);
};
export default Scheduling;