From 253e5ad5ec600ea04cc8636dacec1afd895e08fc Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期五, 13 六月 2025 13:21:21 +0800 Subject: [PATCH] 出库顺序优化 代码优化 --- rsf-admin/src/page/orders/outStock/OutStockPublic.jsx | 74 +++++++++++++++++++++++++++--------- 1 files changed, 55 insertions(+), 19 deletions(-) diff --git a/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx b/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx index e63b5a2..60c2172 100644 --- a/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx +++ b/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx @@ -69,14 +69,39 @@ const notify = useNotify(); const gridRef = useGridApiRef(); const [rows, setRows] = useState([]); + const [fetchRows, setFetchRows] = useState([]); const translate = useTranslate(); + const [rowSelectedIds, setRowSelectedIds] = useState([]); + const [selectedMatnr, setSelectedMatnr] = useState([]); const [selectedIds, setSelectedIds] = useState([]); - const [formData, setFormData] = useState({ - orderId: record?.id, - waveId: DEFAULT_TYPE - }); + const [formData, setFormData] = useState({ orderId: record?.id, waveId: DEFAULT_TYPE }); const [dialog, setDialog] = useState(false); const [selectedValue, setSelectedValue] = useState({}); + + useEffect(() => { + if (selectedMatnr.length < 1) { + setRows(fetchRows) + } else { + const mas = fetchRows.filter(item => selectedMatnr.includes(item.matnrCode)); + setRows(mas) + } + }, [selectedMatnr]) + + + const handleRowClick = (id, resource, record) => { + setRowSelectedIds(prev => + prev.includes(id) + ? prev.filter(item => item !== id) // 鍙栨秷閫夋嫨 + : [...prev, id] // 娣诲姞閫夋嫨 + ); + + //璁剧疆搴撲綅淇℃伅绛涢�夋潯浠� + setSelectedMatnr(prev => + prev.includes(record?.matnrCode) + ? prev.filter(item => item !== record?.matnrCode) // 鍙栨秷閫夋嫨 + : [...prev, record?.matnrCode] // 娣诲姞閫夋嫨 + ); + }; const handleClickOpen = () => { setDialog(true); @@ -85,13 +110,23 @@ const handleClose = (value) => { setDialog(false); setSelectedValue(value); - const newRows = rows.map(item => { - return selectedIds.includes(item?.id) ? { - ...item, - siteNo: value?.site - } : item - }) - setRows(newRows); + if (selectedIds.length == 0) { + const newRows = rows.map(item => { + return { + ...item, + siteNo: value?.site + } + }) + setRows(newRows); + } else { + const newRows = rows.map(item => { + return selectedIds.includes(item?.id) ? { + ...item, + siteNo: value?.site + } : item + }) + setRows(newRows); + } }; useEffect(() => { @@ -107,6 +142,7 @@ const { data: { code, data, msg } } = await request.post('/outStock/order/getOutTaskItems', { ...formData }); if (code === 200) { setRows(data) + setFetchRows(data) } else { notify(msg); } @@ -161,10 +197,12 @@ sx={{ height: "2px", position: 'absolute', top: 0, left: 0, right: 0, }} /> <StyledDatagrid + storeKey={"outStockPublic"} preferenceKey='outStockItem' bulkActionButtons={<></>} - rowClick={false} - omit={['id', 'splrName', 'qty', 'poCode', 'workQty']} + rowClick={handleRowClick} + selectedIds={rowSelectedIds} + omit={['id', 'splrName', 'qty', 'poCode',]} > <NumberField source="id" /> <TextField source="asnCode" label="table.field.outStockItem.asnCode" /> @@ -181,8 +219,8 @@ </Card> </Grid> <Grid item xl={6.3} gap={2}> - <Card> - <Box sx={{ height: 500, width: '100%' }}> + <Card sx={{ minHeight: 1050, height: 'calc(100% - 10px)', width: '100%' }}> + <Box> <PreviewTable rows={rows} gridRef={gridRef} @@ -223,7 +261,6 @@ } }, [selectedIds]) - const baseColumns = [ // { field: 'id', headerName: 'ID', width: 40 }, { field: 'locCode', headerName: '搴撲綅', width: 110 }, @@ -232,8 +269,7 @@ { field: 'batch', headerName: '鎵规', width: 90 }, { field: 'unit', headerName: '鍗曚綅', width: 60 }, { field: 'outQty', headerName: '鍑哄簱鏁伴噺', width: 110, }, - { - field: 'anfme', headerName: '搴撳瓨鏁伴噺', width: 110, + { field: 'anfme', headerName: '搴撳瓨鏁伴噺', width: 110, renderCell: (params) => ( <OutStockAnfme value={params.value} /> ) @@ -379,6 +415,7 @@ return ( <DataGrid + storeKey={"locItemPreview"} rows={rows} columns={columns} slots={{ toolbar: CustomToolBar }} @@ -393,7 +430,6 @@ /> ) } - //鎻愪氦鎸夐挳 -- Gitblit v1.9.1