From 99411967019bbf0d7b0b971eae0db2c2c58025f0 Mon Sep 17 00:00:00 2001
From: skyouc <958836976@qq.com>
Date: 星期六, 30 八月 2025 16:27:47 +0800
Subject: [PATCH] 修改任务状态
---
rsf-admin/src/page/basicInfo/loc/BatchModal.jsx | 145 ++++++++++++++++++++++++++++++++----------------
1 files changed, 96 insertions(+), 49 deletions(-)
diff --git a/rsf-admin/src/page/basicInfo/loc/BatchModal.jsx b/rsf-admin/src/page/basicInfo/loc/BatchModal.jsx
index 5e9cfb7..64cc36a 100644
--- a/rsf-admin/src/page/basicInfo/loc/BatchModal.jsx
+++ b/rsf-admin/src/page/basicInfo/loc/BatchModal.jsx
@@ -19,6 +19,7 @@
useCreateController,
useListContext,
useRefresh,
+ SelectArrayInput
} from 'react-admin';
import {
Dialog,
@@ -38,7 +39,8 @@
TableCell,
Tooltip,
IconButton,
- styled
+ styled,
+
} from '@mui/material';
@@ -50,11 +52,10 @@
import { Add, Edit, Delete } from '@mui/icons-material';
import _ from 'lodash';
import { DataGrid } from '@mui/x-data-grid';
+import StatusSelectInput from "../../components/StatusSelectInput";
-
-
-const InitModal = ({ open, setOpen }) => {
+const BatchModal = ({ open, setOpen, fieldType }) => {
const refresh = useRefresh();
const translate = useTranslate();
@@ -62,16 +63,32 @@
const notify = useNotify();
const [formData, setFormData] = useState({
- "areaId": undefined,
- "locType": "",
- "type": ""
+ "warehouseId": null,
+ "areaId": null,
+ "type": null,
+ 'status': null
});
+
+ const { selectedIds, onUnselectItems } = useListContext();
const handleClose = (event, reason) => {
if (reason !== "backdropClick") {
setOpen(false);
+ reset()
+ refresh();
+ onUnselectItems()
}
};
+
+ const reset = () => {
+ setFormData({
+ "warehouseId": null,
+ "areaId": null,
+ "type": null,
+ "typeIds": null,
+ 'status': null
+ })
+ }
const handleReset = (e) => {
e.preventDefault();
@@ -80,71 +97,101 @@
const handleChange = (value, name) => {
setFormData((prevData) => ({
...prevData,
- [name]: ['locType', 'type'].includes(name) ? value : +value
+ [name]: value
}));
+ refresh()
};
+ const removeEmptyKeys = (obj) => {
+ return _.pickBy(obj, (value) => {
+ if (_.isObject(value)) {
+ const newObj = removeEmptyKeys(value);
+ return !_.isEmpty(newObj);
+ }
+ return !_.isNil(value) && (_.isNumber(value) ? value !== 0 : !_.isEmpty(value));
+ });
+ }
+
const handleSubmit = async () => {
- const res = await request.post(`/loc/init`, formData);
+ const parmas = {
+ id: selectedIds,
+ loc: removeEmptyKeys(formData)
+ }
+
+ const res = await request.post(`/loc/modify`, parmas);
if (res?.data?.code === 200) {
- setOpen(false);
- refresh();
+ handleClose()
+
} else {
notify(res.data.msg);
}
}
-
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="areaId"
- reference="warehouseAreas"
- >
- <AutocompleteInput
- label="table.field.loc.areaId"
- optionText="name"
- onChange={(value) => handleChange(value, 'areaId')}
- value={formData.areaId}
- validate={[required()]}
- 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}>
- <DictionarySelect
- label={translate("table.field.loc.locType")}
- name="locType"
- value={formData.locType}
- onChange={(e) => handleChange(e.target.value, 'locType')}
- size="small"
- validate={[required()]}
- dictTypeCode="sys_width_type"
- />
- </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}
onChange={(e) => handleChange(e.target.value, 'type')}
size="small"
- validate={[required()]}
dictTypeCode="sys_loc_type"
- />
- </Grid>
+ /> */}
+ <ReferenceArrayInput source="typeIds" reference="locType" >
+ <SelectArrayInput label="table.field.loc.type" onChange={(e) => handleChange(e.target.value, 'typeIds')} />
+ </ReferenceArrayInput>
+ </Grid>
+ }
-
+ {fieldType === 'status' &&
+ <Grid item xs={6}>
+ <StatusSelectInput
+ onChange={(e) => handleChange(e.target.value, 'status')}
+ defaultValue={''}
+ require={false}
+ />
+ </Grid>
+ }
</Grid>
</Box>
@@ -152,7 +199,7 @@
<DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
<Box sx={{ width: '100%', display: 'flex', justifyContent: 'space-between' }}>
<Button type="submit" variant="contained" startIcon={<SaveIcon />}>
- 纭
+ {translate('toolbar.confirm')}
</Button>
</Box>
</DialogActions>
@@ -161,4 +208,4 @@
);
}
-export default InitModal;
\ No newline at end of file
+export default BatchModal;
\ No newline at end of file
--
Gitblit v1.9.1