From e05481bd5cc560f3287ceb60f1f771329e27ae4d Mon Sep 17 00:00:00 2001 From: verou <857149855@qq.com> Date: 星期二, 08 四月 2025 11:05:24 +0800 Subject: [PATCH] feat:收货单新增完成和关闭 --- rsf-admin/src/page/asnOrder/AsnOrderModal.jsx | 77 ++++++++++++++++++++++++++++---------- 1 files changed, 56 insertions(+), 21 deletions(-) diff --git a/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx b/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx index 05eb781..90e2269 100644 --- a/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx +++ b/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx @@ -51,19 +51,22 @@ import SaveIcon from '@mui/icons-material/Save'; import request from '@/utils/request'; import { Add, Edit, Delete } from '@mui/icons-material'; -import _ from 'lodash'; -import { DataGrid } from '@mui/x-data-grid'; +import _, { set } from 'lodash'; +import { DataGrid, useGridApiRef } from '@mui/x-data-grid'; import DictionarySelect from "../components/DictionarySelect"; import DictSelect from "../components/DictSelect"; const AsnOrderModal = (props) => { - const { open, setOpen, asnId } = props; + const { open, setOpen, asnId, billReload } = props; const translate = useTranslate(); const notify = useNotify(); const refresh = useRefresh(); + const [disabled, setDisabled] = useState(false) const [createDialog, setCreateDialog] = useState(false); + + const tableRef = useRef(); useEffect(() => { if (open && asnId !== 0) { @@ -96,7 +99,22 @@ })); }; + 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) { const parmas = { "orders": formData, @@ -107,6 +125,7 @@ if (res?.data?.code === 200) { setOpen(false); refresh(); + billReload?.current() } else { notify(res.data.msg); } @@ -119,11 +138,13 @@ if (res?.data?.code === 200) { setOpen(false); refresh(); + billReload?.current() + } else { notify(res.data.msg); } } - + setDisabled(false) }; @@ -158,6 +179,8 @@ const [selectedRows, setSelectedRows] = useState([]); + + const handleDeleteItem = () => { const newTableData = _.filter(tabelData, (item) => !selectedRows.includes(item.matnrId)); setTableData(newTableData); @@ -172,7 +195,7 @@ aria-hidden fullWidth disableRestoreFocus - maxWidth="md" // 'xs' | 'sm' | 'md' | 'lg' | 'xl' + maxWidth="lg" // 'xs' | 'sm' | 'md' | 'lg' | 'xl' > <DialogTitle id="form-dialog-title" sx={{ position: 'sticky', @@ -224,12 +247,12 @@ </Box> <Box sx={{ mt: 2 }}> - <AsnOrderModalTable tabelData={tabelData} setTableData={setTableData} asnId={asnId} selectedRows={selectedRows} setSelectedRows={setSelectedRows} ></AsnOrderModalTable> + <AsnOrderModalTable tabelData={tabelData} setTableData={setTableData} asnId={asnId} selectedRows={selectedRows} setSelectedRows={setSelectedRows} tableRef={tableRef}></AsnOrderModalTable> </Box> </DialogContent> <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}> <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }} > - <Button onClick={handleSubmit} variant="contained" startIcon={<SaveIcon />}> + <Button disabled={disabled} onClick={handleSubmit} variant="contained" startIcon={<SaveIcon />}> {translate('toolbar.confirm')} </Button> </Toolbar> @@ -249,7 +272,7 @@ export default AsnOrderModal; -const AsnOrderModalTable = ({ tabelData, setTableData, asnId, selectedRows, setSelectedRows }) => { +const AsnOrderModalTable = ({ tabelData, setTableData, asnId, selectedRows, setSelectedRows, tableRef }) => { const translate = useTranslate(); const notify = useNotify(); @@ -258,23 +281,26 @@ { field: 'maktx', headerName: translate('table.field.asnOrderItem.maktx'), - minWidth: 100, - flex: 1, + width: 250, editable: false, }, { - field: 'maktxCode', - headerName: translate('table.field.asnOrderItem.maktxCode'), - minWidth: 100, - flex: 1, + field: 'matnrCode', + headerName: translate('table.field.asnOrderItem.matnrCode'), + width: 130, editable: false, }, { field: 'anfme', headerName: translate('table.field.asnOrderItem.purQty'), + type: 'number', minWidth: 100, flex: 1, editable: true, + // preProcessEditCellProps: (params) => { + // const hasError = params.props.value.length !== ''; + // return { ...params.props, error: hasError }; + // }, }, { field: 'splrCode', @@ -304,8 +330,8 @@ // flex: 1, // }, { - field: 'poDetlCode', - headerName: translate('table.field.asnOrderItem.poDetlCode'), + field: 'platItemId', + headerName: translate('table.field.asnOrderItem.platItemId'), minWidth: 100, flex: 1, }, @@ -390,11 +416,16 @@ const processRowUpdate = (newRow, oldRow) => { - setTableData((prevData) => - prevData.map((r) => - r.matnrId === newRow.matnrId ? { ...newRow } : r - ) - ); + const rows = tabelData.map((r) => + r.matnrId === newRow.matnrId ? { ...newRow } : r + ) + setTableData(rows) + // setTableData((prevData) => + // prevData.map((r) => + // r.matnrId === newRow.matnrId ? { ...newRow } : r + // ) + + // ); return newRow; }; @@ -406,9 +437,13 @@ }; + tableRef.current = useGridApiRef(); + + return ( <div style={{ height: 400, width: '100%' }}> <DataGrid + apiRef={tableRef} rows={tabelData} columns={columns} disableRowSelectionOnClick -- Gitblit v1.9.1