'use client'; import React, { useEffect, useState } from 'react'; import Link from 'next/link'; import { Alert, Badge, Breadcrumb as AntdBreadcrumb, Button, Card, Col, Empty, Flex, Row, Space, Spin, Typography, message } from 'antd'; import { ArrowLeftOutlined, CameraOutlined, FullscreenOutlined, HomeOutlined, ReloadOutlined } from '@ant-design/icons'; import { Breadcrumb } from '@/components/Breadcrumb'; import { CameraFrame } from '@/components/CameraFrame'; import { BackendApi } from '@/services/backendApi'; import type { CameraInfo } from '@/types'; const { Text } = Typography; export default function VideoPage() { const [cameras, setCameras] = useState([]); const [fullscreenCamera, setFullscreenCamera] = useState(null); const [loading, setLoading] = useState(true); const [errorMessage, setErrorMessage] = useState(''); const [messageApi, contextHolder] = message.useMessage(); const loadCameras = async () => { try { setLoading(true); setErrorMessage(''); const cameraList = await BackendApi.getCameras(); setCameras(cameraList); } catch (error) { setErrorMessage(error instanceof Error ? error.message : '摄像头列表加载失败,请稍后重试'); } finally { setLoading(false); } }; useEffect(() => { loadCameras(); }, []); if (fullscreenCamera) { return (
{contextHolder} 首页 }, { title: { event.preventDefault(); setFullscreenCamera(null); }}>视频监控 }, { title: fullscreenCamera.name }, ]} />
); } return (
{contextHolder} {errorMessage && ( )} {loading ? ( ) : cameras.length ? ( {cameras.map((camera) => ( camera.status === 'online' && setFullscreenCamera(camera)} > {camera.name} {camera.placeholder && 占位} {camera.status === 'online' && } ))} ) : ( )}
); }