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/MatnrInfoModal.jsx |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx b/rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx
index e3d652a..b0834ab 100644
--- a/rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx
+++ b/rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx
@@ -20,6 +20,7 @@
 import { EDIT_MODE, DEFAULT_START_PAGE, DEFAULT_PAGE_SIZE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
 import { useTranslate, useNotify, useRefresh } from 'react-admin';
 import request from '@/utils/request';
+import { formatQuantity } from '@/utils/common';
 import { DataGrid } from '@mui/x-data-grid';
 import SaveIcon from '@mui/icons-material/Save';
 import TreeSelectInput from "@/page/components/TreeSelectInput";
@@ -60,12 +61,14 @@
         })
     }
 
+    const getRowId = (row) => (row.locUseStatus$ != null ? `${row.id}_${row.locUseStatus$}` : String(row.id));
+
     const handleSubmit = () => {
         const hasarr = data.map(el => +el.matnrId);
         const selectedData = selectedRows
-            .filter((item) => !hasarr.includes(item))
-            .map((id) => tableData.find((row) => row.id === id))
-            .filter(Boolean);
+            .map((id) => tableData.find((row) => getRowId(row) === id))
+            .filter(Boolean)
+            .filter((row) => !hasarr.includes(row.id));
         const deduped = [...new Map(selectedData.map((s) => [s.id, s])).values()];
         const value = deduped.map((el, i) => {
             const dynamicFields = dyFields.reduce((acc, item) => {
@@ -200,6 +203,7 @@
                         setDyFields={setDyFields}
                         selectedRows={selectedRows}
                         setSelectedRows={setSelectedRows}
+                        getRowId={getRowId}
                     />
                 </Box>
             </DialogContent>
@@ -216,7 +220,7 @@
 
 export default MatnrInfoModal;
 
-const AsnWareModalTable = ({ tableData, setTableData, page, isLoading, pageSize, setPage, rowCount, selectedRows, setSelectedRows, dyFields, setDyFields }) => {
+const AsnWareModalTable = ({ tableData, setTableData, page, isLoading, pageSize, setPage, rowCount, selectedRows, setSelectedRows, dyFields, setDyFields, getRowId }) => {
     const translate = useTranslate();
     const notify = useNotify();
 
@@ -232,7 +236,7 @@
         { field: 'unit', headerName: translate('table.field.matnr.unit'), width: 100 },
         { field: 'purchaseUnit', headerName: translate('table.field.matnr.purUnit'), width: 100 },
         { field: 'stockUnit', headerName: translate('table.field.matnr.stockUnit'), width: 100 },
-        { field: 'stockQty', headerName: translate('table.field.matnr.stockQty') || '搴撳瓨鏁伴噺', width: 110, type: 'number', valueFormatter: (v) => (v != null ? Number(v) : 0) },
+        { field: 'stockQty', headerName: translate('table.field.matnr.stockQty') || '搴撳瓨鏁伴噺', width: 110, type: 'number', valueFormatter: (v) => formatQuantity(v) },
         { field: 'locUseStatus$', headerName: translate('table.field.loc.useStatus'), width: 120 },
         { field: 'locCodes$', headerName: translate('table.field.loc.locCode'), width: 180, flex: 1 },
         { field: 'stockLeval$', headerName: translate('table.field.matnr.stockLevel'), width: 100, sortable: false },
@@ -273,6 +277,7 @@
         <div style={{ height: 400, width: '100%' }}>
             <DataGrid
                 size="small"
+                getRowId={getRowId}
                 rows={tableData}
                 columns={columns}
                 checkboxSelection

--
Gitblit v1.9.1