From 48b45b5e63f9925c63c951093c4cf596d89683a2 Mon Sep 17 00:00:00 2001 From: vincentlu <t1341870251@gmail.com> Date: 星期一, 11 八月 2025 10:34:22 +0800 Subject: [PATCH] # --- rsf-admin/src/page/orders/transfer/ManualCreate.jsx | 182 +++++++++++++++++++++++++++------------------ 1 files changed, 110 insertions(+), 72 deletions(-) diff --git a/rsf-admin/src/page/orders/transfer/ManualCreate.jsx b/rsf-admin/src/page/orders/transfer/ManualCreate.jsx index 5251ed0..2990e16 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 { useFormContext, useWatch } from "react-hook-form"; +import CreateBySelectMats from "./CreateBySelectMats.jsx"; +import { Add, Edit, Delete } from '@mui/icons-material'; import DictSelect from "../../components/DictSelect"; 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 [formData, setFormData] = useState({ type: '1', orgAreaId: null, tarAreaId: null }); + 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,39 +125,78 @@ 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 newAddClick = () => { + if (formData.orgAreaId == null || formData.orgAreaId == undefined) { + notify("鍘熷簱鍖轰笉鑳戒负绌猴紒锛�", { type: 'error' }) + return + } + if (formData.tarAreaId == null || formData.tarAreaId == undefined) { + notify("鐩爣搴撳尯涓嶈兘涓虹┖锛侊紒", { type: 'error' }) + return + } + console.log(formData); + + setCreateDialog(true) + } + + + 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" + /> </Grid> - </Form> - </Box> + <Grid item md={2}> + <WarehouseSelect + value={formData.orgAreaId} + variant="filled" + dictTypeCode="warehouse" + 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" + 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)} > + <Button variant="contained" onClick={newAddClick} > {translate('common.action.newAddMats')} </Button> <ConfirmButton label={"toolbar.delete"} variant="outlined" color="error" onConfirm={handleDeleteItem} /> @@ -151,7 +206,7 @@ <TransferTableView tabelData={tabelData} setTableData={setTableData} - asnId={orderId} + orderId={orderId} selectedRows={selectedRows} setSelectedRows={setSelectedRows} tableRef={tableRef}> @@ -163,9 +218,12 @@ </Button> </Toolbar> <CreateBySelectMats + data={tabelData} + queryForm={formData} open={createDialog} setOpen={setCreateDialog} - data={tabelData} + selectedRows={selectedRows} + setSelectedRows={setSelectedRows} setData={setTableData} /> </Box> @@ -300,24 +358,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', @@ -328,18 +384,10 @@ renderEditCell: (params) => ( <SelectInputSplrNameEditCell {...params} /> ), - headerClassName: "custom", }, { - field: 'splrBatch', + field: 'batch', headerName: translate('table.field.outStockItem.splrBatch'), - minWidth: 100, - flex: 1, - editable: true, - }, - { - field: 'poCode', - headerName: translate('table.field.outStockItem.poDetlCode'), minWidth: 100, flex: 1, editable: true, @@ -420,6 +468,11 @@ tableRef.current = useGridApiRef(); + const tableIds = tabelData.map(map => map.id); + // setSelectedRows(tableIds); + // // console.log(selectedRows); + + return ( <Box> <DataGrid @@ -427,12 +480,6 @@ rows={tabelData} columns={columns} disableRowSelectionOnClick - getRowId={(row) => row.matnrId ? row.matnrId : row.id} - disableColumnFilter - disableColumnSelector - disableColumnSorting - disableMultipleColumnsSorting - processRowUpdate={processRowUpdate} initialState={{ pagination: { paginationModel: { @@ -443,24 +490,15 @@ pageSizeOptions={[15, 25, 50, 100]} editMode="row" checkboxSelection + rowSelectionModel={tableIds} onRowSelectionModelChange={handleSelectionChange} - selectionModel={selectedRows} sx={{ - height: 610, + height: 580, '& .MuiDataGrid-cell input': { border: '1px solid #ccc' }, }} /> - {/* <Box sx={{ - padding: 2, - position: 'absolute', - right: 1 - }}> - <Button variant="contained" onClick={() => handleSubmit()} startIcon={<SaveIcon/>} > - {translate('toolbar.confirm')} - </Button> - </Box> */} </Box> ); }; -- Gitblit v1.9.1