#
luxiaotao1123
2024-10-11 433112b25f5874d0957fbfbda39c7325d3117aa6
#
3个文件已修改
95 ■■■■■ 已修改文件
zy-acs-flow/src/map/MapPage.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/map/Notification.jsx 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/map/settings/ConfigSettings.jsx 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/map/MapPage.jsx
@@ -81,7 +81,7 @@
        handleResize();
        window.addEventListener('resize', handleResize);
        notify('Welcome to Rcs', 'info');
        notify.info('Welcome to Rcs');
        return () => {
            if (websocket) {
zy-acs-flow/src/map/Notification.jsx
@@ -1,4 +1,4 @@
import React, { createContext, useContext, useState, useCallback } from 'react';
import React, { createContext, useContext, useState, useCallback, useMemo } from 'react';
import { Snackbar, Alert, Portal, Slide } from '@mui/material';
const NotificationContext = createContext();
@@ -18,12 +18,21 @@
        setNotification({ open: true, message, severity });
    }, []);
    const handleClose = () => {
        setNotification({ ...notification, open: false });
    };
    const handleClose = useCallback(() => {
        setNotification((prev) => ({ ...prev, open: false }));
    }, []);
    const notify = useMemo(() => ({
        info: (msg) => showNotification(msg, 'info'),
        success: (msg) => showNotification(msg, 'success'),
        warning: (msg) => showNotification(msg, 'warning'),
        error: (msg) => showNotification(msg, 'error'),
        // Optional: If you prefer 'warn' instead of 'warning', uncomment the line below
        // warn: (msg) => showNotification(msg, 'warning'),
    }), [showNotification]);
    return (
        <NotificationContext.Provider value={showNotification}>
        <NotificationContext.Provider value={notify}>
            {children}
            <Portal>
                <Snackbar
@@ -33,11 +42,15 @@
                    TransitionComponent={SlideTransition}
                    anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}
                    sx={{
                        // mt: 12,
                        zIndex: 2000,
                    }}
                >
                    <Alert onClose={handleClose} severity={notification.severity} sx={{ width: '300px', zIndex: 2000 }}>
                    <Alert
                        onClose={handleClose}
                        severity={notification.severity}
                        sx={{ width: '300px', zIndex: 2000 }}
                        variant="filled" // Optional: Use filled variant for better visibility
                    >
                        {notification.message}
                    </Alert>
                </Snackbar>
@@ -47,5 +60,9 @@
};
export const useNotification = () => {
    return useContext(NotificationContext);
    const context = useContext(NotificationContext);
    if (!context) {
        throw new Error('useNotification must be used within a NotificationProvider');
    }
    return context;
};
zy-acs-flow/src/map/settings/ConfigSettings.jsx
@@ -19,39 +19,51 @@
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({
    const { control, handleSubmit, reset, watch, setValue } = useForm({
        defaultValues: {
            ...sprite.data
            ...sprite.data,
        },
    });
    const updateSprite = (data) => {
    };
    const rowValue = watch('row');
    const bayValue = watch('bay');
    useEffect(() => {
        if (rowValue != null && bayValue != null && rowValue !== '' && bayValue !== '') {
            setValue('no', `${rowValue}-${bayValue}`);
        } else {
            setValue('no', '');
        }
    }, [rowValue, bayValue, setValue]);
    const onFormSubmit = (data) => {
        console.log(data);
        if (sprite && sprite.data) {
            Object.keys(data).forEach((key) => {
                sprite.data[key] = data[key];
            });
        }
        if (onSubmit) {
            onSubmit(data);
        }
        console.log(sprite.data);
        notify.info(translate('common.response.success'));
    };
    return (
        <>
            <Box component="form" onSubmit={handleSubmit(onFormSubmit)} noValidate sx={{ mt: 0 }}>
                <Grid container spacing={1.4}>
                    {sprite?.data?.type === DEVICE_TYPE.SHELF && (
                        <>
                            <Grid item xs={6} pt={0} sx={{
                                paddingTop: '8px !important',
                            }}>
                            <Grid item xs={6}>
                                <Controller
                                    name="row"
                                    control={control}
@@ -62,17 +74,13 @@
                                            type="number"
                                            fullWidth
                                            onChange={(e) => {
                                                const value = e.target.value;
                                                field.onChange(e);
                                                updateSprite();
                                            }}
                                        />
                                    )}
                                />
                            </Grid>
                            <Grid item xs={6} pt={0} sx={{
                                paddingTop: '8px !important',
                            }}>
                            <Grid item xs={6}>
                                <Controller
                                    name="bay"
                                    control={control}
@@ -83,7 +91,6 @@
                                            type="number"
                                            fullWidth
                                            onChange={(e) => {
                                                const value = e.target.value;
                                                field.onChange(e);
                                            }}
                                        />
@@ -107,7 +114,6 @@
                        <>
                        </>
                    )}
                    <Grid item xs={12}>
                        <Divider />
                    </Grid>
@@ -117,10 +123,7 @@
                            {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}
@@ -129,9 +132,9 @@
                                    {...field}
                                    label="No"
                                    type="text"
                                    value={field.value || ''}
                                    fullWidth
                                    onChange={(e) => {
                                        const value = e.target.value;
                                        field.onChange(e);
                                    }}
                                />
@@ -141,18 +144,15 @@
                    <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;
export default ConfigSettings;