From 4e598442cb2935463762ee143e103c02d14f55d9 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期一, 21 四月 2025 11:43:22 +0800
Subject: [PATCH] #优化asn单编辑页面

---
 rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx |  153 +++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 141 insertions(+), 12 deletions(-)

diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx
index 4c89a10..6c2dc38 100644
--- a/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx
+++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx
@@ -39,7 +39,9 @@
     TableCell,
     Tooltip,
     IconButton,
-    styled
+    styled,
+    Select,
+    MenuItem
 
 
 } from '@mui/material';
@@ -55,6 +57,7 @@
 import { DataGrid, useGridApiRef } from '@mui/x-data-grid';
 import DictionarySelect from "../../components/DictionarySelect";
 import DictSelect from "../../components/DictSelect";
+import "./asnOrder.css";
 
 const AsnOrderModal = (props) => {
     const { open, setOpen, asnId, billReload } = props;
@@ -101,6 +104,7 @@
             ...prevData,
             [name]: value
         }));
+        console.log(formData);
     };
 
     const resetData = () => {
@@ -178,7 +182,7 @@
             setFormData(res.data.data)
         } else {
             notify(res.data.msg);
-        }
+        }       
     }
 
     const requestGetBody = async () => {
@@ -200,7 +204,7 @@
     }
 
     return (
-        <>
+        <>       
             <Dialog
                 open={open}
                 onClose={handleClose}
@@ -209,7 +213,7 @@
                 fullWidth
                 disableRestoreFocus
                 maxWidth="lg"   // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
-            >
+            >                
                 <DialogTitle id="form-dialog-title" sx={{
                     position: 'sticky',
                     top: 0,
@@ -223,7 +227,7 @@
                 </DialogTitle>
                 <DialogContent sx={{ mt: 2 }}>
                     <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
-                        <Form>
+                        <Form defaultValues={formData}>
                             <Grid container spacing={2}>
                                 <Grid item md={3}>
                                     <DictSelect
@@ -282,9 +286,7 @@
                             {/* {asnId !== '' && <ConfirmButton label={'鍒犻櫎'} variant="outlined" color="error" onConfirm={handleDelete} />} */}
                             <ConfirmButton label={'鍒犻櫎'} variant="outlined" color="error" onConfirm={handleDeleteItem} />
                         </Stack>
-
                     </Box>
-
                     <Box sx={{ mt: 2 }}>
                         <AsnOrderModalTable tabelData={tabelData} setTableData={setTableData} asnId={asnId} selectedRows={selectedRows} setSelectedRows={setSelectedRows} tableRef={tableRef}></AsnOrderModalTable>
                     </Box>
@@ -311,6 +313,123 @@
 
 export default AsnOrderModal;
 
+const SelectInputSplrNameEditCell = (params) => {
+    const [formData, setFormData] = useState([{}])
+    useEffect(() => {
+        getOptions();
+    }, []);
+    const getOptions = async () => {        
+        const parmas = {    
+            "type": "supplier"       
+        }
+        const {
+            data: { code, data, msg },
+        } = await request.post("companys/page",parmas);
+        if (code === 200) {
+            setFormData(data.records)
+            console.log(data.records)           
+        } else {
+            notify(msg);
+        }
+    }  
+  
+    return (
+        <Select
+        value={params.value}
+        onChange={(e) =>{
+            params.api.setEditCellValue({
+                id: params.id,
+                field: params.field,
+                value: e.target.value,
+              })
+              // 鎵惧埌閫変腑鐨勪緵搴斿晢璁板綍
+          const selectedSupplier = formData.find(supplier => supplier.name === e.target.value);
+          
+          // 濡傛灉鎵惧埌瀵瑰簲鐨勪緵搴斿晢璁板綍锛屽悓鏃舵洿鏂皊plrCode瀛楁
+          if (selectedSupplier) {
+            params.api.setEditCellValue({
+              id: params.id,
+              field: 'splrCode',
+              value: selectedSupplier.id,
+            });
+          }
+
+        }
+          
+        }
+        fullWidth
+       
+      >        
+          {formData.map(e => {
+            return(
+                <MenuItem value={e.name} children={e.name} key={e.id} />
+            );
+              
+          })}
+        
+      </Select>
+    );
+  };
+
+  const SelectInputSplrCodeEditCell = (params) => {
+    const [formData, setFormData] = useState([{}])
+    useEffect(() => {
+        getOptions();
+    }, []);
+    const getOptions = async () => {        
+        const parmas = {    
+            "type": "supplier"       
+        }
+        const {
+            data: { code, data, msg },
+        } = await request.post("companys/page",parmas);
+        if (code === 200) {
+            setFormData(data.records)
+            console.log(data.records)           
+        } else {
+            notify(msg);
+        }
+    }  
+  
+    return (
+        <Select
+        value={params.value}
+        onChange={(e) =>{
+            params.api.setEditCellValue({
+                id: params.id,
+                field: params.field,
+                value: e.target.value,
+              })
+              const selectedSupplier = formData.find(supplier => supplier.id === e.target.value);
+              
+              // 濡傛灉鎵惧埌瀵瑰簲鐨勪緵搴斿晢璁板綍锛屽悓鏃舵洿鏂皊plrCode瀛楁
+              if (selectedSupplier) {
+                params.api.setEditCellValue({
+                  id: params.id,
+                  field: 'splrName',
+                  value: selectedSupplier.name,
+                });
+              }
+        }
+          
+        }
+        fullWidth
+        
+      >        
+          {formData.map(e => {
+            return(
+                <MenuItem value={e.id} children={e.name} key={e.id} />
+            );
+              
+          })}
+        
+      </Select>
+    );
+  };
+
+
+
+
 const AsnOrderModalTable = ({ tabelData, setTableData, asnId, selectedRows, setSelectedRows, tableRef }) => {
     const translate = useTranslate();
     const notify = useNotify();
@@ -331,26 +450,35 @@
         },
         {
             field: 'anfme',
-            headerName: translate('table.field.asnOrderItem.anfme'),
+            headerName: translate('table.field.asnOrderItem.anfme')+"*",
             type: 'number',
             minWidth: 100,
             flex: 1,
             editable: true,
-            valueFormatter: (val) => val < 0 ? 0 : val
+            valueFormatter: (val) => val < 0 ? 0 : val,
+            headerClassName: "custom",
         },
         {
             field: 'splrCode',
-            headerName: translate('table.field.asnOrderItem.splrCode'),
+            headerName: translate('table.field.asnOrderItem.splrCode')+"*",
             minWidth: 100,
             flex: 1,
             editable: true,
+            renderEditCell: (params) => (
+                <SelectInputSplrCodeEditCell {...params} />
+            ),
+            headerClassName: "custom",         
         },
         {
             field: 'splrName',
-            headerName: translate('table.field.asnOrderItem.splrName'),
+            headerName: translate('table.field.asnOrderItem.splrName')+"*",
             minWidth: 100,
             flex: 1,
             editable: true,
+            renderEditCell: (params) => (
+                <SelectInputSplrNameEditCell {...params} />
+            ),
+            headerClassName: "custom",
         },
         // {
         //     field: 'packName',
@@ -367,10 +495,11 @@
         // },
         {
             field: 'poCode',
-            headerName: translate('table.field.asnOrderItem.poDetlCode'),
+            headerName: translate('table.field.asnOrderItem.poDetlCode')+"*",
             minWidth: 100,
             flex: 1,
             editable: true,
+            headerClassName: "custom",
         },
 
         {

--
Gitblit v1.9.1