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/insight/index.jsx | 80 +++++++++++++++++++++++++++++++++++---- 1 files changed, 71 insertions(+), 9 deletions(-) diff --git a/zy-acs-flow/src/map/insight/index.jsx b/zy-acs-flow/src/map/insight/index.jsx index bb95ea9..3bc802c 100644 --- a/zy-acs-flow/src/map/insight/index.jsx +++ b/zy-acs-flow/src/map/insight/index.jsx @@ -1,22 +1,31 @@ import React, { useState, useRef, useEffect } from 'react'; import { useTranslate } from "react-admin"; -import { Drawer, Box, Typography, Grid, IconButton, Stack, useTheme } from '@mui/material'; +import { Drawer, Box, Typography, Card, CardContent, IconButton, Stack, useTheme } from '@mui/material'; import CloseIcon from '@mui/icons-material/Close'; import { PAGE_DRAWER_WIDTH } from '@/config/setting'; - +import { + DEVICE_TYPE, +} from '../constants'; +import JsonShow from '../JsonShow'; +import ShelfInsight from './shelf'; +import AgvInsight from './agv'; +import PointInsight from './point'; const Insight = (props) => { - const { open, onCancel, sprite, width = PAGE_DRAWER_WIDTH, title } = props; + const { open, onCancel, sprite, width = PAGE_DRAWER_WIDTH } = props; const theme = useTheme(); const themeMode = theme.palette.mode; const translate = useTranslate(); + const [title, setTitle] = useState(null); + + const deviceType = sprite?.data?.type; const handleClose = () => { onCancel(); } useEffect(() => { - }, []) + }, [sprite]) return ( <> @@ -25,20 +34,41 @@ open={open} anchor="right" onClose={handleClose} - sx={{ zIndex: 100, opacity: .8 }} + sx={{ zIndex: 100, opacity: 1 }} > {open && ( - <Box pt={12} width={{ xs: '100vW', sm: width }} height={'calc(100vh - 200px);'} mt={{ xs: 2, sm: 1 }} sx={{ + <Box pt={12} width={{ xs: '100vW', sm: width }} height={'calc(100vh - 100px);'} mt={{ xs: 2, sm: 1 }} sx={{ }}> - <Stack direction="row" p={2}> + <Stack direction="row" p={2} pt={3}> <Typography variant="h6" flex="1"> - {title || translate('page.map.insight.title')} + {title || ''} </Typography> <IconButton onClick={handleClose} size="small"> <CloseIcon /> </IconButton> </Stack> - <Box p={3}> + <Box p={2} pt={0} height='100%'> + <Card sx={{ + height: '100%', + transition: '0.3s', + boxShadow: themeMode === 'light' + ? '0px 2px 8px rgba(0, 0, 0, 0.1)' + : '0px 2px 2px rgba(255, 255, 255, 0.1)', + '&:hover': { + boxShadow: themeMode === 'light' + ? '0px 4px 16px rgba(0, 0, 0, 0.2)' + : '0px 4px 8px rgba(255, 255, 255, 0.2)', + }, + borderRadius: '8px', + }}> + <CardContent sx={{ height: '100%' }}> + <DeviceContent + deviceType={deviceType} + sprite={sprite} + setTitle={setTitle} + /> + </CardContent> + </Card> </Box> </Box> )} @@ -47,5 +77,37 @@ ) } +const DeviceContent = ({ deviceType, sprite, setTitle }) => { + switch (deviceType) { + case DEVICE_TYPE.SHELF: + return ( + <ShelfInsight + sprite={sprite} + setTitle={setTitle} + /> + ) + case DEVICE_TYPE.AGV: + return ( + <AgvInsight + sprite={sprite} + setTitle={setTitle} + /> + ) + case DEVICE_TYPE.POINT: + return ( + <PointInsight + sprite={sprite} + setTitle={setTitle} + /> + ) + default: + return ( + <JsonShow + data={sprite?.data} + height={550} + /> + ) + } +} export default Insight; \ No newline at end of file -- Gitblit v1.9.1