BAI 17 часов назад
Родитель
Сommit
5dd2433727

+ 8 - 5
src/components/DamDeformSection.vue

@@ -45,10 +45,10 @@
         <colgroup>
           <col style="width:38px" />
           <col style="width:auto" />
-          <col style="width:62px" />
-          <col style="width:62px" />
-          <col style="width:62px" />
-          <col style="width:44px" />
+          <col style="width:48px" />
+          <col style="width:48px" />
+          <col style="width:48px" />
+          <col style="width:72px" />
         </colgroup>
         <thead>
           <tr>
@@ -345,7 +345,10 @@ export default {
 
 
 /* 表格 */
-.gauge-table { width: 100%; overflow-x: auto; }
+.gauge-table { width: 100%; max-height: 120px; overflow-y: auto; overflow-x: auto; }
+.gauge-table::-webkit-scrollbar { width: 0; height: 0; }
+.gauge-table::-webkit-scrollbar-track { display: none; }
+.gauge-table::-webkit-scrollbar-thumb { display: none; }
 .gauge-table table { width: 100%; border-collapse: collapse; font-size: 10px; }
 .gauge-table th {
   color: rgba(123,190,246,0.8); background: rgba(0,20,40,0.4);

+ 8 - 8
src/components/DamSeepageSection.vue

@@ -83,14 +83,14 @@ export default {
       waveAmplitude: 0.3,        // 波动幅度
       // 渗压计数据(沿坝体水平分布,共14支)
       gauges: [
-        { id: 'P01', pos: '坝基上游', xRatio: 0.15, measured: 8.5, design: 9.0, warning: 10.5, status: 'normal' },
-        { id: 'P02', pos: '坝基中上', xRatio: 0.25, measured: 7.8, design: 8.2, warning: 9.8, status: 'normal' },
-        { id: 'P03', pos: '坝基中部', xRatio: 0.35, measured: 6.5, design: 7.0, warning: 8.5, status: 'normal' },
-        { id: 'P04', pos: '坝基中下', xRatio: 0.45, measured: 5.2, design: 5.8, warning: 7.2, status: 'normal' },
-        { id: 'P05', pos: '坝体上游', xRatio: 0.30, measured: 7.5, design: 8.0, warning: 9.5, status: 'normal' },
-        { id: 'P06', pos: '坝体中部', xRatio: 0.47, measured: 6.0, design: 6.5, warning: 8.0, status: 'normal' },
-        { id: 'P07', pos: '坝体中后', xRatio: 0.64, measured: 4.2, design: 5.0, warning: 6.5, status: 'warning' },
-        { id: 'P08', pos: '坝体下游', xRatio: 0.82, measured: 2.5, design: 3.2, warning: 4.8, status: 'normal' },
+        { id: 'P01', pos: '坝基上游', xRatio: 0.22, measured: 8.5, design: 9.0, warning: 10.5, status: 'normal' },
+        { id: 'P02', pos: '坝基中上', xRatio: 0.32, measured: 7.8, design: 8.2, warning: 9.8, status: 'normal' },
+        { id: 'P03', pos: '坝基中部', xRatio: 0.42, measured: 6.5, design: 7.0, warning: 8.5, status: 'normal' },
+        { id: 'P04', pos: '坝基中下', xRatio: 0.52, measured: 5.2, design: 5.8, warning: 7.2, status: 'normal' },
+        { id: 'P05', pos: '坝体上游', xRatio: 0.27, measured: 7.5, design: 8.0, warning: 9.5, status: 'normal' },
+        { id: 'P06', pos: '坝体中部', xRatio: 0.57, measured: 6.0, design: 6.5, warning: 8.0, status: 'normal' },
+        { id: 'P07', pos: '坝体中后', xRatio: 0.67, measured: 4.2, design: 5.0, warning: 6.5, status: 'warning' },
+        { id: 'P08', pos: '坝体下游', xRatio: 0.77, measured: 2.5, design: 3.2, warning: 4.8, status: 'normal' },
       ],
       // 浸润线抛物线控制点(基准值,对应 baseWaterLevel)
       phreaticControlPoints: [

+ 1 - 0
src/views/HomeView.vue

@@ -333,6 +333,7 @@ export default {
   position: relative;
   width: 100%;
   height: 100%;
+  z-index: 3;
 }
 
 

+ 140 - 24
src/views/mainPages/EngineeringSafetyView.vue

@@ -42,6 +42,22 @@
                     <span class="eval-item-name">坝体变形</span>
                     <span class="eval-item-tag tag-ok">正常</span>
                   </div>
+                  <div class="safety-eval-item">
+                    <span class="eval-item-name">闸门控制</span>
+                    <span class="eval-item-tag tag-ok">正常</span>
+                  </div>
+                  <div class="safety-eval-item">
+                    <span class="eval-item-name">水文水情</span>
+                    <span class="eval-item-tag tag-ok">正常</span>
+                  </div>
+                  <div class="safety-eval-item">
+                    <span class="eval-item-name">视频监控</span>
+                    <span class="eval-item-tag tag-warn">预警</span>
+                  </div>
+                  <div class="safety-eval-item">
+                    <span class="eval-item-name">管网监测</span>
+                    <span class="eval-item-tag tag-ok">正常</span>
+                  </div>
                   <div class="safety-eval-item">
                     <span class="eval-item-name">设备运行</span>
                     <span class="eval-item-tag tag-warn">预警</span>
@@ -49,7 +65,7 @@
                 </div>
                 <div class="safety-eval-bot">
                   <div class="safety-eval-stat">
-                    <span class="eval-stat-dot dot-ok"></span>正常 322
+                    <span class="eval-stat-dot dot-ok"></span>正常 227
                   </div>
                   <div class="safety-eval-stat">
                     <span class="eval-stat-dot dot-warn"></span>预警 8
@@ -350,11 +366,35 @@ export default {
       summaryPieChart: null,
       deviceGaugeChart: null,
       monitorSummaryList: [
-        { name: "变形监测", count: 75, progress: 82, color: "#62f6fb" },
-        { name: "渗流渗压", count: 17, progress: 65, color: "#a78bfa" },
-        { name: "水位流量", count: 7, progress: 45, color: "#fbbf24" },
+        { name: "闸门控制", count: 37, progress: 90, color: "#62f6fb" },
+        { name: "水文水情", count: 21, progress: 85, color: "#a78bfa" },
+        { name: "变形监测", count: 53, progress: 82, color: "#fbbf24" },
+        { name: "渗流渗压", count: 17, progress: 65, color: "#34d399" },
+        { name: "视频监控", count: 13, progress: 95, color: "#f97316" },
+        { name: "管网监测", count: 13, progress: 78, color: "#818cf8" },
       ],
       summaryPieMap: {
+        "闸门控制": [
+          { name: "闸位计", value: 9, color: "#62f6fb" },
+          { name: "荷重传感器", value: 9, color: "#34d399" },
+          { name: "限位开关", value: 9, color: "#fbbf24" },
+          { name: "闸门控制柜", value: 6, color: "#f97316" },
+          { name: "闸门控制单元", value: 6, color: "#ef4444" },
+          { name: "螺杆式闸门", value: 7, color: "#818cf8" },
+          { name: "开度仪", value: 1, color: "#c084fc" },
+        ],
+        "水文水情": [
+          { name: "雨量计", value: 5, color: "#62f6fb" },
+          { name: "遥测终端机", value: 8, color: "#34d399" },
+          { name: "气泡式水位计", value: 3, color: "#fbbf24" },
+          { name: "高清摄像头", value: 9, color: "#f97316" },
+          { name: "信号避雷器", value: 15, color: "#ef4444" },
+          { name: "太阳能供电系统", value: 22, color: "#a78bfa" },
+          { name: "压力变送器", value: 4, color: "#818cf8" },
+          { name: "明渠雷达流量计", value: 1, color: "#c084fc" },
+          { name: "气象站", value: 1, color: "#62f6fb" },
+          { name: "水质分析仪", value: 5, color: "#34d399" },
+        ],
         "变形监测": [
           { name: "GNSS位移监测站", value: 12, color: "#62f6fb" },
           { name: "GNSS位移监测基准站", value: 3, color: "#34d399" },
@@ -371,19 +411,74 @@ export default {
           { name: "数据采集箱", value: 1, color: "#c084fc" },
           { name: "振弦式读数仪", value: 1, color: "#e879f9" },
         ],
-        "水位流量": [
-          { name: "水尺", value: 2, color: "#62f6fb" },
-          { name: "流速仪", value: 2, color: "#34d399" },
-          { name: "水准仪", value: 1, color: "#fbbf24" },
-          { name: "经纬仪", value: 1, color: "#f97316" },
-          { name: "全站仪", value: 1, color: "#ef4444" },
+        "视频监控": [
+          { name: "红外高清球机", value: 5, color: "#f97316" },
+          { name: "网络高清枪机", value: 5, color: "#ef4444" },
+          { name: "网络高清半球", value: 3, color: "#62f6fb" },
+        ],
+        "管网监测": [
+          { name: "数据采集终端", value: 1, color: "#818cf8" },
+          { name: "压力变送器", value: 2, color: "#a78bfa" },
+          { name: "信号避雷器", value: 5, color: "#fbbf24" },
+          { name: "电源防雷模块", value: 2, color: "#34d399" },
+          { name: "远程监测控制箱", value: 2, color: "#62f6fb" },
+          { name: "监测井", value: 2, color: "#f97316" },
+          { name: "水浸传感器", value: 2, color: "#ef4444" },
+          { name: "太阳能供电系统", value: 11, color: "#c084fc" },
+          { name: "监测立杆", value: 4, color: "#62f6fb" },
+          { name: "防雷接地", value: 4, color: "#34d399" },
         ],
       },
       // 设备清单树
       searchKey: "",
       treeData: [
         {
-          name: "大坝安全监测系统", count: 98, expanded: true, children: [
+          name: "闸门控制", count: 37, expanded: true, children: [
+            {
+              name: "引水口闸门控制", count: 14, expanded: true, children: [
+                { name: "螺杆式闸门", count: 1 },
+                { name: "闸位计", count: 3 },
+                { name: "开度仪", count: 1 },
+                { name: "荷重传感器", count: 3 },
+                { name: "限位开关", count: 3 },
+                { name: "闸门LCU控制柜", count: 1 },
+                { name: "闸门控制单元", count: 1 },
+              ],
+            },
+            {
+              name: "卷扬式放水闸门控制", count: 11, expanded: true, children: [
+                { name: "闸位计", count: 3 },
+                { name: "荷重传感器", count: 3 },
+                { name: "限位开关", count: 3 },
+                { name: "闸门控制柜", count: 3 },
+                { name: "闸门控制单元", count: 3 },
+              ],
+            },
+            {
+              name: "液压闸门控制", count: 11, expanded: true, children: [
+                { name: "闸位计", count: 3 },
+                { name: "荷重传感器", count: 3 },
+                { name: "限位开关", count: 3 },
+                { name: "闸门控制柜", count: 3 },
+                { name: "闸门控制单元", count: 3 },
+              ],
+            },
+          ],
+        },
+        {
+          name: "水文水情", count: 21, expanded: true, children: [
+            { name: "遥测雨量站", count: 2, children: [{ name: "雨量计" }, { name: "遥测终端机" }] },
+            { name: "遥测库水位监测站", count: 2, children: [{ name: "气泡式水位计" }, { name: "遥测终端机" }] },
+            { name: "进库流量监测", count: 2 },
+            { name: "出库流量监测", count: 2 },
+            { name: "气象监测", count: 1, children: [{ name: "气象站" }] },
+            { name: "地表水水质在线监测系统", count: 5, children: [{ name: "五参数分析仪" }, { name: "在线氨氮分析仪" }, { name: "在线高锰酸盐指数分析仪" }, { name: "在线总磷分析仪" }, { name: "在线总氮分析仪" }] },
+            { name: "水情预警分析报警子模块", count: 2 },
+            { name: "备品备件", count: 4 },
+          ],
+        },
+        {
+          name: "大坝安全监测", count: 98, expanded: true, children: [
             {
               name: "变形监测(GNSS)", count: 53, expanded: true, children: [
                 { name: "GNSS位移监测基准站", count: 3, children: [{ name: "基准站-01" }, { name: "基准站-02" }, { name: "基准站-03" }] },
@@ -424,6 +519,24 @@ export default {
             },
           ],
         },
+        {
+          name: "视频监控", count: 13, expanded: true, children: [
+            { name: "红外高清球机", count: 5 },
+            { name: "网络高清枪机", count: 5 },
+            { name: "网络高清半球", count: 3 },
+          ],
+        },
+        {
+          name: "管网监测", count: 13, expanded: true, children: [
+            { name: "数据采集终端", count: 1 },
+            { name: "压力变送器", count: 2 },
+            { name: "信号避雷器", count: 2 },
+            { name: "电源防雷模块", count: 2 },
+            { name: "远程监测控制箱", count: 2 },
+            { name: "监测井", count: 2 },
+            { name: "水浸传感器", count: 2 },
+          ],
+        },
       ],
       // 报警数据
       // 巡检记录
@@ -579,22 +692,25 @@ export default {
 </script>
 <style scoped>
 .safety-container { width: 100%; height: 100%; display: flex; flex-direction: column; position: relative; overflow: hidden; }
-.safety-scroll-area { position: absolute; left: 0; right: 0; top: 120px; bottom: 0; overflow-y: auto; overflow-x: hidden; z-index: 5; padding-bottom: 40px; pointer-events: none; display: flex; flex-direction: column; align-items: center; }
-.safety-scroll-area::-webkit-scrollbar { width: 4px; }
-.safety-scroll-area::-webkit-scrollbar-track { background: rgba(0,20,40,0.5); }
-.safety-scroll-area::-webkit-scrollbar-thumb { background: rgba(0,212,255,0.3); border-radius: 2px; }
+.safety-scroll-area { position: absolute; left: 0; right: 0; top: 120px; bottom: 0; overflow-y: auto; overflow-x: hidden; z-index: 5; padding-bottom: 40px; pointer-events: none; display: flex; flex-direction: row; justify-content: space-between; }
+.safety-scroll-area::-webkit-scrollbar { width: 0; height: 0; }
+.safety-scroll-area::-webkit-scrollbar-track { display: none; }
+.safety-scroll-area::-webkit-scrollbar-thumb { display: none; }
 .tab-content { width: 100%; flex-shrink: 0; display: flex; justify-content: space-between; padding: 0 20px; box-sizing: border-box; }
 
 
 
-.left-sidebar { width: 380px; flex-shrink: 0; pointer-events: auto; display: flex; flex-direction: column; }
-.right-sidebar { width: 380px; flex-shrink: 0; pointer-events: auto; display: flex; flex-direction: column; }
+.left-sidebar { width: 380px; flex-shrink: 0; pointer-events: auto; display: flex; flex-direction: column; z-index: 10; position: relative; }
+.right-sidebar { width: 380px; flex-shrink: 0; pointer-events: auto; display: flex; flex-direction: column; z-index: 10; position: relative; }
 .mt-10 { margin-top: 8px; }
 
 /* ========== Data Card ========== */
 .data-card { width: 100%; background: rgba(0,20,40,0.7); border-radius: 4px; overflow: hidden; box-shadow: 0 0 10px rgba(0,212,255,0.2); display: flex; flex-direction: column; }
 .left-sidebar .data-card { flex: unset; }
 .left-sidebar .data-card:first-child .card-body { max-height: 175px; overflow-y: auto; }
+.left-sidebar .data-card:first-child .card-body::-webkit-scrollbar { width: 0; height: 0; }
+.left-sidebar .data-card:first-child .card-body::-webkit-scrollbar-track { display: none; }
+.left-sidebar .data-card:first-child .card-body::-webkit-scrollbar-thumb { display: none; }
 .card-header { height: 38px; background-image: url("/src/assets/images/数据小标题.png"); background-size: 100% 100%; background-position: center; background-repeat: no-repeat; display: flex; align-items: flex-start; justify-content: space-between; padding: 4px 12px 0; }
 .card-title { font-size: 13px; font-weight: bold; color: #e0fcff; margin: 0; text-shadow: 0 0 5px rgba(0,212,255,0.5); padding-left: 25px; padding-right: 25px; }
 .card-body { padding: 8px; min-height: auto; font-size: 12px; line-height: 1.4; margin-top: -4px; }
@@ -612,7 +728,7 @@ export default {
 .eval-sub-label { color: #7bbef6; font-size: 12px; }
 .eval-sub-value { color: #e0fcff; font-size: 12px; font-weight: bold; }
 .eval-sub-value.status-ok { color: #22c55e; }
-.safety-eval-mid { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; }
+.safety-eval-mid { display: grid; grid-template-columns: 1fr 1fr; gap: 3px; }
 .safety-eval-item { display: flex; justify-content: space-between; align-items: center; padding: 4px 8px; background: rgba(0,20,40,0.4); border-radius: 3px; }
 .eval-item-name { color: #e0fcff; font-size: 11px; }
 .eval-item-tag { font-size: 10px; font-weight: bold; padding: 1px 6px; border-radius: 2px; }
@@ -661,9 +777,9 @@ export default {
 .patrol-stat-num { font-size: 17px; font-weight: bold; color: #e0fcff; line-height: 1.1; }
 .patrol-stat-label { color: #7bbef6; font-size: 9px; margin-top: 1px; white-space: nowrap; }
 .patrol-list { max-height: 110px; overflow-y: auto; display: flex; flex-direction: column; gap: 2px; }
-.patrol-list::-webkit-scrollbar { width: 3px; }
-.patrol-list::-webkit-scrollbar-track { background: rgba(0,20,40,0.5); }
-.patrol-list::-webkit-scrollbar-thumb { background: rgba(0,212,255,0.3); border-radius: 2px; }
+.patrol-list::-webkit-scrollbar { width: 0; height: 0; }
+.patrol-list::-webkit-scrollbar-track { display: none; }
+.patrol-list::-webkit-scrollbar-thumb { display: none; }
 .patrol-row { display: flex; align-items: center; justify-content: space-between; padding: 3px 6px; background: rgba(0,20,40,0.3); border-radius: 3px; border: 1px solid rgba(0,212,255,0.06); }
 .patrol-row-left { display: flex; align-items: center; gap: 6px; }
 .patrol-row-right { display: flex; align-items: center; gap: 4px; }
@@ -779,9 +895,9 @@ canvas#summaryPieChart { display: flex !important; padding-left: 35px !important
 .tree-search-input { flex: 1; background: none; border: none; outline: none; color: #e0fcff; font-size: 12px; line-height: 26px; }
 .tree-search-input::placeholder { color: #7bbef6; }
 .tree-container { font-size: 13px; max-height: 200px; overflow-y: auto; }
-.tree-container::-webkit-scrollbar { width: 3px; }
-.tree-container::-webkit-scrollbar-track { background: rgba(0,20,40,0.5); }
-.tree-container::-webkit-scrollbar-thumb { background: rgba(0,212,255,0.3); border-radius: 2px; }
+.tree-container::-webkit-scrollbar { width: 0; height: 0; }
+.tree-container::-webkit-scrollbar-track { display: none; }
+.tree-container::-webkit-scrollbar-thumb { display: none; }
 .tree-node-row { display: flex; align-items: center; gap: 4px; padding: 4px 6px; cursor: pointer; border-radius: 2px; transition: background 0.15s; }
 .tree-node-row:hover { background: rgba(0,212,255,0.06); }
 .tree-arrow { flex-shrink: 0; transition: transform 0.2s; }

+ 6 - 2
src/views/mainPages/GateControlView.vue

@@ -1466,11 +1466,15 @@ const screwGates = [
   gap: 3px;
   max-height: 130px;
   overflow-y: auto;
-  scrollbar-width: thin;
-  -ms-overflow-style: auto;
+  scrollbar-width: none;
+  -ms-overflow-style: none;
   margin-bottom: 3px;
 }
 
+.log-list::-webkit-scrollbar {
+  display: none;
+}
+
 .log-row {
   display: flex;
   align-items: center;

+ 3 - 3
src/views/mainPages/OverviewView.vue

@@ -3,10 +3,10 @@
   <div class="overview-container">
     <!-- 左侧数据卡片 -->
     <div class="left-sidebar">
-      <!-- 乌拉海水库简介卡片 -->
+      <!-- 乌拉海水库简介卡片 -->
       <div class="data-card">
         <div class="card-header" @click="toggleWeatherForecast">
-          <h3 class="card-title">乌拉海水库</h3>
+          <h3 class="card-title">乌拉海水库</h3>
           <div class="header-actions">
             <span class="more-header" @click.stop="showReservoirModal = true">更多</span>
             <span class="toggle-btn">{{ weatherForecastExpanded ? '▼' : '▶' }}</span>
@@ -1403,7 +1403,7 @@ export default {
   color: #e0fcff;
 }
 
-/* 乌拉海水库简介样式 */
+/* 乌拉海水库简介样式 */
 .reservoir-image {
   width: 100%;
   height: 100px;

+ 26 - 14
src/views/mainPages/WorkspaceView.vue

@@ -30,7 +30,7 @@
     <div class="oa-body">
       <!-- 左侧树状菜单 -->
       <aside class="sidebar">
-        <el-menu :default-active="activeMenu" class="sidebar-menu" @select="handleMenuSelect">
+        <el-menu :model-value="activeMenu" class="sidebar-menu" @select="handleMenuSelect" unique-opened>
           <template v-for="(group, index) in menuTree" :key="index">
             <el-menu-item v-if="!group.children || group.children.length === 0" :index="group.name">
               <span class="menu-top-item">{{ group.name }}</span>
@@ -546,14 +546,14 @@ export default {
         'water-eco': 'eco'
       },
       menuTree: [
-        { name: '首页', children: [] },
+        { name: '首页' },
         { name: '日常巡检', children: [{ id: 'patrol-plan', name: '巡检计划' }, { id: 'patrol-record', name: '巡检记录' }, { id: 'patrol-hidden', name: '隐患台账' }] },
-        { name: '设备运维', children: [] },
-        { name: '闸门控制', children: [] },
-        { name: '视频监控', children: [] },
-        { name: '水雨情监测', children: [{ id: 'hydro-realtime', name: '实时监测' }, { id: 'hydro-history', name: '历史数据' }] },
+        { name: '设备运维' },
+        { name: '闸门控制' },
+        { name: '视频监控' },
+        { name: '水雨情监测', children: [{ id: 'hydro-realtime', name: '实时监测' }, { id: 'hydro-history', name: '历史数据' }, { id: 'hydro-forecast', name: '水文预报' }] },
         { name: '水资源调度', children: [{ id: 'water-supply', name: '供水水量' }, { id: 'water-eco', name: '生态补水' }] },
-        { name: '工程效益', children: [] },
+        { name: '工程效益' },
         { name: '资料档案', children: [{ id: 'archive-files', name: '工程档案' }, { id: 'archive-orders', name: '调令文件' }, { id: 'archive-lifecycle', name: '全生命周期' }] },
         { name: '系统权限', children: [{ id: 'sys-role', name: '角色管理' }, { id: 'sys-user', name: '用户账号' }, { id: 'sys-log', name: '操作日志' }] }
       ],
@@ -579,17 +579,25 @@ export default {
       ],
       // 设备统计
       deviceStats: [
-        { icon: '📡', label: '传感器总数', value: '156', color: 'linear-gradient(135deg, #dbeafe, #93c5fd)' },
-        { icon: '✅', label: '在线设备', value: '148', color: 'linear-gradient(135deg, #dcfce7, #86efac)' },
-        { icon: '⚠️', label: '故障设备', value: '5', color: 'linear-gradient(135deg, #fef3c7, #fcd34d)' },
-        { icon: '❌', label: '离线设备', value: '3', color: 'linear-gradient(135deg, #fee2e2, #fca5a5)' }
+        { icon: '📡', label: '传感器总数', value: '600+', color: 'linear-gradient(135deg, #dbeafe, #93c5fd)' },
+        { icon: '✅', label: '在线设备', value: '582', color: 'linear-gradient(135deg, #dcfce7, #86efac)' },
+        { icon: '⚠️', label: '预警设备', value: '12', color: 'linear-gradient(135deg, #fef3c7, #fcd34d)' },
+        { icon: '❌', label: '故障设备', value: '5', color: 'linear-gradient(135deg, #fee2e2, #fca5a5)' },
+        { icon: '🎥', label: '视频监控', value: '20', color: 'linear-gradient(135deg, #fce7f3, #f9a8d4)' },
+        { icon: '⚙️', label: '闸门设备', value: '84', color: 'linear-gradient(135deg, #cffafe, #67e8f9)' },
+        { icon: '💧', label: '水文监测', value: '75', color: 'linear-gradient(135deg, #e0e7ff, #a5b4fc)' },
+        { icon: '🌐', label: '管网监测', value: '13', color: 'linear-gradient(135deg, #f3e8ff, #d8b4fe)' }
       ],
       // 设备列表
       deviceList: [
         { name: '主坝水位计', location: '大坝坝顶', status: 'online', statusText: '在线' },
         { name: '副坝渗压计', location: '副坝坝体', status: 'warning', statusText: '异常' },
         { name: '溢洪道闸门', location: '溢洪道', status: 'online', statusText: '运行' },
-        { name: '入库流量计', location: '进水口', status: 'offline', statusText: '离线' }
+        { name: '入库流量计', location: '进水口', status: 'offline', statusText: '离线' },
+        { name: 'GNSS监测站-01', location: '大坝坝顶', status: 'online', statusText: '在线' },
+        { name: '引水口闸位计', location: '引水口', status: 'online', statusText: '在线' },
+        { name: '大坝上游摄像头', location: '大坝上游', status: 'online', statusText: '在线' },
+        { name: '压力变送器-P01', location: '引水管网', status: 'warning', statusText: '异常' }
       ],
       // 气象信息
       weatherData: {
@@ -740,7 +748,11 @@ export default {
       this.currentTime = `${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}`
     },
     handleMenuSelect(index) {
-      this.activeMenu = index
+      // 子菜单项ID映射(仅需要展开的子菜单使用)
+      const childMap = {
+        'hydro-forecast': 'hydro-history',
+      }
+      this.activeMenu = childMap[index] || index
     },
     getStatusType(status) {
       return { '待处理': 'primary', '处理中': 'warning', '已完成': 'success', '已逾期': 'danger' }[status] || 'info'
@@ -1392,7 +1404,7 @@ export default {
 /* ==================== 设备状态样式 ==================== */
 .device-stats {
   display: grid;
-  grid-template-columns: repeat(2, 1fr);
+  grid-template-columns: repeat(4, 1fr);
   gap: 10px;
   padding: 14px 16px;
   border-bottom: 1px solid rgba(226, 232, 240, 0.6);

+ 29 - 0
数据字段对比表.csv

@@ -0,0 +1,29 @@
+设备类型,展示数据
+渗压计,渗流压力测量值、渗流安全状态、实时超阈值列表、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期、参数趋势图表
+测压管,渗流水位数据、渗流安全状态、实时超阈值列表、设备编号、名称、规格、安装位置、安装日期、运行状态
+GNSS位移监测基准站,基准站坐标、差分校正数据、通讯状态、设备编号、名称、型号、安装位置、安装日期、运行状态
+GNSS位移监测站,水平位移、垂直位移、变形速率、实时超阈值列表、测点数据表格(编号/位置/水平位移/沉降/合计/状态)、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期、参数趋势图表
+多点位移计,放水洞位移量、变形速率、实时超阈值列表、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期、参数趋势图表
+测缝计,裂缝开度数据、变形量、实时超阈值列表、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期、参数趋势图表
+水尺,水位读数、设备编号、名称、安装位置、运行状态
+流速仪,流速数据、流量数据、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期
+自动化采集设备MCU,接入传感器列表、采集状态、通讯状态、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期
+数据采集箱,采集箱运行状态、电源状态、防雷状态、设备编号、名称、安装位置、运行状态
+闸位计,闸门开度位置数据、实时超阈值列表、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期、参数趋势图表
+开度仪,闸门开度测量值、实时超阈值列表、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期、参数趋势图表
+荷重传感器,闸门荷重数据、实时超阈值列表、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期、参数趋势图表
+限位开关,限位开关状态、设备编号、名称、安装位置、运行状态
+闸门控制柜,控制柜运行状态、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期、告警日志
+卷扬式放水闸门,闸门运行状态、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期
+液压启闭机,启闭机运行状态、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期
+引水口闸门,闸门运行状态、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期
+水位计,水位监测数据、实时超阈值列表、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期、参数趋势图表
+流量计,流量监测数据、实时超阈值列表、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期、参数趋势图表
+雨量计,降雨量数据、实时超阈值列表、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期、参数趋势图表
+气象传感器,气象数据(温度/湿度/风速/风向)、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期
+网络摄像机,视频画面、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期
+NVR录像机,视频存储状态、录像回放、设备编号、名称、型号、安装位置、运行状态
+管网压力计,管网压力监测数据、实时超阈值列表、设备在线率、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期、告警信息
+管道流量计,管网流量监测数据、实时超阈值列表、设备在线率、设备编号、名称、型号、安装位置、安装日期、运行状态、维护人员、维保日期、告警信息
+水浸传感器,水浸监测状态、实时告警、设备编号、名称、型号、安装位置、运行状态
+所有设备类型,安装位置坐标(X/Y/Z)、安装人员、验收日期、安装环境(高程/埋深/防护等级)、设备型号、生产厂家、运维记录(日期/类型/描述/人员)