From 5311fb727665f98d1845ac3f9f302a5d3f534b6d Mon Sep 17 00:00:00 2001 From: verou <857149855@qq.com> Date: 星期一, 07 四月 2025 15:42:34 +0800 Subject: [PATCH] fix:单据最后一条不更新bug --- rsf-admin/src/page/asnOrder/AsnOrderList.jsx | 4 +- rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx | 16 +++----- rsf-admin/src/page/asnOrderLog/AsnOrderLogPanel.jsx | 2 rsf-admin/src/page/asnOrder/AsnOrderModal.jsx | 53 +++++++++++++++++++++----- 4 files changed, 52 insertions(+), 23 deletions(-) diff --git a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx index 08016e7..43afa4d 100644 --- a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx +++ b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx @@ -102,7 +102,7 @@ const [createDialog, setCreateDialog] = useState(false); const [drawerVal, setDrawerVal] = useState(false); const [modalType, setmodalType] = useState(0); - const [billReload, setBillReload] = useState(null); + const billReload = useRef(); const navigate = useNavigate(); const assign = (record) => { @@ -140,7 +140,7 @@ preferenceKey='asnOrder' bulkActionButtons={<> <InspectionsButton /><BulkDeleteButton mutationMode={OPERATE_MODE} /></>} rowClick={() => false} - expand={<AsnOrderPanel setBillReload={setBillReload} />} + expand={<AsnOrderPanel billReload={billReload} />} expandSingle={true} omit={['id', 'createTime', 'createBy', 'memo', 'poId']} > diff --git a/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx b/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx index 3f6b568..5231f8f 100644 --- a/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx +++ b/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx @@ -51,8 +51,8 @@ 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"; @@ -65,6 +65,8 @@ const [disabled, setDisabled] = useState(false) const [createDialog, setCreateDialog] = useState(false); + + const tableRef = useRef(); useEffect(() => { if (open && asnId !== 0) { @@ -97,8 +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, @@ -108,8 +124,8 @@ const res = await request.post(`/asnOrder/items/save`, parmas); if (res?.data?.code === 200) { setOpen(false); - billReload() refresh(); + billReload?.current() } else { notify(res.data.msg); } @@ -122,6 +138,7 @@ if (res?.data?.code === 200) { setOpen(false); refresh(); + billReload?.current() } else { notify(res.data.msg); @@ -161,6 +178,8 @@ } const [selectedRows, setSelectedRows] = useState([]); + + const handleDeleteItem = () => { const newTableData = _.filter(tabelData, (item) => !selectedRows.includes(item.matnrId)); @@ -228,7 +247,7 @@ </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 }}> @@ -253,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(); @@ -274,9 +293,14 @@ { 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', @@ -392,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; }; @@ -408,9 +437,13 @@ }; + tableRef.current = useGridApiRef(); + + return ( <div style={{ height: 400, width: '100%' }}> <DataGrid + apiRef={tableRef} rows={tabelData} columns={columns} disableRowSelectionOnClick diff --git a/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx b/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx index 0d858d2..61763e5 100644 --- a/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx +++ b/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx @@ -15,7 +15,7 @@ import { DataGrid } from '@mui/x-data-grid'; import PrintModal from './PrintModal'; import { width } from "@mui/system"; -const AsnOrderPanel = ({ setBillReload }) => { +const AsnOrderPanel = ({ billReload }) => { const record = useRecordContext(); if (!record) return null; const translate = useTranslate(); @@ -26,14 +26,7 @@ useEffect(() => { debouncedHttp({ maktx }); - setBillReload(http) }, [asnId, maktx]); - - useEffect(() => { - setBillReload(http) - }, []); - - const http = async (parmas) => { const res = await request.post('/asnOrderItem/page', { ...parmas, asnId }); @@ -45,9 +38,12 @@ } + useEffect(() => { + billReload.current = http + }, []); + + const debouncedHttp = useMemo(() => debounce(http, 300), []); - - const columns = [ { diff --git a/rsf-admin/src/page/asnOrderLog/AsnOrderLogPanel.jsx b/rsf-admin/src/page/asnOrderLog/AsnOrderLogPanel.jsx index e141811..1058e9d 100644 --- a/rsf-admin/src/page/asnOrderLog/AsnOrderLogPanel.jsx +++ b/rsf-admin/src/page/asnOrderLog/AsnOrderLogPanel.jsx @@ -21,7 +21,7 @@ const notify = useNotify(); const [rows, setRows] = useState([]); const [maktx, setMaktx] = useState(''); - const asnId = record.id; + const asnId = record.asnId; useEffect(() => { debouncedHttp({ maktx }); -- Gitblit v1.9.1