From 6bee3457639f04f3a3576c1a32dcb7d5632cd3d4 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期五, 11 十月 2024 15:52:49 +0800 Subject: [PATCH] # --- zy-acs-flow/src/map/settings/CopyDrawer.jsx | 182 ++++++++++++++++++++++++++++++++++----------- 1 files changed, 138 insertions(+), 44 deletions(-) diff --git a/zy-acs-flow/src/map/settings/CopyDrawer.jsx b/zy-acs-flow/src/map/settings/CopyDrawer.jsx index d7561b9..60b46e2 100644 --- a/zy-acs-flow/src/map/settings/CopyDrawer.jsx +++ b/zy-acs-flow/src/map/settings/CopyDrawer.jsx @@ -16,6 +16,11 @@ Drawer, IconButton, LinearProgress, + Switch, + FormControlLabel, + FormLabel, + ToggleButtonGroup, + ToggleButton, } from '@mui/material'; import CloseIcon from '@mui/icons-material/Close'; import { useTranslate } from 'react-admin'; @@ -26,28 +31,62 @@ } from '../constants'; import { useNotification } from '../Notification'; +const incrementOptionsMap = { + [DEVICE_TYPE.SHELF]: [ + { value: 'row', label: 'page.map.settings.config.shelf.row' }, + { value: 'bay', label: 'page.map.settings.config.shelf.bay' }, + ], + [DEVICE_TYPE.CHARGE]: [ + { value: 'no', label: 'page.map.settings.config.base.no' }, + ], + [DEVICE_TYPE.STATION]: [ + { value: 'no', label: 'page.map.settings.config.base.no' }, + ], + [DEVICE_TYPE.POINT]: [ + { value: 'no', label: 'page.map.settings.config.base.no' }, + ], +}; + const CopyDrawer = (props) => { const { open, onCancel, sprite, value, width = PAGE_DRAWER_WIDTH, handleOnCopy } = props; const notify = useNotification(); const translate = useTranslate(); const deviceType = sprite?.data?.type; + const incrementOptions = incrementOptionsMap[deviceType] const { control, handleSubmit, reset, watch, setValue, formState: { errors } } = useForm({ defaultValues: { - // copyDirect: value?.copyDirect || '', - // copyCount: value?.copyCount || '', - gap: value?.gap || 0.0, + copyDirect: value?.copyDirect || '', + copyCount: value?.copyCount || '', + gap: 0.0, + autoIncrement: false, + incrementMode: 'ascending', }, }); useEffect(() => { - if (value && Object.keys(value).length > 0) { - setValue('copyDirect', value.copyDirect); - setValue('copyCount', value.copyCount); + if (watch('autoIncrement') && incrementOptions && incrementOptions.length > 0) { + const currentIncrementValue = watch('incrementValue'); + if (!currentIncrementValue) { + setValue('incrementValue', incrementOptions[0].value); + } + } else { + setValue('incrementValue', undefined); } - }, [value, setValue]) + }, [watch('autoIncrement'), incrementOptions, setValue, watch]); - // if (!value || !sprite) return <LinearProgress />; + useEffect(() => { + if (sprite && value && Object.keys(value).length > 0) { + reset({ + copyDirect: value.copyDirect || '', + copyCount: value.copyCount || '', + gap: 0.0, + autoIncrement: false, + incrementMode: 'ascending', + incrementValue: undefined, + }); + } + }, [sprite, value, reset, incrementOptions, setValue]); const handleClose = () => { onCancel(); @@ -88,19 +127,7 @@ <Box p={3}> <Box component="form" onSubmit={handleSubmit(onFormSubmit)} noValidate sx={{ mt: 0 }}> <Grid container spacing={1.4}> - <Grid item xs={6}> - <Typography variant="body1"> - {translate('page.map.settings.map.copy.direction')}: {value?.copyDirect} - </Typography> - </Grid> - <Grid item xs={6}> - <Typography variant="body1"> - {translate('page.map.settings.map.copy.count')}: {value?.copyCount} - </Typography> - </Grid> - - {/* <Grid item xs={6}> <Controller name="copyDirect" control={control} @@ -131,7 +158,7 @@ /> )} /> - </Grid> */} + </Grid> <Grid item xs={12}> <Controller @@ -144,37 +171,104 @@ type="number" sx={{ width: '50%' }} fullWidth - onChange={(e) => { - const value = parseFloat(e.target.value).toFixed(1); - field.onChange(value); + inputProps={{ + min: 0, + step: 1, }} /> )} /> </Grid> - {deviceType === DEVICE_TYPE.SHELF && ( - <> - </> - )} - - {deviceType === DEVICE_TYPE.CHARGE && ( - <> - </> - )} - - {deviceType === DEVICE_TYPE.STATION && ( - <> - </> - )} - - {deviceType === DEVICE_TYPE.POINT && ( - <> - </> - )} - + <Grid item xs={12} mt={2} mb={1}> + <Divider /> + </Grid> <Grid item xs={12}> + <Controller + name="autoIncrement" + control={control} + render={({ field }) => ( + <FormControlLabel + control={ + <Switch + {...field} + checked={field.value || false} + onChange={(e) => field.onChange(e.target.checked)} + /> + } + label={translate('page.map.settings.map.copy.field.autoIncrement')} + /> + )} + /> + </Grid> + + {(!!incrementOptions?.length && watch('autoIncrement')) && ( + <Grid item xs={12}> + <FormControl fullWidth> + <FormLabel sx={{ mb: 1 }}> + {translate('page.map.settings.map.copy.field.incrementValue')} + </FormLabel> + <Controller + name='incrementValue' + control={control} + render={({ field }) => ( + <ToggleButtonGroup + {...field} + value={field.value} + exclusive + onChange={(event, value) => { + field.onChange(value); + }} + fullWidth + > + {incrementOptions.map((option, idx) => ( + <ToggleButton key={idx} value={option.value}> + {translate(option.label)} + </ToggleButton> + ))} + </ToggleButtonGroup> + )} + /> + </FormControl> + </Grid> + )} + + {watch('autoIncrement') && ( + <Grid item xs={12}> + <FormControl fullWidth> + <FormLabel sx={{ + mb: 1 + }}> + {translate('page.map.settings.map.copy.field.incrementMode')} + </FormLabel> + <Controller + name="incrementMode" + control={control} + render={({ field }) => ( + <ToggleButtonGroup + {...field} + value={field.value} + exclusive + onChange={(event, value) => { + field.onChange(value); + }} + fullWidth + > + <ToggleButton value="ascending"> + {translate('page.map.settings.map.copy.field.ascend')} + </ToggleButton> + <ToggleButton value="descending"> + {translate('page.map.settings.map.copy.field.descend')} + </ToggleButton> + </ToggleButtonGroup> + )} + /> + </FormControl> + </Grid> + )} + + <Grid item xs={12} mt={2}> <Divider /> </Grid> -- Gitblit v1.9.1