From 687f3f602cb077334df742ac3cb5bc87f73f9117 Mon Sep 17 00:00:00 2001 From: wangyunfei <1224056307@qq,com> Date: Fri, 31 Oct 2025 18:07:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/business_Emergency/bgDrill2.svg | 9 ++ src/assets/business_Emergency/dutylog1.svg | 6 + src/assets/business_Emergency/dutylog2.svg | 6 + src/assets/business_Emergency/dutylog3.svg | 6 + src/assets/business_Emergency/dutylog4.svg | 18 +++ .../components/DutyLog.js | 125 +++++++++++------- .../components/DutyLog.less | 34 +++-- 7 files changed, 143 insertions(+), 61 deletions(-) create mode 100644 src/assets/business_Emergency/bgDrill2.svg create mode 100644 src/assets/business_Emergency/dutylog1.svg create mode 100644 src/assets/business_Emergency/dutylog2.svg create mode 100644 src/assets/business_Emergency/dutylog3.svg create mode 100644 src/assets/business_Emergency/dutylog4.svg diff --git a/src/assets/business_Emergency/bgDrill2.svg b/src/assets/business_Emergency/bgDrill2.svg new file mode 100644 index 0000000..434205e --- /dev/null +++ b/src/assets/business_Emergency/bgDrill2.svg @@ -0,0 +1,9 @@ + diff --git a/src/assets/business_Emergency/dutylog1.svg b/src/assets/business_Emergency/dutylog1.svg new file mode 100644 index 0000000..65f578e --- /dev/null +++ b/src/assets/business_Emergency/dutylog1.svg @@ -0,0 +1,6 @@ + diff --git a/src/assets/business_Emergency/dutylog2.svg b/src/assets/business_Emergency/dutylog2.svg new file mode 100644 index 0000000..7140a82 --- /dev/null +++ b/src/assets/business_Emergency/dutylog2.svg @@ -0,0 +1,6 @@ + diff --git a/src/assets/business_Emergency/dutylog3.svg b/src/assets/business_Emergency/dutylog3.svg new file mode 100644 index 0000000..806d5aa --- /dev/null +++ b/src/assets/business_Emergency/dutylog3.svg @@ -0,0 +1,6 @@ + diff --git a/src/assets/business_Emergency/dutylog4.svg b/src/assets/business_Emergency/dutylog4.svg new file mode 100644 index 0000000..4705979 --- /dev/null +++ b/src/assets/business_Emergency/dutylog4.svg @@ -0,0 +1,18 @@ + diff --git a/src/pages/business_emergencyDuty/components/DutyLog.js b/src/pages/business_emergencyDuty/components/DutyLog.js index 65eadb5..20f2d92 100644 --- a/src/pages/business_emergencyDuty/components/DutyLog.js +++ b/src/pages/business_emergencyDuty/components/DutyLog.js @@ -1,6 +1,7 @@ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import { Input, Button, Select, message, Modal, Tag } from 'antd'; import { SearchOutlined, PlusOutlined } from '@ant-design/icons'; +import ReactECharts from 'echarts-for-react'; import StandardTable from '@/components/StandardTable'; import styles from './DutyLog.less'; @@ -90,16 +91,73 @@ const DutyLog = () => { }, ]; - // 事件类型分布数据 + const [chartReady, setChartReady] = useState(false); + + // 确保DOM准备好后再渲染图表 + useEffect(() => { + const timer = setTimeout(() => { + setChartReady(true); + }, 100); + return () => clearTimeout(timer); + }, []); + + // 事件类型分布数据(根据图片描述调整颜色) const eventTypeData = [ - { name: '交通事故', value: 10, color: '#52C41A' }, - { name: '自然灾害', value: 15, color: '#FAAD14' }, - { name: '社会安全', value: 8, color: '#FF7A45' }, - { name: '电力故障', value: 5, color: '#F5222D' }, - { name: '火灾隐患', value: 3, color: '#CF1322' }, - { name: '设施故障', value: 7, color: '#1890FF' }, + { name: '交通事故', value: 10, color: '#4A90E2' }, // 浅蓝色 + { name: '自然灾害', value: 15, color: '#52C41A' }, // 绿色 + { name: '社会安全', value: 8, color: '#FAAD14' }, // 黄色 + { name: '电力故障', value: 5, color: '#FF7A45' }, // 橙色 + { name: '火灾隐患', value: 3, color: '#F5222D' }, // 红色 + { name: '设施故障', value: 7, color: '#1890FF' }, // 深蓝色 ]; + // ECharts 玫瑰图配置(空心饼图) + const roseChartOption = { + tooltip: { + trigger: 'item', + formatter: '{b}: {c} ({d}%)' + }, + legend: { + show: false + }, + series: [ + { + type: 'pie', + radius: ['40%', '70%'], // 空心饼图:内半径40%,外半径70% + center: ['50%', '50%'], + roseType: 'area', // 玫瑰图类型:使用面积表示数值 + avoidLabelOverlap: false, + itemStyle: { + borderRadius: 4, + borderColor: '#fff', + borderWidth: 2 + }, + label: { + show: false + }, + labelLine: { + show: false + }, + emphasis: { + label: { + show: true, + fontSize: 14, + fontWeight: 'bold' + }, + scale: true, + scaleSize: 5 + }, + data: eventTypeData.map(item => ({ + value: item.value, + name: item.name, + itemStyle: { + color: item.color + } + })) + } + ] + }; + // 表格列配置 const columns = [ { @@ -226,45 +284,17 @@ const DutyLog = () => { ); }; - // 渲染饼图(简化版) - const renderPieChart = () => { - const total = eventTypeData.reduce((sum, item) => sum + item.value, 0); - let currentAngle = 0; - + // 渲染玫瑰图(使用 ECharts) + const renderRoseChart = () => { return (