From bfc43ca0e4683c1c0322a6cad5d5be2bc07decc3 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 24 七月 2025 15:00:44 +0800
Subject: [PATCH] 新增调拔单功能 盘点功能优化

---
 rsf-admin/src/page/orders/outStock/OutStockPublic.jsx |  104 ++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 73 insertions(+), 31 deletions(-)

diff --git a/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx b/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
index e63b5a2..0dc8ff5 100644
--- a/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
+++ b/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
@@ -37,6 +37,7 @@
     Form,
     useRefresh,
     useRedirect,
+    useRecordSelection,
 } from 'react-admin';
 import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE, DEFAULT_ITEM_PAGE_SIZE, DEFAULT_TYPE } from '@/config/setting';
 import { styled } from '@mui/material/styles';
@@ -58,25 +59,56 @@
     '& .column-maktx': {
         width: 200
     },
-    '& .RaBulkActionsToolbar-toolbar': {
-        display: 'none'
-    }
+
+    mt: '60px'
+    // '& .RaBulkActionsToolbar-toolbar': {
+    //     display: 'none'
+    // }
 
 }));
 
 const OutStockPublic = (props) => {
-    const { record, open, setOpen } = props;
+    const { record, open, setOpen, setManualDialog } = props;
     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 ComfirmButton = () => {
+        const { data } = useListContext();
+        const [selectedIds, selectionModifiers] = useRecordSelection();
+
+        const handleRowClick = () => {
+            console.log(selectedIds);
+            
+            const ids = data.filter(item => selectedIds.includes(item.id)).map(item => item.id);
+            setRowSelectedIds(ids);
+            const mas = data.filter(item => selectedIds.includes(item.id)).map(item => item.matnrCode);
+            //璁剧疆搴撲綅淇℃伅绛涢�夋潯浠�
+            setSelectedMatnr(mas);
+        }
+
+        return (
+            <Button label="toolbar.confirm" size="medium" onClick={handleRowClick} />
+        )
+    };
 
     const handleClickOpen = () => {
         setDialog(true);
@@ -85,20 +117,28 @@
     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(() => {
-        if (open) {
-            getWaveRule()
-        }
-    }, [open, formData])
+        getWaveRule()
+    }, [open])
 
     const getWaveRule = async () => {
         if (formData.waveId == null && formData.waveId == undefined) {
@@ -106,7 +146,8 @@
         }
         const { data: { code, data, msg } } = await request.post('/outStock/order/getOutTaskItems', { ...formData });
         if (code === 200) {
-            setRows(data)
+            // setRows(data)
+            setFetchRows(data)
         } else {
             notify(msg);
         }
@@ -152,22 +193,25 @@
                                 }}
                                 title={"menu.outStockItem"}
                                 empty={false}
-                                filter={{ asnId: record?.id, deleted: 0 }}
+                                filter={{ orderId: record?.id, deleted: 0 }}
                                 sort={{ field: "create_time", order: "desc" }}
                                 actions={false}
+                                pagination={false}
                                 perPage={DEFAULT_ITEM_PAGE_SIZE}
                             >
                                 <LinearProgress
                                     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']}
+                                    bulkActionButtons={<>
+                                        <ComfirmButton />
+                                    </>}
+                                    omit={['id', 'splrName', 'qty', 'poCode',]}
                                 >
                                     <NumberField source="id" />
-                                    <TextField source="asnCode" label="table.field.outStockItem.asnCode" />
+                                    <TextField source="asnCode" label="table.field.outStockItem.orderCode" />
                                     <TextField source="poCode" label="table.field.outStockItem.poCode" />
                                     <TextField source="matnrCode" label="table.field.outStockItem.matnrCode" />
                                     <TextField source="maktx" label="table.field.outStockItem.maktx" />
@@ -181,8 +225,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}
@@ -222,7 +266,6 @@
             console.log(selectedIds);
         }
     }, [selectedIds])
-
 
     const baseColumns = [
         // { field: 'id', headerName: 'ID', width: 40 },
@@ -379,6 +422,7 @@
 
     return (
         <DataGrid
+            storeKey={"locItemPreview"}
             rows={rows}
             columns={columns}
             slots={{ toolbar: CustomToolBar }}
@@ -393,7 +437,6 @@
         />
     )
 }
-
 
 
 //鎻愪氦鎸夐挳
@@ -413,11 +456,10 @@
     }
     return (
         <ConfirmButton
-            label="toolbar.confirm"
+            label="toolbar.allComfirm"
             variant="contained"
             size="medium"
             onConfirm={submit}
-            startIcon={<ConfirmationNumberOutlinedIcon />}
         />
     )
 }

--
Gitblit v1.9.1