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;