From 492b4f70b23db943bb8dba11dd99777a07932a9f Mon Sep 17 00:00:00 2001 From: jiangxucong Date: Fri, 17 Oct 2025 09:31:27 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E7=82=B9=E9=83=A8=E4=BD=8D=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E4=BF=A1=E6=81=AF=E7=AE=A1=E7=90=86=E5=92=8C=E5=BA=94?= =?UTF-8?q?=E6=80=A5=E6=BC=94=E7=BB=83=E8=AE=B0=E5=BD=95=E5=85=B3=E8=81=94?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/routes.js | 6 + .../business_firekeynotearea/eqicon1.png | Bin 0 -> 1710 bytes .../business_firekeynotearea/eqicon2.png | Bin 0 -> 1601 bytes .../business_firekeynotearea/eqicon3.png | Bin 0 -> 1826 bytes .../business_firekeynotearea/eqicon4.png | Bin 0 -> 1353 bytes .../business_firekeynotearea/eqicon5.png | Bin 0 -> 1362 bytes .../business_firekeynotearea/eqicon6.png | Bin 0 -> 2125 bytes .../business_firekeynotearea/eqicon7.png | Bin 0 -> 1744 bytes .../business_firekeynotearea/eqicon8.png | Bin 0 -> 1627 bytes .../business_firekeynotearea/keyparts_bg.png | Bin 0 -> 23045 bytes src/assets/business_firekeynotearea/map.png | Bin 0 -> 54100 bytes .../tree-child-node-selected.svg | 10 + .../tree-child-node.svg | 15 + .../tree-parent-node.svg | 15 + src/assets/img/fire_keynote_area.svg | 3 + .../FireKeynoteArea.js | 56 ++ .../FireKeynoteArea.less | 66 ++ .../EmergencyDrillRecordAssociation.js | 749 ++++++++++++++ .../EmergencyDrillRecordAssociation.less | 500 ++++++++++ .../components/EmergencyPlanAssociation.js | 749 ++++++++++++++ .../components/EmergencyPlanAssociation.less | 500 ++++++++++ .../components/EvaluationReport.js | 922 ++++++++++++++++++ .../components/EvaluationReport.less | 558 +++++++++++ .../components/KeypartsBasicInformation.js | 429 ++++++++ .../components/KeypartsBasicInformation.less | 659 +++++++++++++ .../nav_system_content/SystemContentList.js | 14 + src/pages/topnavbar/TopNavBar.js | 4 + 27 files changed, 5255 insertions(+) create mode 100644 src/assets/business_firekeynotearea/eqicon1.png create mode 100644 src/assets/business_firekeynotearea/eqicon2.png create mode 100644 src/assets/business_firekeynotearea/eqicon3.png create mode 100644 src/assets/business_firekeynotearea/eqicon4.png create mode 100644 src/assets/business_firekeynotearea/eqicon5.png create mode 100644 src/assets/business_firekeynotearea/eqicon6.png create mode 100644 src/assets/business_firekeynotearea/eqicon7.png create mode 100644 src/assets/business_firekeynotearea/eqicon8.png create mode 100644 src/assets/business_firekeynotearea/keyparts_bg.png create mode 100644 src/assets/business_firekeynotearea/map.png create mode 100644 src/assets/business_firekeynotearea/tree-child-node-selected.svg create mode 100644 src/assets/business_firekeynotearea/tree-child-node.svg create mode 100644 src/assets/business_firekeynotearea/tree-parent-node.svg create mode 100644 src/assets/img/fire_keynote_area.svg create mode 100644 src/pages/business_firekeynotearea/FireKeynoteArea.js create mode 100644 src/pages/business_firekeynotearea/FireKeynoteArea.less create mode 100644 src/pages/business_firekeynotearea/components/EmergencyDrillRecordAssociation.js create mode 100644 src/pages/business_firekeynotearea/components/EmergencyDrillRecordAssociation.less create mode 100644 src/pages/business_firekeynotearea/components/EmergencyPlanAssociation.js create mode 100644 src/pages/business_firekeynotearea/components/EmergencyPlanAssociation.less create mode 100644 src/pages/business_firekeynotearea/components/EvaluationReport.js create mode 100644 src/pages/business_firekeynotearea/components/EvaluationReport.less create mode 100644 src/pages/business_firekeynotearea/components/KeypartsBasicInformation.js create mode 100644 src/pages/business_firekeynotearea/components/KeypartsBasicInformation.less diff --git a/config/routes.js b/config/routes.js index b2e1d63..dc7441b 100644 --- a/config/routes.js +++ b/config/routes.js @@ -30,6 +30,12 @@ export default [ name: 'basic', component: './business_basic/basic', }, + // 消防重点部位管理 + { + path: '/topnavbar00/business/firekeynotearea', + name: 'firekeynotearea', + component: './business_firekeynotearea/FireKeynoteArea', + }, // 安全管理基础信息 { path: '/topnavbar00/business/basicinformation', diff --git a/src/assets/business_firekeynotearea/eqicon1.png b/src/assets/business_firekeynotearea/eqicon1.png new file mode 100644 index 0000000000000000000000000000000000000000..03c5873da0635b7c8c1347f0eb7cfc50ed3ce062 GIT binary patch literal 1710 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 LNkvXXu0mjfpy_k6 literal 0 HcmV?d00001 diff --git a/src/assets/business_firekeynotearea/eqicon5.png b/src/assets/business_firekeynotearea/eqicon5.png new file mode 100644 index 0000000000000000000000000000000000000000..9f5c131a5f446acaff2f0b1bc471274f75ccbe12 GIT binary patch literal 1362 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 Dj1CVR literal 0 HcmV?d00001 diff --git a/src/assets/business_firekeynotearea/eqicon7.png b/src/assets/business_firekeynotearea/eqicon7.png new file mode 100644 index 0000000000000000000000000000000000000000..d178645382d10f1fddf20940c7cd16d3e85452c4 GIT binary patch literal 1744 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 Z{sKBR-THwtL74ym002ovPDHLkV1hnX{AK_E literal 0 HcmV?d00001 diff --git a/src/assets/business_firekeynotearea/keyparts_bg.png b/src/assets/business_firekeynotearea/keyparts_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..4e95bf2499cf41003e44c24b66ca3a02e6256030 GIT binary patch literal 23045 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 YGnaP={0Kte7XSbN07*qoM6N<$g0$JqBLDyZ literal 0 HcmV?d00001 diff --git a/src/assets/business_firekeynotearea/map.png b/src/assets/business_firekeynotearea/map.png new file mode 100644 index 0000000000000000000000000000000000000000..cfdf1828b9ef1970a05a3d262bc47396ce85e972 GIT binary patch literal 54100 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 literal 0 HcmV?d00001 diff --git a/src/assets/business_firekeynotearea/tree-child-node-selected.svg b/src/assets/business_firekeynotearea/tree-child-node-selected.svg new file mode 100644 index 0000000..9f3b982 --- /dev/null +++ b/src/assets/business_firekeynotearea/tree-child-node-selected.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/business_firekeynotearea/tree-child-node.svg b/src/assets/business_firekeynotearea/tree-child-node.svg new file mode 100644 index 0000000..614d428 --- /dev/null +++ b/src/assets/business_firekeynotearea/tree-child-node.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/business_firekeynotearea/tree-parent-node.svg b/src/assets/business_firekeynotearea/tree-parent-node.svg new file mode 100644 index 0000000..6b6f47c --- /dev/null +++ b/src/assets/business_firekeynotearea/tree-parent-node.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/img/fire_keynote_area.svg b/src/assets/img/fire_keynote_area.svg new file mode 100644 index 0000000..d8b1c5c --- /dev/null +++ b/src/assets/img/fire_keynote_area.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/pages/business_firekeynotearea/FireKeynoteArea.js b/src/pages/business_firekeynotearea/FireKeynoteArea.js new file mode 100644 index 0000000..e4ac73b --- /dev/null +++ b/src/pages/business_firekeynotearea/FireKeynoteArea.js @@ -0,0 +1,56 @@ +import React, { useState } from 'react'; +import { Card, Row, Col, Statistic, Progress, Button, Space } from 'antd'; +import styles from './FireKeynoteArea.less'; +import KeypartsBasicInformation from './components/KeypartsBasicInformation'; //重点部位基础信息管理 +import EmergencyPlanAssociation from './components/EmergencyPlanAssociation'; //应急预案关联管理 +import EmergencyDrillRecordAssociation from './components/EmergencyDrillRecordAssociation'; //应急演练记录关联管理 + +const FireKeynoteArea = () => { + const [activeModule, setActiveModule] = useState('1'); + + const handleModuleClick = (module) => { + setActiveModule(module) + } + + + const renderModule = () => { + switch (activeModule) { + case '1': + return ; + case '2': + return ; + case '3': + return ; + default: + return ; + } + }; + + + return ( +
+
+ + + +
+
+ {renderModule()} +
+
+ ); +}; + +export default FireKeynoteArea; diff --git a/src/pages/business_firekeynotearea/FireKeynoteArea.less b/src/pages/business_firekeynotearea/FireKeynoteArea.less new file mode 100644 index 0000000..b479169 --- /dev/null +++ b/src/pages/business_firekeynotearea/FireKeynoteArea.less @@ -0,0 +1,66 @@ +.container { + background-color: transparent; + width: 100%; + height: 89vh; + overflow: hidden; + display: flex; + flex-direction: column; + + .TopButton { + background-color: white; + width: 100%; + padding: 10px 30px; + display: flex; + gap: 24px; + margin-left: 6px; + + .TopButtonItem { + background-color: transparent !important; + color: #333333 !important; + font-family: 'PingFang SC', sans-serif !important; + font-weight: 500 !important; + font-size: 14px !important; + line-height: 100% !important; + border-radius: 8px !important; + padding: 6px 10px !important; + height: auto !important; + border: none !important; + box-shadow: none !important; + position: relative !important; + + &:hover { + color: #333333 !important; + border: none !important; + } + + &:focus { + color: #2E4CD4 !important; + border: none !important; + } + + &.active { + color: #2E4CD4 !important; + + &::after { + content: ''; + position: absolute; + bottom: -10px; + left: 0; + right: 0; + width: 100%; + height: 4px; + background-color: #2E4CD4; + border-radius: 0; + opacity: 1; + } + } + } + } + + .content { + // ======== 内容区域样式 ======== + flex: 1; // ======== 占据剩余空间 ======== + overflow-y: auto; // ======== 允许垂直滚动 ======== + padding: 0; // ======== 无内边距 ======== + } +} \ No newline at end of file diff --git a/src/pages/business_firekeynotearea/components/EmergencyDrillRecordAssociation.js b/src/pages/business_firekeynotearea/components/EmergencyDrillRecordAssociation.js new file mode 100644 index 0000000..e963cc2 --- /dev/null +++ b/src/pages/business_firekeynotearea/components/EmergencyDrillRecordAssociation.js @@ -0,0 +1,749 @@ + +import React, { useEffect, useRef, useState } from 'react'; +import { Card, Result, Select, Button, Segmented, Input } from 'antd'; +import { PlusOutlined } from '@ant-design/icons'; +import * as echarts from 'echarts'; +import StandardTable from '@/components/StandardTable'; +import styles from './EmergencyDrillRecordAssociation.less'; +import eqicon1 from '@/assets/business_firekeynotearea/eqicon1.png'; +import eqicon6 from '@/assets/business_firekeynotearea/eqicon6.png'; +import eqicon7 from '@/assets/business_firekeynotearea/eqicon7.png'; +import eqicon8 from '@/assets/business_firekeynotearea/eqicon8.png'; + +const EmergencyDrillRecordAssociation = () => { + const chartRef = useRef(null); + const pieChartRef = useRef(null); + const faultPieChartRef = 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 (pieChartRef.current) { + const pieChart = echarts.init(pieChartRef.current); + + const pieOption = { + color: ['#44BB5F', '#F8C541', '#A493FB', '#4B69F1', '#949FD0'], + legend: { + orient: 'vertical', + right: '10%', + top: 'center', + itemWidth: 13, + itemHeight: 4, + textStyle: { + fontSize: 12, + color: '#333' + } + }, + series: [{ + name: '设备状态', + type: 'pie', + radius: ['40%', '70%'], + center: ['35%', '50%'], + avoidLabelOverlap: false, + label: { + show: false, + position: 'center' + }, + emphasis: { + label: { + show: true, + fontSize: '14', + fontWeight: 'bold' + } + }, + labelLine: { + show: false + }, + data: [ + { value: 480, name: '配电房' }, + { value: 289, name: '消防控制室' }, + { value: 200, name: '档案室' }, + { value: 150, name: '服务器机房' }, + { value: 161, name: '食堂厨房' } + ] + }] + }; + + pieChart.setOption(pieOption); + + // 响应式调整 + const handlePieResize = () => { + if (pieChart && !pieChart.isDisposed()) { + pieChart.resize(); + } + }; + + window.addEventListener('resize', handlePieResize); + + return () => { + window.removeEventListener('resize', handlePieResize); + if (pieChart && !pieChart.isDisposed()) { + pieChart.dispose(); + } + }; + } + }, []); + + // 故障类型饼图初始化 + useEffect(() => { + if (faultPieChartRef.current) { + const faultPieChart = echarts.init(faultPieChartRef.current); + + const faultPieOption = { + color: ['#FF3E48', '#FF8800', '#FFC403'], + legend: { + orient: 'vertical', + right: '10%', + top: 'center', + itemWidth: 8, + itemHeight: 8, + textStyle: { + fontSize: 12, + color: '#333' + } + }, + series: [{ + name: '设备故障类型', + type: 'pie', + radius: '70%', + center: ['35%', '50%'], + avoidLabelOverlap: false, + label: { + show: true, + position: 'outside', + formatter: '{b}: {c}', + fontSize: 12 + }, + emphasis: { + label: { + show: true, + fontSize: '14', + fontWeight: 'bold' + } + }, + labelLine: { + show: true + }, + data: [ + { value: 120, name: '紧急' }, + { value: 80, name: '重要' }, + { value: 60, name: '一般' } + ] + }] + }; + + faultPieChart.setOption(faultPieOption); + + // 响应式调整 + const handleFaultPieResize = () => { + if (faultPieChart && !faultPieChart.isDisposed()) { + faultPieChart.resize(); + } + }; + + window.addEventListener('resize', handleFaultPieResize); + + return () => { + window.removeEventListener('resize', handleFaultPieResize); + if (faultPieChart && !faultPieChart.isDisposed()) { + faultPieChart.dispose(); + } + }; + } + }, []); + + useEffect(() => { + if (chartRef.current) { + const chart = echarts.init(chartRef.current); + + // 强制初始化时调整大小 + setTimeout(() => { + if (chart && !chart.isDisposed()) { + chart.resize(); + } + }, 100); + + const option = { + color: ['#8979FF', '#3CC3DF'], + + legend: { + // data: ['消防水泵1', '消防水泵2'], + top: "-3px", + // left: "center", + // itemGap: 40, + itemWidth: 20, + itemHeight: 8, + // icon: 'path://M902 472.7H747.9c-19.1-113.3-117.7-200-236.4-200s-217.3 86.7-236.4 200H119.7c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h155.5c19.1 113.3 117.7 200 236.4 200S728.9 666 748 552.7h154c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8z m-390.5 200c-88.2 0-160-71.8-160-160s71.8-160 160-160 160 71.8 160 160-71.8 160-160 160z', + textStyle: { + fontSize: 10 + } + }, + grid: { + left: '2%', + right: '4%', + bottom: '2%', + top: '12%', + containLabel: true + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: ['9:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00'], + axisLabel: { + fontSize: 10 + } + }, + yAxis: { + type: 'value', + min: 0, + max: 30, + axisLabel: { + formatter: '{value}', + fontSize: 10 + } + }, + series: [ + { + name: '消防水泵1', + type: 'line', + smooth: false, + lineStyle: { + width: 2, + color: '#8979FF' + }, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { offset: 0, color: 'rgba(137, 121, 255, 0.3)' }, + { offset: 1, color: 'rgba(137, 121, 255, 0.05)' } + ] + } + }, + symbol: 'circle', + symbolSize: 4, + itemStyle: { + color: '#fff', + borderColor: '#8979FF', + borderWidth: 1 + }, + data: [12, 15, 18, 14, 16, 20, 22, 19, 17, 21, 23, 25] + }, + { + name: '消防水泵2', + type: 'line', + smooth: false, + lineStyle: { + width: 2, + color: '#3CC3DF' + }, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { offset: 0, color: 'rgba(60, 195, 223, 0.3)' }, + { offset: 1, color: 'rgba(60, 195, 223, 0.05)' } + ] + } + }, + symbol: 'circle', + symbolSize: 4, + itemStyle: { + color: '#fff', + borderColor: '#3CC3DF', + borderWidth: 1 + }, + data: [8, 11, 14, 10, 13, 17, 19, 16, 14, 18, 20, 22] + } + ] + }; + + chart.setOption(option); + + // 响应式调整 - 使用多种方式监听容器尺寸变化 + let resizeTimer = null; + const handleResize = () => { + // 防抖处理,避免频繁调用resize + if (resizeTimer) { + clearTimeout(resizeTimer); + } + resizeTimer = setTimeout(() => { + if (chart && !chart.isDisposed()) { + chart.resize(); + } + }, 50); // 减少延迟时间 + }; + + // 监听窗口大小变化 + window.addEventListener('resize', handleResize); + + // 监听容器尺寸变化(解决菜单栏伸缩时的自适应问题) + let resizeObserver = null; + if (window.ResizeObserver) { + resizeObserver = new ResizeObserver((entries) => { + for (let entry of entries) { + // 使用requestAnimationFrame确保在下一帧执行 + requestAnimationFrame(() => { + handleResize(); + }); + } + }); + resizeObserver.observe(chartRef.current); + } + + // 额外监听父容器的尺寸变化 + const parentContainer = chartRef.current?.parentElement; + let parentObserver = null; + if (parentContainer && window.ResizeObserver) { + parentObserver = new ResizeObserver((entries) => { + for (let entry of entries) { + requestAnimationFrame(() => { + handleResize(); + }); + } + }); + parentObserver.observe(parentContainer); + } + + // 使用MutationObserver监听DOM结构变化(菜单展开收起时) + const mutationObserver = new MutationObserver((mutations) => { + mutations.forEach((mutation) => { + if (mutation.type === 'attributes' && + (mutation.attributeName === 'class' || mutation.attributeName === 'style')) { + // 延迟执行,确保DOM更新完成 + setTimeout(() => { + handleResize(); + }, 200); + } + }); + }); + + // 监听整个页面的class和style变化 + mutationObserver.observe(document.body, { + attributes: true, + attributeFilter: ['class', 'style'], + subtree: true + }); + + return () => { + window.removeEventListener('resize', handleResize); + if (resizeObserver) { + resizeObserver.disconnect(); + } + if (parentObserver) { + parentObserver.disconnect(); + } + if (mutationObserver) { + mutationObserver.disconnect(); + } + if (resizeTimer) { + clearTimeout(resizeTimer); + } + if (chart && !chart.isDisposed()) { + chart.dispose(); + } + }; + } + }, []); + + // 表格列定义(同步图片) + const columns = [ + { + title: '演练编号', + dataIndex: 'drillId', + key: 'drillId', + width: 140, + }, + { + title: '演练时间', + dataIndex: 'drillTime', + key: 'drillTime', + width: 180, + }, + { + title: '演练类型', + dataIndex: 'drillType', + key: 'drillType', + width: 120, + }, + { + title: '关联部位', + dataIndex: 'relatedPart', + key: 'relatedPart', + width: 120, + }, + { + title: '部位名称', + dataIndex: 'partName', + key: 'partName', + width: 160, + }, + { + title: '演练次数', + dataIndex: 'drillCount', + key: 'drillCount', + width: 100, + }, + { + title: '参与人数', + dataIndex: 'participantCount', + key: 'participantCount', + width: 100, + }, + { + title: '效果评估', + dataIndex: 'effect', + key: 'effect', + width: 120, + render: (text) => { + let color = '#FFF3E9', fontColor = '#FF8800', label = text; + if (text === '优秀') { + color = '#D8F7DE'; + fontColor = '#44BB5F'; + } + return ( + {label} + ); + } + }, + { + title: '操作', + key: 'action', + width: 120, + render: (_, record) => ( + <> + 编辑 + 删除 + + ), + }, + ]; + + // 表格数据(同步图片) + const mockData = [ + { + key: '1', + drillId: 'YL202310001', + drillTime: '2025-09-10 14:23:45', + drillType: '实战演练', + relatedPart: '三楼东侧', + partName: '数据机房 A区', + drillCount: 5, + participantCount: 25, + effect: '良好', + }, + { + key: '2', + drillId: 'YL202310002', + drillTime: '2025-09-10 14:23:45', + drillType: '桌面推演', + relatedPart: '二楼西侧', + partName: 'B区厨房', + drillCount: 6, + participantCount: 18, + effect: '良好', + }, + { + key: '3', + drillId: 'YL202310003', + drillTime: '2025-09-10 14:23:45', + drillType: '模拟演练', + relatedPart: '地下一层', + partName: '数据中心机房', + drillCount: 3, + participantCount: 32, + effect: '优秀', + }, + ]; + + // 初始化数据 + useEffect(() => { + setPagination(prev => ({ ...prev, total: mockData.length })); + }, []); + + // 根据分页获取当前页数据 + const getCurrentPageData = () => { + const { current, pageSize } = pagination; + const startIndex = (current - 1) * pageSize; + const endIndex = startIndex + pageSize; + return mockData.slice(startIndex, endIndex); + }; + + // 表格选择变化 + const onSelectChange = (newSelectedRowKeys, newSelectedRows) => { + setSelectedRowKeys(newSelectedRowKeys); + setSelectedRows(newSelectedRows); + }; + + // 新增设备按钮点击事件 + const handleAddDevice = () => { + console.log('新增设备'); + // TODO: 实现新增设备逻辑 + }; + + // 导出数据按钮点击事件 + const handleExportData = () => { + console.log('导出数据'); + // TODO: 实现导出数据逻辑 + }; + + // 分页变化处理 + const handleTableChange = (pagination) => { + setPagination(prev => ({ + ...prev, + current: pagination.current, + pageSize: pagination.pageSize, + })); + }; + + // 重点部位卡片数据和选中状态 + const keypartsData = [ + { + name: '配电房', + location: '1楼 - 东区', + risk: '高风险', + riskColor: '#FFE0E2', + riskTextColor: '#FF3E48', + }, + { + name: '消防控制室', + location: '1楼 - 西区', + risk: '中风险', + riskColor: '#FFF8E2', + riskTextColor: '#FFC403', + }, + { + name: '档案室', + location: '2楼 - 中区', + risk: '低风险', + riskColor: '#DAF3FF', + riskTextColor: '#00AAFA', + } + ]; + const [selectedKeypartIdx, setSelectedKeypartIdx] = useState(0); + + return ( +
+ {/* 第一个div - 高度20% */} +
+
+
+ {/* 块1 */} +
+
+
演练记录总数
+
120
+
+
+ 演练记录总数 +
+
+ + {/* 块2 */} +
+
+
重点部位数量
+
32
+
+
+ 重点部位数量 +
+
+ + {/* 块3 */} +
+
+
参与演练人员
+
69
+
+
+ 参与演练人员 +
+
+ + {/* 块4 */} +
+
+
平均演练达标率
+
72%
+
+
+ 平均演练达标率 +
+
+ +
+
+
+ + +
+
+
+
+
+
+
重点部位分布图
+
+
+ 实时定位 +
+
+
+ {/* 地图图片 */} + 重点部位分布图 +
+
+
+
+
+
+ 重点部位类型分布 +
+ { + console.log(value); + }} + /> +
+ {/* 设备状态饼图 */} +
+
+ +
+ +
+
+
+
+ 重点部位列表 +
+
共 3 项
+
+ {/* 重点部位列表 */} +
+ {keypartsData.map((item, idx) => ( +
setSelectedKeypartIdx(idx)} + style={{ cursor: 'pointer' }} + > +
+
+ {item.name} +
+
{item.location}
+
+
+ {item.risk} +
+
+ ))} +
+ +
+ +
+
+ + {/* 第三个div - 占满剩余位置 */} +
+
+ +
+ {/* 表格 */} +
+
+
+
演练记录录入
+
+ +
+
+ {/* 搜索输入框 */} + +
+
+ {/* 下拉选择 */} + + {/* 新增按钮 */} + +
+
+
+ + {/* 表格 */} +
+ + `共 ${total} 条`, + }} + // scroll={{ x: 1200 }} + /> +
+
+
+
+
+ ); +}; + +export default EmergencyPlanAssociation; \ No newline at end of file diff --git a/src/pages/business_firekeynotearea/components/EmergencyPlanAssociation.less b/src/pages/business_firekeynotearea/components/EmergencyPlanAssociation.less new file mode 100644 index 0000000..053e850 --- /dev/null +++ b/src/pages/business_firekeynotearea/components/EmergencyPlanAssociation.less @@ -0,0 +1,500 @@ +// 重点部位列表样式 +.keypartsList { + display: flex; + flex-direction: column; + gap: 10px; + height: 200px; + margin: 35px 0 0 0; + overflow: auto; +} + +.keypartsCard { + background: #f9fbff; + border: 1px solid #ECEDFC; + border-radius: 4px; + padding: 8px 12px 6px 12px; + box-shadow: 0 1px 4px 0 rgba(46, 76, 212, 0.03); + transition: border-color 0.2s, box-shadow 0.2s; + position: relative; + // min-height: 44px; + max-width: 300px; + width: 100%; + margin: 0 auto; + display: flex; + justify-content: space-between; + align-items: center; +} + +.keypartsCardActive { + border-color: #75A7FF; + background: #F6F7FF; + box-shadow: 0 2px 8px 0 rgba(46, 76, 212, 0.10); +} + +.keypartsCardHeader { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 3px; +} + +.keypartsCardTitle { + font-size: 12px; + font-weight: 600; + color: #333; + margin-bottom: 8px; +} + +.keypartsRiskTag { + display: inline-block; + min-width: 40px; + height: 30px; + line-height: 30px; + text-align: center; + font-size: 13px; + font-weight: 500; + border-radius: 5px; + padding: 0 8px; + box-shadow: 0 1px 3px 0 rgba(46, 76, 212, 0.05); +} + +.keypartsCardSub { + font-size: 12px; + color: #666; + font-weight: 400; + letter-spacing: 0.5px; +} + +.Rcontainer { + padding: 8px 6px 0px 6px; + height: 100%; + display: flex; + flex-direction: column; + gap: 10px; + + // 第一个div - 高度20% + .RcontainerTop { + height: 16%; + // background-color: #fff; + border-radius: 4px; + display: flex; + flex-direction: column; + + .sectionContent { + height: 100%; + display: flex; + flex-direction: column; + // padding: 15px; + + .blocksContainer { + flex: 1; + display: flex; + gap: 10px; + height: 100%; + + .blockItem { + flex: 1; + height: 100%; + display: flex; + background: linear-gradient(170.5deg, #F5F7FF 6.87%, #FFFFFF 47.65%); + border-radius: 2px; + // border: 2px solid #FFFFFF; + + &.bgBlock1 { + background: url('@/assets/business_firekeynotearea/keyparts_bg.png') no-repeat center center, linear-gradient(170.5deg, #F5F7FF 6.87%, #FFFFFF 47.65%); + background-size: cover; + } + + &.bgBlock2 { + background: url('@/assets/business_firekeynotearea/keyparts_bg.png') no-repeat center center, linear-gradient(170.5deg, #F5F7FF 6.87%, #FFFFFF 47.65%); + background-size: cover; + } + + &.bgBlock3 { + background: url('@/assets/business_firekeynotearea/keyparts_bg.png') no-repeat center center, linear-gradient(170.5deg, #F5F7FF 6.87%, #FFFFFF 47.65%); + background-size: cover; + } + + &.bgBlock4 { + background: url('@/assets/business_firekeynotearea/keyparts_bg.png') no-repeat center center, linear-gradient(170.5deg, #F5F7FF 6.87%, #FFFFFF 47.65%); + background-size: cover; + } + + &.bgBlock5 { + background: url('@/assets/business_firekeynotearea/keyparts_bg.png') no-repeat center center, linear-gradient(170.5deg, #F5F7FF 6.87%, #FFFFFF 47.65%); + background-size: cover; + } + + .blockLeft { + width: 60%; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + padding: 15px; + padding-left: 20px; + gap: 15px; + + .blockTitle { + font-family: PingFang SC; + font-weight: 400; + font-size: 12px; + color: #333333; + line-height: 1.2; + } + + .blockNumber { + font-family: PingFang SC; + font-weight: 700; + font-size: 24px; + color: #333333; + line-height: 1.2; + } + + .blockChange { + font-family: PingFang SC; + font-weight: 400; + font-size: 12px; + color: #1269FF; + line-height: 1.2; + display: flex; + align-items: center; + gap: 4px; + + .arrow { + font-size: 14px; + font-weight: bold; + } + + .checkIcon { + font-size: 16px; + color: #1269FF; + } + } + } + + .blockRight { + flex: 1; + height: 100%; + background-color: transparent; + border-radius: 0 4px 4px 0; + display: flex; + align-items: center; + justify-content: center; + + .blockImage { + // width: 80%; + height: 65%; + // height: 80%; + object-fit: contain; + margin-right: -5px; + } + } + } + } + } + } + + // 第二个div - 高度39% + .RcontainerMiddle { + height: 100%; + border-radius: 4px; + display: flex; + flex-direction: column; + + .sectionContent { + height: 100%; + display: flex; + display: flex; + gap: 10px; + height: 100%; + + + + .middleBlock1 { + // flex: 3; + width: 28%; + height: 100%; + background: #fff; + + border: 2px solid #fff; + // border-radius: 4px; + position: relative; + padding: 0px 10px 10px 2px; + font-family: PingFang SC; + font-size: 14px; + color: #333333; + + .block1Header { + position: absolute; + top: 5px; + left: 10px; + right: 10px; + display: flex; + justify-content: space-between; + align-items: center; + z-index: 10; + height: 28px; + line-height: 28px; + + .block1Title { + display: flex; + align-items: center; + gap: 8px; + font-weight: 500; + font-size: 14px; + color: #333333; + + .titleIcon { + width: 3px; + height: 14px; + background-color: #2E4CD4; + } + } + + .block1Segmented { + padding: 0; + margin: 0; + border: 1px solid #E3E3E3; + border-radius: 4px; + height: 28px; + + :global(.ant-segmented) { + padding: 0; + margin: 0; + height: 28px; + } + + :global(.ant-segmented-item) { + font-size: 12px; + // padding: 2px 8px; + height: 26px; + line-height: 26px; + display: flex; + align-items: center; + justify-content: center; + } + + :global(.ant-segmented-item-selected) { + background-color: #2E4CD4; + color: #fff; + } + } + } + + .deviceStatusChart { + position: absolute; + top: 35px; + left: 10px; + right: 10px; + bottom: 10px; + z-index: 10; + } + + // .block1Chart { + // width: 100%; + // height: 100%; + // margin-top: 20px; + + // .mapImage { + // margin-top: 7%; + // width: 90%; + // height: 77%; + // object-fit: cover; + // border-radius: 4px; + // display: block; + // margin-left: auto; + // margin-right: auto; + // } + // } + } + + .middleBlock2 { + flex: 6; + height: 100%; + // background: linear-gradient(170.5deg, #EBEFF4 6.87%, #FFFFFF 53.01%); + // border: 2px solid #fff; + background-color: #fff; + // border-radius: 4px; + display: flex; + flex-direction: column; + font-family: PingFang SC; + font-size: 14px; + color: #333333; + padding: 5px 10px 5px 10px; + + .middleBlock2Title { + display: flex; + justify-content: space-between; + align-items: center; + // margin-bottom: 10px; + + .titleLeft { + display: flex; + align-items: center; + gap: 8px; + font-weight: 500; + font-size: 14px; + color: #333333; + + .titleIcon { + width: 3px; + height: 14px; + background-color: #2E4CD4; + } + } + + .titleRight { + font-size: 12px; + width: 60px; + height: 20px; + line-height: 20px; + background-color: #E6E9FB; + color: #2E4CD4; + text-align: center; + border-radius: 2px; + } + } + + .middleBlock2Chart { + width: 100%; + height: 100%; + padding: 5px; + // min-height: 200px; + } + } + + } + } + + // 第三个div - 高度不超过45% + .RcontainerBottom { + height: 45%; // 限制高度不超过45% + max-height: 45%; // 确保最大高度不超过45% + // display: flex; + // flex-direction: column; + + .sectionContent { + // display: flex; + // flex-direction: row; + // gap: 10px; + padding: 0; + + .tableBlock { + width: 100%; + height: 100%; + background-color: #fff; + padding: 0; + display: flex; + flex-direction: column; + + .tableHeader { + display: flex; + justify-content: space-between; + align-items: center; + padding: 8px 15px 5px 15px; + + .tableTitle { + display: flex; + align-items: center; + gap: 8px; + font-family: PingFang SC; + font-weight: 500; + font-size: 14px; + color: #333333; + + .titleIcon { + width: 3px; + height: 16px; + background-color: #2E4CD4; + } + } + + .tableActions { + display: flex; + gap: 8px; + margin-top: 5px; + + .searchInput { + // flex: 1; + // height: 40px; + // border: 1px solid #E3E6EB; + // border-radius: 6px; + // padding: 0 16px; + // font-size: 14px; + // color: #333; + // background: #fff; + // outline: none; + // box-shadow: none; + // transition: border-color 0.2s; + } + + .searchInput:focus { + border-color: #2E4CD4; + } + + .selectAll { + // height: 40px; + // border: 1px solid #E3E6EB; + // border-radius: 6px; + // background: #fff; + // font-size: 14px; + // color: #333; + // padding: 0 32px 0 16px; + // margin-left: 12px; + } + + .selectAll:focus { + border-color: #2E4CD4; + } + + .addBtn { + background: #2E4CD4; + margin-left: 15px; + } + + .addBtn:hover { + background: #1d3bb3; + } + } + } + + .tableContainer { + flex: 1; + overflow: hidden; + margin: 10px 15px 0 15px; // 上边距10px,左右边距15px + + :global(.ant-table) { + font-size: 12px; + } + + :global(.ant-table-thead > tr > th) { + background-color: #f5f5fa; + font-weight: 500; + font-size: 14px; + color: #333333; + border-bottom: 1px solid #f0f0f0; + padding: 8px 12px; + text-align: center; + } + + :global(.ant-table-tbody > tr > td) { + padding: 8px 12px; + border-bottom: 1px solid #f0f0f0; + text-align: center; + color: #666666; + } + + :global(.ant-table-tbody > tr:hover > td) { + background-color: #f5f5f5; + } + + :global(.ant-pagination) { + margin-top: 16px; + text-align: right; + } + } + } + } + } +} \ No newline at end of file diff --git a/src/pages/business_firekeynotearea/components/EvaluationReport.js b/src/pages/business_firekeynotearea/components/EvaluationReport.js new file mode 100644 index 0000000..1d61812 --- /dev/null +++ b/src/pages/business_firekeynotearea/components/EvaluationReport.js @@ -0,0 +1,922 @@ +import React, { useEffect, useRef, useState } from 'react'; +import { Card, Result, Select, Button, Segmented, Progress, Input } from 'antd'; +import { CheckCircleOutlined, ExportOutlined, HeartFilled, LineHeightOutlined, ExclamationCircleOutlined, SearchOutlined } from '@ant-design/icons'; +import * as echarts from 'echarts'; +import StandardTable from '@/components/StandardTable'; +import styles from './EvaluationReport.less'; + +import img1 from '@/assets/safe_majorHazard/online_monitoring/img1.png'; +import img2 from '@/assets/safe_majorHazard/online_monitoring/img2.png'; +import img3 from '@/assets/safe_majorHazard/online_monitoring/img3.png'; +import map1 from '@/assets/safe_majorHazard/online_monitoring/map.png'; +import risk1 from '@/assets/safe_majorHazard/online_monitoring/risk1.png'; +import risk2 from '@/assets/safe_majorHazard/online_monitoring/risk2.png'; +import risk3 from '@/assets/safe_majorHazard/online_monitoring/risk3.png'; +import eqicon1 from '@/assets/business_basic/eqicon1.png'; +import eqicon2 from '@/assets/business_basic/eqicon2.png'; +import eqicon3 from '@/assets/business_basic/eqicon3.png'; +import eqicon4 from '@/assets/business_basic/eqicon4.png'; + +const EvaluationReport = () => { + const chartRef = useRef(null); + const pieChartRef = useRef(null); + const faultPieChartRef = 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: 8, + total: 0, + }); + const [searchText, setSearchText] = useState(''); + + // 柱状图初始化 + useEffect(() => { + if (pieChartRef.current) { + const barChart = echarts.init(pieChartRef.current); + + const barOption = { + grid: { + left: '5%', + right: '5%', + bottom: '10%', + top: '20%', + containLabel: true + }, + xAxis: { + type: 'category', + data: ['灭火器', '消火栓', '报警器', '疏散灯', '排烟设备'], + axisLabel: { + fontSize: 12, + color: '#333', + interval: 0, + rotate: 0 + }, + axisLine: { + show: false + }, + axisTick: { + show: false + } + }, + yAxis: { + type: 'value', + min: 0, + max: 50, + interval: 10, + axisLabel: { + fontSize: 12, + color: '#666', + formatter: '{value}' + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + splitLine: { + lineStyle: { + color: '#00001A26', + type: 'dashed' + } + } + }, + series: [{ + name: '使用次数', + type: 'bar', + barWidth: 27, + data: [35, 28, 42, 31, 38], + itemStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { offset: 0, color: '#199BFB' }, + { offset: 1, color: '#1373FA' } + ] + } + }, + emphasis: { + itemStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { offset: 0, color: '#0D7AE8' }, + { offset: 1, color: '#0F5BC7' } + ] + } + } + } + }], + legend: { + show: true, + top: '5%', + left: 'center', + itemWidth: 15, + itemHeight: 3, + textStyle: { + fontSize: 12, + color: '#333' + }, + data: [{ + name: '使用次数', + icon: 'rect', + itemStyle: { + color: '#4B69F1' + } + }] + }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'shadow' + }, + formatter: function (params) { + return `${params[0].name}
使用次数: ${params[0].value}`; + } + } + }; + + barChart.setOption(barOption); + + // 响应式调整 + const handleBarResize = () => { + if (barChart && !barChart.isDisposed()) { + barChart.resize(); + } + }; + + window.addEventListener('resize', handleBarResize); + + return () => { + window.removeEventListener('resize', handleBarResize); + if (barChart && !barChart.isDisposed()) { + barChart.dispose(); + } + }; + } + }, []); + + // 维护费用趋势折线图初始化 + useEffect(() => { + if (faultPieChartRef.current) { + const faultPieChart = echarts.init(faultPieChartRef.current); + + const faultPieOption = { + + legend: { + show: true, + top: '5%', + left: 'center', + itemWidth: 20, + itemHeight: 8, + textStyle: { + color: '#333', + fontSize: 12 + } + }, + grid: { + left: '5%', + right: '5%', + bottom: '10%', + top: '20%', + containLabel: true + }, + xAxis: { + type: 'category', + data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], + axisLine: { + lineStyle: { + color: '#E5E5E5' + } + }, + axisTick: { + show: false + }, + axisLabel: { + color: '#666', + fontSize: 12, + interval: 0 + } + }, + yAxis: { + type: 'value', + min: 20000, + max: 30000, + interval: 2000, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + axisLabel: { + color: '#666', + fontSize: 12, + formatter: '¥{value}' + }, + splitLine: { + lineStyle: { + color: '#00001A26', + type: 'dashed' + } + } + }, + series: [{ + name: '费用', + type: 'line', + data: [29000, 21000, 27500, 21900, 26000, 25000, 27000, 24000, 22300, 28000, 29000, 27000], + smooth: false, + symbol: 'circle', + symbolSize: 6, + lineStyle: { + color: '#1269FF', + width: 1 + }, + itemStyle: { + color: '#FFFFFF', + borderColor: '#1269FF', + borderWidth: 1 + }, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, + color: 'rgba(18, 105, 255, 0.3)' + }, { + offset: 1, + color: 'rgba(18, 105, 255, 0.05)' + }] + } + } + }] + }; + + faultPieChart.setOption(faultPieOption); + + // 响应式调整 + const handleFaultPieResize = () => { + if (faultPieChart && !faultPieChart.isDisposed()) { + faultPieChart.resize(); + } + }; + + window.addEventListener('resize', handleFaultPieResize); + + return () => { + window.removeEventListener('resize', handleFaultPieResize); + if (faultPieChart && !faultPieChart.isDisposed()) { + faultPieChart.dispose(); + } + }; + } + }, []); + + useEffect(() => { + if (chartRef.current) { + const chart = echarts.init(chartRef.current); + + // 强制初始化时调整大小 + setTimeout(() => { + if (chart && !chart.isDisposed()) { + chart.resize(); + } + }, 100); + + const option = { + color: ['#3C7EFF', '#FF8800', '#FFC403', '#31BCFF'], + legend: { + orient: 'vertical', + right: '2%', + top: 'middle', + itemWidth: 14, + itemHeight: 5, + textStyle: { + fontSize: 10, + color: '#666' + } + }, + tooltip: { + trigger: 'item', + formatter: '{b}
{d}%' + }, + series: [ + { + name: '设备类型占比', + type: 'pie', + radius: '70%', + center: ['40%', '55%'], + avoidLabelOverlap: false, + itemStyle: { + borderRadius: 0, + borderColor: '#fff', + borderWidth: 1 + }, + label: { + show: false, + position: 'center' + }, + emphasis: { + label: { + show: false + } + }, + labelLine: { + show: false + }, + data: [ + { value: 25, name: '灭火器' }, + { value: 30, name: '消防栓' }, + { value: 20, name: '报警器' }, + { value: 25, name: '烟雾探测器' } + ] + } + ] + }; + + chart.setOption(option); + + // 响应式调整 - 使用多种方式监听容器尺寸变化 + let resizeTimer = null; + const handleResize = () => { + // 防抖处理,避免频繁调用resize + if (resizeTimer) { + clearTimeout(resizeTimer); + } + resizeTimer = setTimeout(() => { + if (chart && !chart.isDisposed()) { + chart.resize(); + } + }, 50); // 减少延迟时间 + }; + + // 监听窗口大小变化 + window.addEventListener('resize', handleResize); + + // 监听容器尺寸变化(解决菜单栏伸缩时的自适应问题) + let resizeObserver = null; + if (window.ResizeObserver) { + resizeObserver = new ResizeObserver((entries) => { + for (let entry of entries) { + // 使用requestAnimationFrame确保在下一帧执行 + requestAnimationFrame(() => { + handleResize(); + }); + } + }); + resizeObserver.observe(chartRef.current); + } + + // 额外监听父容器的尺寸变化 + const parentContainer = chartRef.current?.parentElement; + let parentObserver = null; + if (parentContainer && window.ResizeObserver) { + parentObserver = new ResizeObserver((entries) => { + for (let entry of entries) { + requestAnimationFrame(() => { + handleResize(); + }); + } + }); + parentObserver.observe(parentContainer); + } + + // 使用MutationObserver监听DOM结构变化(菜单展开收起时) + const mutationObserver = new MutationObserver((mutations) => { + mutations.forEach((mutation) => { + if (mutation.type === 'attributes' && + (mutation.attributeName === 'class' || mutation.attributeName === 'style')) { + // 延迟执行,确保DOM更新完成 + setTimeout(() => { + handleResize(); + }, 200); + } + }); + }); + + // 监听整个页面的class和style变化 + mutationObserver.observe(document.body, { + attributes: true, + attributeFilter: ['class', 'style'], + subtree: true + }); + + return () => { + window.removeEventListener('resize', handleResize); + if (resizeObserver) { + resizeObserver.disconnect(); + } + if (parentObserver) { + parentObserver.disconnect(); + } + if (mutationObserver) { + mutationObserver.disconnect(); + } + if (resizeTimer) { + clearTimeout(resizeTimer); + } + if (chart && !chart.isDisposed()) { + chart.dispose(); + } + }; + } + }, []); + + // 表格列定义 + const columns = [ + { + title: '编号', + dataIndex: 'id', + key: 'id', + width: 60, + render: (text, record, index) => { + const page = pagination.current || 1; + const pageSize = pagination.pageSize || 8; + const number = (page - 1) * pageSize + index + 1; + return `0${number}`.slice(-2); + } + }, + { + title: '设备编号', + dataIndex: 'deviceId', + key: 'deviceId', + width: 140, + }, + { + title: '设备名称', + dataIndex: 'deviceName', + key: 'deviceName', + width: 110, + }, + { + title: '类型', + dataIndex: 'modelSpec', + key: 'modelSpec', + width: 120, + }, + { + title: '安装位置', + dataIndex: 'installLocation', + key: 'installLocation', + width: 100, + }, + { + title: '状态', + dataIndex: 'status', + key: 'status', + width: 100, + render: (text) => { + const statusMap = { + '报废': { color: '#FF3E48', bg: '#FFE0E2' }, + '待维修': { color: '#FF8800', bg: '#FFF3E9' }, + '已使用': { color: '#00AAFA', bg: '#DAF3FF' }, + '正常': { color: '#44BB5F', bg: '#D8F7DE' } + }; + const status = statusMap[text] || { color: '#333', bg: '#F5F5F5' }; + return ( + + {text} + + ); + } + }, + { + title: '最后维护时间', + dataIndex: 'lastMaintenance', + key: 'lastMaintenance', + width: 150, + }, + { + title: '操作', + key: 'action', + width: 140, + render: (_, record) => ( +
+ + +
+ ), + }, + ]; + + // 模拟数据 + const mockData = [ + { + key: '1', + id: '001', + deviceId: 'HQ-XF-01-001', + deviceName: '干粉灭火器', + modelSpec: '灭火设备', + installLocation: '1层大厅', + status: '报废', + lastMaintenance: '2025-09-10', + }, + { + key: '2', + id: '002', + deviceId: 'HQ-XF-02-015', + deviceName: '室内消火栓', + modelSpec: '灭火设备', + installLocation: '3层东区', + status: '已使用', + lastMaintenance: '2025-09-10', + }, + { + key: '3', + id: '003', + deviceId: 'HQ-XF-03-007', + deviceName: '火警报警器', + modelSpec: '报警设备', + installLocation: '地下一层', + status: '正常', + lastMaintenance: '2025-09-10', + }, + { + key: '4', + id: '004', + deviceId: 'HQ-XF-03-008', + deviceName: '火警报警器', + modelSpec: '报警设备', + installLocation: '地下一层', + status: '待维修', + lastMaintenance: '2025-09-10', + }, + { + key: '5', + id: '005', + deviceId: 'HQ-XF-01-009', + deviceName: '干粉灭火器', + modelSpec: '灭火设备', + installLocation: '地下一层', + status: '报废', + lastMaintenance: '2025-09-10', + }, + { + key: '6', + id: '006', + deviceId: 'HQ-XF-01-010', + deviceName: '室内消火栓', + modelSpec: '灭火设备', + installLocation: '地下一层', + status: '已使用', + lastMaintenance: '2025-09-10', + }, + { + key: '7', + id: '007', + deviceId: 'HQ-XF-01-011', + deviceName: '火警报警器', + modelSpec: '报警设备', + installLocation: '地下一层', + status: '待维修', + lastMaintenance: '2025-09-10', + }, + { + key: '8', + id: '008', + deviceId: 'HQ-XF-01-012', + deviceName: '火警报警器', + modelSpec: '报警设备', + installLocation: '地下一层', + status: '正常', + lastMaintenance: '2025-09-10', + }, + { + key: '9', + id: '009', + deviceId: 'HQ-XF-01-013', + deviceName: '干粉灭火器', + modelSpec: '灭火设备', + installLocation: '地下一层', + status: '已使用', + lastMaintenance: '2025-09-10', + }, + { + key: '10', + id: '010', + deviceId: 'HQ-XF-01-014', + deviceName: '室内消火栓', + modelSpec: '灭火设备', + installLocation: '地下一层', + status: '待维修', + lastMaintenance: '2025-09-10', + }, + { + key: '11', + id: '011', + deviceId: 'HQ-XF-01-015', + deviceName: '火警报警器', + modelSpec: '报警设备', + installLocation: '地下一层', + status: '正常', + lastMaintenance: '2025-09-10', + }, + { + key: '12', + id: '012', + deviceId: 'HQ-XF-01-016', + deviceName: '火警报警器', + modelSpec: '报警设备', + installLocation: '地下一层', + status: '已使用', + lastMaintenance: '2025-09-10', + }, + { + key: '13', + id: '013', + deviceId: 'HQ-XF-01-017', + deviceName: '干粉灭火器', + modelSpec: '灭火设备', + installLocation: '2层西区', + status: '报废', + lastMaintenance: '2024-08-15', + }, + { + key: '14', + id: '014', + deviceId: 'HQ-XF-02-018', + deviceName: '室内消火栓', + modelSpec: '灭火设备', + installLocation: '4层南区', + status: '报废', + lastMaintenance: '2024-07-20', + }, + { + key: '15', + id: '015', + deviceId: 'HQ-XF-03-019', + deviceName: '火警报警器', + modelSpec: '报警设备', + installLocation: '地下二层', + status: '报废', + lastMaintenance: '2024-06-10', + }, + { + key: '16', + id: '016', + deviceId: 'HQ-XF-01-020', + deviceName: '干粉灭火器', + modelSpec: '灭火设备', + installLocation: '5层北区', + status: '报废', + lastMaintenance: '2024-05-05', + }, + ]; + + // 初始化数据 + useEffect(() => { + setPagination(prev => ({ ...prev, total: mockData.length })); + }, []); + + // 根据分页获取当前页数据 + const getCurrentPageData = () => { + const { current, pageSize } = pagination; + const startIndex = (current - 1) * pageSize; + const endIndex = startIndex + pageSize; + return mockData.slice(startIndex, endIndex); + }; + + // 表格选择变化 + const onSelectChange = (newSelectedRowKeys, newSelectedRows) => { + setSelectedRowKeys(newSelectedRowKeys); + setSelectedRows(newSelectedRows); + }; + + // 新增设备按钮点击事件 + const handleAddDevice = () => { + console.log('新增设备'); + // TODO: 实现新增设备逻辑 + }; + + // 导出数据按钮点击事件 + const handleExportData = () => { + console.log('导出数据'); + // TODO: 实现导出数据逻辑 + }; + + // 分页变化处理 + const handleTableChange = (pagination) => { + setPagination(prev => ({ + ...prev, + current: pagination.current, + pageSize: pagination.pageSize, + })); + }; + + // 搜索处理 + const handleSearchChange = (e) => { + setSearchText(e.target.value); + console.log('搜索:', e.target.value); + // TODO: 实现搜索逻辑,根据设备名称、编号等筛选数据 + }; + + return ( +
+ {/* 第1个div - 高度39% */} +
+
+
+
+
+
+ 设备使用频率分析 +
+
+ {/* 设备状态饼图 */} +
+
+
+ +
+
+
+
+ 近一年维护费用趋势 +
+
+ + {/* 维护费用趋势折线图 */} +
+
+
+ +
+
+
+
+
设备类型占比
+
+
+
+
+
+
+
+ + {/* 第2个div - 占满剩余位置 */} +
+
+
+
+
+
+
+
近期维护提醒
+
+
+
+
+
SH-MHQ-023-C 干粉灭火器
+
位置: 4楼办公区丨维护类型: 季度检查
+
负责人: 张三
+
+
+
3天后到期
+
+
+
+
+
SH-XHS-045-D 室内消火栓
+
位置: 2楼东侧走廊丨维护类型: 水压测试
+
负责人: 李四
+
+
+
8天后到期
+
+
+
+
+
+
+
+
维护任务进度
+
+
+ {/* 进度条区域 */} +
+ +
月度维护计划
+ + +
季度维护计划
+ + + +
年度维护计划
+ + + + {/* 警告提示框 */} +
+ + 本月有5项维护任务即将到期 +
+ +
+
+
+
+
+ +
+ {/* 表格 */} +
+
+
+
消防设施与器材列表
+
+
+ + + {/* 操作按钮 */} +
+
+ } + /> +
+
+ + +
+
+ + {/* 表格 */} +
+ + `共 ${total} 条`, + }} + /> +
+
+
+
+
+ ); +}; + +export default EvaluationReport; diff --git a/src/pages/business_firekeynotearea/components/EvaluationReport.less b/src/pages/business_firekeynotearea/components/EvaluationReport.less new file mode 100644 index 0000000..e62182a --- /dev/null +++ b/src/pages/business_firekeynotearea/components/EvaluationReport.less @@ -0,0 +1,558 @@ +.Econtainer { + padding: 8px 6px 0px 6px; + height: 100%; + display: flex; + flex-direction: column; + gap: 10px; + + // 第二个div - 高度35% + .EcontainerMiddle { + // height: 400px; + min-height: 35%; + border-radius: 4px; + display: flex; + flex-direction: column; + + .sectionContent { + height: 100%; + display: flex; + display: flex; + gap: 10px; + height: 100%; + + .middleBlock1 { + width: 30%; + height: 100%; + background: #fff; + border: 2px solid #fff; + position: relative; + padding: 0px 10px 10px 2px; + font-family: PingFang SC; + font-size: 14px; + color: #333333; + + .block1Header { + position: absolute; + top: 5px; + left: 10px; + right: 10px; + display: flex; + justify-content: space-between; + align-items: center; + z-index: 10; + + .block1Title { + display: flex; + align-items: center; + gap: 8px; + font-weight: 500; + font-size: 14px; + margin-top: 5px; + color: #333333; + + .titleIcon { + width: 3px; + height: 14px; + background-color: #2E4CD4; + } + } + + } + + .deviceStatusChart { + position: absolute; + top: 10px; + left: 10px; + right: 10px; + z-index: 10; + min-height: 100%; + } + } + + .middleBlock12 { + flex: 1; + height: 100%; + background-color: #fff; + display: flex; + flex-direction: column; + font-family: PingFang SC; + font-size: 14px; + color: #333333; + padding: 5px 10px 5px 10px; + position: relative; + + .block1Header { + position: absolute; + top: 5px; + left: 10px; + right: 10px; + display: flex; + justify-content: space-between; + align-items: center; + z-index: 10; + + .block1Title { + display: flex; + align-items: center; + gap: 8px; + font-weight: 500; + font-size: 14px; + margin-top: 5px; + color: #333333; + + .titleIcon { + width: 3px; + height: 14px; + background-color: #2E4CD4; + } + } + + } + + .deviceStatusChart { + position: absolute; + top: 10px; + left: 10px; + right: 10px; + // bottom: 10px; + z-index: 10; + } + } + + .middleBlock12 { + width: 45%; + height: 100%; + background-color: #fff; + display: flex; + flex-direction: column; + font-family: PingFang SC; + font-size: 14px; + color: #333333; + padding: 5px 10px 5px 10px; + position: relative; + + .block1Header { + position: absolute; + top: 5px; + left: 10px; + right: 10px; + display: flex; + justify-content: space-between; + align-items: center; + z-index: 10; + + .block1Title { + display: flex; + align-items: center; + gap: 8px; + font-weight: 500; + font-size: 14px; + color: #333333; + + .titleIcon { + width: 3px; + height: 14px; + background-color: #2E4CD4; + } + } + } + + .deviceStatusChart { + position: absolute; + top: 10px; + left: 10px; + right: 10px; + // bottom: 10px; + min-height: 100%; + z-index: 10; + } + } + + .middleBlock2 { + // flex: 1; + width: calc(100% - 75% - 15px); + height: 100%; + // background: linear-gradient(170.5deg, #EBEFF4 6.87%, #FFFFFF 53.01%); + // border: 2px solid #fff; + background-color: #fff; + // border-radius: 4px; + display: flex; + flex-direction: column; + font-family: PingFang SC; + font-size: 14px; + color: #333333; + padding: 5px 10px 5px 10px; + + .middleBlock2Title { + display: flex; + justify-content: space-between; + align-items: center; + margin-top: 5px; + + .titleLeft { + display: flex; + align-items: center; + gap: 8px; + font-weight: 500; + font-size: 14px; + color: #333333; + + .titleIcon { + width: 3px; + height: 14px; + background-color: #2E4CD4; + } + } + + } + + .middleBlock2Chart { + width: 100%; + height: 100%; + } + } + } + } + + // 第三个div - 占满剩余位置 + .EcontainerBottom { + display: flex; + flex-direction: column; + flex-shrink: 0; + + .sectionContent { + display: flex; + flex-direction: row; + flex: 1; + gap: 10px; + padding: 0; + + .leftBlock { + width: 30%; + flex-shrink: 0; + height: 100%; + padding: 0; + display: flex; + flex-direction: column; + gap: 10px; + + .leftBlockTitle { + display: flex; + align-items: center; + gap: 8px; + font-family: PingFang SC; + font-weight: 500; + font-size: 14px; + color: #333333; + margin-bottom: 10px; + + .titleIcon { + width: 3px; + height: 16px; + background-color: #2E4CD4; + } + } + + .maintenanceStack { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + gap: 10px; + + .maintenanceSection { + width: 100%; + height: 50%; + background: #FFF; + border-radius: 4px; + display: flex; + flex-direction: column; + padding: 12px 14px; + + .maintenanceTitle { + display: flex; + align-items: center; + gap: 8px; + font-family: PingFang SC; + font-weight: 500; + font-size: 14px; + color: #333333; + margin-bottom: 8px; + } + + .titleIcon { + width: 3px; + height: 16px; + background-color: #2E4CD4; + } + + .maintenanceContent { + flex: 1; + width: 100%; + } + + .maintenanceContent1 { + flex: 1; + width: 100%; + display: flex; + flex-direction: column; + gap: 8px; + margin-top: 8px; + .maintenanceItem { + display: flex; + align-items: center; + justify-content: space-between; + background-color: #F1F7FF; + border-radius: 4px; + padding: 16px 16px; + + .maintenanceLeft { + flex: 1; + display: flex; + flex-direction: column; + gap: 4px; + + .maintenanceText1 { + font-size: 14px; + font-weight: 500; + color: #333333; + font-family: PingFang SC; + } + + .maintenanceText2 { + font-size: 12px; + color: #666666; + font-family: PingFang SC; + } + + .maintenanceText3 { + font-size: 12px; + color: #666666; + font-family: PingFang SC; + } + } + + .maintenanceRight { + flex: 0 0 auto; + display: flex; + align-items: center; + justify-content: center; + + .maintenanceStatus { + font-size: 12px; + color: #FF3E48; + font-weight: 500; + font-family: PingFang SC; + background-color: #FFE0E2; + padding: 4px 8px; + border-radius: 4px; + // border: 1px solid #FFE0E2; + } + } + + .maintenanceRight2 { + flex: 0 0 auto; + display: flex; + align-items: center; + justify-content: center; + + .maintenanceStatus { + font-size: 12px; + color: #FF8800; + font-weight: 500; + font-family: PingFang SC; + background-color: #FFF3E9; + padding: 4px 8px; + border-radius: 4px; + // padding-right: 2px; + } + } + } + } + + .maintenanceContent2 { + flex: 1; + width: 100%; + display: flex; + flex-direction: column; + gap: 15px; + padding: 8px 0; + + .warningBox { + display: flex; + align-items: center; + gap: 8px; + background-color: #FFF3CD; + border: 1px solid #F4E3AE; + border-radius: 4px; + padding: 8px 12px; + // margin-bottom: 8px; + // margin-top: 10px; + + .warningIcon { + color: #8C6C0B; + font-size: 14px; + } + + .warningText { + color: #8C6C0B; + font-size: 12px; + font-family: PingFang SC; + font-weight: 400; + } + } + + .progressSection { + width: 100%; + display: flex; + flex-direction: column; + // gap: 12px; + padding: 0px 12px 12px 12px; + + + .progressLabel { + font-size: 12px; + color: #666666; + font-family: PingFang SC; + font-weight: 400; + + } + + // 自定义进度条样式 + :global(.ant-progress) { + .ant-progress-bg { + background: linear-gradient(90deg, #2E4CD4 0%, #4B69F1 100%); + } + + .ant-progress-text { + color: #2E4CD4; + font-weight: 500; + } + } + + } + } + } + } + } + + .rightBlock { + width: calc(100% - 28% - 10px); + height: 100%; + background-color: #fff; + padding: 0; + display: flex; + flex-direction: column; + + .tableHeader { + display: flex; + justify-content: space-between; + align-items: center; + padding: 11px 15px 5px 15px; + + .tableTitle { + display: flex; + align-items: center; + gap: 8px; + font-family: PingFang SC; + font-weight: 500; + font-size: 14px; + color: #333333; + + .titleIcon { + width: 3px; + height: 16px; + background-color: #2E4CD4; + } + } + } + + .tableActions { + display: flex; + justify-content: space-between; + align-items: center; + gap: 8px; + margin-top: 5px; + padding: 0px 15px; + + .leftActions { + display: flex; + align-items: center; + } + + .rightActions { + display: flex; + gap: 8px; + align-items: center; + } + + .actionButton { + display: flex; + align-items: center; + gap: 4px; + height: 28px; + border: 1px solid #DFE4F6; + border-radius: 4px; + color: #2E4CD4; + font-weight: 500; + font-size: 12px; + padding: 0px 8px; + background: transparent; + cursor: pointer; + transition: all 0.2s ease; + + &:hover { + background-color: #f0f2ff; + border-color: #2E4CD4; + } + + &:active { + background-color: #e6ebff; + } + + .buttonIcon { + font-size: 14px; + font-weight: bold; + } + } + } + + .tableContainer { + flex: 1; + overflow: hidden; + margin: 10px 15px 0 15px; // 上边距10px,左右边距15px + + :global(.ant-table) { + font-size: 12px; + } + + :global(.ant-table-thead > tr > th) { + background-color: #f5f5fa; + font-weight: 500; + font-size: 14px; + color: #333333; + border-bottom: 1px solid #f0f0f0; + padding: 8px 12px; + text-align: center; + } + + :global(.ant-table-tbody > tr > td) { + padding: 8px 12px; + border-bottom: 1px solid #f0f0f0; + text-align: center; + color: #666666; + } + + :global(.ant-table-tbody > tr:hover > td) { + background-color: #f5f5f5; + } + + :global(.ant-pagination) { + margin-top: 16px; + text-align: right; + } + } + } + } + } +} \ No newline at end of file diff --git a/src/pages/business_firekeynotearea/components/KeypartsBasicInformation.js b/src/pages/business_firekeynotearea/components/KeypartsBasicInformation.js new file mode 100644 index 0000000..07779ce --- /dev/null +++ b/src/pages/business_firekeynotearea/components/KeypartsBasicInformation.js @@ -0,0 +1,429 @@ + +import React, { useEffect, useRef, useState } from 'react'; +import { Button, Input, Select, Tree } from 'antd'; +import { ExportOutlined, PlusOutlined } from '@ant-design/icons'; +import StandardTable from '@/components/StandardTable'; +import styles from './KeypartsBasicInformation.less'; +import eqicon1 from '@/assets/business_firekeynotearea/eqicon1.png'; +import eqicon2 from '@/assets/business_firekeynotearea/eqicon2.png'; +import eqicon3 from '@/assets/business_firekeynotearea/eqicon3.png'; +import eqicon4 from '@/assets/business_firekeynotearea/eqicon4.png'; +import eqicon5 from '@/assets/business_firekeynotearea/eqicon5.png'; + +const KeypartsBasicInformation = () => { + 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, + }); + + + // 表格列定义 + const columns = [ + { + title: '编号', + dataIndex: 'id', + key: 'id', + width: 60, + fixed: 'left', + render: (text, record, index) => { + const page = pagination.current || 1; + const pageSize = pagination.pageSize || 5; + const number = (page - 1) * pageSize + index + 1; + return `0${number}`.slice(-2); + } + }, + { + title: '部位名称', + dataIndex: 'name', + key: 'name', + width: 120, + }, + { + title: '所属建筑', + dataIndex: 'building', + key: 'building', + width: 120, + }, + { + title: '类型', + dataIndex: 'type', + key: 'type', + width: 100, + }, + { + title: '标签', + dataIndex: 'tags', + key: 'tags', + width: 200, + render: (tags) => ( + <> + {tags.map((tag, idx) => { + const tagColorMap = { + '电气风险': { color: '#F9EBBC', fontColor: '#333333' }, + '重要设备': { color: '#CDDFFF', fontColor: '#333333' }, + '易燃易爆': { color: '#F8C6C6', fontColor: '#333333' }, + '人员密集': { color: '#B6E1F6', fontColor: '#333333' }, + '关键设施': { color: '#FDDBB5', fontColor: '#333333' }, + '高风险区': { color: '#F8C6C6', fontColor: '#333333' }, + }; + const style = tagColorMap[tag] || { color: '#eee', fontColor: '#666' }; + return ( + {tag} + ); + })} + + ) + }, + { + title: '状态', + dataIndex: 'status', + key: 'status', + width: 80, + render: (text) => { + const statusMap = { + '故障': { color: '#FF3E48', bg: '#FFE0E2' }, + '预警': { color: '#FF8800', bg: '#FFF3E9' }, + '正常': { color: '#44BB5F', bg: '#D8F7DE' } + }; + const status = statusMap[text] || { color: '#333', bg: '#F5F5F5' }; + return ( + + {text} + + ); + } + }, + { + title: '最后更新', + dataIndex: 'lastUpdate', + key: 'lastUpdate', + width: 120, + }, + { + title: '操作', + key: 'action', + width: 100, + align: 'center', + fixed: 'right', + render: (_, record) => ( + <> + + + + ), + }, + ]; + + // 模拟数据 + const mockData = [ + { + key: '1', + id: '001', + name: '1号办公楼', + building: '1号办公楼', + type: '配电室', + tags: ['电气风险', '重要设备'], + status: '故障', + lastUpdate: '2025-09-10', + }, + { + key: '2', + id: '002', + name: 'B区厨房', + building: '员工餐厅', + type: '厨房', + tags: ['易燃易爆', '人员密集'], + status: '预警', + lastUpdate: '2025-09-10', + }, + { + key: '3', + id: '003', + name: '数据中心机房', + building: '信息中心', + type: '数据机房', + tags: ['关键设施', '重要设备'], + status: '正常', + lastUpdate: '2025-09-10', + }, + { + key: '4', + id: '004', + name: '化学品仓库', + building: '实验楼', + type: '仓库', + tags: ['易燃易爆', '高风险区'], + status: '正常', + lastUpdate: '2025-09-10', + }, + ]; + + // 初始化数据 + useEffect(() => { + setPagination(prev => ({ ...prev, total: mockData.length })); + }, []); + + // 根据分页获取当前页数据 + const getCurrentPageData = () => { + const { current, pageSize } = pagination; + const startIndex = (current - 1) * pageSize; + const endIndex = startIndex + pageSize; + return mockData.slice(startIndex, endIndex); + }; + + // 表格选择变化 + const onSelectChange = (newSelectedRowKeys, newSelectedRows) => { + setSelectedRowKeys(newSelectedRowKeys); + setSelectedRows(newSelectedRows); + }; + + // 新增设备按钮点击事件 + const handleAddDevice = () => { + console.log('新增设备'); + // TODO: 实现新增设备逻辑 + }; + + // 导出数据按钮点击事件 + const handleExportData = () => { + console.log('导出数据'); + // TODO: 实现导出数据逻辑 + }; + + // 分页变化处理 + const handleTableChange = (pagination) => { + setPagination(prev => ({ + ...prev, + current: pagination.current, + pageSize: pagination.pageSize, + })); + }; + + return ( +
+ {/* 第一个div - 高度20% */} +
+
+
+ {/* 块1 */} +
+
+
总重点部位数
+
1820
+
+
+ 总重点部位数 +
+
+ + {/* 块2 */} +
+
+
易燃易爆场所
+
386
+
+
+ 易燃易爆场所 +
+
+ + {/* 块3 */} +
+
+
人员密集区域
+
269
+
+
+ 人员密集区域 +
+
+ + {/* 块4 */} +
+
+
重要设备房
+
412
+
+
+ 重要设备房 +
+
+ + {/* 块5 */} +
+
+
物资储存区
+
290
+
+
+ 物资储存区 +
+
+ +
+
+
+ + {/* 第二个div - 占满剩余位置 */} +
+
+
+ + {/* 表格头部 */} +
+
+
+
消防设施与器材列表
+
+
+ + {/* 搜索与操作栏 */} +
+
+ {/* 搜索输入框 */} + +
+
+ {/* 下拉选择 */} +