import { Button, Col, Drawer, Form, Input, Menu, Pagination, Row, Select, Space, Switch, Table, Tag, Tree } from "antd"; import { useEffect, useRef, useState } from "react"; import styles from './InspectionTaskPlan.less' import { Title } from "@/pages/inspectiontasks/InspectionTasks"; import EnvironmentalMonitoring from "../EnvironmentalMonitoring/EnvironmentalMonitoring"; import btnImg1 from '@/assets/img/planBtn1.png' import btnImg2 from '@/assets/img/planBtn2.png' import btnImg3 from '@/assets/img/planBtn3.png' import menuInactiveBg1 from '@/assets/img/d368476fbf3b6a5e808b0274d96e1809d945da24.png' // 温度异常检测未激活背景图 import menuInactiveBg2 from '@/assets/img/3de08b72a292633bddad28950ba6c6d7fa084a23.png' // 温湿度检测未激活背景图 import menuInactiveBg3 from '@/assets/img/90501c706560228b7b68e4c8f4c9924c490578ad.png' // 跑冒滴漏检测未激活背景图 import menuInactiveBg4 from '@/assets/img/a4a0367e2a7e14611cc75be2e1a2d51127a4d390.png' // 仪器仪表采集未激活背景图 import menuInactiveBg5 from '@/assets/img/f729103541513c2e864c1f8a710db1d80125f3e7.png' // 环境监测未激活背景图 import activeBgImage from '@/assets/img/de55b2b9c8dab34462ff1b044a5a5c9668b11aa4.png' import thermalImage from '@/assets/img/03ba6681098742e33bea38c40e3c23f16847dc1f.png' import newBgImage from '@/assets/img/a858e701a4fde498b9c3cc56ab2b62693055dee1.png' import paibanBg from '@/assets/img/paiban.png' import inspectionBg from '@/assets/img/Rectangle 34624130.svg' import taskPlanBg from '@/assets/img/image 674 1.svg' import { DeleteOutlined, DownOutlined, EditOutlined, ExportOutlined, EyeOutlined, PlusOutlined, RedoOutlined, ReloadOutlined as IconRefresh, SearchOutlined as IconSearch } from "@ant-design/icons"; import TemperatureHumidityGauges from '../ReusableGauges/ReusableGauges'; // 新增导入 import DataAnalysisInspectionManagement from './DataAnalysisInspectionManagement'; const { Search } = Input // TaskCard 组件 - 用于显示巡检任务卡片 const TaskCard = ({ task }) => { return (
{/* 时间节点 */}
{/* 日期标签 */}
{task.date}
{/* 任务卡片 */}

任务基本信息

{task.title}

开始时间:{task.startTime}

完成进度:{task.progress}%

👁️ 异常数:{task.abnormalCount}
); }; export const MenuBg = (props) => { return (
{props.text} {props.icon}
) } //抽屉 const Drawers = (props) => { return (
所属班次 {props.row?.shifts} 路线名称 {props.row?.name} 所属专业 {props.row?.affiliation} 创建时间 {props.row?.time}
发电机 中水处区 1#增压风机变频器 1#炉右上炉膛温度 1#冷干机
发电机
  • 外观检查:有无破损、油污
  • 温度检测:轴承温度≤70℃,定子温度≤105℃
1#增压风机变频器
  • 运行指示灯:是否正常亮起
  • 散热风扇:是否正常转动
  • 输出电压:380V±5%
) } const TimeTable = () => { //状态管理 const [dataSource, setDataSource] = useState([]) //表格数据 const [loading, setLoading] = useState(false) //加载状态 const [total, setTotal] = useState(0) const [currentPage, setCurrentPage] = useState(1) const [pageSize, setPageSize] = useState(10) const [selectedRowKeys, setSelectedRowKeys] = useState([])//选中行的id const [open, setOpen] = useState(false) const [row, setRow] = useState(null) const columns = [ { title: '序号', dataIndex: 'index', key: 'index', width: 100, align: 'center', render: (text, record, index) => (index + 1) + (currentPage - 1) * pageSize }, { title: '线路ID', dataIndex: 'id', key: 'id', align: 'center', }, { title: '线路名称', dataIndex: 'name', key: 'name', align: 'center', }, { title: '所属班次', dataIndex: 'shifts', key: 'shifts', align: 'center', }, { title: '所属专业', dataIndex: 'affiliation', key: 'affiliation', align: 'center', }, { title: '涉及区域', dataIndex: 'position', key: 'position', align: 'center', }, { title: '设备数量', dataIndex: 'deviceNum', key: 'deviceNum', align: 'center', }, { title: '巡视项数量', dataIndex: 'lookNum', key: 'lookNum', align: 'center', }, { title: '状态', dataIndex: 'status', key: 'status', align: 'center', render: (status) => ( ) }, { title: '操作', key: 'action', align: 'center', render: (_, record) => ( handleView(record)} style={{ color: '#2C9E9D' }}> 查看详情 ), }, ] const fetchTableData = () => { try { setLoading(true) const mockData = [ { key: '1', id: 'GH001', name: '白班电气巡检线 1', shifts: '白班', affiliation: '电气专业', position: '发电机、中水处区', deviceNum: '22', lookNum: 3, status: 'true', time: '2025-03-31' }, { key: '2', id: 'GH001', name: '白班电气巡检线 1', shifts: '白班', affiliation: '电气专业', position: '发电机、中水处区', deviceNum: '22', lookNum: 3, status: 'true', time: '2025-05-31' }, ] setDataSource(mockData) setTotal(85) } catch (error) { console.error(error) } finally { setLoading(false) } } // 初始加载和分页变化时重新获取数据 useEffect(() => { fetchTableData(); }, [currentPage, pageSize]); // 处理查看详情 const handleView = (record) => { console.log('查看详情:', record); setRow(record) setOpen(true) }; return ( <> setOpen(false)} row={row} > ) } const StandardTable = () => { // 状态管理 const [dataSource, setDataSource] = useState([]); // 表格数据 const [loading, setLoading] = useState(false); // 加载状态 const [total, setTotal] = useState(0); // 总条数 const [currentPage, setCurrentPage] = useState(1); // 当前页码 const [pageSize, setPageSize] = useState(10); // 每页条数 const [selectedRowKeys, setSelectedRowKeys] = useState([]); // 选中的行ID // 表格列配置 const columns = [ { title: '序号', dataIndex: 'index', key: 'index', width: 100, align: 'center', render: (text, record, index) => (index + 1) + (currentPage - 1) * pageSize }, { title: '方案名称', dataIndex: 'name', key: 'name', align: 'center', }, { title: '版本', dataIndex: 'version', key: 'version', align: 'center', }, { title: '状态', dataIndex: 'status', key: 'status', align: 'center', render: (status) => ( ) }, { title: '最后更新时间', dataIndex: 'time', key: 'time', align: 'center', }, { title: '操作', key: 'action', align: 'center', render: (_, record) => ( handleView(record)} style={{ color: '#2C9E9D' }}> 查看详情 handleEdit(record)} style={{ color: '#2C9E9D' }}> 编辑 handleDelete(record)} style={{ color: '#ff4d4f' }}> 删除 ), }, ]; // 选择框配置 const rowSelection = { selectedRowKeys, onChange: (newSelectedRowKeys) => { setSelectedRowKeys(newSelectedRowKeys); }, }; // 获取表格数据 const fetchTableData = async () => { try { setLoading(true); // 这里是预留的接口调用位置 // 实际项目中替换为真实接口请求 // const response = await api.getEmployeeList({ // page: currentPage, // pageSize: pageSize // }); // 模拟数据 - 实际项目中删除 const mockData = [ { key: '1', name: '输油设备巡检标准', version: 'V2.0', status: true, time: '2025-09-13' }, { key: '2', name: '消防系统巡检标准', version: 'V1.1', status: true, time: '2025-09-13' }, { key: '3', name: '电气设备巡检标准', version: 'V1.0', status: true, time: '2025-09-13' }, { key: '4', name: '输油设备巡检标准', version: 'V2.0', status: true, time: '2025-09-13' }, { key: '5', name: '消防系统巡检标准', version: 'V1.1', status: true, time: '2025-09-13' }, { key: '6', name: '电气设备巡检标准', version: 'V1.0', status: true, time: '2025-09-13' }, ]; // 模拟接口返回 - 实际项目中使用接口数据 setDataSource(mockData); setTotal(85); // 总条数,实际项目中从接口获取 } catch (error) { console.error('获取员工数据失败:', error); } finally { setLoading(false); } }; // 初始加载和分页变化时重新获取数据 useEffect(() => { fetchTableData(); }, [currentPage, pageSize]); // 处理查看详情 const handleView = (record) => { // 预留查看详情逻辑 console.log('查看详情:', record); }; // 处理编辑 const handleEdit = (record) => { // 预留编辑逻辑 console.log('编辑:', record); }; // 处理删除 const handleDelete = (record) => { // 预留删除逻辑 console.log('删除:', record); }; // 渲染表格 return (
); } const DeviceAttribute = () => { // 状态管理 const [dataSource, setDataSource] = useState([]); // 表格数据 const [loading, setLoading] = useState(false); // 加载状态 const [total, setTotal] = useState(0); // 总条数 const [currentPage, setCurrentPage] = useState(1); // 当前页码 const [pageSize, setPageSize] = useState(10); // 每页条数 const [selectedRowKeys, setSelectedRowKeys] = useState([]); // 选中的行ID // 表格列配置 const columns = [ { title: '属性名称', dataIndex: 'attribute', key: 'attribute', align: 'center', }, { title: '属性内容', dataIndex: 'content', key: 'content', align: 'center', }, { title: '属性分类', dataIndex: 'class', key: 'class', align: 'center', }, { title: '阈值内容', dataIndex: 'threshold', key: 'threshold', align: 'center', render: (value) => { return (
上限:{value['上限']}
下限:{value['下限']}
单位:{value['单位']}
) } }, { title: '测点名称', dataIndex: 'point', key: 'point', align: 'center', }, { title: '操作', key: 'action', align: 'center', render: (_, record) => ( handleEdit(record)} style={{ color: '#2C9E9D' }}> 编辑 handleDelete(record)} style={{ color: '#ff4d4f' }}> 删除 ), }, ] // 获取表格数据 const fetchTableData = async () => { try { setLoading(true); // 这里是预留的接口调用位置 // 实际项目中替换为真实接口请求 // const response = await api.getEmployeeList({ // page: currentPage, // pageSize: pageSize // }); // 模拟数据 - 实际项目中删除 const mockData = [ { key: '1', attribute: '震动', content: '加速度', class: '阈值', threshold: { '上限': 4000, '下限': 0, '单位': 'mm/s²' }, point: '测点2', }, { key: '2', attribute: '震动', content: '加速度', class: '阈值', threshold: { '上限': 4000, '下限': 0, '单位': 'mm/s²' }, point: '测点2', }, { key: '3', attribute: '震动', content: '加速度', class: '阈值', threshold: { '上限': '', '下限': '', '单位': '' }, point: '测点2', }, ]; // 模拟接口返回 - 实际项目中使用接口数据 setDataSource(mockData); setTotal(85); // 总条数,实际项目中从接口获取 } catch (error) { console.error('获取员工数据失败:', error); } finally { setLoading(false); } }; // 初始加载和分页变化时重新获取数据 useEffect(() => { fetchTableData(); }, [currentPage, pageSize]); // 处理编辑 const handleEdit = (record) => { // 预留编辑逻辑 console.log('编辑:', record); }; // 处理删除 const handleDelete = (record) => { // 预留删除逻辑 console.log('删除:', record); }; // 渲染表格 return (
); } // 分页组件 export const TablePagination = ({ currentPage, pageSize, total, onPageChange, onPageSizeChange }) => { return (
`共 ${total} 条`} pageSizeOptions={['10', '20', '50', '100']} />
); }; // TimeMange component removed // PatrolRouteQuery component removed const SmartInspectionRange = () => { // 巡检范围树形数据,根据参考图更新 const treeData = [ { title: '核心环控路径', key: 'core-path', children: [ { title: '指挥调度中心', key: 'command-center' }, { title: '罐区集群', key: 'tank-cluster' }, { title: '泵房集群', key: 'pump-cluster' }, { title: '管线网络', key: 'pipeline-network' }, ], }, { title: '罐区', key: 'tank-area', children: [ { title: '高危罐区', key: 'high-risk-tank', children: [ { title: '顶源罐区', key: 'top-tank-area' }, { title: '拱顶罐区', key: 'dome-top-tank' }, ], }, { title: '常规罐区', key: 'normal-tank', children: [ { title: '浮顶罐区', key: 'floating-top-tank' }, { title: '拱顶罐区', key: 'normal-dome-tank' }, ], }, ], }, { title: '泵房', key: 'pump-house', children: [ { title: '运行中泵房', key: 'running-pump', children: [ { title: '1#泵房', key: 'pump-1' }, { title: '2#泵房', key: 'pump-2' }, ] }, { title: '备用泵房', key: 'spare-pump' }, { title: '3#泵房', key: 'pump-3', children: [ { title: '4#泵房', key: 'pump-4' }, ] }, ], }, { title: '智能网格', key: 'smart-grid' }, ]; return (
{/* 左侧树形结构 */}
| 巡检范围
{/* 右侧背景图和内容 */}
{/* 背景图 */} 智能巡检范围监控 {/* 区域基础信息框 */}
区域基础信息
区域名称:高危罐区 - 3#-9#罐组
区域编号:第2节点 (指挥中心→高危罐区)
巡检状态:正在巡检
完成进度:设备4/30台
{/* 巡检覆盖清单框 */}
巡检覆盖清单
覆盖主体
重点设备:储罐×8、3#-9#罐组、罐前付转装置
检测方式:红外检测、视觉识别
环境监控:声噪、消防水池监测
管控单位:3#罐区特种管控部门
{/* 机器人图标 */}
🤖
机器人实时位置
{/* 绿色圆点标记 */}
高危罐区
常规罐区
) }; // 智能巡检内容监控中心组件 const SmartInspectionContent = () => { const [activeTab, setActiveTab] = useState('温度异常检测'); const [currentPage, setCurrentPage] = useState(6); const handleTabClick = (tab) => { setActiveTab(tab); }; const handlePageChange = (page) => { setCurrentPage(page); }; const renderContent = () => { switch (activeTab) { case '温度异常检测': return (

| 实时监测区

{/*
*/}
红外热成像图
当前最高温: 89°C

实时温度: 89°C

高温异常: 80°C

当前监测区域: 罐区管道连接处检测

检测原理说明

"搭载红外热成像测温仪,覆盖电缆、胶管、设备高温点;温度达到阈值时自动上报故障,同步录制热成像/可见光视频,为故障分析提供数据支撑。"

异常历史记录

序号 故障时间 检测区域 异常温度 处理状态 操作
1 2025-10-16 14:20 1# 泵房电机 92°C 已处理
2 2025-10-16 14:20 1# 泵房电机 92°C 已处理
共 85 条
10 / page ... ...
); case '温湿度检测': // 创建一个React兼容的ECharts组件 const EChartsGauge = ({ id, option, height, width }) => { const chartRef = useRef(null); const chartInstanceRef = useRef(null); useEffect(() => { // 确保在浏览器环境中运行 if (typeof window !== 'undefined' && chartRef.current) { const echarts = require('echarts'); // 初始化图表 if (!chartInstanceRef.current) { chartInstanceRef.current = echarts.init(chartRef.current); } // 设置配置 chartInstanceRef.current.setOption(option); // 响应窗口大小变化 const handleResize = () => { if (chartInstanceRef.current) { chartInstanceRef.current.resize(); } }; window.addEventListener('resize', handleResize); // 清理函数 return () => { window.removeEventListener('resize', handleResize); if (chartInstanceRef.current) { chartInstanceRef.current.dispose(); chartInstanceRef.current = null; } }; } }, [option]); return (
); }; // 温度仪表盘配置 const temperatureOption = { series: [ { type: 'gauge', startAngle: 180, endAngle: 0, min: 0, max: 120, splitNumber: 6, itemStyle: { color: 'rgba(4, 95, 94, 0.5)', shadowColor: 'rgba(4, 95, 94, 0.7)', shadowBlur: 10, shadowOffsetX: 2, shadowOffsetY: 2 }, progress: { show: true, roundCap: true, width: 18, itemStyle: { color: 'rgba(4, 95, 94, 0.5)' } }, pointer: { icon: 'path://M2090.36389,615.30999 L2090.36389,615.30999 C2091.48372,615.30999 2092.40383,616.194028 2092.44859,617.312956 L2096.90698,728.755929 C2097.05155,732.369577 2094.2393,735.416212 2090.62566,735.56078 C2090.53845,735.564269 2090.45117,735.566014 2090.36389,735.566014 L2090.36389,735.566014 C2086.74736,735.566014 2083.81557,732.63423 2083.81557,729.017692 C2083.81557,728.930412 2083.81732,728.84314 2083.82081,728.755929 L2088.2792,617.312956 C2088.32396,616.194028 2089.24407,615.30999 2090.36389,615.30999 Z', length: '75%', width: 16, offsetCenter: [0, '5%'], itemStyle: { color: 'rgba(4, 95, 94, 1)' } }, axisLine: { roundCap: true, lineStyle: { width: 18, color: [ [1, 'rgba(4, 95, 94, 0.5)'] ] } }, axisTick: { splitNumber: 2, lineStyle: { width: 2, color: '#999' } }, splitLine: { length: 12, lineStyle: { width: 3, color: 'rgba(4, 95, 94, 0.8)' } }, axisLabel: { distance: 30, color: 'rgba(4, 95, 94, 0.8)', fontSize: 20 }, title: { show: true, offsetCenter: [0, '10%'], fontSize: 18, color: 'rgba(4, 95, 94, 0.8)' }, detail: { // backgroundColor: 'rgba(4, 95, 94, 0.2)', // borderColor: 'rgba(4, 95, 94, 0.5)', // borderWidth: 2, width: '60%', lineHeight: 40, height: 40, borderRadius: 8, offsetCenter: [0, '35%'], valueAnimation: true, formatter: function (value) { return '{value|温度:' + value.toFixed(0) + '℃}'; // return '{value|温度:' + value.toFixed(0) + '℃}{unit|°C}'; }, rich: { value: { fontSize: 20, fontWeight: '400', color: 'rgba(4, 95, 94, 1)' }, unit: { fontSize: 20, color: 'rgba(4, 95, 94, 0.8)', padding: [0, 0, -20, 10] } } }, data: [ { value: 28, name: '' } ] } ] }; // 湿度仪表盘配置 const humidityOption = { series: [ { type: 'gauge', startAngle: 180, endAngle: 0, min: 0, max: 120, splitNumber: 6, itemStyle: { color: 'rgba(4, 95, 94, 0.5)', shadowColor: 'rgba(4, 95, 94, 0.7)', shadowBlur: 10, shadowOffsetX: 2, shadowOffsetY: 2 }, progress: { show: true, roundCap: true, width: 18, itemStyle: { color: 'rgba(4, 95, 94, 0.5)' } }, pointer: { icon: 'path://M2090.36389,615.30999 L2090.36389,615.30999 C2091.48372,615.30999 2092.40383,616.194028 2092.44859,617.312956 L2096.90698,728.755929 C2097.05155,732.369577 2094.2393,735.416212 2090.62566,735.56078 C2090.53845,735.564269 2090.45117,735.566014 2090.36389,735.566014 L2090.36389,735.566014 C2086.74736,735.566014 2083.81557,732.63423 2083.81557,729.017692 C2083.81557,728.930412 2083.81732,728.84314 2083.82081,728.755929 L2088.2792,617.312956 C2088.32396,616.194028 2089.24407,615.30999 2090.36389,615.30999 Z', length: '75%', width: 16, offsetCenter: [0, '5%'], itemStyle: { color: 'rgba(4, 95, 94, 1)' } }, axisLine: { roundCap: true, lineStyle: { width: 18, color: [ [1, 'rgba(4, 95, 94, 0.5)'] ] } }, axisTick: { splitNumber: 2, lineStyle: { width: 2, color: '#999' } }, splitLine: { length: 12, lineStyle: { width: 3, color: 'rgba(4, 95, 94, 0.8)' } }, axisLabel: { distance: 30, color: 'rgba(4, 95, 94, 0.8)', fontSize: 20 }, title: { show: true, offsetCenter: [0, '10%'], fontSize: 18, color: 'rgba(4, 95, 94, 0.8)' }, detail: { // backgroundColor: 'rgba(4, 95, 94, 0.2)', // borderColor: 'rgba(4, 95, 94, 0.5)', // borderWidth: 2, width: '60%', lineHeight: 40, height: 40, borderRadius: 8, offsetCenter: [0, '35%'], valueAnimation: true, formatter: function (value) { // return '{value|' + value.toFixed(0) + '}{unit|%}'; return '{value|湿度:' + value.toFixed(0) + '%}'; }, rich: { value: { fontSize: 20, fontWeight: '400', color: 'rgba(4, 95, 94, 1)' }, unit: { fontSize: 20, color: 'rgba(4, 95, 94, 0.8)', padding: [0, 0, -20, 10] } } }, data: [ { value: 55, name: '' } ] } ] }; return (

| 温湿度检测

实时仪表盘

{/* 温度仪表盘 - 使用React兼容的ECharts组件 */}

阈值配置区

历史趋势图

温度(°C)
湿度(%RH)
{/* 模拟趋势图 */} {/* 网格线 */} {[0, 25, 50, 75, 100].map((val, index) => ( {val} ))} {/* 时间标签 */} {['00:00', '03:00', '06:00', '09:00', '12:00', '15:00', '18:00', '21:00', '24:00'].map((time, index) => ( {time} ))} {/* 温度曲线 */} {/* 温度数据点 */} {[50, 140, 230, 320, 410, 500, 590, 680, 750].map((x, index) => ( ))} {/* 湿度曲线 */} {/* 湿度数据点 */} {[50, 140, 230, 320, 410, 500, 590, 680, 750].map((x, index) => ( ))}
); case '跑冒滴漏检测': return (
实时检测画面
热成像检测画面

异常记录表格

序号 故障时间 检测区域 检测技术 处理状态 操作
1 2025-10-16 14:20 1#泵房电机 红外热成像 已处理
2 2025-10-16 14:20 2#泵房电机 红外热成像 已处理
共 05 条 10 / page
...
); case '仪器仪表采集': return (
{/* 顶部批量编辑按钮 */}
| 仪器仪表采集
{/* 状态统计卡片 */}

状态统计卡片

{/* 正常仪表卡片 */}
正常仪表
28
{/* 超限仪表卡片 */}
超限仪表
2
{/* 待确认卡片 */}
待确认
0
{/* 采集数据列表 */}

统计数据列表

序号 仪表名称 采集值 设备位置 状态 报警阈值
1 1# 罐液位计 8.2m 高危罐区 3# 罐 正常 0-10m
2 2# 泵出口压力表 0.5MPa 1# 泵房 正常 0.4-0.8MPa
{/* 分页控件 */}
共95条 10/95页
...
); case '环境监测': return (
); default: return null; } }; return (
| 智能巡检内容监控中心
{renderContent()}
); }; // 任务规划与执行流程组件 const TaskPlanningFlow = () => { return (
{/* 顶部标题 */}
接班班组签到
当前多机协作任务完成时间较单机缩短 62%
{/* 顶部控制区域 */} {/* 左侧任务状态选择框 */}
任务状态:
{/* 内容区域 - 调整高度布局,顶部贴近,底部只留10px空间 */}
{/* 传感器仪表盘 */}

传感器仪表盘

甲烷: 0.01%
一氧化碳: 0.0ppm
分贝值: 69.2db
{/* 双面监控区 */}

双面监控区

红外热成像图
视频监控画面
{/* 机器人信息和检测设备状态 */}

机器人实时信息

机器人名称: AAA
当前位置: 中控室
速度: 0.07m/s
当前模式: 巡回检测
电量: 85%
累计里程: 96km

检测设备状态

)} {activeTab === '巡检任务' && (
{/* 巡检任务标题栏 */}

巡检任务管理

{/* 横向时间轴布局 */}
{/* 时间轴线 - 横向 */}
{/* 任务卡片组 - 上面3个 */}
{[ { date: '2025/09/12', title: '罐区A-2小时巡检任务', startTime: '2025-10-17 09:00', progress: 75, abnormalCount: 3 }, { date: '2025/09/28', title: '泵房设备安全检查', startTime: '2025-10-18 14:30', progress: 100, abnormalCount: 0 }, { date: '2025/10/15', title: '管线压力监测任务', startTime: '2025-10-19 08:00', progress: 45, abnormalCount: 2 } ].map((task, index) => ( ))}
{/* 任务卡片组 - 下面2个 */}
{[ { date: '2025/10/19', title: '环境参数采集任务', startTime: '2025-10-20 10:00', progress: 0, abnormalCount: 0 }, { date: '2025/10/20', title: '安全阀定期检查', startTime: '2025-10-21 15:00', progress: 0, abnormalCount: 0 } ].map((task, index) => (
{/* 时间节点 */}
{/* 日期标签 */}
{task.date}
{/* 任务卡片 */}

任务基本信息

{task.title}

开始时间:{task.startTime}

完成进度:{task.progress}%

👁️ 异常数:{task.abnormalCount}
))}
)} {activeTab === '报告管理' && (

| 历史报告

( 查看详情 下载PDF ), }, ]} dataSource={[ { id: 1, name: 'XL001', time: '2025-10-18 00:28', area: '红色区域', abnormal: '电气专业' }, { id: 2, name: 'XL002', time: '2025-10-14 03:26', area: '橙色区域', abnormal: '水处理' }, ]} pagination={{ total: 85, showSizeChanger: true, showTotal: (total) => `共${total}条`, pageSizeOptions: ['10', '20', '50'], defaultPageSize: 10, }} bordered /> )} ); }; const list = { '巡检管理': , '巡检标准管理': , '设备属性设置': , '智能巡检范围监控': , '巡检内容': , '任务规划与执行流程': , '数据分析巡检管理': , // 添加新组件 } const InspectionTaskPlan = () => { const [current, setCurrent] = useState('智能巡检范围监控') const onclick = (e) => { console.log(e.key) setCurrent(e.key) } return ( <>
当前:  {current}
{list[current]} ) } export default InspectionTaskPlan