From 19d2a15ddc900fd3bf435babd2628d0c6175cf6f Mon Sep 17 00:00:00 2001
From: verou <857149855@qq.com>
Date: 星期四, 27 三月 2025 14:22:36 +0800
Subject: [PATCH] fix:单据增加动态自动

---
 rsf-admin/src/page/asnOrder/AsnOrderList.jsx       |   27 ----
 rsf-admin/src/page/components/DictSelect.jsx       |   60 ++++++++++
 rsf-admin/src/page/asnOrder/AsnWareModal.jsx       |   76 ++++++++++--
 rsf-admin/src/page/components/DictionarySelect.jsx |    1 
 rsf-admin/pnpm-lock.yaml                           |   48 +++++--
 rsf-admin/src/page/basicInfo/loc/LocList.jsx       |   11 +
 rsf-admin/src/page/asnOrder/AsnOrderModal.jsx      |  110 ++++++++++-------
 7 files changed, 234 insertions(+), 99 deletions(-)

diff --git a/rsf-admin/pnpm-lock.yaml b/rsf-admin/pnpm-lock.yaml
index 1e1c44c..470bcd3 100644
--- a/rsf-admin/pnpm-lock.yaml
+++ b/rsf-admin/pnpm-lock.yaml
@@ -25,7 +25,7 @@
         version: 6.4.7(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1)
       '@mui/x-data-grid':
         specifier: ^7.27.3
-        version: 7.27.3(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@mui/material@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.4.7(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        version: 7.28.1(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@mui/material@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.4.7(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@mui/x-tree-view':
         specifier: ^7.16.0
         version: 7.26.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@mui/material@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.4.7(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -217,6 +217,10 @@
 
   '@babel/runtime@7.26.9':
     resolution: {integrity: sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==}
+    engines: {node: '>=6.9.0'}
+
+  '@babel/runtime@7.27.0':
+    resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==}
     engines: {node: '>=6.9.0'}
 
   '@babel/template@7.26.9':
@@ -618,14 +622,14 @@
       '@types/react':
         optional: true
 
-  '@mui/x-data-grid@7.27.3':
-    resolution: {integrity: sha512-7zbDbFrhV6ODjyn3ImOZG34nbMbCvmHgqYTYP273TNAj8hMy4BiLyiKFFZTzVddIj3KQ6qLzBpByhqifGgEDOg==}
+  '@mui/x-data-grid@7.28.1':
+    resolution: {integrity: sha512-uDJcjRB7zfRoquZb4G8iw0NWbhziVVPsHisi/EIzvOPHP+a1ZUnG0bLEnY+cy6eEwDrO1dNzYpwGFCcjl8ZKfA==}
     engines: {node: '>=14.0.0'}
     peerDependencies:
       '@emotion/react': ^11.9.0
       '@emotion/styled': ^11.8.1
-      '@mui/material': ^5.15.14 || ^6.0.0
-      '@mui/system': ^5.15.14 || ^6.0.0
+      '@mui/material': ^5.15.14 || ^6.0.0 || ^7.0.0 || ^7.0.0-beta
+      '@mui/system': ^5.15.14 || ^6.0.0 || ^7.0.0 || ^7.0.0-beta
       react: ^17.0.0 || ^18.0.0 || ^19.0.0
       react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
     peerDependenciesMeta:
@@ -636,6 +640,12 @@
 
   '@mui/x-internals@7.26.0':
     resolution: {integrity: sha512-VxTCYQcZ02d3190pdvys2TDg9pgbvewAVakEopiOgReKAUhLdRlgGJHcOA/eAuGLyK1YIo26A6Ow6ZKlSRLwMg==}
+    engines: {node: '>=14.0.0'}
+    peerDependencies:
+      react: ^17.0.0 || ^18.0.0 || ^19.0.0
+
+  '@mui/x-internals@7.28.0':
+    resolution: {integrity: sha512-p4GEp/09bLDumktdIMiw+OF4p+pJOOjTG0VUvzNxjbHB9GxbBKoMcHrmyrURqoBnQpWIeFnN/QAoLMFSpfwQbw==}
     engines: {node: '>=14.0.0'}
     peerDependencies:
       react: ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -2702,6 +2712,10 @@
     dependencies:
       regenerator-runtime: 0.14.1
 
+  '@babel/runtime@7.27.0':
+    dependencies:
+      regenerator-runtime: 0.14.1
+
   '@babel/template@7.26.9':
     dependencies:
       '@babel/code-frame': 7.26.2
@@ -2728,7 +2742,7 @@
   '@emotion/babel-plugin@11.13.5':
     dependencies:
       '@babel/helper-module-imports': 7.25.9
-      '@babel/runtime': 7.26.9
+      '@babel/runtime': 7.27.0
       '@emotion/hash': 0.9.2
       '@emotion/memoize': 0.9.0
       '@emotion/serialize': 1.3.3
@@ -2759,7 +2773,7 @@
 
   '@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1)':
     dependencies:
-      '@babel/runtime': 7.26.9
+      '@babel/runtime': 7.27.0
       '@emotion/babel-plugin': 11.13.5
       '@emotion/cache': 11.14.0
       '@emotion/serialize': 1.3.3
@@ -2785,7 +2799,7 @@
 
   '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1)':
     dependencies:
-      '@babel/runtime': 7.26.9
+      '@babel/runtime': 7.27.0
       '@emotion/babel-plugin': 11.13.5
       '@emotion/is-prop-valid': 1.3.1
       '@emotion/react': 11.14.0(@types/react@18.3.18)(react@18.3.1)
@@ -3080,13 +3094,13 @@
     optionalDependencies:
       '@types/react': 18.3.18
 
-  '@mui/x-data-grid@7.27.3(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@mui/material@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.4.7(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@mui/x-data-grid@7.28.1(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@mui/material@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.4.7(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@babel/runtime': 7.26.9
+      '@babel/runtime': 7.27.0
       '@mui/material': 5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@mui/system': 6.4.7(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1)
       '@mui/utils': 6.4.6(@types/react@18.3.18)(react@18.3.1)
-      '@mui/x-internals': 7.26.0(@types/react@18.3.18)(react@18.3.1)
+      '@mui/x-internals': 7.28.0(@types/react@18.3.18)(react@18.3.1)
       clsx: 2.1.1
       prop-types: 15.8.1
       react: 18.3.1
@@ -3102,6 +3116,14 @@
   '@mui/x-internals@7.26.0(@types/react@18.3.18)(react@18.3.1)':
     dependencies:
       '@babel/runtime': 7.26.9
+      '@mui/utils': 6.4.6(@types/react@18.3.18)(react@18.3.1)
+      react: 18.3.1
+    transitivePeerDependencies:
+      - '@types/react'
+
+  '@mui/x-internals@7.28.0(@types/react@18.3.18)(react@18.3.1)':
+    dependencies:
+      '@babel/runtime': 7.27.0
       '@mui/utils': 6.4.6(@types/react@18.3.18)(react@18.3.1)
       react: 18.3.1
     transitivePeerDependencies:
@@ -3672,7 +3694,7 @@
 
   babel-plugin-macros@3.1.0:
     dependencies:
-      '@babel/runtime': 7.26.9
+      '@babel/runtime': 7.27.0
       cosmiconfig: 7.1.0
       resolve: 1.22.10
 
@@ -4880,7 +4902,7 @@
 
   react-error-boundary@4.1.2(react@18.3.1):
     dependencies:
-      '@babel/runtime': 7.26.9
+      '@babel/runtime': 7.27.0
       react: 18.3.1
 
   react-hook-form@7.54.2(react@18.3.1):
diff --git a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx
index 39e22a4..cd9fdb1 100644
--- a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx
+++ b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx
@@ -111,29 +111,6 @@
   const inspection = () => { };
 
   const print = () => {
-    // const imageUrls = ['https://www.baidu.com/img/flexible/logo/pc/result@2.png',]
-    // const iframe = document.createElement('iframe');
-    // iframe.style.display = 'none';
-    // document.body.appendChild(iframe);
-
-    // const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
-    // iframeDoc.open();
-    // iframeDoc.write('<html><head><title>Print Images</title></head><body>');
-
-    // // 灏嗗浘鐗囨彃鍏ュ埌 iframe 涓�
-    // imageUrls.forEach((imageUrl) => {
-    //   iframeDoc.write(`<img src="${imageUrl}" style="margin: 10px;">`);
-    // });
-
-    // iframeDoc.write('</body></html>');
-    // iframeDoc.close();
-
-    // // 绛夊緟鍥剧墖鍔犺浇瀹屾垚鍚庤Е鍙戞墦鍗�
-    // iframe.contentWindow.onload = () => {
-    //   iframe.contentWindow.print();
-    //   // 鎵撳嵃瀹屾垚鍚庣Щ闄� iframe
-    //   document.body.removeChild(iframe);
-    // };
   };
 
 
@@ -198,9 +175,9 @@
           <BooleanField source="statusBool" label="common.field.status" sortable={false} />
           <TextField source="memo" label="common.field.memo" sortable={false} />
           <WrapperField cellClassName="opt" label="common.field.opt" >
-            <Button label="toolbar.print" onClick={print}>
+            {/* <Button label="toolbar.print" onClick={print}>
               <FileDownloadIcon />
-            </Button>
+            </Button> */}
             {/* <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> */}
             <MyButton setCreateDialog={setCreateDialog} setmodalType={setmodalType} />
             {/* <Button
diff --git a/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx b/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx
index debec59..ce14597 100644
--- a/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx
+++ b/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx
@@ -54,6 +54,7 @@
 import _ from 'lodash';
 import { DataGrid } from '@mui/x-data-grid';
 import DictionarySelect from "../components/DictionarySelect";
+import DictSelect from "../components/DictSelect";
 
 const AsnOrderModal = (props) => {
     const { open, setOpen, asnId } = props;
@@ -61,6 +62,7 @@
     const translate = useTranslate();
     const notify = useNotify();
     const refresh = useRefresh();
+
     const [createDialog, setCreateDialog] = useState(false);
 
     useEffect(() => {
@@ -74,13 +76,14 @@
         if (reason !== "backdropClick") {
             setOpen(false);
             refresh();
-            setFormData({ type: '' })
+            setFormData({ type: '', wkType: '' })
             setTableData([])
         }
     };
 
     const [formData, setFormData] = useState({
         type: '',
+        wkType: '',
     });
 
     const [tabelData, setTableData] = useState([]);
@@ -99,6 +102,7 @@
                 "orders": formData,
                 "items": tabelData,
             }
+
             const res = await request.post(`/asnOrder/items/save`, parmas);
             if (res?.data?.code === 200) {
                 setOpen(false);
@@ -107,8 +111,21 @@
                 notify(res.data.msg);
             }
         } else {
-            setOpen(false);
+            const parmas = {
+                "orders": formData,
+                "items": tabelData,
+            }
+            console.log(parmas);
+            // const res = await request.post(`/asnOrder/items/save`, parmas);
+            // if (res?.data?.code === 200) {
+            //     setOpen(false);
+            //     refresh();
+            // } else {
+            //     notify(res.data.msg);
+            // }
+            // setOpen(false);
         }
+
 
     };
 
@@ -141,14 +158,6 @@
         }
     }
 
-    const requestSetHead = async () => {
-        if (asnId !== 0) {
-            const res = await request.post(`/asnOrder/update`, { ...formData });
-            refresh()
-        }
-    }
-
-
     return (
         <>
             <Dialog
@@ -176,25 +185,24 @@
                         <Form>
                             <Grid container spacing={2}>
                                 <Grid item xs={4}>
-                                    <DictionarySelect
+                                    <DictSelect
                                         label={translate("table.field.asnOrder.type")}
-                                        name="type"
                                         value={formData.type}
-                                        onChange={(e) => handleChange(+e.target.value, 'type')}
-                                        size="small"
+                                        onChange={(e) => handleChange(e.target.value, 'type')}
                                         dictTypeCode="sys_order_type"
+                                        required
                                     />
+
 
                                 </Grid>
 
                                 <Grid item xs={4}>
-                                    <DictionarySelect
+                                    <DictSelect
                                         label={translate("table.field.asnOrder.wkType")}
-                                        name="wkType"
                                         value={formData.wkType}
-                                        onChange={(e) => handleChange(+e.target.value, 'wkType')}
-                                        size="small"
+                                        onChange={(e) => handleChange(e.target.value, 'wkType')}
                                         dictTypeCode="sys_business_type"
+                                        required
                                     />
                                 </Grid>
                             </Grid>
@@ -237,14 +245,14 @@
 
 const AsnOrderModalTable = ({ tabelData, setTableData, asnId }) => {
     const translate = useTranslate();
+    const notify = useNotify();
 
-    const columns = [
+    const [columns, setColumns] = useState([
         {
             field: 'action',
             headerName: '鎿嶄綔',
-            minWidth: 100,
-            sticky: 'right',
-            flex: 1,
+            width: 70,
+            lockPosition: 'left',
             renderCell: (params) => (
                 <Tooltip title="Delete">
                     <IconButton onClick={() => handleDelete(params.row)}>
@@ -252,6 +260,7 @@
                     </IconButton>
                 </Tooltip>
             ),
+
         },
         {
             field: 'matnrId',
@@ -291,7 +300,7 @@
             headerName: translate('table.field.asnOrderItem.stockUnit'),
             minWidth: 100,
             flex: 1,
-            editable: true,
+            editable: false,
         },
         {
             field: 'purQty',
@@ -305,7 +314,7 @@
             headerName: translate('table.field.asnOrderItem.purUnit'),
             minWidth: 100,
             flex: 1,
-            editable: true,
+            editable: false,
         },
         {
             field: 'splrCode',
@@ -322,20 +331,6 @@
             editable: true,
         },
         {
-            field: 'qrcode',
-            headerName: translate('table.field.asnOrderItem.qrcode'),
-            minWidth: 100,
-            flex: 1,
-            editable: true,
-        },
-        {
-            field: 'barcode',
-            headerName: translate('table.field.asnOrderItem.barcode'),
-            minWidth: 100,
-            flex: 1,
-            editable: true,
-        },
-        {
             field: 'packName',
             headerName: translate('table.field.asnOrderItem.packName'),
             minWidth: 100,
@@ -343,17 +338,42 @@
             editable: true,
         },
 
-    ];
+    ])
 
-    const requestSetBody = async (row) => {
-        if (asnId !== 0) {
-            const res = await request.post(`/asnOrderItem/update`, row);
+    let cdata = useRef([]);
+
+
+    useEffect(() => {
+        getDynamicFields();
+    }, []);
+
+    useEffect(() => {
+        cdata.current = tabelData
+    }, [tabelData]);
+
+
+    const getDynamicFields = async () => {
+        const {
+            data: { code, data, msg },
+        } = await request.get("/fields/enable/list");
+        if (code === 200) {
+            const cols = data.map(el => ({
+                field: el.fields,
+                headerName: el.fieldsAlise,
+                minWidth: 100,
+                flex: 1,
+                editable: el.unique
+            }))
+            setColumns([...columns, ...cols])
+        } else {
+            notify(msg);
         }
-
     }
 
+
+
     const handleDelete = (row) => {
-        const newData = _.filter(tabelData, (item) => item.matnrId !== row.matnrId);
+        const newData = _.filter(cdata.current, (item) => item.matnrId !== row.matnrId);
         setTableData(newData);
     };
 
@@ -365,7 +385,6 @@
             )
         );
 
-        requestSetBody(newRow)
         return newRow;
     };
 
@@ -382,6 +401,7 @@
                 disableColumnSorting
                 disableMultipleColumnsSorting
                 processRowUpdate={processRowUpdate}
+                autoPageSize
             />
         </div>
     );
diff --git a/rsf-admin/src/page/asnOrder/AsnWareModal.jsx b/rsf-admin/src/page/asnOrder/AsnWareModal.jsx
index 52e92f7..612eab5 100644
--- a/rsf-admin/src/page/asnOrder/AsnWareModal.jsx
+++ b/rsf-admin/src/page/asnOrder/AsnWareModal.jsx
@@ -18,6 +18,7 @@
 import request from '@/utils/request';
 import { DataGrid } from '@mui/x-data-grid';
 import SaveIcon from '@mui/icons-material/Save';
+import { use } from "react";
 const AsnWareModal = (props) => {
     const { open, setOpen, data, setData } = props;
 
@@ -39,6 +40,7 @@
     });
 
     const [tableData, setTableData] = useState([]);
+    const [dyFields, setDyFields] = useState([]);
     const [selectedRows, setSelectedRows] = useState([]);
 
     const handleChange = (e) => {
@@ -49,26 +51,40 @@
         }));
     };
 
-    const handleSubmit = () => {
-        const selectedData = selectedRows.map(id => tableData.find(row => row.id === id));
+    const reset = () => {
+        setFormData({
+            name: '',
+            code: ''
+        })
+    }
 
+    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,
                 stockUnit: el.stockUnit || '',
                 purUnit: el.purchaseUnit || '',
+                ...dynamicFields
             }
         }))
-        setData(value);
+        setData([...data, ...value]);
         setOpen(false);
-        // refresh();
+        reset();
     };
 
     const getData = async () => {
         const res = await request.post(`/matnr/page`, {
             ...formData,
-            pageSize: 199
+            current: 1,
+            pageSize: 199,
+            orderBy: "create_time desc"
         });
         if (res?.data?.code === 200) {
             setTableData(res.data.data.records);
@@ -79,7 +95,7 @@
 
     useEffect(() => {
         getData();
-    }, []);
+    }, [open]);
 
     const handleSearch = () => {
         getData()
@@ -146,9 +162,14 @@
                     </Stack>
                 </Box>
                 <Box sx={{ mt: 2, height: 400, width: '100%' }}>
-                    <AsnWareModalTable tableData={tableData} setTableData={setTableData}
+                    <AsnWareModalTable
+                        tableData={tableData}
+                        setTableData={setTableData}
+                        dyFields={dyFields}
+                        setDyFields={setDyFields}
                         selectedRows={selectedRows}
-                        setSelectedRows={setSelectedRows} />
+                        setSelectedRows={setSelectedRows}
+                    />
                 </Box>
             </DialogContent>
             <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
@@ -164,30 +185,58 @@
 
 export default AsnWareModal;
 
-const AsnWareModalTable = ({ tableData, setTableData, selectedRows, setSelectedRows }) => {
+const AsnWareModalTable = ({ tableData, setTableData, selectedRows, setSelectedRows, dyFields, setDyFields }) => {
     const translate = useTranslate();
+    const notify = useNotify();
 
-    const columns = [
+    const [columns, setColumns] = useState([
         { field: 'id', headerName: 'ID', width: 100 },
         { field: 'name', headerName: translate('table.field.matnr.name'), width: 100 },
         { field: 'code', headerName: translate('table.field.matnr.code'), 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: 'color', headerName: translate('table.field.matnr.color'), width: 100 },
-        { field: 'size', headerName: translate('table.field.matnr.size'), 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 },
-    ];
+    ])
+
+
 
     const handleSelectionChange = (ids) => {
         setSelectedRows(ids)
 
     };
+
+    useEffect(() => {
+        getDynamicFields();
+    }, []);
+
+    const getDynamicFields = async () => {
+        const {
+            data: { code, data, msg },
+        } = await request.get("/fields/enable/list");
+        if (code === 200) {
+            const cols = data.map(el => ({
+                field: el.fields,
+                headerName: el.fieldsAlise,
+                minWidth: 100,
+                flex: 1,
+                editable: el.unique,
+                valueGetter: (value, row) => {
+                    return row.extendFields?.[el.fields] || '';
+                },
+            }))
+            setDyFields(data)
+            setColumns([...columns, ...cols])
+        } else {
+            notify(msg);
+        }
+    }
 
     return (
         <div style={{ height: 400, width: '100%' }}>
@@ -201,7 +250,6 @@
                 disableColumnMenu={true}
                 disableColumnSorting
                 disableMultipleColumnsSorting
-                columnBufferPx={100}
             />
         </div>
     );
diff --git a/rsf-admin/src/page/basicInfo/loc/LocList.jsx b/rsf-admin/src/page/basicInfo/loc/LocList.jsx
index c218a18..b425f38 100644
--- a/rsf-admin/src/page/basicInfo/loc/LocList.jsx
+++ b/rsf-admin/src/page/basicInfo/loc/LocList.jsx
@@ -75,7 +75,14 @@
     },
     '& .RaDatagrid-rowCell': {
         textAlign: 'left'
-    }
+    },
+    '& .type .MuiTypography-root': {
+        whiteSpace: 'nowrap',
+        overflow: 'hidden',
+        textOverflow: 'ellipsis',
+        display: 'block',
+        width: '200px',
+    },
 }));
 
 const filters = [
@@ -215,7 +222,7 @@
                     <NumberField source="warehouseId$" label="table.field.loc.warehouseId" />
                     <NumberField source="areaId$" label="table.field.loc.areaId" />
                     <TextField source="code" label="table.field.loc.code" />
-                    <TextField source="typeIds$" label="table.field.loc.type" />
+                    <TextField source="typeIds$" label="table.field.loc.type" cellClassName="type" />
                     {/* <TextField source="name" label="table.field.loc.name" /> */}
                     {/* <NumberField source="flagLogic" label="table.field.loc.flagLogic" />
                     <TextField source="fucAtrrs" label="table.field.loc.fucAtrrs" />
diff --git a/rsf-admin/src/page/components/DictSelect.jsx b/rsf-admin/src/page/components/DictSelect.jsx
new file mode 100644
index 0000000..72c9d76
--- /dev/null
+++ b/rsf-admin/src/page/components/DictSelect.jsx
@@ -0,0 +1,60 @@
+import { useState, useEffect } from 'react';
+import {
+    useTranslate, useNotify
+} from 'react-admin';
+import request from '@/utils/request';
+import { Select, MenuItem, FormControl, InputLabel } from '@mui/material';
+
+const DictSelect = (props) => {
+    const { dictTypeCode, label, value, onChange, ...params } = props;
+    const translate = useTranslate();
+    const notify = useNotify();
+    const [list, setList] = useState([]);
+
+    useEffect(() => {
+        http();
+    }, [dictTypeCode]);
+
+    const http = async () => {
+        const res = await request.post('/dictData/page', { dictTypeCode });
+        if (res?.data?.code === 200) {
+            setList(res.data.data.records.map((item) => {
+                return {
+                    value: item.value,
+                    label: item.label
+                };
+            }));
+        } else {
+            notify(res.data.msg);
+        }
+    };
+
+    const handleChange = (event) => {
+        const selectedValue = event.target.value;
+        if (onChange) {
+            onChange(event);
+        }
+    };
+
+    const validValue = list.some(item => item.value === value) ? value : '';
+
+    return (
+        <FormControl fullWidth>
+            <InputLabel id="demo-select-small-label">{label}</InputLabel>
+            <Select
+                labelId="demo-select-small-label"
+                value={validValue}
+                onChange={handleChange}
+                size='small'
+            >
+                {list.map((item) => (
+                    <MenuItem key={item.value} value={item.value}>
+                        {item.label}
+                    </MenuItem>
+                ))}
+            </Select>
+        </FormControl>
+    );
+};
+
+export default DictSelect;    
\ No newline at end of file
diff --git a/rsf-admin/src/page/components/DictionarySelect.jsx b/rsf-admin/src/page/components/DictionarySelect.jsx
index 2523c5d..2a0a428 100644
--- a/rsf-admin/src/page/components/DictionarySelect.jsx
+++ b/rsf-admin/src/page/components/DictionarySelect.jsx
@@ -36,6 +36,7 @@
         <SelectInput
             source={name}
             choices={list}
+
             {...parmas}
         />
     );

--
Gitblit v1.9.1