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