#
luxiaotao1123
2024-10-11 a908604f5aa2da9921cd99c12a6fa422d5893f4a
zy-acs-flow/src/map/settings/CopyDrawer.jsx
@@ -15,20 +15,59 @@
    Divider,
    Drawer,
    IconButton,
    LinearProgress,
    Switch,
    FormControlLabel,
    FormLabel,
    ToggleButtonGroup,
    ToggleButton,
} from '@mui/material';
import CloseIcon from '@mui/icons-material/Close';
import { useTranslate } from 'react-admin';
import * as Tool from '../tool';
import { PAGE_DRAWER_WIDTH } from '@/config/setting';
import {
    DEVICE_TYPE,
} from '../constants';
import { useNotification } from '../Notification';
const CopyDrawer = (props) => {
    const { open, onCancel, sprite, width = PAGE_DRAWER_WIDTH, title } = props;
    const { open, onCancel, sprite, value, width = PAGE_DRAWER_WIDTH, handleOnCopy } = props;
    const notify = useNotification();
    const translate = useTranslate();
    const deviceType = sprite?.data?.type;
    const { control, handleSubmit, reset, watch, setValue, formState: { errors } } = useForm({
        defaultValues: {
            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);
        }
    }, [value, setValue])
    const handleClose = () => {
        onCancel();
    }
    const onFormSubmit = (data) => {
        if (data) {
            console.log(data);
        }
        if (handleOnCopy) {
            handleOnCopy(data);
        }
        notify.info(translate('common.response.success'));
    };
    return (
        <>
@@ -39,7 +78,7 @@
                onClose={handleClose}
                sx={{ zIndex: 100, opacity: 1 }}
            >
                {open && (
                {(open) && (
                    <Box pt={12} width={{ xs: '100vW', sm: width }} height={'calc(100vh - 200px);'} mt={{ xs: 2, sm: 1 }} sx={{
                    }}>
                        <Stack direction="row" p={2}>
@@ -52,6 +91,165 @@
                        </Stack>
                        <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}
                                            render={({ field }) => (
                                                <TextField
                                                    {...field}
                                                    label={translate('page.map.settings.map.copy.direction')}
                                                    InputProps={{
                                                        readOnly: true,
                                                    }}
                                                    fullWidth
                                                />
                                            )}
                                        />
                                    </Grid>
                                    <Grid item xs={6}>
                                        <Controller
                                            name="copyCount"
                                            control={control}
                                            render={({ field }) => (
                                                <TextField
                                                    {...field}
                                                    label={translate('page.map.settings.map.copy.count')}
                                                    InputProps={{
                                                        readOnly: true,
                                                    }}
                                                    fullWidth
                                                />
                                            )}
                                        />
                                    </Grid>
                                    <Grid item xs={12}>
                                        <Controller
                                            name="gap"
                                            control={control}
                                            render={({ field }) => (
                                                <TextField
                                                    {...field}
                                                    label={translate('page.map.settings.map.copy.field.gap')}
                                                    type="number"
                                                    sx={{ width: '50%' }}
                                                    fullWidth
                                                    inputProps={{
                                                        min: 0,
                                                        step: 1,
                                                    }}
                                                />
                                            )}
                                        />
                                    </Grid>
                                    <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>
                                    {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>
                                    )}
                                    {deviceType === DEVICE_TYPE.SHELF && (
                                        <>
                                        </>
                                    )}
                                    {deviceType === DEVICE_TYPE.CHARGE && (
                                        <>
                                        </>
                                    )}
                                    {deviceType === DEVICE_TYPE.STATION && (
                                        <>
                                        </>
                                    )}
                                    {deviceType === DEVICE_TYPE.POINT && (
                                        <>
                                        </>
                                    )}
                                    <Grid item xs={12}>
                                        <Divider />
                                    </Grid>
                                    <Grid item xs={12} mt={2}>
                                        <Stack direction="row" spacing={2}>
                                            <Button variant="contained" color="primary" type="submit">
                                                {translate('ra.action.confirm')}
                                            </Button>
                                        </Stack>
                                    </Grid>
                                </Grid>
                            </Box>
                        </Box>
                    </Box>
                )}