From aecc30be4f72119829bf7f607aa6031e15fc3c0c Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期三, 30 七月 2025 08:01:28 +0800 Subject: [PATCH] 调拔单功能优化 --- rsf-admin/src/page/orders/transfer/ManualCreate.jsx | 104 ++++++++++++++++++++++++++++++++------------------- 1 files changed, 65 insertions(+), 39 deletions(-) diff --git a/rsf-admin/src/page/orders/transfer/ManualCreate.jsx b/rsf-admin/src/page/orders/transfer/ManualCreate.jsx index ada8d0f..f774644 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, @@ -35,25 +37,31 @@ } from '@mui/material'; import ConfirmationNumberIcon from '@mui/icons-material/ConfirmationNumber'; import DialogCloseButton from "../../components/DialogCloseButton.jsx"; +import WarehouseSelect from "../../components/WarehouseSelect.jsx"; import { DataGrid, useGridApiRef } from '@mui/x-data-grid'; 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); @@ -69,38 +77,38 @@ setTableData([...tabelData]); } + const handleSubmit = async () => { setFinally() setDisabled(true) - if (orderId === 0) { + if (orderId == null || orderId == undefined) { const parmas = { - "orders": formData, + "transfer": formData, "items": tabelData, } + 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(`/transfer/items/update`, parmas); if (res?.data?.code === 200) { setOpen(false); - refresh(); - resetData() } else { notify(res.data.msg); } } setDisabled(false) + refresh(); + }; const handleSuccess = async (data) => { @@ -117,6 +125,20 @@ 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) => ({ @@ -128,32 +150,39 @@ 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.type} - variant="filled" - onChange={(e) => handleChange(e.target.value, 'type')} - dictTypeCode="sys_transfer_type" - required - /> - </Grid> - <Grid item md={2}> - <ReferenceInput reference="warehouseAreas" source="orgAreaName"> - <AutocompleteInput optionText="name" label="table.field.transfer.orgAreaName" /> - </ReferenceInput> - </Grid> - <Grid item md={2}> - <ReferenceInput reference="warehouseAreas" source="tarAreaName"> - <AutocompleteInput optionText="name" label="table.field.transfer.tarAreaName" /> - </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)} > @@ -315,24 +344,22 @@ }, { field: 'anfme', - headerName: translate('table.field.outStockItem.anfme') + "*", + headerName: translate('table.field.outStockItem.anfme'), type: 'number', minWidth: 100, flex: 1, editable: true, valueFormatter: (val) => val < 0 ? 0 : val, - headerClassName: "custom", }, { field: 'splrCode', - headerName: translate('table.field.outStockItem.splrCode') + "*", + headerName: translate('table.field.outStockItem.splrCode'), minWidth: 100, flex: 1, editable: true, renderEditCell: (params) => ( <SelectInputSplrCodeEditCell {...params} /> ), - headerClassName: "custom", }, { field: 'splrName', @@ -343,10 +370,9 @@ renderEditCell: (params) => ( <SelectInputSplrNameEditCell {...params} /> ), - headerClassName: "custom", }, { - field: 'splrBatch', + field: 'batch', headerName: translate('table.field.outStockItem.splrBatch'), minWidth: 100, flex: 1, @@ -461,7 +487,7 @@ onRowSelectionModelChange={handleSelectionChange} selectionModel={selectedRows} sx={{ - height: 610, + height: 580, '& .MuiDataGrid-cell input': { border: '1px solid #ccc' }, -- Gitblit v1.9.1