yusheng 2 месяцев назад
Родитель
Сommit
b72f1a1099
1 измененных файлов с 275 добавлено и 390 удалено
  1. 275 390
      src/views/bpm/vis-page/pcsData/index.vue

+ 275 - 390
src/views/bpm/vis-page/pcsData/index.vue

@@ -7,178 +7,186 @@
     :exit-on-click-wrapper="false"
   >
     <div class="box-container" v-cloak>
-      <!-- 中间内容区域 - 可左右滚动,头部跟随 -->
+      <!-- 中间内容区域 -->
       <div class="box-content">
-        <div class="scroll-wrapper">
-          <!-- 头部区域 - 跟随滚动 -->
-          <div class="header-section">
-            <div class="box-header-scroll">
-              <div class="logo">
-                <el-select
-                  v-model="stationId"
-                  placeholder="请选择"
-                  class="custom-select"
-                  popper-class="custom-select-dropdown"
-                  :popper-append-to-body="false"
-                  @change="init"
-                >
-                  <el-option
-                    v-for="item in selectOptions"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value"
-                  />
-                </el-select>
-              </div>
-              <div class="header-center">
-                <div class="title">克拉玛依宇信工业科技股份有限公司</div>
-              </div>
-              <div class="time">
-                <div class="time-display">
-                  <span class="date-text">{{ date }}</span>
-                  <span class="time-text">{{ time }}</span>
-                </div>
-                <span class="fullscreen-toggle" @click.passive="onFullscreen">
-                  <i
-                    v-if="isFullscreen"
-                    title="取消全屏"
-                    class="el-icon-_screen-restore"
-                  />
-                  <i v-else title="全屏" class="el-icon-_screen-full" />
-                </span>
+        <!-- 头部区域 -->
+        <div class="header-section">
+          <div class="box-header-scroll">
+            <div class="logo">
+              <el-select
+                v-model="stationId"
+                placeholder="请选择"
+                class="custom-select"
+                popper-class="custom-select-dropdown"
+                :popper-append-to-body="false"
+                @change="init"
+              >
+                <el-option
+                  v-for="item in selectOptions"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </div>
+            <div class="header-center">
+              <div class="title">克拉玛依宇信工业科技股份有限公司</div>
+            </div>
+            <div class="time">
+              <div class="time-display">
+                <span class="date-text">{{ date }}</span>
+                <span class="time-text">{{ time }}</span>
               </div>
+              <span class="fullscreen-toggle" @click.passive="onFullscreen">
+                <i
+                  v-if="isFullscreen"
+                  title="取消全屏"
+                  class="el-icon-_screen-restore"
+                />
+                <i v-else title="全屏" class="el-icon-_screen-full" />
+              </span>
             </div>
           </div>
+        </div>
 
-          <!-- 三栏布局区域 -->
-          <div class="three-column-layout">
-            <!-- 左侧区域 -->
-            <div class="left-section">
-              <!-- 综合数据 -->
-              <div class="panel data-panel">
-                <div class="panel-title" style="cursor: pointer" @click="handelRouterTo('/page-pcs/productionRecords')">
-                  <div class="panel-icon"></div>
-                  综合数据
-                </div>
-                <div
-                  style="
-                    display: flex;
-                    flex: 1;
-                    align-items: center;
-                    justify-content: center;
-                  "
-                >
-                  <div class="data-grid">
-                    <div
-                      class="data-item"
-                      v-for="(item, index) in comprehensiveList"
-                      :key="index"
+        <!-- 三栏布局区域 -->
+        <div class="three-column-layout">
+          <!-- 左侧区域 -->
+          <div class="left-section">
+            <!-- 综合数据 -->
+            <div class="panel data-panel">
+              <div
+                class="panel-title"
+                style="cursor: pointer"
+                @click="handelRouterTo('/page-pcs/productionRecords')"
+              >
+                <div class="panel-icon"></div>
+                综合数据
+              </div>
+              <div
+                style="
+                  display: flex;
+                  flex: 1;
+                  align-items: center;
+                  justify-content: center;
+                "
+              >
+                <div class="data-grid">
+                  <div
+                    class="data-item"
+                    v-for="(item, index) in comprehensiveList"
+                    :key="index"
+                  >
+                    <div class="img"></div>
+                    <div class="data-item_value">
+                      <span class="data-label">{{ item.label }}</span>
+                      <span class="data-value">{{ item.value }}</span></div
                     >
-                      <div class="img"></div>
-                      <div class="data-item_value">
-                        <span class="data-label">{{ item.label }}</span>
-                        <span class="data-value">{{ item.value }}</span></div
-                      >
-                    </div>
                   </div>
                 </div>
               </div>
+            </div>
 
-              <!-- 区域用能对比 -->
-              <div class="panel chart-panel" style="position: relative">
-                <div class="panel-title energy-title">
-                  <div class="title-left">
-                    <div class="panel-icon"></div>
-                    用水用煤趋势图
-                  </div>
-                </div>
-                <div class="energy-tabs">
-                  <span
-                    v-for="tab in energyTabs"
-                    :key="tab.value"
-                    :class="[
-                      'tab-item',
-                      { active: activeEnergyTab === tab.value }
-                    ]"
-                    @click="energyTabsCahnge(tab.value)"
-                  >
-                    {{ tab.label }}
-                  </span>
+            <!-- 区域用能对比 -->
+            <div class="panel chart-panel" style="position: relative">
+              <div class="panel-title energy-title">
+                <div class="title-left">
+                  <div class="panel-icon"></div>
+                  用水用煤趋势图
                 </div>
-                <div class="chart-container" ref="waterChart"></div>
               </div>
+              <div class="energy-tabs">
+                <span
+                  v-for="tab in energyTabs"
+                  :key="tab.value"
+                  :class="[
+                    'tab-item',
+                    { active: activeEnergyTab === tab.value }
+                  ]"
+                  @click="energyTabsCahnge(tab.value)"
+                >
+                  {{ tab.label }}
+                </span>
+              </div>
+              <div class="chart-container" ref="waterChart"></div>
+            </div>
 
-              <!-- 区域能耗对比 -->
-              <div class="panel chart-panel">
-                <div class="panel-title energy-title">
-                  <div class="title-left">
-                    <div class="panel-icon"></div>
-                    注汽量趋势图
-                  </div>
+            <!-- 区域能耗对比 -->
+            <div class="panel chart-panel">
+              <div class="panel-title energy-title">
+                <div class="title-left">
+                  <div class="panel-icon"></div>
+                  注汽量趋势图
                 </div>
-                <div class="chart-container" ref="returnChart"></div>
               </div>
+              <div class="chart-container" ref="returnChart"></div>
             </div>
+          </div>
 
-            <!-- 中间区域 -->
-            <div class="center-section">
-              <!-- 锅炉运行参数 -->
+          <!-- 中间区域 -->
+          <div class="center-section">
+            <!-- 锅炉运行参数 -->
+            <div
+              :class="'param-card param-card' + (index + 1)"
+              v-for="(boiler, index) in boilerData"
+              :key="index"
+            >
               <div
-                :class="'param-card param-card' + (index + 1)"
-                v-for="(boiler, index) in boilerData"
-                :key="index"
+                class="param-title"
+                style="cursor: pointer"
+                @click="handelRouterTo('', boiler.title)"
+                >{{ boiler.title }}</div
               >
-                <div class="param-title" style="cursor: pointer" @click="handelRouterTo('', boiler.title)">{{ boiler.title }}</div>
-                <div class="param-list">
-                  <div
-                    class="param-item"
-                    v-for="(param, pIndex) in boiler.params"
-                    :key="pIndex"
-                  >
-                    <span class="param-name">{{ param.name }}</span>
-                    <span class="param-value">{{ param.value }}</span>
-                  </div>
+              <div class="param-list">
+                <div
+                  class="param-item"
+                  v-for="(param, pIndex) in boiler.params"
+                  :key="pIndex"
+                >
+                  <span class="param-name">{{ param.name }}</span>
+                  <span class="param-value">{{ param.value }}</span>
                 </div>
               </div>
+            </div>
 
-              <!-- 管道流程图 -->
-              <div class="pipeline-container">
-                <!-- 管道流程图内容 -->
-              </div>
+            <!-- 管道流程图 -->
+            <div class="pipeline-container">
+              <!-- 管道流程图内容 -->
             </div>
+          </div>
 
-            <!-- 右侧区域 -->
-            <div class="right-section">
-              <!-- 告警数据统计 -->
-              <div class="panel alert-panel">
-                <div class="panel-title">
-                  <div class="panel-icon"></div>
-                  告警数据概览
-                </div>
-                <div class="alert-stats">
-                  <!-- 左侧数据卡片 -->
-                  <div class="alert-cards">
-                    <div
-                      class="alert-card-item"
-                      v-for="(item, index) in alertStatsData"
-                      :key="index"
+          <!-- 右侧区域 -->
+          <div class="right-section">
+            <!-- 告警数据统计 -->
+            <div class="panel alert-panel">
+              <div class="panel-title">
+                <div class="panel-icon"></div>
+                告警数据概览
+              </div>
+              <div class="alert-stats">
+                <!-- 左侧数据卡片 -->
+                <div class="alert-cards">
+                  <div
+                    class="alert-card-item"
+                    v-for="(item, index) in alertStatsData"
+                    :key="index"
+                  >
+                    <div class="img"></div>
+                    <div class="data-item_value">
+                      <span class="data-label">{{ item.label }}</span>
+                      <span class="data-value">{{ item.value }}</span></div
                     >
-                      <div class="img"></div>
-                      <div class="data-item_value">
-                        <span class="data-label">{{ item.label }}</span>
-                        <span class="data-value">{{ item.value }}</span></div
-                      >
-                    </div>
-                  </div>
-                  <!-- 右侧环形图 -->
-                  <div class="alert-pie-chart">
-                    <div class="alert-pie" ref="alertPieChart"></div>
                   </div>
                 </div>
+                <!-- 右侧环形图 -->
+                <div class="alert-pie-chart">
+                  <div class="alert-pie" ref="alertPieChart"></div>
+                </div>
               </div>
+            </div>
 
-              <!-- 告警列表 -->
-              <!-- <div class="panel alert-list-panel">
+            <!-- 告警列表 -->
+            <!-- <div class="panel alert-list-panel">
                 <div class="panel-title">
                   <div class="panel-icon"></div>
                   告警列表
@@ -191,21 +199,20 @@
                 </div>
               </div> -->
 
-              <!-- 设备告警趋势图 -->
-              <div class="panel chart-panel">
-                <div class="panel-title">
-                  <div class="panel-icon"></div>
-                  设备告警趋势图
-                </div>
-                <div class="chart-container" ref="alertTrendChart"></div>
+            <!-- 设备告警趋势图 -->
+            <div class="panel chart-panel">
+              <div class="panel-title">
+                <div class="panel-icon"></div>
+                设备告警趋势图
               </div>
-              <div class="panel chart-panel">
-                <div class="panel-title">
-                  <div class="panel-icon"></div>
-                  用电趋势图
-                </div>
-                <div class="chart-container" ref="electricityTrendChart"></div>
+              <div class="chart-container" ref="alertTrendChart"></div>
+            </div>
+            <div class="panel chart-panel">
+              <div class="panel-title">
+                <div class="panel-icon"></div>
+                用电趋势图
               </div>
+              <div class="chart-container" ref="electricityTrendChart"></div>
             </div>
           </div>
         </div>
@@ -307,12 +314,8 @@
     },
     mounted() {
       this.updateTimer = setInterval(this.updateTime, 1000);
-
+      this.handleResize();
       window.addEventListener('resize', this.handleResize);
-      // 初始化时同步头部宽度
-      this.$nextTick(() => {
-        this.syncHeaderWidth();
-      });
     },
     beforeDestroy() {
       clearInterval(this.updateTimer);
@@ -322,17 +325,16 @@
     methods: {
       handelRouterTo(path, item) {
         let url = path;
-        if(!url) {
-          if(item == '锅炉运行参数') {
-            url = '/page-pcs/boilerOperationRecord'
-          } else if(item == '生产记录') {
-            url = '/page-pcs/productionRecords'
-          } else if(item == '蒸汽质量检查记录') {
-            url = '/page-pcs/qualityTestRecords'
+        if (!url) {
+          if (item == '锅炉运行参数') {
+            url = '/page-pcs/boilerOperationRecord';
+          } else if (item == '生产记录') {
+            url = '/page-pcs/productionRecords';
+          } else if (item == '蒸汽质量检查记录') {
+            url = '/page-pcs/qualityTestRecords';
           }
         }
         window.history.pushState(null, '', url);
-        
       },
       energyTabsCahnge(val) {
         this.activeEnergyTab = val;
@@ -543,23 +545,8 @@
         const day = now.getDate().toString().padStart(2, '0');
         this.date = `${year}-${month}-${day}`;
       },
-      syncHeaderWidth() {
-        this.$nextTick(() => {
-          const threeColumnLayout = document.querySelector(
-            '.three-column-layout'
-          );
-          const headerSection = document.querySelector('.header-section');
-          if (threeColumnLayout && headerSection) {
-            const layoutWidth = threeColumnLayout.scrollWidth;
-            headerSection.style.width = layoutWidth + 'px';
-          }
-        });
-      },
       handleResize() {
         this.$nextTick(() => {
-          // 同步头部宽度
-          this.syncHeaderWidth();
-
           const { clientWidth, clientHeight } = document.documentElement;
           const containers = document.getElementsByClassName('box-container');
           Array.from(containers).forEach((item) => {
@@ -567,7 +554,7 @@
               item.style.height = clientHeight + 'px';
               item.style.width = clientWidth + 'px';
             } else {
-              item.style.height = clientHeight - 100 + 'px';
+              item.style.height = clientHeight - 96 + 'px';
               item.style.width = clientWidth - 240 + 'px';
             }
           });
@@ -961,8 +948,11 @@
 
 <style lang="scss" scoped>
   .box-container {
-    width: 100vw;
-    height: 100vh;
+    width: 100%;
+    height: 100%;
+    display: flex;
+    flex-direction: column;
+    overflow: hidden;
 
     .box-header-scroll {
       height: 5rem;
@@ -974,7 +964,6 @@
       padding: 0 1.25rem;
       position: relative;
       z-index: 10;
-      min-width: 137.5rem;
 
       .logo {
         // width: 12.5rem;
@@ -1053,7 +1042,8 @@
     }
 
     .box-content {
-      height: calc(100%);
+      flex: 1;
+      min-height: 0;
       background: radial-gradient(
           ellipse at top,
           rgba(13, 45, 110, 0.3) 0%,
@@ -1065,120 +1055,66 @@
           transparent 50%
         ),
         linear-gradient(180deg, #0a1630 0%, #0d1f4a 50%, #08152e 100%);
-      overflow: auto;
+      overflow: hidden;
       font-family: 'Microsoft YaHei', sans-serif;
-      flex: 1;
-      // overflow-x: auto;
-      // overflow-y: hidden;
-
-      &::-webkit-scrollbar {
-        height: 0.375rem;
-      }
-
-      &::-webkit-scrollbar-track {
-        background: rgba(12, 32, 70, 0.4);
-      }
-
-      &::-webkit-scrollbar-thumb {
-        background: linear-gradient(180deg, #1a4a8a, #0d2a5a);
-        border-radius: 0.1875rem;
-      }
-
-      .scroll-wrapper {
-        // display: flex;
-        display: inline-block;
-        height: 100%;
-        // flex-direction: column;
-        // gap: 1.25rem;
-        // padding: 0 1.25rem 1.25rem 1.25rem;
-        width: 100%;
-        .header-section {
-          width: auto;
-          flex-shrink: 0;
-          padding-top: 0.625rem;
-          min-width: 100%;
-        }
+      display: flex;
+      flex-direction: column;
+      padding: 0 0.75rem 0.75rem 0.75rem;
 
-        .three-column-layout {
-          display: inline-block;
-          white-space: nowrap;
-          flex: 1;
-          min-height: 53.125rem;
-          // min-width: 137.5rem;
-          height: calc(100% - 8.125rem);
-          min-width: 100%;
-          margin-top: 1.25rem;
-          font-size: 0;
-          background: url('~@/assets/pcs/back.png') no-repeat center top;
-          background-size: 100% 100%;
-        }
+      .header-section {
+        flex-shrink: 0;
       }
 
-      .left-section,
-      .right-section,
-      .center-section {
-        display: inline-block;
-        vertical-align: top;
-        height: 100%;
-        font-size: 0.875rem;
-        white-space: normal;
+      .three-column-layout {
+        flex: 1;
+        min-height: 0;
+        display: flex;
+        gap: 0.75rem;
+        background: url('~@/assets/pcs/back.png') no-repeat center top;
+        background-size: 100% 100%;
+        padding: 0.625rem;
       }
 
       .left-section,
       .right-section {
-        min-width: 50rem;
-        margin-right: 1.25rem;
-        width: 29%;
+        flex: 0 0 30%;
+        min-width: 0;
+        display: flex;
+        flex-direction: column;
+        gap: 0.375rem;
+        overflow: hidden;
       }
 
       .center-section {
-        width: 40%;
-        // width: calc(100% - 77.5rem);
-        min-width: 78.125rem;
-        margin-right: 1.25rem;
+        flex: 0 0 38%;
+        min-width: 0;
         position: relative;
-      }
-
-      .left-section,
-      .right-section {
-        display: inline-flex;
-        flex-direction: column;
-        gap: 0.9375rem;
         overflow: hidden;
       }
 
       .panel {
-        // background: linear-gradient(
-        //   135deg,
-        //   rgba(16, 42, 88, 0.9) 0%,
-        //   rgba(10, 28, 65, 0.85) 100%
-        // );
-        // border: 1px solid rgba(42, 90, 170, 0.4);
-        // border-radius: 0.5rem;
-        padding: 0.9375rem;
+        padding: 0.5rem;
         min-height: 0;
-        // box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05),
-        //   0 4px 20px rgba(0, 0, 0, 0.3);
+        overflow: hidden;
 
         .panel-title {
-          font-size: 1.75rem;
-          // font-weight: bold;
-          // font-style: italic;
+          font-size: 0.9375rem;
           font-family: 'YouSheBiaoTiHei', 'Microsoft YaHei', sans-serif;
           color: #fff;
-          margin-bottom: 0.9375rem;
-          height: 2.625rem;
-          padding-left: 2.5rem;
+          margin-bottom: 0.375rem;
+          height: 1.75rem;
+          padding-left: 1.75rem;
           position: relative;
           display: flex;
           align-items: center;
           background: url('~@/assets/pcs/titleb.png') no-repeat center top;
           background-size: 100% 100%;
+          flex-shrink: 0;
 
           &.energy-title {
             display: flex;
             justify-content: space-between;
-            padding-right: 0.9375rem;
+            padding-right: 0.75rem;
 
             .title-left {
               display: flex;
@@ -1188,17 +1124,17 @@
           }
           .panel-icon {
             position: absolute;
-            left: 0.9375rem;
-            width: 1.25rem;
-            height: 1.5625rem;
+            left: 0.375rem;
+            width: 0.875rem;
+            height: 1.125rem;
             background: url('~@/assets/pcs/titleIcon.png') no-repeat center top;
             background-size: 100% 100%;
           }
         }
         .energy-tabs {
           position: absolute;
-          top: 4.0625rem;
-          right: 2.5rem;
+          top: 2.75rem;
+          right: 1.5rem;
           z-index: 999;
           display: flex;
           gap: 0;
@@ -1207,8 +1143,8 @@
           padding: 0.125rem;
 
           .tab-item {
-            padding: 0.25rem 0.75rem;
-            font-size: 0.75rem;
+            padding: 0.125rem 0.5rem;
+            font-size: 0.625rem;
             color: #8ba3c7;
             cursor: pointer;
             border-radius: 0.1875rem;
@@ -1227,11 +1163,9 @@
       }
 
       .data-panel {
-        min-height: 13.75rem;
-        flex-shrink: 0;
+        flex: 0 0 auto;
         display: flex;
         flex-direction: column;
-        flex: 0.7;
 
         .panel-title {
           flex-shrink: 0;
@@ -1239,25 +1173,17 @@
 
         .data-grid {
           display: flex;
-
-          gap: 0.75rem;
-          // padding: 0.625rem 0;
+          gap: 0.375rem;
           align-items: center;
           justify-content: space-around;
           flex-wrap: wrap;
           overflow: hidden;
-          height: 100%;
+          padding: 0.25rem 0;
 
           .data-item {
-            // background: linear-gradient(
-            //   135deg,
-            //   rgba(20, 50, 105, 0.9) 0%,
-            //   rgba(14, 38, 82, 0.85) 100%
-            // );
-            // border: 1px solid rgba(45, 95, 180, 0.5);
             .img {
-              width: 2.1875rem;
-              height: 2.1875rem;
+              width: 1.5rem;
+              height: 1.5rem;
               background: url('~@/assets/pcs/icon.png') no-repeat center top;
               background-size: 100% 100%;
             }
@@ -1266,45 +1192,26 @@
             .data-item_value {
               display: flex;
               flex-direction: column;
-              // align-items: center;
             }
-            // flex-direction: column;
             align-items: center;
-            // justify-content: center;
-            padding-left: 0.9375rem;
-            gap: 0.5rem;
+            padding-left: 0.5rem;
+            gap: 0.25rem;
             position: relative;
             overflow: hidden;
-            width: 18%;
-            height: 3.75rem;
+            width: 22%;
+            height: 2.875rem;
             background: url('~@/assets/pcs/leftItem.png') no-repeat center top;
             background-size: 100% 100%;
 
-            // &::before {
-            //   content: '';
-            //   position: absolute;
-            //   top: 0;
-            //   left: 0;
-            //   right: 0;
-            //   height: 0.125rem;
-            //   background: linear-gradient(
-            //     90deg,
-            //     transparent,
-            //     #00d4ff,
-            //     transparent
-            //   );
-            //   box-shadow: 0 0 0.5rem rgba(0, 212, 255, 0.6);
-            // }
-
             .data-label {
-              font-size: 0.75rem;
+              font-size: 0.5625rem;
               color: #8ba3c7;
               text-align: center;
-              line-height: 1.3;
+              line-height: 1.2;
             }
 
             .data-value {
-              font-size: 1.125rem;
+              font-size: 0.8125rem;
               font-weight: bold;
               color: #b6ceff;
               text-shadow: 0 0 0.625rem rgba(0, 212, 255, 0.5);
@@ -1315,9 +1222,10 @@
 
       .chart-panel {
         flex: 1;
-        min-height: 15.625rem;
+        min-height: 0;
         display: flex;
         flex-direction: column;
+        overflow: hidden;
 
         .chart-container {
           width: 100%;
@@ -1326,19 +1234,23 @@
         }
       }
       .param-card3 {
-        right: 0.625rem;
+        right: 0.5rem;
       }
       .param-card2 {
-        left: 30%;
+        left: 34%;
       }
       .param-card {
-        width: 23%;
-        top: 3.125rem;
+        width: 26%;
+        top: 5%;
 
         position: absolute;
         background: rgba(39, 88, 233, 0.1);
         border: 1px solid #3373d4;
         border-radius: 0.5rem;
+        max-height: 40%;
+        overflow: hidden;
+        display: flex;
+        flex-direction: column;
 
         &::before {
           content: '';
@@ -1352,30 +1264,37 @@
         }
 
         .param-title {
-          font-size: 0.875rem;
+          font-size: 0.75rem;
           font-weight: bold;
           color: #fff;
-          padding-bottom: 0.75rem;
-          padding-top: 0.75rem;
+          padding: 0.5rem;
           text-align: center;
           text-shadow: 0 0 0.625rem rgba(0, 212, 255, 0.3);
           border-bottom: 1px solid rgba(0, 212, 255, 0.5);
           background: rgba(39, 88, 233, 0.1);
+          flex-shrink: 0;
         }
 
         .param-list {
-          padding: 0.9375rem;
-
+          padding: 0.5rem;
           display: flex;
           flex-direction: column;
-          gap: 0.625rem;
+          gap: 0.375rem;
+          overflow-y: auto;
+          flex: 1;
+
+          &::-webkit-scrollbar {
+            width: 0.1875rem;
+          }
+          &::-webkit-scrollbar-thumb {
+            background: rgba(26, 74, 138, 0.5);
+            border-radius: 0.125rem;
+          }
 
           .param-item {
             display: flex;
-            // justify-content: space-between;
-            font-size: 0.75rem;
-            padding: 0.25rem 0;
-            // border-bottom: 1px dashed rgba(138, 163, 199, 0.2);
+            font-size: 0.625rem;
+            padding: 0.125rem 0;
 
             &:last-child {
               border-bottom: none;
@@ -1383,7 +1302,8 @@
 
             .param-name {
               color: #8ba3c7;
-              min-width: 4rem;
+              min-width: 3.5rem;
+              flex-shrink: 0;
             }
 
             .param-value {
@@ -1398,28 +1318,19 @@
         flex: 1;
         min-height: 0;
         position: absolute;
-        bottom: 0.9375rem;
+        bottom: 0;
         left: 0;
-        height: 60%;
+        height: 52%;
         width: 100%;
-        // background: linear-gradient(
-        //   135deg,
-        //   rgba(14, 40, 85, 0.6) 0%,
-        //   rgba(10, 28, 60, 0.5) 100%
-        // );
-        // border: 1px solid rgba(45, 95, 180, 0.3);
-        // border-radius: 0.5rem;
         background: url('~@/assets/pcs/home.png') no-repeat center top;
         background-size: 100% 100%;
-        // max-height: 42.5rem;
       }
 
       .alert-panel {
-        min-height: 13.75rem;
-        flex-shrink: 0;
+        flex: 0 0 auto;
         display: flex;
         flex-direction: column;
-        flex: 0.7;
+        max-height: 30%;
 
         .panel-title {
           flex-shrink: 0;
@@ -1430,29 +1341,23 @@
           min-height: 0;
           display: flex;
           align-items: center;
-          height: calc(100% - 2.1875rem);
-          gap: 1.25rem;
+          gap: 0.5rem;
+          overflow: hidden;
 
-          // 左侧数据卡片区域
           .alert-cards {
             width: 50%;
             height: 100%;
             display: flex;
             flex-wrap: wrap;
             justify-content: space-around;
-            gap: 0.75rem;
+            align-content: center;
+            gap: 0.375rem;
 
             .alert-card-item {
-              width: 40%;
-              // background: linear-gradient(
-              //   135deg,
-              //   rgba(20, 50, 105, 0.9) 0%,
-              //   rgba(14, 38, 82, 0.85) 100%
-              // );
-              // border: 1px solid rgba(45, 95, 180, 0.5);
+              width: 43%;
               .img {
-                width: 2.1875rem;
-                height: 2.1875rem;
+                width: 1.5rem;
+                height: 1.5rem;
                 background: url('~@/assets/pcs/icon.png') no-repeat center top;
                 background-size: 100% 100%;
               }
@@ -1461,44 +1366,25 @@
               .data-item_value {
                 display: flex;
                 flex-direction: column;
-                // align-items: center;
               }
-              // flex-direction: column;
               align-items: center;
-              // justify-content: center;
-              padding-left: 0.9375rem;
-              gap: 0.5rem;
+              padding-left: 0.5rem;
+              gap: 0.25rem;
               position: relative;
               overflow: hidden;
-              height: 3.75rem;
+              height: 2.875rem;
               background: url('~@/assets/pcs/leftItem.png') no-repeat center top;
               background-size: 100% 100%;
 
-              // &::before {
-              //   content: '';
-              //   position: absolute;
-              //   top: 0;
-              //   left: 0;
-              //   right: 0;
-              //   height: 0.125rem;
-              //   background: linear-gradient(
-              //     90deg,
-              //     transparent,
-              //     #00d4ff,
-              //     transparent
-              //   );
-              //   box-shadow: 0 0 0.5rem rgba(0, 212, 255, 0.6);
-              // }
-
               .data-label {
-                font-size: 0.75rem;
+                font-size: 0.5625rem;
                 color: #8ba3c7;
                 text-align: center;
-                line-height: 1.3;
+                line-height: 1.2;
               }
 
               .data-value {
-                font-size: 1.125rem;
+                font-size: 0.8125rem;
                 font-weight: bold;
                 color: #b6ceff;
                 text-shadow: 0 0 0.625rem rgba(0, 212, 255, 0.5);
@@ -1506,7 +1392,6 @@
             }
           }
 
-          // 右侧环形图区域
           .alert-pie-chart {
             width: 50%;
             height: 100%;
@@ -1518,7 +1403,7 @@
             .alert-pie {
               width: 100%;
               height: 100%;
-              min-height: 11.25rem;
+              min-height: 0;
             }
           }
         }