'use client'; import React, { useEffect, useState } from 'react'; import { Alert, Card, Row, Col, Typography, Space, Button, Tabs, Table, Image as AntImage, Empty, Spin, Flex } from 'antd'; import { ArrowLeftOutlined } from '@ant-design/icons'; import { useRouter } from 'next/navigation'; import { Breadcrumb } from '../../../components/Breadcrumb'; import { MockApi } from '../../../services/mockApi'; import { MachineDetail, ImageItem } from '../../../types'; import { StatusBadge } from '../../../components/StatusBadge'; const { Text } = Typography; export default function MachineDetailPage({ params }: { params: { serialNumber: string } }) { const router = useRouter(); const [machine, setMachine] = useState(null); const [loading, setLoading] = useState(true); const [errorMessage, setErrorMessage] = useState(''); useEffect(() => { let isMounted = true; const loadMachineDetail = async () => { try { setLoading(true); setErrorMessage(''); const data = await MockApi.getMachineDetail(params.serialNumber); if (!isMounted) return; setMachine(data); } catch { if (!isMounted) return; setMachine(null); setErrorMessage('机器详情加载失败,请稍后重试'); } finally { if (isMounted) { setLoading(false); } } }; loadMachineDetail(); return () => { isMounted = false; }; }, [params.serialNumber]); if (loading) { return ( ); } if (!machine) { return ( {errorMessage && ( )} ); } const renderImageGroup = (images: ImageItem[]) => { if (!images || images.length === 0) return ; return ( {images.map((img) => (
{img.name} {img.createdAt}
))}
); }; const imageTabs = [ { key: 'incoming', label: '来料检验单', children: renderImageGroup(machine.images.incomingInspection) }, { key: 'startup', label: '开机测试样张', children: renderImageGroup(machine.images.startupTestSample) }, { key: 'production', label: '生产加工单', children: renderImageGroup(machine.images.productionOrder) }, { key: 'robot', label: '机器人查验拍照', children: renderImageGroup(machine.images.robotInspection) }, ]; return (
序列号: {machine.serialNumber} 机器型号: {machine.modelName} 所属报关单: 当前状态: {Object.entries(machine.specs).map(([key, value]) => ( {key}: {value} ))} }} >
); }