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