From 6793162873940b6a34040ab815d6fa2eebfda402 Mon Sep 17 00:00:00 2001
From: verou <857149855@qq.com>
Date: 星期三, 26 三月 2025 10:36:31 +0800
Subject: [PATCH] fix:库位批量操作

---
 rsf-admin/src/page/basicInfo/loc/BatchModal.jsx             |   98 ++++++++++++------------
 rsf-admin/src/page/basicInfo/loc/LocListAside.jsx           |   11 ++
 rsf-admin/src/i18n/zh.js                                    |    2 
 rsf-admin/src/i18n/en.js                                    |    2 
 rsf-admin/src/page/basicInfo/loc/LocList.jsx                |   86 +++++++++++++++++++-
 rsf-admin/src/page/basicInfo/locAreaMat/LocAreaMatPanel.jsx |   14 +-
 6 files changed, 149 insertions(+), 64 deletions(-)

diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js
index e767188..6876c34 100644
--- a/rsf-admin/src/i18n/en.js
+++ b/rsf-admin/src/i18n/en.js
@@ -653,6 +653,8 @@
         batchMix: 'batchFiexed',
         batchWarehouse: 'batchWarehouse',
         batchStockLevel: "batchStockLevel",
+        batchWarehouseAreas: "batchWarehouseAreas",
+        batchLocType: "batchLocType",
     },
 };
 
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index 446f610..4684a76 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -657,6 +657,8 @@
         batchStockLevel: "鎵归噺ABC鍒嗙被",
         batchValidWarn: "鎵归噺棰勮",
         batchFlagCheck: "鎵归噺鍏嶆",
+        batchWarehouseAreas: "鎵归噺搴撳尯",
+        batchLocType: "鎵归噺搴撲綅绫诲瀷",
     },
 };
 
diff --git a/rsf-admin/src/page/basicInfo/loc/BatchModal.jsx b/rsf-admin/src/page/basicInfo/loc/BatchModal.jsx
index 4a4c023..64cc36a 100644
--- a/rsf-admin/src/page/basicInfo/loc/BatchModal.jsx
+++ b/rsf-admin/src/page/basicInfo/loc/BatchModal.jsx
@@ -55,7 +55,7 @@
 import StatusSelectInput from "../../components/StatusSelectInput";
 
 
-const BatchModal = ({ open, setOpen }) => {
+const BatchModal = ({ open, setOpen, fieldType }) => {
     const refresh = useRefresh();
     const translate = useTranslate();
 
@@ -128,48 +128,48 @@
     }
 
     return (
-        <Dialog open={open} maxWidth="md" fullWidth>
+        <Dialog open={open} maxWidth="xs" fullWidth>
             <Form onSubmit={handleSubmit}>
                 <DialogCloseButton onClose={handleClose} />
                 <DialogTitle>{translate('toolbar.batch')}</DialogTitle>
                 <DialogContent sx={{ mt: 2 }}>
                     <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
                         <Grid container spacing={2}>
-                            <Grid item xs={4}>
-                                <ReferenceInput
-                                    source="warehouseId"
-                                    reference="warehouse"
-                                >
-                                    <AutocompleteInput
-                                        label="table.field.loc.warehouseId"
-                                        optionText="name"
-                                        onChange={(value) => handleChange(value, 'warehouseId')}
-                                        value={formData.warehouseId}
-                                        filterToQuery={(val) => ({ name: val })}
-                                    />
-                                </ReferenceInput>
+                            {fieldType === 'warehouseId' &&
+                                <Grid item xs={6}>
+                                    <ReferenceInput
+                                        source="warehouseId"
+                                        reference="warehouse"
+                                    >
+                                        <AutocompleteInput
+                                            label="table.field.loc.warehouseId"
+                                            optionText="name"
+                                            value={formData.warehouseId}
+                                            filterToQuery={(val) => ({ name: val })}
+                                        />
+                                    </ReferenceInput>
+                                </Grid>
+                            }
+                            {fieldType === 'areaId' &&
+                                <Grid item xs={6}>
+                                    <ReferenceInput
+                                        source="areaId"
+                                        reference="warehouseAreas"
+                                    >
+                                        <AutocompleteInput
+                                            label="table.field.loc.areaId"
+                                            optionText="name"
+                                            onChange={(value) => handleChange(value, 'areaId')}
+                                            value={formData.areaId}
+                                            filterToQuery={(val) => ({ name: val })}
+                                        />
+                                    </ReferenceInput>
 
-                            </Grid>
-
-                            <Grid item xs={4}>
-                                <ReferenceInput
-                                    source="areaId"
-                                    reference="warehouseAreas"
-                                    filter={{ warehouseId: formData.warehouseId }}
-                                >
-                                    <AutocompleteInput
-                                        label="table.field.loc.areaId"
-                                        optionText="name"
-                                        onChange={(value) => handleChange(value, 'areaId')}
-                                        value={formData.areaId}
-                                        filterToQuery={(val) => ({ name: val })}
-                                    />
-                                </ReferenceInput>
-
-                            </Grid>
-
-                            <Grid item xs={4}>
-                                {/* <DictionarySelect
+                                </Grid>
+                            }
+                            {fieldType === 'typeIds' &&
+                                <Grid item xs={6}>
+                                    {/* <DictionarySelect
                                     label={translate("table.field.loc.type")}
                                     name="type"
                                     value={formData.type}
@@ -177,19 +177,21 @@
                                     size="small"
                                     dictTypeCode="sys_loc_type"
                                 /> */}
-                                <ReferenceArrayInput source="typeIds" reference="locType" >
-                                    <SelectArrayInput label="table.field.loc.type" onChange={(e) => handleChange(e.target.value, 'typeIds')} />
-                                </ReferenceArrayInput>
-                            </Grid>
+                                    <ReferenceArrayInput source="typeIds" reference="locType" >
+                                        <SelectArrayInput label="table.field.loc.type" onChange={(e) => handleChange(e.target.value, 'typeIds')} />
+                                    </ReferenceArrayInput>
+                                </Grid>
+                            }
 
-                            <Grid item xs={4}>
-                                <StatusSelectInput
-                                    onChange={(e) => handleChange(e.target.value, 'status')}
-                                    defaultValue={''}
-                                    require={false}
-                                />
-                            </Grid>
-
+                            {fieldType === 'status' &&
+                                <Grid item xs={6}>
+                                    <StatusSelectInput
+                                        onChange={(e) => handleChange(e.target.value, 'status')}
+                                        defaultValue={''}
+                                        require={false}
+                                    />
+                                </Grid>
+                            }
                         </Grid>
 
                     </Box>
diff --git a/rsf-admin/src/page/basicInfo/loc/LocList.jsx b/rsf-admin/src/page/basicInfo/loc/LocList.jsx
index af7f744..9af0d60 100644
--- a/rsf-admin/src/page/basicInfo/loc/LocList.jsx
+++ b/rsf-admin/src/page/basicInfo/loc/LocList.jsx
@@ -85,7 +85,6 @@
         source="warehouseId"
         label="table.field.loc.warehouseId"
         reference="warehouse"
-        alwaysOn
     >
         <AutocompleteInput
             label="table.field.loc.warehouseId"
@@ -97,7 +96,6 @@
         source="areaId"
         label="table.field.loc.areaId"
         reference="warehouseAreas"
-        alwaysOn
     >
         <AutocompleteInput
             label="table.field.loc.areaId"
@@ -194,14 +192,16 @@
                     </TopToolbar>
                 )}
                 perPage={DEFAULT_PAGE_SIZE}
-                aside={<LocListAside />}
             >
                 <StyledDatagrid
                     preferenceKey='loc'
                     align="left"
                     bulkActionButtons={
                         <>
-                            <BatchButton />
+                            <BatchWateButton />
+                            <BatchAreasButton />
+                            <BatchLocTypeButton />
+                            <BatchStatusButton />
                             <BindButton />
                             <SubzoneButton />
                             <BulkDeleteButton />
@@ -298,7 +298,7 @@
     )
 }
 
-const BatchButton = () => {
+const BatchWateButton = () => {
     const record = useRecordContext();
     const notify = useNotify();
     const refresh = useRefresh();
@@ -306,16 +306,88 @@
 
     const [createDialog, setCreateDialog] = useState(false);
 
-
     return (
         <>
-            <Button onClick={() => setCreateDialog(true)} label={"toolbar.batch"}>
+            <Button onClick={() => setCreateDialog(true)} label={"toolbar.batchWarehouse"}>
                 <EditIcon />
             </Button>
 
             <BatchModal
                 open={createDialog}
                 setOpen={setCreateDialog}
+                fieldType={'warehouseId'}
+            />
+        </>
+
+    )
+}
+
+const BatchAreasButton = () => {
+    const record = useRecordContext();
+    const notify = useNotify();
+    const refresh = useRefresh();
+
+
+    const [createDialog, setCreateDialog] = useState(false);
+
+    return (
+        <>
+            <Button onClick={() => setCreateDialog(true)} label={"toolbar.batchWarehouseAreas"}>
+                <EditIcon />
+            </Button>
+
+            <BatchModal
+                open={createDialog}
+                setOpen={setCreateDialog}
+                fieldType={'areaId'}
+            />
+        </>
+
+    )
+}
+
+const BatchLocTypeButton = () => {
+    const record = useRecordContext();
+    const notify = useNotify();
+    const refresh = useRefresh();
+
+
+    const [createDialog, setCreateDialog] = useState(false);
+
+    return (
+        <>
+            <Button onClick={() => setCreateDialog(true)} label={"toolbar.batchLocType"}>
+                <EditIcon />
+            </Button>
+
+            <BatchModal
+                open={createDialog}
+                setOpen={setCreateDialog}
+                fieldType={'typeIds'}
+            />
+        </>
+
+    )
+}
+
+const BatchStatusButton = () => {
+    const record = useRecordContext();
+    const notify = useNotify();
+    const refresh = useRefresh();
+
+
+    const [createDialog, setCreateDialog] = useState(false);
+
+    return (
+        <>
+            <Button onClick={() => setCreateDialog(true)} label={"toolbar.batchStatus"}>
+                <EditIcon />
+            </Button>
+
+            <BatchModal
+                open={createDialog}
+                setOpen={setCreateDialog}
+                fieldType={'status'}
             />
         </>
 
diff --git a/rsf-admin/src/page/basicInfo/loc/LocListAside.jsx b/rsf-admin/src/page/basicInfo/loc/LocListAside.jsx
index 72a68da..7ccba16 100644
--- a/rsf-admin/src/page/basicInfo/loc/LocListAside.jsx
+++ b/rsf-admin/src/page/basicInfo/loc/LocListAside.jsx
@@ -62,8 +62,15 @@
 
     }
     const handleNodeSelect = (event, nodeId) => {
-        console.log(nodeId);
-        // setFilters({ groupId: nodeId });
+        const row = apiRef.current.getItem(nodeId);
+        console.log(row);
+
+        if (row.type === 'warehouseId') {
+            // setFilters({ warehouseId: row.id ,areaId:''});
+        } else if (row.type === 'areaId') {
+            // setFilters({ areaId: row.id ,warehouseId:''});
+        }
+
     };
     const handleSearch = (e) => {
         setCondition(e.target.value)
diff --git a/rsf-admin/src/page/basicInfo/locAreaMat/LocAreaMatPanel.jsx b/rsf-admin/src/page/basicInfo/locAreaMat/LocAreaMatPanel.jsx
index 330640d..bb5207e 100644
--- a/rsf-admin/src/page/basicInfo/locAreaMat/LocAreaMatPanel.jsx
+++ b/rsf-admin/src/page/basicInfo/locAreaMat/LocAreaMatPanel.jsx
@@ -252,8 +252,8 @@
 
             <RichTreeView
                 expansionTrigger="iconContainer"
-                checkboxSelection
-                multiSelect
+                // checkboxSelection
+                // multiSelect
                 items={matnrTree}
                 apiRef={apiRef}
                 getItemId={(item) => item.id}
@@ -388,17 +388,17 @@
 
             <RichTreeView
                 expansionTrigger="iconContainer"
-                checkboxSelection
-                multiSelect
                 items={locTree}
                 apiRef={apiRef}
-                selectedItems={selectedItems}
                 getItemId={(item) => item.id}
                 getItemLabel={(item) => item.name}
                 defaultExpandedItems={['grid']}
-                onSelectedItemsChange={handleSelectedItemsChange}
-                onItemSelectionToggle={handleItemSelectionToggle}
                 onItemClick={handleNodeSelect}
+                onItemSelectionToggle={handleItemSelectionToggle}
+                // checkboxSelection
+                // multiSelect
+                selectedItems={selectedItems}
+                onSelectedItemsChange={handleSelectedItemsChange}
             />
 
             <BindLocModal

--
Gitblit v1.9.1