From c229a84e0a8eb68c974e6d23fa1296e064025d76 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期二, 29 七月 2025 17:09:00 +0800 Subject: [PATCH] 调拔单功能优化 --- rsf-admin/src/page/orders/transfer/ManualCreate.jsx | 124 ++++++++++++++++++++++++++++------------- 1 files changed, 84 insertions(+), 40 deletions(-) diff --git a/rsf-admin/src/page/orders/transfer/ManualCreate.jsx b/rsf-admin/src/page/orders/transfer/ManualCreate.jsx index 5251ed0..a74fe34 100644 --- a/rsf-admin/src/page/orders/transfer/ManualCreate.jsx +++ b/rsf-admin/src/page/orders/transfer/ManualCreate.jsx @@ -17,6 +17,8 @@ useNotify, Form, useCreateController, + SimpleForm, + useRefresh, } from 'react-admin'; import { Dialog, @@ -33,65 +35,79 @@ Grid, Box, } from '@mui/material'; -import DialogCloseButton from "../../components/DialogCloseButton.jsx"; import ConfirmationNumberIcon from '@mui/icons-material/ConfirmationNumber'; -import CreateBySelectMats from "./CreateBySelectMats.jsx"; +import DialogCloseButton from "../../components/DialogCloseButton.jsx"; +import WarehouseSelect from "../../components/WarehouseSelect.jsx"; import { DataGrid, useGridApiRef } from '@mui/x-data-grid'; -import { Add, Edit, Delete } from '@mui/icons-material'; import ConfirmButton from "../../components/ConfirmButton"; +import CreateBySelectMats from "./CreateBySelectMats.jsx"; +import { Add, Edit, Delete } from '@mui/icons-material'; import DictSelect from "../../components/DictSelect"; +import { useFormContext, useWatch } from "react-hook-form"; import { minHeight, padding } from "@mui/system"; import SaveIcon from '@mui/icons-material/Save'; import request from '@/utils/request'; +import _, { set } from 'lodash'; const ManualCreate = (props) => { const { open, setOpen, orderId } = props; const tableRef = useRef(); const notify = useNotify(); + const refresh = useRefresh(); const translate = useTranslate(); const [tabelData, setTableData] = useState([]); const [disabled, setDisabled] = useState(false); const [selectedRows, setSelectedRows] = useState([]); const [createDialog, setCreateDialog] = useState(false); const [formData, setFormData] = useState({}); + const [list, setList] = useState([]); + const handleClose = (event, reason) => { if (reason !== "backdropClick") { setOpen(false); } }; + const setFinally = () => { + const rows = tableRef.current.state.editRows; + for (const key in rows) { + const find = tabelData.find(item => item.matnrId === +key); + find.anfme = rows[key].anfme.value; + } + setTableData([...tabelData]); + } + + const handleSubmit = async () => { setFinally() setDisabled(true) - if (asnId === 0) { + if (orderId == null || orderId == undefined) { const parmas = { - "orders": formData, + "transfer": formData, "items": tabelData, } - const res = await request.post(`/outStock/items/save`, parmas); + + const res = await request.post(`/transfer/items/save`, parmas); if (res?.data?.code === 200) { setOpen(false); - refresh(); - resetData() } else { notify(res.data.msg); } } else { const parmas = { - "orders": formData, + "transfer": formData, "items": tabelData, } - const res = await request.post(`/outStock/items/update`, parmas); + const res = await request.post(`/transfer/items/update`, parmas); if (res?.data?.code === 200) { setOpen(false); - refresh(); - resetData() } else { notify(res.data.msg); } } setDisabled(false) + refresh(); }; @@ -109,36 +125,64 @@ notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } }); }; + const getWarehouse = async () => { + const res = await request.post('/warehouseAreas/page'); + if (res?.data?.code === 200) { + setList(res.data.data.records.map((item) => { + return { + id: item.id, + name: item.name + }; + })); + } else { + notify(res.data.msg); + } + } + + + const handleChange = (value, name) => { + setFormData((prevData) => ({ + ...prevData, + [name]: value + })); + }; + return ( <> <Box sx={{ padding: 1 }}> - <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}> - <Form defaultValues={formData}> - <Grid container spacing={2}> - <Grid item md={2}> - <DictSelect - label={translate("table.field.transfer.type")} - value={formData.wkType} - variant="filled" - group='2' - onChange={(e) => handleChange(e.target.value, 'wkType')} - dictTypeCode="sys_business_type" - required - /> - </Grid> - <Grid item md={2}> - <ReferenceInput reference="warehouseAreas" source="name"> - <AutocompleteInput optionText="name" label="table.field.transfer.orgAreaName" /> - </ReferenceInput> - </Grid> - <Grid item md={2}> - <ReferenceInput reference="warehouseAreas" source="name"> - <AutocompleteInput optionText="name" label="table.field.transfer.orgAreaName" /> - </ReferenceInput> - </Grid> + <SimpleForm toolbar={false}> + <Grid container spacing={2}> + <Grid item md={2}> + <DictSelect + label={translate("table.field.transfer.type")} + value={formData.type} + variant="filled" + onChange={(e) => handleChange(e.target.value, 'type')} + dictTypeCode="sys_transfer_type" + required + /> </Grid> - </Form> - </Box> + <Grid item md={2}> + <WarehouseSelect + value={formData.orgAreaId} + variant="filled" + dictTypeCode="warehouse" + required + onChange={(e) => handleChange(e.target.value, 'orgAreaId')} + label={translate("table.field.transfer.orgAreaName")} /> + </Grid> + <Grid item md={2}> + <WarehouseSelect + label={translate("table.field.transfer.tarAreaName")} + value={formData.tarAreaId} + dictTypeCode="warehouse" + variant="filled" + required + onChange={(e) => handleChange(e.target.value, 'tarAreaId')} + /> + </Grid> + </Grid> + </SimpleForm> <Box sx={{ mt: 2 }}> <Stack direction="row" spacing={2} sx={{ justifyContent: "flex-end" }}> <Button variant="contained" onClick={() => setCreateDialog(true)} > @@ -331,7 +375,7 @@ headerClassName: "custom", }, { - field: 'splrBatch', + field: 'batch', headerName: translate('table.field.outStockItem.splrBatch'), minWidth: 100, flex: 1, @@ -446,7 +490,7 @@ onRowSelectionModelChange={handleSelectionChange} selectionModel={selectedRows} sx={{ - height: 610, + height: 580, '& .MuiDataGrid-cell input': { border: '1px solid #ccc' }, -- Gitblit v1.9.1