"use client" import {useState} from "react" import { Button, Card, Col, DatePicker, Descriptions, Form, Input, Modal, Popconfirm, Progress, Row, Select, Space, Table, Tag, } from "antd" import {DeleteOutlined, EditOutlined, EyeOutlined, PlusOutlined} from "@ant-design/icons" import {Radar} from "@ant-design/plots" import dayjs from "dayjs" import globalMessage from "@/app/_modules/globalMessage"; const { Option } = Select const { TextArea } = Input // 模拟风险档案数据 const mockRiskData = [ { id: "R001", title: "解放路段高压管线风险", location: "解放路与建设路交叉口", riskType: "管线老化", riskLevel: "高", riskScore: 85, assessmentDate: "2024-01-15", assessor: "张三", status: "待处理", description: "高压管线使用年限超过20年,存在老化风险", impactArea: "500m范围内", affectedPopulation: 2000, economicLoss: 500000, mitigationMeasures: "定期检测,制定更换计划", monitoringFrequency: "每月", lastUpdate: "2024-01-15", factors: { 管线状态: 80, 环境因素: 70, 人员密度: 90, 设备完好性: 75, 管理水平: 85, }, }, { id: "R002", title: "人民路段泄漏风险", location: "人民路中段", riskType: "泄漏隐患", riskLevel: "中", riskScore: 65, assessmentDate: "2024-01-10", assessor: "李四", status: "监控中", description: "管道接头处存在微量泄漏风险", impactArea: "200m范围内", affectedPopulation: 800, economicLoss: 200000, mitigationMeasures: "加强巡检,安装泄漏检测设备", monitoringFrequency: "每周", lastUpdate: "2024-01-12", factors: { 管线状态: 60, 环境因素: 65, 人员密度: 70, 设备完好性: 80, 管理水平: 75, }, }, { id: "R003", title: "建设路段压力风险", location: "建设路北段", riskType: "压力异常", riskLevel: "低", riskScore: 35, assessmentDate: "2024-01-08", assessor: "王五", status: "已控制", description: "调压设备运行正常,风险可控", impactArea: "100m范围内", affectedPopulation: 300, economicLoss: 50000, mitigationMeasures: "定期维护调压设备", monitoringFrequency: "每季度", lastUpdate: "2024-01-10", factors: { 管线状态: 40, 环境因素: 35, 人员密度: 30, 设备完好性: 45, 管理水平: 40, }, }, ] export default function RiskArchive() { const [isModalVisible, setIsModalVisible] = useState(false) const [isDetailModalVisible, setIsDetailModalVisible] = useState(false) const [editingRecord, setEditingRecord] = useState(null) const [viewingRecord, setViewingRecord] = useState(null) const [form] = Form.useForm() const handleAdd = () => { setEditingRecord(null) form.resetFields() setIsModalVisible(true) } const handleEdit = (record: any) => { setEditingRecord(record) form.setFieldsValue({ ...record, assessmentDate: record.assessmentDate ? dayjs(record.assessmentDate) : null, }) setIsModalVisible(true) } const handleView = (record: any) => { setViewingRecord(record) setIsDetailModalVisible(true) } const handleDelete = (id: string) => { globalMessage.success("删除成功") } const handleModalOk = () => { form.validateFields().then((values) => { if (editingRecord) { globalMessage.success("更新成功") } else { globalMessage.success("添加成功") } setIsModalVisible(false) form.resetFields() }) } const getRiskLevelColor = (level: string) => { switch (level) { case "高": return "red" case "中": return "orange" case "低": return "blue" default: return "default" } } const getStatusColor = (status: string) => { switch (status) { case "待处理": return "red" case "监控中": return "orange" case "已控制": return "green" default: return "default" } } const getRiskScoreColor = (score: number) => { if (score >= 80) return "#f5222d" if (score >= 60) return "#faad14" if (score >= 40) return "#52c41a" return "#1890ff" } const columns = [ { title: "风险编号", dataIndex: "id", key: "id", width: 100 }, { title: "风险标题", dataIndex: "title", key: "title", width: 200 }, { title: "位置", dataIndex: "location", key: "location", width: 150 }, { title: "风险类型", dataIndex: "riskType", key: "riskType", width: 120 }, { title: "风险等级", dataIndex: "riskLevel", key: "riskLevel", width: 100, render: (level: string) => {level}, }, { title: "风险评分", dataIndex: "riskScore", key: "riskScore", width: 120, render: (score: number) => (
`${percent}`} />
), }, { title: "评估日期", dataIndex: "assessmentDate", key: "assessmentDate", width: 120 }, { title: "评估人", dataIndex: "assessor", key: "assessor", width: 100 }, { title: "状态", dataIndex: "status", key: "status", width: 100, render: (status: string) => {status}, }, { title: "影响人口", dataIndex: "affectedPopulation", key: "affectedPopulation", width: 100 }, { title: "操作", key: "action", width: 200, fixed: "right", render: (_, record) => ( handleDelete(record.id)}> ), }, ] const radarConfig = viewingRecord ? { data: Object.entries(viewingRecord.factors).map(([key, value]) => ({ factor: key, value: value, })), xField: "factor", yField: "value", area: { style: { fill: getRiskScoreColor(viewingRecord.riskScore), fillOpacity: 0.3, }, }, point: { size: 3, }, line: { style: { stroke: getRiskScoreColor(viewingRecord.riskScore), lineWidth: 2, }, }, } : null const highRiskCount = mockRiskData.filter((item) => item.riskLevel === "高").length const mediumRiskCount = mockRiskData.filter((item) => item.riskLevel === "中").length const lowRiskCount = mockRiskData.filter((item) => item.riskLevel === "低").length return (
{/* 风险概览 */}
{highRiskCount}
高风险
{mediumRiskCount}
中风险
{lowRiskCount}
低风险
{mockRiskData.length}
风险总数
{/* 筛选控件 */}
{/* 风险列表 */} {/* 编辑/新增模态框 */} setIsModalVisible(false)} width={800} >