From 1dd993cf842ced0e49bb962bca09c10ad37dd89a Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 08 十一月 2024 13:56:17 +0800
Subject: [PATCH] #
---
zy-acs-flow/src/page/loc/BulkUpdateButton.jsx | 123 +++++++++++++++++++++-------------------
1 files changed, 64 insertions(+), 59 deletions(-)
diff --git a/zy-acs-flow/src/page/loc/BulkUpdateButton.jsx b/zy-acs-flow/src/page/loc/BulkUpdateButton.jsx
index bfe5f0e..572f8ee 100644
--- a/zy-acs-flow/src/page/loc/BulkUpdateButton.jsx
+++ b/zy-acs-flow/src/page/loc/BulkUpdateButton.jsx
@@ -12,6 +12,7 @@
NumberInput,
TextInput,
useTranslate,
+ useResourceContext,
} from 'react-admin';
import { Dialog, DialogActions, DialogContent, DialogTitle, Grid, Stack, Divider } from '@mui/material';
import UpdateIcon from '@mui/icons-material/Update';
@@ -19,55 +20,57 @@
import ContentSave from '@mui/icons-material/Save';
import CloseIcon from '@mui/icons-material/Close';
-const BulkUpdateButton = ({ resource, label = 'ra.action.update', ...rest }) => {
+const BulkUpdateButton = ({ label = 'ra.action.update' }) => {
const [open, setOpen] = useState(false);
- const [formData, setFormData] = useState({});
const refresh = useRefresh();
const notify = useNotify();
const translate = useTranslate();
+ const resource = useResourceContext();
const unselectAll = useUnselectAll(resource);
- const { selectedIds, onUnselectItems } = useListContext();
-
- const [updateMany, { loading }] = useUpdateMany(
- resource,
- { ids: selectedIds, data: formData },
- {
- onSuccess: () => {
- setOpen(false);
- refresh();
- notify('common.response.success', { type: 'info' });
- unselectAll();
- },
- onError: (error) => {
- notify(error.msg || 'common.response.fail', { type: 'error' });
- }
- }
- );
+ const { selectedIds } = useListContext();
const handleOpen = () => setOpen(true);
const handleClose = () => setOpen(false);
- const handleChange = (e) => {
- const { name, value } = e.target;
- setFormData({
- ...formData,
- [name]: value,
- });
- };
+ const [updateMany, { loading }] = useUpdateMany();
- const handleSubmit = () => {
- console.log(formData);
- updateMany();
+ const handleSubmit = (data) => {
+ delete filteredData['memoWrap'];
+ const filteredData = Object.fromEntries(
+ Object.entries(data).filter(([key, value]) => value !== null && value !== undefined)
+ );
+ if (Object.keys(filteredData).length > 0) {
+ updateMany(
+ resource,
+ {
+ ids: selectedIds,
+ data: filteredData,
+ },
+ {
+ onSuccess: () => {
+ setOpen(false);
+ refresh();
+ notify('common.response.success', { type: 'success' });
+ unselectAll();
+ },
+ onError: (error) => {
+ notify(error.message || 'common.response.fail', { type: 'error' });
+ },
+ }
+ );
+ } else {
+ notify('common.response.fail', { type: 'warning' });
+ }
};
return (
<>
<RaButton onClick={handleOpen} startIcon={<UpdateIcon />} label={label} />
<Dialog open={open} onClose={handleClose}>
- <DialogTitle>{translate('ra.action.update')}</DialogTitle>
- <DialogContent>
- <Form>
+ <Form onSubmit={handleSubmit}>
+ <DialogTitle>{translate('ra.action.update')}</DialogTitle>
+ <DialogContent>
<Grid container rowSpacing={2} columnSpacing={2}>
<Grid item xs={6} display="flex" gap={1}>
<ReferenceInput
@@ -105,33 +108,35 @@
</Stack>
</Grid>
</Grid>
- </Form>
- </DialogContent>
- <Divider sx={{ mb: 1 }} />
- <DialogActions sx={{ mb: 1 }}>
- <RaButton
- onClick={handleClose}
- variant="contained"
- color="inherit"
- size='large'
- label='ra.action.cancel'
- sx={{ mr: 1 }}
- >
- <CloseIcon />
- </RaButton>
- <RaButton
- onClick={handleSubmit}
- variant="contained"
- color="primary"
- size='large'
- label='ra.action.save'
- disabled={loading}
- sx={{ mr: 1 }}
- >
- <ContentSave />
- </RaButton>
- </DialogActions>
- </Dialog>
+ </DialogContent>
+ <Divider sx={{ mb: 1 }} />
+ <DialogActions sx={{ mb: 1 }}>
+ <RaButton
+ onClick={handleClose}
+ variant="contained"
+ color="inherit"
+ size='large'
+ label='ra.action.cancel'
+ aria-label={false}
+ sx={{ mr: 1 }}
+ >
+ <CloseIcon />
+ </RaButton>
+ <RaButton
+ type="submit"
+ variant="contained"
+ color="primary"
+ size='large'
+ label='ra.action.save'
+ aria-label={false}
+ disabled={loading}
+ sx={{ mr: 1 }}
+ >
+ <ContentSave />
+ </RaButton>
+ </DialogActions>
+ </Form>
+ </Dialog >
</>
);
};
--
Gitblit v1.9.1