From 3fa7cdec6ce44f07a0dc7e1910511ead606990f3 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期四, 11 九月 2025 08:19:53 +0800
Subject: [PATCH] 1

---
 zy-acs-flow/src/map/insight/agv/index.jsx |   87 +++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 83 insertions(+), 4 deletions(-)

diff --git a/zy-acs-flow/src/map/insight/agv/index.jsx b/zy-acs-flow/src/map/insight/agv/index.jsx
index 5d678c0..8cd484e 100644
--- a/zy-acs-flow/src/map/insight/agv/index.jsx
+++ b/zy-acs-flow/src/map/insight/agv/index.jsx
@@ -1,11 +1,90 @@
-
+import React, { useState, useRef, useEffect } from 'react';
+import { useTranslate } from "react-admin";
+import { Box, Typography, Tabs, Tab, Stack, useTheme, Divider } from '@mui/material';
+import { CUSTOM_PAGES_DATA_INTERVAL } from '@/config/setting';
+import AgvMain from './AgvMain';
+import AgvControl from './AgvControl';
+import JsonShow from '../../JsonShow';
+import { getAgvInfo } from '../../http';
 
 const AgvInsight = (props) => {
+    const { sprite, setTitle } = props;
+    const translate = useTranslate();
+    const theme = useTheme();
+
+    const [activeTab, setActiveTab] = useState(0);
+    const [curAgvNo, setCurAgvNo] = useState(null);
+    const [curAgvInfo, setCurAgvInfo] = useState(null);
+
+    const fetchAgvInfo = (agvNo) => {
+        setTitle(translate('page.map.devices.agv') + ' - ' + agvNo);
+        setCurAgvNo(agvNo);
+        getAgvInfo(agvNo, (response) => {
+            setCurAgvInfo(response);
+        });
+    }
+
+    useEffect(() => {
+        let intervalId;
+        if (sprite) {
+            const agvNo = sprite.data.no;
+            if (agvNo) {
+                fetchAgvInfo(agvNo);
+                intervalId = setInterval(() => {
+                    fetchAgvInfo(agvNo);
+                }, CUSTOM_PAGES_DATA_INTERVAL);
+            }
+        }
+
+        return () => {
+            setTitle(null);
+            setCurAgvInfo(null);
+            if (intervalId) {
+                clearInterval(intervalId)
+            }
+        }
+    }, [sprite])
+
+    const handleTabChange = (event, newValue) => {
+        setActiveTab(newValue);
+    };
 
     return (
-        <>
-            <h1>Agv</h1>
-        </>
+        <Box sx={{ height: '100%', display: 'flex', flexDirection: 'column' }}>
+            <Tabs
+                value={activeTab}
+                onChange={handleTabChange}
+                centered
+                sx={{ mb: 0 }}
+            >
+                <Tab label={translate('page.map.insight.title')} />
+                <Tab label={translate('page.map.insight.tabs.control')} />
+                <Tab label={'JSON'} />
+            </Tabs>
+
+            <Divider />
+
+            <Box flex={1} pt={2}>
+                {activeTab === 0 && (
+                    <AgvMain
+                        curAgvNo={curAgvNo}
+                        curAgvInfo={curAgvInfo}
+                        fetchAgvInfo={fetchAgvInfo}
+                    />
+                )}
+                {activeTab === 1 && (
+                    <AgvControl
+                        curAgvNo={curAgvNo}
+                    />
+                )}
+                {activeTab === 2 && (
+                    <JsonShow
+                        data={curAgvInfo || sprite?.data}
+                        height={550}
+                    />
+                )}
+            </Box>
+        </Box>
     )
 }
 

--
Gitblit v1.9.1