'use client'; import React, { useState } from 'react'; import { Box, Typography, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Paper, Chip, IconButton, Tooltip, } from '@mui/material'; import { LocationOn as LocationIcon, Visibility as VisibilityIcon } from '@mui/icons-material'; interface LocationResult { id: number; nodeName: string; nodeId: string; pressure: number; waterLevel: number; flow: number; status: 'normal' | 'warning' | 'danger'; coordinates: [number, number]; } interface LocationResultsProps { onLocate?: (coordinates: [number, number]) => void; onViewDetail?: (id: number) => void; } const LocationResults: React.FC = ({ onLocate, onViewDetail }) => { const [results, setResults] = useState([ // 示例数据 // { // id: 1, // nodeName: '节点A', // nodeId: 'N001', // pressure: 0.35, // waterLevel: 12.5, // flow: 85.3, // status: 'normal', // coordinates: [120.15, 30.25], // }, ]); const getStatusColor = (status: string) => { switch (status) { case 'normal': return 'success'; case 'warning': return 'warning'; case 'danger': return 'error'; default: return 'default'; } }; const getStatusText = (status: string) => { switch (status) { case 'normal': return '正常'; case 'warning': return '预警'; case 'danger': return '危险'; default: return '未知'; } }; return ( {/* 统计信息 */} 定位结果统计 总数 {results.length} 正常 {results.filter((r) => r.status === 'normal').length} 预警 {results.filter((r) => r.status === 'warning').length} 危险 {results.filter((r) => r.status === 'danger').length} {/* 结果列表 */} {results.length === 0 ? ( 暂无定位结果 请先执行方案分析 ) : ( 节点名称 节点ID 压力 (MPa) 水位 (m) 流量 (m³/h) 状态 操作 {results.map((result) => ( {result.nodeName} {result.nodeId} {result.pressure.toFixed(2)} {result.waterLevel.toFixed(2)} {result.flow.toFixed(1)} onLocate?.(result.coordinates)} color="primary" > onViewDetail?.(result.id)} color="primary" > ))}
)}
); }; export default LocationResults;