From 79edfec1f6e6789d3f6cc57db3cb0cfdffd64c32 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期二, 24 二月 2026 15:50:32 +0800
Subject: [PATCH] 库位拣料出库数量调整

---
 rsf-admin/src/page/orders/outStock/SelectMatnrModal.jsx |  160 ++++++++++++++++++++++++-----------------------------
 1 files changed, 72 insertions(+), 88 deletions(-)

diff --git a/rsf-admin/src/page/orders/outStock/SelectMatnrModal.jsx b/rsf-admin/src/page/orders/outStock/SelectMatnrModal.jsx
index 7888b21..cbf48e8 100644
--- a/rsf-admin/src/page/orders/outStock/SelectMatnrModal.jsx
+++ b/rsf-admin/src/page/orders/outStock/SelectMatnrModal.jsx
@@ -43,18 +43,18 @@
     Select,
     MenuItem
 } from '@mui/material';
+import { useForm, Controller, useWatch, FormProvider, useFormContext } from "react-hook-form";
 import DialogCloseButton from "../../components/DialogCloseButton";
 import StatusSelectInput from "../../components/StatusSelectInput";
-import ConfirmButton from "../../components/ConfirmButton";
-import MatnrInfoModal from "./MatnrInfoModal";
-import { useForm, Controller, useWatch, FormProvider, useFormContext } from "react-hook-form";
-import SaveIcon from '@mui/icons-material/Save';
-import request from '@/utils/request';
-import { Add, Edit, Delete } from '@mui/icons-material';
-import _, { set } from 'lodash';
-import { DataGrid, useGridApiRef } from '@mui/x-data-grid';
 import DictionarySelect from "../../components/DictionarySelect";
+import { DataGrid, useGridApiRef } from '@mui/x-data-grid';
+import ConfirmButton from "../../components/ConfirmButton";
+import { Add, Edit, Delete } from '@mui/icons-material';
 import DictSelect from "../../components/DictSelect";
+import SaveIcon from '@mui/icons-material/Save';
+import MatnrInfoModal from "./MatnrInfoModal";
+import request from '@/utils/request';
+import { formatQuantity, hasMoreThan6Decimals } from '@/utils/common';
 import "./asnOrder.css";
 
 const SelectMatnrModal = (props) => {
@@ -100,7 +100,6 @@
             ...prevData,
             [name]: value
         }));
-        console.log(formData);
     };
 
     const resetData = () => {
@@ -124,40 +123,40 @@
     }
 
     const handleSubmit = async () => {
-        setFinally()
-        setDisabled(true)
-
-        if (asnId === 0) {
-            const parmas = {
-                "orders": formData,
-                "items": tabelData,
-            }
-            const res = await request.post(`/outStock/items/save`, parmas);
-            if (res?.data?.code === 200) {
-                setOpen(false);
-                refresh();
-                billReload?.current()
-                resetData()
-            } else {
-                notify(res.data.msg);
-            }
-        } else {
-            const parmas = {
-                "orders": formData,
-                "items": tabelData,
-            }
-            const res = await request.post(`/outStock/items/update`, parmas);
-            if (res?.data?.code === 200) {
-                setOpen(false);
-                refresh();
-                billReload?.current()
-                resetData()
-            } else {
-                notify(res.data.msg);
-            }
+        setFinally();
+        if (tabelData.some((item) => hasMoreThan6Decimals(item.anfme))) {
+            notify('鏈�澶�6浣嶅皬鏁�', { type: 'error' });
+            return;
         }
-        setDisabled(false)
-
+        setDisabled(true);
+        try {
+            if (asnId === 0) {
+                const parmas = { "orders": formData, "items": tabelData };
+                const res = await request.post(`/outStock/items/save`, parmas);
+                if (res?.data?.code === 200) {
+                    setOpen(false);
+                    refresh();
+                    resetData();
+                } else {
+                    notify(res?.data?.msg || '淇濆瓨澶辫触', { type: 'error' });
+                }
+            } else {
+                const parmas = { "orders": formData, "items": tabelData };
+                const res = await request.post(`/outStock/items/update`, parmas);
+                if (res?.data?.code === 200) {
+                    setOpen(false);
+                    refresh();
+                    resetData();
+                } else {
+                    notify(res?.data?.msg || '淇濆瓨澶辫触', { type: 'error' });
+                }
+            }
+        } catch (error) {
+            const msg = error?.response?.data?.msg || error?.message || '淇濆瓨澶辫触锛岃閲嶈瘯';
+            notify(msg, { type: 'error' });
+        } finally {
+            setDisabled(false);
+        }
     };
 
 
@@ -181,7 +180,7 @@
     }
 
     const requestGetBody = async () => {
-        const res = await request.post(`/outStockItem/page`, { asnId });
+        const res = await request.post(`/outStockItem/page`, { orderId: asnId });
         if (res?.data?.code === 200) {
             setTableData(res.data.data.records)
         } else {
@@ -191,9 +190,12 @@
 
     const [selectedRows, setSelectedRows] = useState([]);
 
+    const getRowId = (row) => (row.id != null ? row.id : row._rowKey) ?? row.matnrId;
+
     const handleDeleteItem = () => {
-        const newTableData = _.filter(tabelData, (item) => !selectedRows.includes(item.matnrId));
+        const newTableData = tabelData.filter((item) => !selectedRows.includes(getRowId(item)));
         setTableData(newTableData);
+        setSelectedRows([]);
     }
 
     return (
@@ -282,7 +284,7 @@
                         </Stack>
                     </Box>
                     <Box sx={{ mt: 2 }}>
-                        <AsnOrderModalTable tabelData={tabelData} setTableData={setTableData} asnId={asnId} selectedRows={selectedRows} setSelectedRows={setSelectedRows} tableRef={tableRef}></AsnOrderModalTable>
+                        <AsnOrderModalTable tabelData={tabelData} setTableData={setTableData} asnId={asnId} selectedRows={selectedRows} setSelectedRows={setSelectedRows} tableRef={tableRef} getRowId={getRowId}></AsnOrderModalTable>
                     </Box>
                 </DialogContent>
                 <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
@@ -319,7 +321,6 @@
         } = await request.post("companys/page", parmas);
         if (code === 200) {
             setFormData(data.records)
-            console.log(data.records)
         } else {
             notify(msg);
         }
@@ -373,7 +374,6 @@
         } = await request.post("companys/page", parmas);
         if (code === 200) {
             setFormData(data.records)
-            console.log(data.records)
         } else {
             notify(msg);
         }
@@ -416,7 +416,7 @@
 
 
 
-const AsnOrderModalTable = ({ tabelData, setTableData, asnId, selectedRows, setSelectedRows, tableRef }) => {
+const AsnOrderModalTable = ({ tabelData, setTableData, asnId, selectedRows, setSelectedRows, tableRef, getRowId: getRowIdProp }) => {
     const translate = useTranslate();
     const notify = useNotify();
 
@@ -440,7 +440,7 @@
             minWidth: 100,
             flex: 1,
             editable: true,
-            valueFormatter: (val) => val < 0 ? 0 : val,
+            valueFormatter: (val) => formatQuantity(val != null && val >= 0 ? val : 0),
             headerClassName: "custom",
         },
         {
@@ -465,48 +465,26 @@
             ),
             headerClassName: "custom",
         },
-        // {
-        //     field: 'packName',
-        //     headerName: translate('table.field.asnOrderItem.packName'),
-        //     minWidth: 100,
-        //     flex: 1,
-        //     editable: true,
-        // },
-        // {
-        //     field: 'poDetlId',
-        //     headerName: translate('table.field.asnOrderItem.poDetlId'),
-        //     minWidth: 100,
-        //     flex: 1,
-        // },
         {
-            field: 'poCode',
-            headerName: translate('table.field.outStockItem.poDetlCode') + "*",
+            field: 'splrBatch',
+            headerName: translate('table.field.outStockItem.splrBatch'),
             minWidth: 100,
             flex: 1,
             editable: true,
-            headerClassName: "custom",
         },
-
+        {
+            field: 'poCode',
+            headerName: translate('table.field.outStockItem.poDetlCode'),
+            minWidth: 100,
+            flex: 1,
+            editable: true,
+        },
         {
             field: 'stockUnit',
             headerName: translate('table.field.outStockItem.stockUnit'),
             minWidth: 100,
             flex: 1,
-            editable: false,
-        },
-        // {
-        //     field: 'purQty',
-        //     headerName: translate('table.field.asnOrderItem.purQty'),
-        //     minWidth: 100,
-        //     flex: 1,
-        //     editable: true,
-        // },
-        {
-            field: 'purUnit',
-            headerName: translate('table.field.outStockItem.purUnit'),
-            minWidth: 100,
-            flex: 1,
-            editable: false,
+            editable: true,
         },
     ])
 
@@ -546,7 +524,10 @@
                 headerName: el.fieldsAlise,
                 minWidth: 100,
                 flex: 1,
-                editable: false
+                editable: el.unique,
+                valueGetter: (value, row) => {
+                    return row.extendFields?.[el.fields] || '';
+                },
             }))
             setColumns([...columns, ...cols, action])
         } else {
@@ -555,17 +536,20 @@
     }
 
 
+    const getRowId = getRowIdProp || ((row) => (row.id != null ? row.id : row._rowKey) ?? row.matnrId);
+
     const handleDelete = (row) => {
-        const newData = _.filter(cdata.current, (item) => item.matnrId !== row.matnrId);
+        const rowId = getRowId(row);
+        const newData = cdata.current.filter((item) => getRowId(item) !== rowId);
         setTableData(newData);
     };
 
 
     const processRowUpdate = (newRow, oldRow) => {
         const rows = tabelData.map((r) =>
-            r.matnrId === newRow.matnrId ? { ...newRow } : r
-        )
-        setTableData(rows)
+            getRowId(r) === getRowId(oldRow) ? { ...newRow } : r
+        );
+        setTableData(rows);
         return newRow;
     };
 
@@ -582,7 +566,7 @@
                 rows={tabelData}
                 columns={columns}
                 disableRowSelectionOnClick
-                getRowId={(row) => row.matnrId ? row.matnrId : row.id}
+                getRowId={(row) => getRowId(row)}
                 disableColumnFilter
                 disableColumnSelector
                 disableColumnSorting
@@ -595,7 +579,7 @@
                         },
                     },
                 }}
-                pageSizeOptions={[10, 25, 50, 100]}
+                pageSizeOptions={[15, 25, 50, 100]}
                 editMode="row"
                 checkboxSelection
                 onRowSelectionModelChange={handleSelectionChange}

--
Gitblit v1.9.1