From 1864f916e0359d0814416cf94feda3a3662ed193 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期五, 05 九月 2025 16:39:29 +0800
Subject: [PATCH] 1
---
zy-acs-flow/src/map/settings/ConfigSettings.jsx | 124 ++++++++++++++++++++++++-----------------
1 files changed, 72 insertions(+), 52 deletions(-)
diff --git a/zy-acs-flow/src/map/settings/ConfigSettings.jsx b/zy-acs-flow/src/map/settings/ConfigSettings.jsx
index 0d8124b..2ac2917 100644
--- a/zy-acs-flow/src/map/settings/ConfigSettings.jsx
+++ b/zy-acs-flow/src/map/settings/ConfigSettings.jsx
@@ -19,27 +19,56 @@
import ConfirmButton from '../../page/components/ConfirmButton';
import {
DEVICE_TYPE,
- DEVICE_Z_INDEX,
} from '../constants';
+import { useNotification } from '../Notification';
const ConfigSettings = (props) => {
- const { sprite, setSpriteSettings, onSubmit } = props;
+ const { sprite, onSubmit } = props;
+ const notify = useNotification();
const translate = useTranslate();
- const { control, handleSubmit, reset, watch } = useForm({
- defaultValues: {
- ...sprite.data
- },
+ const { control, handleSubmit, reset, watch, setValue, formState: { errors } } = useForm({
+ defaultValues: { ...sprite?.data },
});
- const updateSprite = (data) => {
- };
+ useEffect(() => {
+ if (sprite?.data) {
+ reset({
+ ...sprite.data
+ });
+ }
+ }, [sprite, reset]);
+
+ const deviceType = sprite?.data?.type;
+
+ const rowValue = watch('row');
+ const bayValue = watch('bay');
+
+ useEffect(() => {
+ if (deviceType === DEVICE_TYPE.SHELF) {
+ if (rowValue != null && bayValue != null && rowValue !== '' && bayValue !== '') {
+ setValue('no', `${rowValue}-${bayValue}`);
+ } else {
+ setValue('no', '');
+ }
+ }
+ }, [
+ setValue,
+ deviceType,
+ rowValue,
+ bayValue,
+ ]);
const onFormSubmit = (data) => {
- console.log(data);
+ if (sprite?.data) {
+ Object.keys(data).forEach((key) => {
+ sprite.data[key] = data[key];
+ });
+ }
if (onSubmit) {
onSubmit(data);
}
+ notify.info(translate('common.response.success'));
};
return (
@@ -47,11 +76,9 @@
<Box component="form" onSubmit={handleSubmit(onFormSubmit)} noValidate sx={{ mt: 0 }}>
<Grid container spacing={1.4}>
- {sprite?.data?.type === DEVICE_TYPE.SHELF && (
+ {deviceType === DEVICE_TYPE.SHELF && (
<>
- <Grid item xs={6} pt={0} sx={{
- paddingTop: '8px !important',
- }}>
+ <Grid item xs={6}>
<Controller
name="row"
control={control}
@@ -60,19 +87,16 @@
{...field}
label={translate('page.map.settings.config.shelf.row')}
type="number"
+ value={field.value ?? ''}
fullWidth
onChange={(e) => {
- const value = e.target.value;
- field.onChange(e);
- updateSprite();
+ field.onChange(e.target.value === '' ? '' : Number(e.target.value));
}}
/>
)}
/>
</Grid>
- <Grid item xs={6} pt={0} sx={{
- paddingTop: '8px !important',
- }}>
+ <Grid item xs={6}>
<Controller
name="bay"
control={control}
@@ -81,10 +105,10 @@
{...field}
label={translate('page.map.settings.config.shelf.bay')}
type="number"
+ value={field.value ?? ''}
fullWidth
onChange={(e) => {
- const value = e.target.value;
- field.onChange(e);
+ field.onChange(e.target.value === '' ? '' : Number(e.target.value));
}}
/>
)}
@@ -93,17 +117,17 @@
</>
)}
- {sprite?.data?.type === DEVICE_TYPE.CHARGE && (
+ {deviceType === DEVICE_TYPE.CHARGE && (
<>
</>
)}
- {sprite?.data?.type === DEVICE_TYPE.STATION && (
+ {deviceType === DEVICE_TYPE.STATION && (
<>
</>
)}
- {sprite?.data?.type === DEVICE_TYPE.POINT && (
+ {deviceType === DEVICE_TYPE.POINT && (
<>
</>
)}
@@ -112,47 +136,43 @@
<Divider />
</Grid>
- {/* <Grid item xs={12}>
- <Typography variant="inherit">
- {translate('page.map.settings.config.base.no')}
- </Typography>
- </Grid> */}
- <Grid item xs={6} pt={0} sx={{
- paddingTop: '8px !important',
- }}>
-
+ <Grid item xs={6}>
<Controller
name="no"
control={control}
- render={({ field }) => (
- <TextField
- {...field}
- label="No"
- type="text"
- fullWidth
- onChange={(e) => {
- const value = e.target.value;
- field.onChange(e);
- }}
- />
- )}
+ rules={{
+ required: translate('ra.validation.required') // warn msg
+ }}
+ render={({ field }) => {
+ return (
+ <TextField
+ {...field}
+ label={translate('page.map.settings.config.base.no')}
+ type="text"
+ value={field.value ?? ''}
+ error={!!errors.no} // show red warn
+ helperText={errors.no ? errors.no.message : null} // show warn msg
+ fullWidth
+ onChange={(e) => {
+ field.onChange(e);
+ }}
+ />
+ )
+ }}
/>
</Grid>
<Grid item xs={12} mt={2}>
<Stack direction="row" spacing={2}>
- <Button variant="contained" color="primary" onClick={() => {
- }}>
+ <Button variant="contained" color="primary" type="submit">
{translate('ra.action.confirm')}
</Button>
</Stack>
</Grid>
-
</Grid>
</Box>
</>
- )
-}
+ );
+};
-
-export default ConfigSettings;
\ No newline at end of file
+export default ConfigSettings;
--
Gitblit v1.9.1