diff --git a/src/assets/safe_majorHazard/online_monitoring/backTopRight.png b/src/assets/safe_majorHazard/online_monitoring/backTopRight.png new file mode 100644 index 0000000..de7c15b Binary files /dev/null and b/src/assets/safe_majorHazard/online_monitoring/backTopRight.png differ diff --git a/src/pages/safe_majorHazard/module/OnlineMonitoring.js b/src/pages/safe_majorHazard/module/OnlineMonitoring.js index 0be948e..033e2db 100644 --- a/src/pages/safe_majorHazard/module/OnlineMonitoring.js +++ b/src/pages/safe_majorHazard/module/OnlineMonitoring.js @@ -1,7 +1,9 @@ -import React, { useEffect, useRef } from 'react'; -import { Card, Result, Select } from 'antd'; +import React, { useEffect, useRef, useState } from 'react'; +import { Card, Result, Select, Button } from 'antd'; +import { DownloadOutlined, DeleteOutlined } from '@ant-design/icons'; import * as echarts from 'echarts'; +import StandardTable from '@/components/StandardTable'; import styles from './OnlineMonitoring.less'; import alarm0 from '@/assets/safe_majorHazard/online_monitoring/alarm0.png'; @@ -10,21 +12,29 @@ import alarm2 from '@/assets/safe_majorHazard/online_monitoring/alarm2.png'; import alarm3 from '@/assets/safe_majorHazard/online_monitoring/alarm3.png'; - const OnlineMonitoring = () => { const chartRef = useRef(null); + const [selectedRowKeys, setSelectedRowKeys] = useState([]); + const [selectedRows, setSelectedRows] = useState([]); + const [loading, setLoading] = useState(false); + const [dataSource, setDataSource] = useState([]); + const [pagination, setPagination] = useState({ + current: 1, + pageSize: 5, + total: 0, + }); useEffect(() => { if (chartRef.current) { const chart = echarts.init(chartRef.current); - + const option = { color: ['#04A7F3', '#E7C42C', '#EC6941'], - + legend: { data: ['液位', '温度', '压力'], - top: "-3px", - left: "center", + top: "-3px", + left: "center", itemGap: 40, // 图例间距 textStyle: { fontSize: 10 @@ -48,7 +58,7 @@ const OnlineMonitoring = () => { yAxis: { type: 'value', min: 0, - max:500, + max: 500, axisLabel: { formatter: '{value}', fontSize: 10 @@ -100,7 +110,7 @@ const OnlineMonitoring = () => { ] } }, - symbol: 'none', + symbol: 'none', data: [80, 120, 100, 180, 160, 220, 200, 150, 170, 90, 110, 85, 75] }, { @@ -124,7 +134,7 @@ const OnlineMonitoring = () => { ] } }, - symbol: 'none', // 不显示数据点 + symbol: 'none', data: [200, 300, 250, 450, 400, 430, 480, 420, 480, 280, 320, 260, 240] } ] @@ -145,6 +155,191 @@ const OnlineMonitoring = () => { } }, []); + // 表格列定义 + const columns = [ + { + title: '编号', + dataIndex: 'id', + key: 'id', + width: 80, + }, + { + title: '报警时间', + dataIndex: 'alarmTime', + key: 'alarmTime', + width: 150, + }, + { + title: '报警传感器名称', + dataIndex: 'sensorName', + key: 'sensorName', + width: 150, + }, + { + title: '报警类型', + dataIndex: 'alarmType', + key: 'alarmType', + width: 120, + }, + { + title: '报警内容', + dataIndex: 'alarmContent', + key: 'alarmContent', + width: 200, + }, + { + title: '优先级', + dataIndex: 'priority', + key: 'priority', + width: 80, + render: (text) => { + const colorMap = { + '高': '#FF4D4F', + '中': '#FAAD14', + '低': '#52C41A' + }; + return {text}; + } + }, + { + title: '处理状态', + dataIndex: 'status', + key: 'status', + width: 100, + render: (text) => { + const statusMap = { + '未处理': { color: '#FF4D4F', bg: '#FFF2F0' }, + '处理中': { color: '#FAAD14', bg: '#FFFBE6' }, + '已处理': { color: '#52C41A', bg: '#F6FFED' } + }; + const status = statusMap[text] || { color: '#333', bg: '#F5F5F5' }; + return ( + + {text} + + ); + } + }, + { + title: '处理时间', + dataIndex: 'processTime', + key: 'processTime', + width: 150, + }, + { + title: '处理人', + dataIndex: 'processor', + key: 'processor', + width: 100, + }, + { + title: '操作', + key: 'action', + width: 120, + render: (_, record) => ( +
+ +
+ ), + }, + ]; + + // 模拟数据 + const mockData = [ + { + key: '1', + id: '001', + alarmTime: '2024-01-15 08:30:25', + sensorName: 'LNG储罐', + alarmType: '温度超限', + alarmContent: '储罐温度超过安全阈值', + priority: '高', + status: '未处理', + processTime: '-', + processor: '-', + }, + { + key: '2', + id: '002', + alarmTime: '2024-01-15 09:15:10', + sensorName: 'LNG储罐', + alarmType: '压力异常', + alarmContent: '管道压力异常波动', + priority: '中', + status: '处理中', + processTime: '2024-01-15 09:20:00', + processor: '张三', + }, + { + key: '3', + id: '003', + alarmTime: '2024-01-15 10:45:30', + sensorName: 'LNG储罐', + alarmType: '液位异常', + alarmContent: '储罐液位低于警戒线', + priority: '高', + status: '已处理', + processTime: '2024-01-15 11:00:15', + processor: '李四', + }, + { + key: '4', + id: '004', + alarmTime: '2024-01-15 11:20:45', + sensorName: 'LNG储罐', + alarmType: '气体泄漏', + alarmContent: '检测到可燃气体泄漏', + priority: '高', + status: '未处理', + processTime: '-', + processor: '-', + }, + { + key: '5', + id: '005', + alarmTime: '2024-01-15 12:10:20', + sensorName: 'LNG储罐', + alarmType: '设备振动', + alarmContent: '设备异常振动', + priority: '低', + status: '已处理', + processTime: '2024-01-15 12:30:00', + processor: '王五', + }, + ]; + + // 初始化数据 + useEffect(() => { + setDataSource(mockData); + setPagination(prev => ({ ...prev, total: mockData.length })); + }, []); + + // 表格选择变化 + const onSelectChange = (newSelectedRowKeys, newSelectedRows) => { + setSelectedRowKeys(newSelectedRowKeys); + setSelectedRows(newSelectedRows); + }; + + // 导出功能 + const handleExport = () => { + console.log('导出数据'); + // 这里可以添加导出逻辑 + }; + + // 批量删除功能 + const handleBatchDelete = () => { + console.log('批量删除', selectedRowKeys); + // 这里可以添加批量删除逻辑 + }; + return (
@@ -227,8 +422,8 @@ const OnlineMonitoring = () => {
检测对象
-