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