From 4c66319211f9f7e496dfc32718dbd7aefed4ca88 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期四, 12 三月 2026 10:46:47 +0800
Subject: [PATCH] 任务管理完结、取消按钮

---
 rsf-admin/src/page/orders/check/MatnrInfoModal.jsx |  139 ++++++++++++++++++++++-----------------------
 1 files changed, 68 insertions(+), 71 deletions(-)

diff --git a/rsf-admin/src/page/orders/check/MatnrInfoModal.jsx b/rsf-admin/src/page/orders/check/MatnrInfoModal.jsx
index fa0e5ca..dec6d09 100644
--- a/rsf-admin/src/page/orders/check/MatnrInfoModal.jsx
+++ b/rsf-admin/src/page/orders/check/MatnrInfoModal.jsx
@@ -9,22 +9,18 @@
     TextField,
     Box,
     Button,
-    Paper,
-    styled
 } from '@mui/material';
-import { EDIT_MODE, DEFAULT_START_PAGE, DEFAULT_PAGE_SIZE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
+import { DEFAULT_START_PAGE, DEFAULT_PAGE_SIZE } from '@/config/setting';
 import DialogCloseButton from "../../components/DialogCloseButton";
-import { useTranslate, useNotify, useRefresh } from 'react-admin';
+import { useTranslate, useNotify } from 'react-admin';
 import request from '@/utils/request';
 import { DataGrid } from '@mui/x-data-grid';
 import SaveIcon from '@mui/icons-material/Save';
-import TreeSelectInput from "@/page/components/TreeSelectInput";
 const MatnrInfoModal = (props) => {
     const { open, setOpen, data, setData } = props;
 
     const translate = useTranslate();
     const notify = useNotify();
-    const refresh = useRefresh();
 
     const handleClose = (event, reason) => {
         if (reason !== "backdropClick") {
@@ -41,65 +37,74 @@
     const [isLoading, setIsLoading] = useState(false);
     const handleChange = (e) => {
         const { name, value } = e.target;
-        setFormData(() => ({
-            [name]: value
-        }));
+        setFormData(prev => ({ ...prev, [name]: value }));
     };
 
     const reset = () => {
-        setFormData({
-            name: null,
-            code: null,
-            groupId: null
-        })
+        setFormData({})
     }
 
+    // 娣诲姞鐗╂枡锛氫粠鎬诲簱瀛橀�夛紝澶氶�夊悓鐗╂枡鍒欐暟閲忓彔鍔狅紱涓嬪彂浠诲姟鏃跺啀閫夊叿浣撳簱浣�
     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)));
-        const value = selectedData.map((el => {
-            const dynamicFields = dyFields.reduce((acc, item) => {
-                acc[item.fields] = el['extendFields']?.[item.fields] || '';
-                return acc;
-            }, {});
-            return {
-                matnrId: el.id,
-                maktx: el.name,
-                matnrCode: el.code,
-                stockUnit: el.stockUnit || '',
-                purUnit: el.purchaseUnit || '',
-                ...dynamicFields
+        const hasarr = (data || []).map(el => +el.matnrId);
+        const selectedLocItems = selectedRows
+            .map(id => tableData.find(row => row.id === id))
+            .filter(Boolean)
+            .filter(row => !hasarr.includes(+row.matnrId));
+        const byMatnr = {};
+        selectedLocItems.forEach(el => {
+            const k = el.matnrId;
+            if (!byMatnr[k]) {
+                const dynamicFields = (dyFields || []).reduce((acc, item) => {
+                    acc[item.fields] = el.extendFields?.[item.fields] || '';
+                    return acc;
+                }, {});
+                byMatnr[k] = {
+                    matnrId: el.matnrId,
+                    maktx: el.maktx,
+                    matnrCode: el.matnrCode,
+                    anfme: 0,
+                    stockUnit: el.unit || el.stockUnit || '',
+                    purUnit: '',
+                    splrBatch: el.splrBatch || '',
+                    splrCode: el.splrCode ?? '',
+                    splrName: el.splrName ?? '',
+                    ...dynamicFields
+                };
             }
-        }))
-        setData([...data, ...value]);
+            byMatnr[k].anfme = (byMatnr[k].anfme || 0) + (el.anfme || 0);
+        });
+        const value = Object.values(byMatnr);
+        setData(prev => [...(prev || []), ...value]);
         setOpen(false);
         reset();
     };
 
-    const getData = async () => {
-        setIsLoading(true)
-        const res = await request.post(`/matnr/page`, {
+    const getData = async (pageNo) => {
+        setIsLoading(true);
+        const currentPage = pageNo !== undefined ? pageNo : page?.page;
+        const res = await request.post(`/locItem/useO/page`, {
             ...formData,
-            current: page?.page,
-            pageSize: page?.pageSize,
+            current: currentPage,
+            pageSize: page?.pageSize ?? DEFAULT_PAGE_SIZE,
             orderBy: "create_time desc"
         });
         if (res?.data?.code === 200) {
-            setTableData(res.data.data.records);
-            setRowCount(res.data?.data?.total);
-
+            setTableData(res.data.data.records || []);
+            setRowCount(res.data.data?.total ?? 0);
         } else {
             notify(res.data.msg);
         }
-        setIsLoading(false)
+        setIsLoading(false);
     };
 
     useEffect(() => {
-        getData();
+        if (open) getData();
     }, [open, page]);
 
     const handleSearch = () => {
-        getData()
+        setPage(p => ({ ...p, page: 1 }));
+        getData(1);
     };
 
     return (
@@ -125,32 +130,31 @@
             <DialogContent sx={{ mt: 2 }}>
                 <Box component="form" onSubmit={handleSubmit} sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
                     <Grid container spacing={2}>
-                        <Grid item md={4}>
+                        <Grid item md={2}>
                             <TextField
-                                label={translate('table.field.matnr.name')}
-                                name="name"
-                                value={formData.name}
+                                label={translate('table.field.locItem.locCode')}
+                                name="locCode"
+                                value={formData.locCode ?? ''}
                                 onChange={handleChange}
                                 size="small"
                             />
                         </Grid>
-                        <Grid item md={4}>
+                        <Grid item md={2}>
                             <TextField
-                                label={translate('table.field.matnr.code')}
-                                name="code"
-                                value={formData.code}
+                                label={translate('table.field.locItem.maktx')}
+                                name="maktx"
+                                value={formData.maktx ?? ''}
                                 onChange={handleChange}
                                 size="small"
                             />
                         </Grid>
-                        <Grid item md={4}>
-                            <TreeSelectInput
-                                label="table.field.matnr.groupId"
-                                value={formData.groupId}
-                                resource={'matnrGroup'}
-                                source="groupId"
-                                name="groupId"
+                        <Grid item md={2}>
+                            <TextField
+                                label={translate('table.field.locItem.matnrCode')}
+                                name="matnrCode"
+                                value={formData.matnrCode ?? ''}
                                 onChange={handleChange}
+                                size="small"
                             />
                         </Grid>
                     </Grid>
@@ -163,7 +167,6 @@
                 <Box sx={{ mt: 2, height: 400, width: '100%' }}>
                     <AsnWareModalTable
                         tableData={tableData}
-                        setTableData={setTableData}
                         dyFields={dyFields}
                         setDyFields={setDyFields}
                         page={page}
@@ -188,24 +191,17 @@
 
 export default MatnrInfoModal;
 
-const AsnWareModalTable = ({ tableData, page, isLoading, pageSize, setPage, rowCount, setTableData, selectedRows, setSelectedRows, dyFields, setDyFields }) => {
+const AsnWareModalTable = ({ tableData, page, isLoading, setPage, rowCount, selectedRows, setSelectedRows, dyFields, setDyFields }) => {
     const translate = useTranslate();
     const notify = useNotify();
 
     const [columns, setColumns] = useState([
-        // { field: 'id', headerName: 'ID', width: 100 },
-        { field: 'name', headerName: translate('table.field.matnr.name'), width: 300 },
-        { field: 'code', headerName: translate('table.field.matnr.code'), width: 200 },
-        { field: 'groupId$', headerName: translate('table.field.matnr.groupId'), width: 100 },
-        { field: 'spec', headerName: translate('table.field.matnr.spec'), width: 100 },
-        { field: 'model', headerName: translate('table.field.matnr.model'), width: 100 },
-        { field: 'weight', headerName: translate('table.field.matnr.weight'), width: 100 },
-        { field: 'describle', headerName: translate('table.field.matnr.describle'), width: 100 },
-        { field: 'nromNum', headerName: translate('table.field.matnr.nromNum'), width: 100 },
-        { 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: 'stockLeval$', headerName: translate('table.field.matnr.stockLevel'), width: 100, sortable: false },
+        { field: 'locCode', headerName: translate('table.field.locItem.locCode'), width: 100 },
+        { field: 'matnrCode', headerName: translate('table.field.locItem.matnrCode'), width: 130 },
+        { field: 'maktx', headerName: translate('table.field.locItem.maktx'), width: 250 },
+        { field: 'batch', headerName: translate('table.field.locItem.batch'), width: 100 },
+        { field: 'anfme', headerName: translate('table.field.locItem.anfme'), width: 100, type: 'number' },
+        { field: 'unit', headerName: translate('table.field.locItem.unit'), width: 80 },
     ])
 
 
@@ -246,6 +242,7 @@
                 size="small"
                 rows={tableData}
                 columns={columns}
+                getRowId={(row) => row.id}
                 checkboxSelection
                 onRowSelectionModelChange={handleSelectionChange}
                 selectionModel={selectedRows}

--
Gitblit v1.9.1