From 7f70cb15d035f0c233b9e62b9e43aa985317c908 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 04 十一月 2024 10:22:45 +0800
Subject: [PATCH] #

---
 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