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组件 */}
历史趋势图
{/* 模拟趋势图 */}
);
case '跑冒滴漏检测':
return (
实时检测画面
异常记录表格
| 序号 |
故障时间 |
检测区域 |
检测技术 |
处理状态 |
操作 |
| 1 |
2025-10-16 14:20 |
1#泵房电机 |
红外热成像 |
已处理
|
|
| 2 |
2025-10-16 14:20 |
2#泵房电机 |
红外热成像 |
已处理
|
|
共 05 条 10 / page
...
);
case '仪器仪表采集':
return (
{/* 顶部批量编辑按钮 */}
{/* 状态统计卡片 */}
状态统计卡片
{/* 正常仪表卡片 */}
{/* 超限仪表卡片 */}
{/* 待确认卡片 */}
{/* 采集数据列表 */}
统计数据列表
| 序号 |
仪表名称 |
采集值 |
设备位置 |
状态 |
报警阈值 |
| 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%
{/* 顶部控制区域 */}
{/* 左侧任务状态选择框 */}
任务状态:
{/* 右侧按钮组 */}
{/* 主要内容区域 - 左右布局 */}
{/* 左侧实时监控信息区域 */}
{/* 自主导航规则 */}
自主导航规则
罐区高级规则:
• 陌生区域:基于罐区坐标生成"宇"字形环绕路径
• 高度 ≤ 10m 的罐体:距离罐体0.5m环绕
• 高度 {'>'} 10m 的罐体:距离罐体2m环绕
障碍物规则:
• 距离障碍物 {'>'} 1.5m:继续沿当前路径行驶
• 距离障碍物 ≤ 1.5m:触发停止并执行路径重规划
示例配置:
• 罐区A:优先级高,检查点15个
• 罐区B:优先级中,检查点10个
• 罐区C:优先级低,检查点8个
{/* 右侧背景图和监控信息区域 */}
{/* 背景图 */}

{/* 多级实时监控信息 - 右上角 */}
多级实时监控
{/* 一级监控信息 */}
1. 高危罐区监控
• 罐区A - 红外检测正常,压力稳定
• 罐区B - 温度监测中,运行状态良好
• 泄漏检测系统 - 无异常信号
{/* 二级监控信息 */}
2. 机器人状态监控
• ROB-001 - 高危罐区A,电量85%,运行中
• ROB-002 - 高危罐区B,电量72%,运行中
• ROB-003 - 泵房区域,电量15%,待充电
{/* 三级监控信息 */}
3. 环境参数监控
• 温度 - 26°C,湿度 - 58%
• 风速 - 2.3m/s,风向 - 东北
• 气体浓度 - 正常范围
{/* 浮动标签 */}
📦 更多功能
📋 调拨出库
📥 生产入库
📦 其他入库
{/* 机器人位置标记 */}
);
};
const StandardManagement = () => {
const [currentPage, setCurrentPage] = useState(1);
const [pageSize, setPageSize] = useState(10);
const [total, setTotal] = useState(85); // 总条数,实际项目中从接口获取
// 处理页码变化
const handlePageChange = (page, pageSize) => {
setCurrentPage(page);
setPageSize(pageSize);
};
// 处理每页条数变化
const handlePageSizeChange = (current, size) => {
setPageSize(size);
setCurrentPage(1); // 重置到第一页
};
return (
} className={styles['addBtn']} style={{ backgroundImage: `url(${btnImg1})`, marginRight: '30px' }}>新建方案
)
}
const DeviceAttributeSettings = () => {
const [currentPage, setCurrentPage] = useState(1);
const [pageSize, setPageSize] = useState(10);
const [total, setTotal] = useState(85); // 总条数,实际项目中从接口获取
const treeData = [
{
title: '发电机区域',
key: '发电机区域',
children: [
{ title: '#1 发电机', key: '#1发电机', },
{ title: '#2 发电机', key: '#2发电机', },
{ title: '#3 发电机', key: '#3发电机', },
{ title: '#4 发电机', key: '#4发电机', },
{ title: '#5 发电机', key: '#5发电机', },
]
},
{
title: '中水处理区',
key: '中水处理区',
children: [
{ title: '中水过滤装置A', key: '中水过滤装置A', },
{ title: '中水过滤装置B', key: '中水过滤装置B', },
]
},
{
title: '除盐水区',
key: '除盐水区',
children: [
{ title: '除盐水泵1', key: '除盐水泵1', },
{ title: '除盐水泵2', key: '除盐水泵2', },
{ title: '除盐水泵3', key: '除盐水泵3', },
]
}]
// 处理页码变化
const handlePageChange = (page, pageSize) => {
setCurrentPage(page);
setPageSize(pageSize);
};
// 处理每页条数变化
const handlePageSizeChange = (current, size) => {
setPageSize(size);
setCurrentPage(1); // 重置到第一页
};
return (
)
}
const items = [
{
label: ,
key: '智能巡检范围监控',
},
{
label: ,
key: '任务规划与执行流程',
},
{
label: ,
key: '巡检内容',
},
{
label: ,
key: '巡检管理',
},
{
label: ,
key: '数据分析巡检管理',
},
]
const InspectionManagement = () => {
const [activeTab, setActiveTab] = useState('实时监控');
return (
{/* 顶部按钮 */}
| 智能巡检内容监控中心
} style={{ backgroundImage: `url(${btnImg2})`, width: 120 }}>刷新数据
{/* 左侧导航 */}
{/* 右侧内容区域 */}
{activeTab === '实时监控' && (
{/* 搜索栏 */}
} style={{ backgroundImage: `url(${btnImg1})`, width: 120 }}>查询
} style={{ backgroundImage: `url(${btnImg3})`, margin: '0 20px', width: 120 }}>重置
{/* 内容区域 - 调整高度布局,顶部贴近,底部只留10px空间 */}
{/* 传感器仪表盘 */}
传感器仪表盘
甲烷: 0.01%
一氧化碳: 0.0ppm
分贝值: 69.2db
{/* 双面监控区 */}
{/* 机器人信息和检测设备状态 */}
机器人实时信息
机器人名称: AAA
当前位置: 中控室
速度: 0.07m/s
当前模式: 巡回检测
电量: 85%
累计里程: 96km
)}
{activeTab === '巡检任务' && (
{/* 巡检任务标题栏 */}
巡检任务管理
} style={{ marginRight: '10px' }}>新建任务
}>导出任务
{/* 横向时间轴布局 */}
{/* 时间轴线 - 横向 */}
{/* 任务卡片组 - 上面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 (
<>
{list[current]}
>
)
}
export default InspectionTaskPlan