From 172d73cbe737c04b3d2c3fe8908db2460c241543 Mon Sep 17 00:00:00 2001
From: zmc <zmc_li@foxmail.com>
Date: 星期一, 14 八月 2023 17:11:48 +0800
Subject: [PATCH] 油烟监测系统 Vue代码

---
 src/views/ExceedingFume.vue | 1589 +++++++++++++++++++++++++++++++---------------------------
 1 files changed, 843 insertions(+), 746 deletions(-)

diff --git a/src/views/ExceedingFume.vue b/src/views/ExceedingFume.vue
index 959c747..a95ec8f 100644
--- a/src/views/ExceedingFume.vue
+++ b/src/views/ExceedingFume.vue
@@ -1,42 +1,32 @@
 <template>
-  <div class="exception-root-container">
+  <el-row ref="h1">
+  <el-col>
     <!-- 鑿滃崟璇绘爣棰� -->
     <div ref="h1" class="header-container">
       <span class="describe-info">搴楅摵鍚嶉�夋嫨锛�</span>
       <!-- 搴楅摵鍚�  绾ц仈 -->
       <ShopNameAndID
         @submit-id="(n) => (deviceId[1] = n)"
-        :devId="鍏ㄩ儴"
       ></ShopNameAndID>
 
       <!-- 寮傚父绫诲瀷閫夋嫨 -->
       <ExceptionType @submitExceptionType="(val) => (exceptionValue = val)">
       </ExceptionType>
 
-      <!-- <div style="display: flex"> -->
-      <!-- <span class="describe-time-text">璧锋鏃堕棿锛�</span> -->
-      <!-- 鏃ユ湡鏃堕棿閫夋嫨鍣� -->
       <TimeSelect @submit-time="giveTime"></TimeSelect>
       <!-- </div> -->
     </div>
-    <div ref="h2" style="display: flex; margin-top: 2px; justify-content: right">
-      <!-- <span class="collapse-header-text">
-              闈欏畨鍖� {{ beginTime }} 鈥斺�� {{ endTime }} 娌圭儫妫�娴嬪紓甯镐俊鎭眹鎬�</span
-            > -->
-      <!-- 鍋氭垚琛ㄥ崟 -->
+    <div
+      ref="h2"
+      style="display: flex; margin-top: 2px; justify-content: right"
+    >
+   
       <el-button
         type="primary"
         plain
         @click="showTable"
         style="margin-left: 20px"
         >鏌ヨ</el-button
-      >
-      <el-button
-        type="warning"
-        plain
-        @click="getAllData"
-        style="margin-left: 20px"
-        >鏌ヨ鍏ㄩ儴</el-button
       >
 
       <el-tooltip
@@ -56,10 +46,10 @@
         </el-icon>
       </el-tooltip>
     </div>
-    <div style="display: flex; justify-content: right">
+    <div style="display: flex; justify-content: right;margin-right:40px">
       <span class="collapse-header-text">
-              闈欏畨鍖� {{ beginTime }} 鈥斺�� {{ endTime }} 娌圭儫妫�娴嬪紓甯镐俊鎭眹鎬�</span
-            >
+        闈欏畨鍖� {{ beginTime }} 鈥斺�� {{ endTime }} 娌圭儫妫�娴嬪紓甯镐俊鎭眹鎬�</span
+      >
     </div>
     <br />
 
@@ -72,7 +62,7 @@
             content="鐐瑰嚮鍙姌鍙�"
             placement="right-start"
           >
-            <h4 class="collapse-header"> 寮傚父鍒嗘瀽</h4>
+            <h4 class="collapse-header">寮傚父鍒嗘瀽</h4>
             <el-icon class="header-icon">
               <i-ep-info-filled />
             </el-icon>
@@ -84,119 +74,172 @@
             content="鐐瑰嚮鍙姌鍙�"
             placement="right-start"
           >
-   
           </el-tooltip>
         </template>
         <el-card class="box-card">
           <el-row :gutter="25">
             <el-col :span="8">
-              <div style="display: flex;"> 
-                <img src="@/assets/exceed.jpg" style="width: 25px;height: 25px;margin-top: 5px;" />
-              <span style="font-size: 16px;font-weight: bold;margin-top: 4px;margin-left: 4px;">娌圭儫娴撳害瓒呮爣</span>
+              <div style="display: flex">
+                <img
+                  src="@/assets/exceed.jpg"
+                  style="width: 25px; height: 25px; margin-top: 5px"
+                />
+                <span
+                  style="
+                    font-size: 16px;
+                    font-weight: bold;
+                    margin-top: 4px;
+                    margin-left: 4px;
+                  "
+                  >娌圭儫娴撳害瓒呮爣</span
+                >
               </div>
-              
+
               <div class="box-card-label">
-                <span class="box-card-label">搴楅摵鏁伴噺锛�</span>
-                <span style="font-size: 20px"
-                  >{{ exception0.length }} /{{ shopsTotal }}</span
-                >
-                <span style="margin-left: 150px; font-size: 14px">
-                  鍗犳瘮锛歿{
-                    ((exception0.length / shopsTotal) * 100).toFixed(1)
-                  }}%</span
-                >
+                <el-scrollbar>
+                  <span class="box-card-label">搴楅摵鏁伴噺锛�</span>
+                  <span style="font-size: 20px"
+                    >{{ exception0.length }} /{{ shopsTotal }}</span
+                  >
+                  <span style="margin-left: 150px; font-size: 14px">
+                    鍗犳瘮锛歿{
+                      ((exception0.length / shopsTotal) * 100).toFixed(1)
+                    }}%</span
+                  >
+                </el-scrollbar>
               </div>
 
               <hr />
               <div class="box-card-butcontainer">
-                <el-card class="sub-box-card"> 
-                <ExceptionText
-                  v-for="(item,index) in exception0"
-                  :key="item"
-                  :devId="item.devId"
-                  exception-value="0"
-                  :begin-time="beginTime"
-                  :end-time="endTime"
-                  @submit-exception-data="getAbnormalDataByClick"
-                >
-                  {{ item.diName }}
-                  <span v-if="index<exception0.length-1" class="text-blank"> , </span>
-                </ExceptionText>
+                <el-card class="sub-box-card">
+                  <el-scrollbar max-height="70px">
+                    <ExceptionText
+                      v-for="(item, index) in exception0"
+                      :key="item"
+                      :devId="item.devId"
+                      exception-value="0"
+                      :begin-time="beginTime"
+                      :end-time="endTime"
+                      @submit-exception-data="getAbnormalDataByClick"
+                    >
+                      {{ item.diName }}
+                      <span
+                        v-if="index < exception0.length - 1"
+                        class="text-blank"
+                        >,</span
+                      >
+                    </ExceptionText>
+                  </el-scrollbar>
                 </el-card>
               </div>
             </el-col>
 
             <el-col :span="8">
-              <div style="display: flex;">
-              <img src="@/assets/exception.jpg" style="width: 25px;height: 25px;margin-top: 5px;" />
-              <span style=" font-size: 16px;font-weight: bold;margin-top: 5px;margin-left: 4px;"
-                >渚涚數寮傚父</span
-              >
-            </div>
+              <div style="display: flex">
+                <img
+                  src="@/assets/exception.jpg"
+                  style="width: 25px; height: 25px; margin-top: 5px"
+                />
+                <span
+                  style="
+                    font-size: 16px;
+                    font-weight: bold;
+                    margin-top: 5px;
+                    margin-left: 4px;
+                  "
+                  >渚涚數寮傚父</span
+                >
+              </div>
               <div class="box-card-label">
-                <span class="box-card-label">搴楅摵鏁伴噺锛�</span>
-                <span style="font-size: 20px"
-                  >{{ exception1.length }} /{{ shopsTotal }}</span
-                >
-                <span style="margin-left: 150px; font-size: 14px">
-                  鍗犳瘮锛歿{
-                    ((exception1.length / shopsTotal) * 100).toFixed(1)
-                  }}%</span
-                >
+                <el-scrollbar>
+                  <span class="box-card-label">搴楅摵鏁伴噺锛�</span>
+                  <span style="font-size: 20px"
+                    >{{ exception1.length }} /{{ shopsTotal }}</span
+                  >
+                  <span style="margin-left: 150px; font-size: 14px">
+                    鍗犳瘮锛歿{
+                      ((exception1.length / shopsTotal) * 100).toFixed(1)
+                    }}%</span
+                  >
+                </el-scrollbar>
               </div>
 
               <hr />
 
               <div>
-               
-                <el-card class="sub-box-card"> 
-                <ExceptionText
-                  v-for="(item,index) in exception1"
-                  :key="item"
-                  :devId="item.devId"
-                  exception-value="1"
-                  :begin-time="beginTime"
-                  :end-time="endTime"
-                  @submit-exception-data="getAbnormalDataByClick"
-                >
-                  {{ item.diName }}
-                  <span v-if="index < exception1.length-1" class="text-blank"> , </span>
-                </ExceptionText>
-              </el-card>
+                <el-card class="sub-box-card">
+                  <el-scrollbar max-height="70px">
+                    <ExceptionText
+                      v-for="(item, index) in exception1"
+                      :key="item"
+                      :devId="item.devId"
+                      exception-value="1"
+                      :begin-time="beginTime"
+                      :end-time="endTime"
+                      @submit-exception-data="getAbnormalDataByClick"
+                    >
+                      {{ item.diName }}
+                      <span
+                        v-if="index < exception1.length - 1"
+                        class="text-blank"
+                        >,</span
+                      >
+                    </ExceptionText>
+                  </el-scrollbar>
+                </el-card>
               </div>
             </el-col>
 
             <el-col :span="8">
-              <div style="display: flex;">
-              <img src="@/assets/offline.jpg" style="width: 25px;height: 25px;margin-top: 5px;" />
-              <span style=" font-size: 16px;font-weight: bold;margin-top: 5px;margin-left: 4px;">鎺夌嚎</span>
+              <div style="display: flex">
+                <img
+                  src="@/assets/offline.jpg"
+                  style="width: 25px; height: 25px; margin-top: 5px"
+                />
+                <span
+                  style="
+                    font-size: 16px;
+                    font-weight: bold;
+                    margin-top: 5px;
+                    margin-left: 4px;
+                  "
+                  >鎺夌嚎</span
+                >
               </div>
               <div class="box-card-label">
-                <span class="box-card-label">搴楅摵鏁伴噺锛�</span>
-                <span style="font-size: 20px"
-                  >{{ exception2.length }} /{{ shopsTotal }}</span
-                >
-                <span style="margin-left: 150px; font-size: 14px">
-                  鍗犳瘮锛歿{
-                    ((exception2.length / shopsTotal) * 100).toFixed(1)
-                  }}%</span
-                >
+                <el-scrollbar>
+                  <span class="box-card-label">搴楅摵鏁伴噺锛�</span>
+                  <span style="font-size: 20px"
+                    >{{ exception2.length }} /{{ shopsTotal }}</span
+                  >
+                  <span style="margin-left: 150px; font-size: 14px">
+                    鍗犳瘮锛歿{
+                      ((exception2.length / shopsTotal) * 100).toFixed(1)
+                    }}%</span
+                  >
+                </el-scrollbar>
               </div>
               <hr />
               <div>
-                <el-card class="sub-box-card"> 
-                <ExceptionText
-                  v-for="(item,index) in exception2"
-                  :key="item"
-                  :devId="item.devId"
-                  exception-value="2"
-                  :begin-time="beginTime"
-                  :end-time="endTime"
-                  @submit-exception-data="getAbnormalDataByClick"
-                >
-                  {{ item.diName }}
-                  <span v-if="index<exception2.length-1" class="text-blank"> , </span>
-                </ExceptionText>
+                <el-card class="sub-box-card">
+                  <el-scrollbar max-height="70px">
+                    <ExceptionText
+                      v-for="(item, index) in exception2"
+                      :key="item"
+                      :devId="item.devId"
+                      exception-value="2"
+                      :begin-time="beginTime"
+                      :end-time="endTime"
+                      @submit-exception-data="getAbnormalDataByClick"
+                    >
+                      {{ item.diName }}
+                      <span
+                        v-if="index < exception2.length - 1"
+                        class="text-blank"
+                        >,</span
+                      >
+                    </ExceptionText>
+                  </el-scrollbar>
                 </el-card>
               </div>
             </el-col>
@@ -204,21 +247,23 @@
         </el-card>
       </el-collapse-item>
     </el-collapse>
- <!-- <hr/>
+    <!-- <hr/>
  <br> -->
-    <h4 class="table-text"> 寮傚父鏁版嵁</h4>
+    <h4 class="table-text">寮傚父鏁版嵁</h4>
+    <!--  -->
+  </el-col>
+</el-row>
     <el-card class="table-page" v-show="!isNoData">
-      
       <el-table
+        ref="tableH"
         v-loading="loading"
         :data="displayData"
         style="width: 100%"
-        :row-class-name="tableRowClassName"
         stripe
-        border 
-        :height=tableHeight
+        border
+        :height="tableHeight"
       >
-        <el-table-column fixed prop="diName" label="搴楅摵鍚嶇О" width="340">
+        <el-table-column fixed prop="diName" label="搴楅摵鍚嶇О" >
           <template #default="{ row }">
             <el-tooltip effect="dark" :content="row.diName">
               <div class="cell ellipsis">{{ row.diName }}</div>
@@ -226,7 +271,7 @@
           </template>
         </el-table-column>
 
-        <el-table-column prop="devId" label="璁惧缂栧彿" width="230">
+        <el-table-column prop="devId" label="璁惧缂栧彿" >
           <template #default="{ row }">
             <el-tooltip effect="dark" :content="row.devId">
               <div class="cell ellipsis">{{ row.devId }}</div>
@@ -234,21 +279,21 @@
           </template>
         </el-table-column>
 
-        <el-table-column prop="exception" label="寮傚父鍒嗙被" width="150">
+        <el-table-column prop="exception" label="寮傚父鍒嗙被" >
           <template #default="{ row }">
             <el-tooltip effect="dark" :content="row.exception">
               <div class="cell ellipsis">{{ row.exception }}</div>
             </el-tooltip>
           </template>
         </el-table-column>
-        <el-table-column label="寮傚父绫诲瀷" width="150">
+        <el-table-column label="寮傚父绫诲瀷" >
           <template #default="{ row }">
             <span v-if="row.exceptionType == '0'">娌圭儫鏁版嵁瓒呮爣</span>
             <span v-else-if="row.exceptionType == '1'">鐤戜技渚涚數寮傚父</span>
             <span v-else-if="row.exceptionType == '2'">鎺夌嚎</span>
           </template>
         </el-table-column>
-        <el-table-column prop="region" label="鍦板尯" width="150">
+        <el-table-column prop="region" label="鍦板尯" >
           <template #default="{ row }">
             <el-tooltip effect="dark" :content="row.region">
               <div class="cell ellipsis">{{ row.region }}</div>
@@ -270,7 +315,7 @@
             </el-tooltip>
           </template>
         </el-table-column>
-        <el-table-column label="鎿嶄綔" width="200">
+        <el-table-column label="鎿嶄綔" >
           <template #default="{ row }">
             <el-button type="warning" @click="showDrawer(row)"
               >鏌ョ湅璇︽儏</el-button
@@ -292,11 +337,11 @@
     <el-empty v-show="isNoData" :image-size="200" />
     <!-- 瀵硅瘽妗� -->
     <div>
-      <el-dialog v-model="centerDialogVisible" draggable align-center>
+      <el-dialog  v-model="centerDialogVisible" draggable align-center>
         <template #header>
           <div style="font-size: 17px">
             搴楅摵鍚嶏細{{ rowShopName }}
-            <di style="margin-left: 40px">寮傚父绫诲瀷锛�</di>
+            <span style="margin-left: 40px">寮傚父绫诲瀷锛�</span>
             <span v-if="rowExceptionType == '0'">娌圭儫鏁版嵁瓒呮爣</span>
             <span v-else-if="rowExceptionType == '1'">渚涚數寮傚父</span>
             <span v-else-if="rowExceptionType == '2'">鎺夌嚎</span>
@@ -323,8 +368,11 @@
 
         <!-- 瓒呮爣鏁版嵁鏃� -->
         <!-- 鎶樼嚎鍥� -->
-        <div
-          ref="chart"
+
+        <!-- 鎺夌嚎 -->
+        <!-- <div
+          ref="ref"
+          v-show="isOfflineShow"
           style="
             width: 100%;
             height: 300px;
@@ -333,10 +381,9 @@
             margin-left: 10px;
             min-width: 350px;
           "
-        ></div>
+        ></div> -->
 
-        <!--  v-show="!isAbnormal" -->
-        <!-- 琛ㄦ牸 -->
+        <ExceptionTypeLineChart :option="option" :is-open-dialog="centerDialogVisible"></ExceptionTypeLineChart>
 
         <!--  -->
         <div style="margin-top: 40px; margin-bottom: 5px; border: 1px">
@@ -358,26 +405,21 @@
         </div>
 
         <el-tag type="success" class="mx-1" effect="dark" round
-          ><span class="table-line-lable">寮傚父璁板綍锛� </span>
+          ><span class="table-line-lable" v-show="rowExceptionType == '0'">寮傚父璁板綍锛� </span>
+          <span v-show="rowExceptionType == '1' || rowExceptionType == '2'">缂哄け鏁版嵁锛�</span>
           <span class="table-line-num">{{ exceptionTotal }}鏉�</span>
           <span v-show="rowExceptionType === '1' || rowExceptionType === '2'">
             (閫昏緫璁$畻)</span
           >
         </el-tag>
-        <!-- <el-tag type="success" class="mx-1" effect="dark" round v-show="rowExceptionType === '1'"
-          ><span class="table-line-lable">琛ㄦ牸琛屾暟锛� </span>
-          <span class="table-line-num">{{ exceptionTotal }}</span></el-tag> -->
       </el-dialog>
     </div>
-  </div>
 </template>
 
 <script>
-
 import ExceptionType from '../sfc/ExceptionType.vue';
 import TimeSelect from '../sfc/TimeSelect.vue';
 import ExceptionText from '../sfc/ExceptionText.vue';
-import * as echarts from 'echarts';
 import * as XLSX from 'xlsx/xlsx.mjs';
 import dayjs from 'dayjs';
 import axiosInstanceInstance from '../utils/request.js';
@@ -385,22 +427,30 @@
 const ShopNameAndID = defineAsyncComponent(() =>
   import('../sfc/../sfc/ShopNameAndID.vue')
 );
+
+//  寮傚父鍥惧舰寮傛缁勪欢
+const ExceptionTypeLineChart = defineAsyncComponent(() =>
+  import('../sfc/ExceptionTypeLineChart.vue')
+);
 export default {
-  
   name: 'TablePage',
   components: {
     ExceptionType,
     TimeSelect,
     ShopNameAndID,
-    ExceptionText
+    ExceptionText,
+    ExceptionTypeLineChart
   },
   data() {
     return {
-      
+      // 寮傚父鎶樼嚎鍥剧殑閰嶇疆
+      option: {},
+      // 鎶樼嚎鍥惧睍绀�
+      isChartShow: false,
       // table鍏冪礌
-      tableRef:null,
+      tableRef: null,
       // 寮傚父琛ㄦ牸鏁版嵁
-      tableHeight:300,
+      tableHeight: 300,
       // 绌烘暟鎹姸鎬�
       isNoData: false,
       // 寮瑰嚭妗嗕腑琛ㄦ牸鏉℃暟
@@ -440,8 +490,6 @@
       // 鏃犳暟鎹椂澧炲姞鐨勫悗40鍒嗛挓鏁版嵁
       afterData: [],
 
-      // 鎶樼嚎鍥惧疄渚�
-      chart: null,
       // -1琛ㄧず鏈�夋嫨琛ㄦ牸鐨勮
       selectedRowIndex: -1,
 
@@ -465,7 +513,8 @@
       // 鎶藉眽鍔犺浇鍔ㄧ敾
       loadingDrawer: true,
       // 鍒嗛〉灞曠ず鏁版嵁
-      // 姣忛〉灞曠ず鐨勬暟鎹�
+
+      // 寮傚父琛ㄧ殑鏁版嵁
       displayData: [],
       // 瀛樻斁鍚庣杩斿洖鐨刯son鏁版嵁
       jsonData: [],
@@ -485,7 +534,7 @@
       endTime: '',
       // 寮傚父琛ㄦ暟鎹�
       abnormalData: [],
-      // 璇ユ椂娈电殑璇︾粏瓒呮爣鏁版嵁
+      // 寮瑰嚭鐨勫璇濇涓殑寮傚父琛ㄦ牸鏁版嵁
       exceedingData: [],
       drawerVisible: false,
       // 琛ㄦ牸鐨勪竴琛屾暟鎹�
@@ -504,38 +553,24 @@
       optionsShop: [],
       // 寮傚父绫诲瀷閫夋嫨鍣�
       exceptionValue: [],
-      exceptionOptions: [
-        {
-          value: '0',
-          label: '娌圭儫娴撳害瓒呮爣'
-        },
-        {
-          value: '1',
-          label: '鐤戜技渚涚數寮傚父'
-        },
-        {
-          value: '2',
-          label: '鎺夌嚎'
-        }
-      ]
     };
   },
   // 鐩戝惉  鍒ゆ柇鎸夐挳鏄惁鍙偣鍑�
   watch: {
     selectedRowIndex(newVaue) {
-      // 澶勪簬琛ㄦ牸鐨勭涓�鏉℃暟鎹� 璁剧疆鈥樹笂涓�鏉♀�欐寜閽笉鍙偣
-      if (newVaue === 0) {
+      // 澶勪簬琛ㄦ牸鐨勬渶鍚庝竴鏉℃暟鎹� 璁剧疆鈥樹笂涓�鏉♀�欐寜閽笉鍙偣
+      if (newVaue === this.displayData.length - 1) {
         this.isPreCantouch = true;
-        //鐢ㄦ埛鍏堢偣浜嗚〃鏍兼渶鍚庝竴鏉�,next涓簍rue,鐒跺悗鐐瑰嚮绗竴鏉★紝pre涓簍rue銆傛鏃朵袱涓寜閽兘琚皝閿�
-        if (this.isNextCantouch == true) {
+       //鐢ㄦ埛鍏堢偣浜嗙涓�鏉★紝pre涓簍rue,鐒跺悗鐐瑰嚮鏈�鍚庝竴鏉�,next涓簍rue銆傛鏃朵袱涓寜閽兘琚皝閿�
+       if (this.isNextCantouch == true) {
           this.isNextCantouch = false;
         }
       }
-      // 澶勪簬琛ㄦ牸鏈�鍚庝竴鎻愬摝鍟婃暟鎹� 璁剧疆鈥樹笅涓�鏉♀�欐寜閽笉鍙偣
-      else if (newVaue === this.displayData.length - 1) {
+      // 澶勪簬琛ㄦ牸绗竴鏉℃暟鎹� 璁剧疆鈥樹笅涓�鏉♀�欐寜閽笉鍙偣
+      else if (newVaue === 0) {
         this.isNextCantouch = true;
-        //鐢ㄦ埛鍏堢偣浜嗙涓�鏉★紝pre涓簍rue,鐒跺悗鐐瑰嚮鏈�鍚庝竴鏉�,next涓簍rue銆傛鏃朵袱涓寜閽兘琚皝閿�
-        if (this.isPreCantouch == true) {
+         //鐢ㄦ埛鍏堢偣浜嗚〃鏍兼渶鍚庝竴鏉�,next涓簍rue,鐒跺悗鐐瑰嚮绗竴鏉★紝pre涓簍rue銆傛鏃朵袱涓寜閽兘琚皝閿�
+         if (this.isPreCantouch == true) {
           this.isPreCantouch = false;
         }
       }
@@ -552,45 +587,126 @@
     },
     endTime() {
       this.getShopNames();
+    },
+    centerDialogVisible() {
+      window.addEventListener('resize', this.updateChart);
     }
   },
 
   mounted() {
-
     // 浠庢帴鍙h幏鍙栧簵閾哄悕绉� 缁欑骇鑱斾笅鎷夋
     this.getDeviceInfo();
-
     // 灞曠ず鏈�杩�7澶╂暟鎹�
     this.getRecentSevenDays();
-
     // 鏍规嵁寮傚父绫诲瀷杩斿洖搴楅摵鍚嶇О鍜岃澶囩紪鍙� 娓叉煋寮傚父鍒嗘瀽閮ㄥ垎瀵瑰簲鐨勫簵閾哄悕
     this.getShopNames();
+    this.calcTableHeight()
     window.addEventListener('resize', this.updateChart);
-    // this.tableHeight = this.calcTableHeight()
-
+ 
   },
   methods: {
-    // calcTableHeight() {
-    //   const h1 = this.$refs.h1.offsetHeight;
-    //   const h2 = this.$refs.h2.offsetHeight;
-    //   const h3 = this.$refs.h3.$el.offsetHeight;
-    //   const h4 = this.$refs.h4.$el.offsetHeight;
-    //   // return `calc(100vh - ${h1}px - ${h2}px - var(--el-main-padding) * 2 - var(--el-header-height))`;
-    //   return `calc(100vh - ${h1}px - ${h2}px- ${h3}px - ${h4}px  - 60px - var(--el-main-padding) * 2)`;
-    // },
-
-    warn() {
-      alert('鐐瑰嚮浜�');
+     // 鍔ㄦ�佽绠楄〃鏍奸珮搴�
+     calcTableHeight(){
+      const h1 = this.$refs.h1.$el.offsetHeight;
+      const h2 = this.$refs.h4.$el.offsetHeight;
+      this.tableHeight =  `calc(100vh - ${h1}px - ${h2}px - 45px - var(--el-main-padding) * 2 - var(--el-card-padding))`;
     },
+    
+    // 鏃堕棿鏄惁瓒呰繃10鍒嗛挓
+    isTimeDifferenceGreaterThan10Minutes(dateString1, dateString2) {
+      const date1 = new Date(dateString1);
+      const date2 = new Date(dateString2);
+
+      // 璁$畻涓や釜鏃ユ湡鐨勬椂闂村樊锛堟绉掞級
+      const timeDifferenceMs = Math.abs(date1 - date2);
+
+      // 杞崲涓哄垎閽�
+      const timeDifferenceMinutes = Math.floor(timeDifferenceMs / (1000 * 60));
+
+      // 鍒ゆ柇鏃堕棿宸槸鍚﹀ぇ浜�10鍒嗛挓
+      return timeDifferenceMinutes > 10;
+    },
+
+    // 浠�10鍒嗛挓涓洪棿闅旇繑鍥炴椂闂村瓧绗︿覆鏁扮粍
+    generateTimePoints(timePoints, yAxisData) {
+      let updatedTimePoints = [];
+      let yAxisDataAdressed = [];
+      for (let i = 0; i < timePoints.length; i++) {
+        updatedTimePoints.push(timePoints[i]);
+        yAxisDataAdressed.push(yAxisData[i]);
+        if (i < timePoints.length - 1) {
+          let current = timePoints[i];
+          let next = timePoints[i + 1];
+          while (this.isTimeDifferenceGreaterThan10Minutes(current, next)) {
+            console.log('generateTimePoints');
+            current = dayjs(current)
+              .add(10, 'minute')
+              .format('YYYY-MM-DD HH:mm:ss');
+            updatedTimePoints.push(current);
+            yAxisDataAdressed.push(null);
+          }
+        }
+      }
+      let obj = {};
+      obj['time'] = updatedTimePoints;
+      obj['data'] = yAxisDataAdressed;
+      return obj;
+    },
+
+    isExceedOneMonth(dateStr1, dateStr2) {
+      // 瓒呰繃涓�涓湀锛岃繑鍥濼rue锛屽惁鍒欒繑鍥濬alse
+      // 灏嗘棩鏈熷瓧绗︿覆杞负鏃ユ湡瀵硅薄
+      const date1 = new Date(dateStr1);
+      const date2 = new Date(dateStr2);
+
+      // 鑾峰彇涓や釜鏃ユ湡鐨勫勾銆佹湀銆佹棩
+      const year1 = date1.getFullYear();
+      const month1 = date1.getMonth();
+      const day1 = date1.getDate();
+
+      const year2 = date2.getFullYear();
+      const month2 = date2.getMonth();
+      const day2 = date2.getDate();
+      console.log(month1, month2);
+
+      // 鍒ゆ柇涓や釜鏃ユ湡鏄惁鐩稿樊涓�涓湀
+      if (year1 === year2) {
+        // 骞翠唤鐩哥瓑锛屾瘮杈冩湀浠藉樊鍊�
+        if (Math.abs(month1 - month2) === 1) {
+          // 鏈堜唤宸�间负1锛岃繕闇�瑕佸垽鏂叿浣撴棩鏈�
+          if (
+            (month1 < month2 && day1 < day2) ||
+            (month1 > month2 && day1 > day2)
+          ) {
+            return true;
+          }
+        }
+      } else if (Math.abs(year1 - year2) === 1) {
+        // 骞翠唤宸�间负1锛屾瘮杈冩湀浠藉拰鏃ユ湡
+        if (
+          (year1 < year2 && month1 === 11 && month2 === 0 && day1 < day2) ||
+          (year1 > year2 && month1 === 0 && month2 === 11 && day1 > day2)
+        ) {
+          return true;
+        }
+      }
+
+      // 榛樿杩斿洖false锛岃〃绀轰袱涓棩鏈熷瓧绗︿覆涓嶇浉宸竴涓湀
+      return false;
+    },
+
     // 鍒氭墦寮�鍗$墖鏃剁涓�涓浘褰笉浼氳嚜鍔ㄤ几缂� 褰撶偣鍑讳笂/涓嬩竴鏉℃椂浼氳嚜鍔ㄤ几缂�
     // 鍥惧舰鍝嶅簲寮忓彉鍖�
-    updateChart() {
-      this.$nextTick(() => {
-        if (this.chart) {
-          this.chart.resize();
-        }
-      });
-    },
+    // updateChart() {
+    //   this.$nextTick(() => {
+    //     if (this.chart1) {
+    //       this.chart1.resize();
+    //     }
+    //     if (this.chart2) {
+    //       this.chart2.resize();
+    //     }
+    //   });
+    // },
     // 浠庢椂闂撮�夋嫨鍣ㄧ粍浠舵嬁鍒板紑濮嬪拰缁撴潫鏃堕棿
     giveTime(val) {
       //灏嗕腑鍥芥爣鍑嗘椂闂磋浆涓烘寚瀹氭牸寮�(璇ョ粍浠惰繑鍥炵殑鏍囧噯鏃堕棿鐨勬牸寮忥紝鎵�浠ュ繀椤荤殑鍔犺繖涓嚱鏁�)
@@ -598,11 +714,15 @@
       this.endTime = dayjs(val[1]).format('YYYY-MM-DD HH:mm:ss');
     },
 
-    // 寮傚父鐨勫紑濮嬪拰缁撴潫鏃堕棿銆傝繑鍥炴椂闂存暟缁勶紝浠庡紑濮嬫椂闂寸殑鍚�10鍒嗛挓鍒扮粨鏉熸椂闂翠负姝€��
-    // 姣斿12:00:00 -13:00:00 鎵�浠ヨ繑鍥炵殑鏁扮粍鍏冪礌鏄� 12:10:00 ,12:20:00,12:30:00....13:00:00
+    // 鍙傛暟锛氬紓甯哥殑寮�濮嬪拰缁撴潫鏃堕棿銆傝繑鍥炴椂闂存暟缁勶紝浠庡紑濮嬫椂闂寸殑鍚�10鍒嗛挓鍒扮粨鏉熸椂闂翠负姝€��
+    // 姣斿12:00:00-13:00:00 鎵�浠ヨ繑鍥炵殑鏁扮粍鍏冪礌鏄� 12:10:00 ,12:20:00,12:30:00....13:00:00
     descTenTime(begin, end) {
-      // 淇濈暀缁撴灉
       let time = [];
+      if(begin == end){
+        time.push(begin)
+        return time
+      }
+      // 淇濈暀缁撴灉 00 10 20 30
       let temp = dayjs(begin).add(10, 'minute').format('YYYY-MM-DD HH:mm:ss');
       while (temp != end) {
         time.push(temp);
@@ -610,7 +730,6 @@
       }
       // 鍔犱笂寮傚父鐨勭粨鏉熸椂闂�
       time.push(temp);
-
       return time;
     },
 
@@ -621,22 +740,18 @@
       this.rowBeginTime = this.displayData[index].beginTime;
       this.rowEndTime = this.displayData[index].endTime;
       this.rowMvStatCode = this.displayData[index].devId;
-      console.log('琛屽悕瀛楋細', this.rowShopName);
-      console.log('琛屽悕瀛楋細', this.rowExceptionType);
-      console.log('琛屽悕瀛楋細', this.rowBeginTime);
-      console.log('琛屽悕瀛楋細', this.rowEndTime);
     },
-    // 渚涚數寮傚父鍜屾帀绾挎椂鐨勮〃鏍兼暟鎹�
+
+    //鍔熻兘锛� 渚涚數寮傚父鍜屾帀绾挎椂鐨勮〃鏍兼暟鎹� 
     setExceptionData() {
-      // 娓呯┖锛岃鍘嗗彶鏁版嵁鏉℃暟闅愯棌锛屼娇鏃犳暟鎹殑鏍囩鏉℃暟鏄剧ず鍑烘潵
-      // this.exceedingData=[]
-      // 娓呯┖涓婃鐨勬暟鎹紝闃叉褰卞搷鏈鐨勫睍绀烘暟
-      // this.abnormalTimeTenMinute = [];
-      // 鏃犳暟鎹椂鐨勬椂闂存暟缁� 鏃堕棿鐩稿樊10鍒嗛挓
-      const abnormalTimeTenMinute = this.descTenTime(
+        // 鏃犳暟鎹椂鐨勬椂闂存暟缁� 鏃堕棿鐩稿樊10鍒嗛挓
+        const abnormalTimeTenMinute = this.descTenTime(
         this.rowBeginTime,
         this.rowEndTime
-      );
+      )
+      // 鍘婚櫎渚涚數寮傚父鍜屾帀绾垮尯闂寸殑绗竴涓湁鍏冪礌鐨勫��
+      this.exceedingData = []
+
       for (let i = 0; i < abnormalTimeTenMinute.length; i++) {
         this.exceedingData.push({
           mvStatCode: this.rowMvStatCode,
@@ -645,6 +760,7 @@
           mvFumeConcentration2: ''
         });
       }
+
       // 淇濆瓨鏃犳暟鎹椂琛ㄦ牸鏉℃暟
       this.exceptionTotal = abnormalTimeTenMinute.length;
     },
@@ -654,69 +770,54 @@
       this.selectedRowIndex = this.displayData.indexOf(row);
       // 杩涘叆鎶藉眽椤甸潰鏇存柊澶撮儴鏁版嵁
       this.setinfo(this.selectedRowIndex);
-      console.log('閫夋嫨涓锛�', this.selectedRowIndex);
-    },
-
-    // 鑾峰彇鑾峰彇琛ㄦ牸涓婁竴琛屾暟鎹�
-    getPreviousRowData() {
-      // 涓嶆槸琛ㄦ牸鐨勭涓�琛�
-      if (this.selectedRowIndex !== 0) {
-        // 鈥欎笅涓�鏉♀�樼殑鎸夐挳鎭㈠鐐瑰嚮
-        // this.isNextCantouch = false
-
-        //寰楀埌涓婁竴琛屾暟鎹储寮�
-        this.selectedRowIndex = this.selectedRowIndex - 1;
-        console.log('涓�', this.selectedRowIndex);
-
-        console.log(this.displayData[this.selectedRowIndex]);
-        //璇锋眰鏁版嵁 鏀瑰彉exceedingData
-        this.setinfo(this.selectedRowIndex);
-        let params = {};
-        if (this.drawerData.devId) {
-          params['devId'] = this.displayData[this.selectedRowIndex].devId;
-        }
-        if (this.drawerData.beginTime) {
-          params['beginTime'] =
-            this.displayData[this.selectedRowIndex].beginTime;
-        }
-        if (this.drawerData.endTime) {
-          params['endTime'] = this.displayData[this.selectedRowIndex].endTime;
-        }
-
-        axiosInstanceInstance
-          .get('/fume/exceed', { params: params })
-          .then((response) => {
-            // 淇濆瓨杩斿洖鐨勮秴鏍囨暟鎹�
-            this.exceedingData = response.data.data;
-            this.chart = null;
-            this.drawChart();
-            this.exceptionTotal = this.exceedingData.length;
-          });
-      }
-      //琛ㄦ牸鐨勭涓�琛岋紝鍒欎笂涓�鏉℃棤鏁版嵁
-      else if (this.selectedRowIndex === 0) {
-        console.log(null);
-        // 璀﹀憡
-        // ElMessage.warn('宸叉槸绗竴鏉℃暟鎹�');
-        // ElMessage.info('宸叉槸璇ラ〉绗竴鏉℃暟鎹�');
-
-        // 鈥欎笂涓�鏉♀�樼殑鎸夐挳涓嶅彲鐐瑰嚮
-        // this.isPreCantouch = true
-      }
     },
 
     // 鑾峰彇鑾峰彇琛ㄦ牸涓嬩竴琛屾暟鎹�
     getNextRowData() {
-      // 涓嶆槸琛ㄦ牸鐨勭涓�琛�
-      if (this.selectedRowIndex < this.displayData.length - 1) {
-        // 鈥欎笂涓�鏉♀�樼殑鎸夐挳鎭㈠鐐瑰嚮
-        // this.isPreCantouch = false
-
+      // 涓嶆槸琛ㄦ牸鐨勭涓�琛� 
+      if (this.selectedRowIndex !== 0) {
         //寰楀埌涓婁竴琛屾暟鎹储寮�
+        this.selectedRowIndex = this.selectedRowIndex - 1;
+        //璇锋眰鏁版嵁 鏀瑰彉exceedingData
+        this.setinfo(this.selectedRowIndex);
+        let params = {};
+        if (this.drawerData.devId) {
+          params['devId'] = this.displayData[this.selectedRowIndex].devId;
+        }
+        if (this.drawerData.beginTime) {
+          params['beginTime'] =
+            this.displayData[this.selectedRowIndex].beginTime;
+        }
+        if (this.drawerData.endTime) {
+          params['endTime'] = this.displayData[this.selectedRowIndex].endTime;
+        }
+
+        axiosInstanceInstance
+          .get('/fume/exceed', { params: params })
+          .then((response) => {
+            // 淇濆瓨杩斿洖鐨勮秴鏍囨暟鎹�
+            this.exceedingData = response.data.data;
+            // this.chart = null;
+            // this.drawChart();
+            this.drawChartTest();
+            this.exceptionTotal = this.exceedingData.length;
+          });
+      }
+      //琛ㄦ牸鐨勭涓�琛岋紝鍒欎笂涓�鏉℃棤鏁版嵁
+      else{
+        console.log(null);
+      }
+    },
+
+    // 鑾峰彇鑾峰彇琛ㄦ牸涓嬩竴琛屾暟鎹�
+    getPreviousRowData() {
+      // 涓嶆槸琛ㄦ牸鐨勭涓�琛�  
+      if (this.selectedRowIndex < this.displayData.length - 1) {
+        //寰楀埌涓婁竴琛屾暟鎹储寮�
+        
         this.selectedRowIndex = this.selectedRowIndex + 1;
         console.log('涓�', this.selectedRowIndex);
 
-        console.log(this.displayData[this.selectedRowIndex]);
         //璇锋眰鏁版嵁 鏀瑰彉exceedingData
         this.setinfo(this.selectedRowIndex);
         let params = {};
@@ -735,21 +836,14 @@
           .then((response) => {
             // 淇濆瓨杩斿洖鐨勮秴鏍囨暟鎹�
             this.exceedingData = response.data.data;
-            console.log('杩斿洖鐨勫紓甯告暟鎹负锛�');
             console.log(this.exceedingData);
-            this.chart = null;
-            this.drawChart();
+            this.drawChartTest();
             this.exceptionTotal = this.exceedingData.length;
           });
       }
       //琛ㄦ牸鐨勭涓�琛岋紝鍒欎笂涓�鏉℃棤鏁版嵁
       else {
         console.log(null);
-        // 璀﹀憡
-        // ElMessage.info('宸叉槸璇ラ〉鏈�鍚庝竴鏉℃暟鎹�');
-
-        // 鈥欎笅涓�鏉♀�樼殑鎸夐挳涓嶅彲鐐瑰嚮
-        // this.isNextCantouch = true
       }
     },
 
@@ -759,15 +853,12 @@
       this.selectTableRow(row);
 
       this.rowTable = row;
-      console.log('璧嬪�煎悗row', this.rowTable);
-      console.log('璧嬪�煎悗row', this.rowTable);
-      // 灞曞紑鎶藉眽
+
       // 琛ㄦ牸鐨勮鏁版嵁浠ュ璞″舰寮忕粰drawerData
       this.drawerData = row;
 
       this.centerDialogVisible = true;
-      // this.drawerVisible = true;
-      console.log(this.drawerData);
+
       // 鏍规嵁琛屾暟鎹姹傝缁嗚秴鏍囨暟鎹覆鏌撴姌绾垮浘
       let params = {};
       if (this.drawerData.devId) {
@@ -784,25 +875,19 @@
         .then((response) => {
           // 淇濆瓨杩斿洖鐨勮秴鏍囨暟鎹�
           this.exceedingData = response.data.data;
-          this.loadingDrawer = !this.loadingDrawer;
-          // this.total = this.exceedingData.length;
-          // this.handleCurrentChange(1); // 榛樿鏄剧ず绗竴椤�
-          console.log('杩斿洖鐨勫紓甯告暟鎹负锛�');
-          console.log(this.exceedingData);
-          this.drawChart();
+          this.drawChartTest();
           this.exceptionTotal = this.exceedingData.length;
         });
     },
 
     // 鐢ㄦ埛鏍规嵁杈撳叆鐨勬潯浠舵煡璇�
     showTable() {
-      if (this.beginTime > this.endTime) {
-        alert('璇疯緭鍏ユ纭殑鏃堕棿鑼冨洿');
+      if (this.isExceedOneMonth(this.beginTime, this.endTime)) {
+        alert('鏃堕棿璺ㄥ害涓嶈兘瓒呰繃涓�涓湀');
         return;
       }
       let params = {};
-      // params['page'] = this.startIndex
-      // params['pageSize'] = 10
+
       if (this.deviceId[1]) {
         params['devId'] = this.deviceId[1];
       }
@@ -825,7 +910,7 @@
           this.total = this.abnormalData.length;
           this.loading = false;
           if (response.data.data.length == 0) {
-            alert('璇ユ椂娈垫棤鏁版嵁');
+            ElMessage('璇ユ椂娈垫棤鏁版嵁');
             this.isNoData = true;
             return;
           }
@@ -842,19 +927,10 @@
       this.handleCurrentChange(1);
     },
     handleCurrentChange(val) {
-      // this.startIndex = (val - 1) * this.pageSize;
-      // const endIndex = this.startIndex + this.pageSize;
-
       const startIndex = (val - 1) * this.pageSize;
       const endIndex = startIndex + this.pageSize;
-      // console.log('璧峰绱㈠紩涓�:',this.startIndex)
-      // console.log('椤甸潰澶у皬涓�:',this.pageSize)
-      this.displayData = this.abnormalData.slice(startIndex, endIndex);
-      // setTimeout(() => {
-      //  this.displayData = this.abnormalData
 
-      // }, 1000);
-      // console.log(this.displayData);
+      this.displayData = this.abnormalData.slice(startIndex, endIndex);
     },
 
     //鐩稿樊澶氬皯涓崄鍒嗛挓  璁$畻涓苟涓嶅寘鎷紑濮嬫椂闂达紝浣嗗寘鎷粨鏉熸椂闂淬��
@@ -870,424 +946,479 @@
       return diffInTenMinutes;
     },
 
-    // 渚涚數寮傚父鍜屾帀绾跨殑鎶樼嚎鍥�
-    linechart(xAxisData1, abnormalBeginTime, abnormalEndTime, fumeExceeding) {
-      this.chart = echarts.init(this.$refs.chart);
-      // $('#ModalGrade').on('shown.bs.modal', function(){
-      //   this.chart.resize()
-      // })
-      this.chart.setOption({
-        title: {
-          // text: '娌圭儫瓒呮爣鏁版嵁',
-          // left: 'center'
-        },
-        grid: {
-          left: '3%',
-          right: '4%',
-          bottom: '3%',
-          containLabel: true
-        },
-        tooltip: {},
-        // legend: {
-        //   data: ['娌圭儫瓒呮爣鏁版嵁']
-        // },
+    // 鍙傛暟锛氬紓甯哥殑寮�濮嬫椂闂达紝寮傚父鐨勭粨鏉熸椂闂淬��
+    // 鍔熻兘锛氳繑鍥炲紑濮嬫椂闂寸殑鍓�30鍒嗛挓鐨勬椂闂寸偣锛岀粨鏉熸椂闂村悗40鍒嗛挓鐨勬椂闂寸偣
+    before30AndAfter40(begin, end) {
+      let time = [];
+      const before30MinBegin = dayjs(begin)
+        .subtract(30, 'minute')
+        .format('YYYY-MM-DD HH:mm:ss');
+      // 鍚庝竴娈电殑寮�濮嬫椂闂�
+      const after10MinBegin = dayjs(end)
+        .add(10, 'minute')
+        .format('YYYY-MM-DD HH:mm:ss');
+      // 寰�鍚�40鍒嗛挓
+      const after40MinEnd = dayjs(end)
+        .add(40, 'minute')
+        .format('YYYY-MM-DD HH:mm:ss');
+      time.push(before30MinBegin);
+      time.push(after10MinBegin);
+      time.push(after40MinEnd);
+      return time;
+    },
+
+    // 鍙傛暟锛氳澶囩紪鍙凤紝 寮�濮嬫椂闂达紝 缁撴潫鏃堕棿
+    // 鍔熻兘锛氳繑鍥炴煇璁惧鍦ㄨ鏃舵鍘嗗彶鏁版嵁鐨刧et璇锋眰鍙傛暟銆�
+    requestGetParms(devnum, begin, end) {
+      return {
+        devId: devnum,
+        beginTime: begin,
+        endTime: end
+      };
+    },
+    // 鍙傛暟锛氬璞℃暟缁�(璇ュ璞′腑鐨勫睘鎬т笉鑳芥槸寮曠敤绫诲瀷锛屽惁鍒欐嫹璐濈殑鍊艰繕鏄細鐩镐簰褰卞搷)
+    // 鍔熻兘锛氭嫹璐濊瀵硅薄鏁扮粍銆�
+    shallowCopyList(itemIsObjOfList) {
+      let tempList = [];
+      itemIsObjOfList.forEach((item) => {
+        tempList.push({ ...item });
+      });
+      return tempList;
+    },
+
+    // 鍙傛暟锛氭坊鍔犻灏炬椂闂存暟鎹殑寮傚父鏁版嵁鏁扮粍(鍏冪礌涓哄璞�)
+    // 鍔熻兘锛氬涓棿寮傚父鍖洪棿鏃堕棿鍜屽�艰繘琛岃ˉ鍏咃紝杩斿洖澶勭悊鍚庣殑缁撴灉
+    // 璇︾粏鎻忚堪锛氶亶鍘嗘暟缁勶紝褰撳彂鐜版暟缁勫厓绱犱负绌烘椂锛岃缃鍏冪礌鐨勬椂闂翠负涓婁竴涓厓绱犳椂闂寸殑鍚�10鍒嗛挓锛屽苟鎶婃祿搴﹀�艰缃负null(涓婁釜鍏冪礌鐨勬椂闂翠竴瀹氫笉涓虹┖锛屾棤闇�鍐嶅幓鍒ゆ柇涓婁釜鍏冪礌涓虹┖鐨勬儏鍐�)銆�
+    addTenMinutes(exceptionDataArr) {
+      // x杞� 鏃ユ湡鏃堕棿
+      let dateList = [];
+      // y杞� 瓒呮爣娌圭儫娴撳害
+      let fumeExceeding = [];
+      let obj = {};
+      for (let i = 0; i < exceptionDataArr.length; i++) {
+        if (exceptionDataArr[i] == null) {
+          //x杞存棩鏈熴�傚厓绱犱负null鏃讹紝 璁剧疆璇ュ厓绱犵殑鏃堕棿涓哄墠涓�鍏冪礌鐨勬椂闂村悗10鍒嗛挓
+          dateList.push(
+            dayjs(dateList[dateList.length - 1])
+              .add(10, 'minute')
+              .format('YYYY-MM-DD HH:mm:ss')
+          );
+          // 瓒呮爣娌圭儫娴撳害
+          fumeExceeding.push(null);
+        } else {
+          //x杞存棩鏈�
+          dateList.push(exceptionDataArr[i].mvDataTime);
+          // 瓒呮爣娌圭儫娴撳害
+          fumeExceeding.push(exceptionDataArr[i].mvFumeConcentration2);
+        }
+      }
+      obj['dateList'] = dateList;
+      obj['fumeExceeding'] = fumeExceeding;
+      return obj;
+    },
+
+    // 鍙傛暟锛氬姞涓婂墠鍚庡尯闂寸殑寮傚父鏁版嵁锛屾椂闂村瓧绗︿覆
+    // 鍔熻兘锛氬垽鏂璬ata涓槸鍚︽湁璇ユ棩鏈熸椂闂达紝瀛樺湪杩斿洖璇ユ椂闂村搴旂殑娴撳害鍊硷紝鍚﹀垯杩斿洖-1
+    findTimeInExceptionData(data, time) {
+      for (let i = 0; i < data.length; i++) {
+        if(data[i]==null){
+            continue
+        }
+        if (data[i]['mvDataTime'] == time) {
+          return data[i]['mvFumeConcentration2'];
+        }
+      }
+      return -1;
+    },
+    // 鍙傛暟:鍓嶅尯闂寸殑寮�濮嬫椂闂达紝 鍚庡尯闂寸殑缁撴潫鏃堕棿, 鍔犱笂鍓嶅悗鍖洪棿鐨勬�绘椂闂存鐨勫紓甯告暟鎹殑瀵硅薄鏁扮粍
+    // 鍔熻兘锛氭牴鎹紑濮嬪拰缁撴潫鏃堕棿,杩斿洖浠�10鍒嗛挓涓洪棿闅旂殑鏃堕棿鍜屽搴旂殑鍊�
+    keepContinuousByEachTenMinutes(
+      intervalStarTime,
+      intervalEndTime,
+      headAndTailExceptionData
+    ) {
+      let xAxis = [];
+      let yAxis = [];
+      let obj = {};
+      let current = intervalStarTime;
+      let tail = dayjs(intervalEndTime)
+        .add(10, 'minute')
+        .format('YYYY-MM-DD HH:mm:ss');
+      while (current != tail) {
+        let value = this.findTimeInExceptionData(
+          headAndTailExceptionData,
+          current
+        );
+        if (value != -1) {
+          xAxis.push(current);
+          yAxis.push(value);
+        } else {
+          xAxis.push(current);
+          yAxis.push(null);
+        }
+        current = dayjs(current)
+          .add(10, 'minute')
+          .format('YYYY-MM-DD HH:mm:ss');
+      
+      }
+      obj['xAxis'] = xAxis;
+      obj['yAxis'] = yAxis;
+      return obj;
+    },
+
+    // 鍙傛暟锛氳秴鏍囨暟鎹墠闈㈠尯闂寸殑鏁版嵁
+    // 鍔熻兘锛氳繑鍥為櫎鍘绘渶鍚庝竴涓厓绱犵殑鏁扮粍
+    removeLastItemOfBeforeData(beforeDataOfExceeding){
+      let tempList = [];
+      if(beforeDataOfExceeding.length ==1){
+        return tempList
+      }else{
+        for(let i=0;i<beforeDataOfExceeding.length-1;i++){
+        tempList.push({ ...beforeDataOfExceeding[i]})
+      }
+      return tempList;
+      }
+    },
+
+
+
+    // 璁剧疆option
+    // 鍙傛暟锛歺杞存椂闂达紝 y杞存补鐑熸祿搴︼紝 寮傚父绫诲埆(0浠h〃瓒呮爣锛�1浠h〃渚涚數寮傚父鍜屾帀绾�), 寮傚父寮�濮嬫椂闂达紝寮傚父缁撴潫鏃堕棿锛屽紓甯稿紑濮嬫椂闂村湪鏁翠釜鍖洪棿鐨勭储寮曚笅鏍囷紝寮傚父缁撴潫鏃堕棿鍦ㄦ暣涓尯闂寸殑绱㈠紩涓嬫爣
+    setOption(
+      xData,
+      yData,
+      exceptionCategory,
+      exceptionBeginTime,
+      exceptionEndTime,
+      beginIndex,
+      endIndex
+    ) {
+      this.option = {}
+      // 瓒呮爣
+      if (exceptionCategory == 0) {
+        this.option = {
+          tooltip: {},
         toolbox: {
           // 宸ュ叿鏍�
           feature: {
-            dataZoom: {
-              // 鍖哄煙缂╂斁
-              yAxisIndex: 'none'
-            },
-
+        //     dataZoom: {
+        //   yAxisIndex: 'none'
+        // },
             // 淇濆瓨涓哄浘鐗�
             saveAsImage: {}
           }
         },
-        xAxis: {
-          // type: 'time',
-          // 鍦ㄧ被鐩酱锛坱ype: 'category'锛変腑鏈夋晥銆�
-          data: xAxisData1,
-          name: '鏃堕棿'
-          // axisLabel: {
-          //   interval:3,
-          //   rotate:40
-          // }
-        },
-        yAxis: {
-          type: 'value',
-          axisLabel: {
-            show: true,
-            interval: 'auto'
-            // formatter:'{value} %'
+          xAxis: {
+            type: 'category',
+            data: xData,
+            name: '鏃堕棿',
+            axisLabel: {
+              formatter: function (value) {
+                return value.slice(11, -3);
+              }
+            }
           },
-          name: 'mg/m鲁'
-        },
-        series: [
-          {
-            name: '娌圭儫瓒呮爣鏁版嵁',
-            type: 'line',
-            data: fumeExceeding,
-            markLine: {
-              silent: true,
-
-              data: [
-                // 鏍囨敞鏃犳暟鎹椂闂存鐨勬晥鏋滐紝灏嗚繖涓椂闂存鐨勬暟杞撮儴鍒嗗彉涓虹孩鑹�
-                {
-                  name: '鏃犳暟鎹�',
-                  xAxis: abnormalBeginTime
-                },
-                {
-                  xAxis: abnormalEndTime
-                }
-              ],
-              lineStyle: {
-                color: 'red'
-              }
-            }
-          }
-        ]
-      });
-    },
-
-    // 灞曠ず鎶樼嚎鍥�
-    drawChart() {
-      // 褰撳嚭鐜颁緵鐢靛紓甯稿拰鎺夌嚎鏃讹紝鏃舵鏃犳暟鎹� 鍒欐嫾鎺ュ墠鍚庢鏁版嵁
-      if (
-        this.exceedingData.length === 0 ||
-        this.rowExceptionType === '1' ||
-        this.rowExceptionType === '2'
-      ) {
-        // 閲嶆瀯琛ㄦ牸 鎵嬪姩濉厖
-        this.setExceptionData();
-
-        // 灞曠ず
-        this.isAbnormal = true;
-        // 鎷兼帴鏃ユ湡
-        //寮傚父鐨勫紑濮嬫椂闂�
-        this.abnormalBt = this.displayData[this.selectedRowIndex].beginTime;
-        //寮傚父鐨勭粨鏉熸椂闂�
-        this.abnormalEt = this.displayData[this.selectedRowIndex].endTime;
-        console.log(
-          '渚涚數寮�濮�',
-          this.displayData[this.selectedRowIndex].beginTime
-        );
-        console.log(
-          '渚涚數缁撴潫',
-          this.displayData[this.selectedRowIndex].endTime
-        );
-        // 寰�鍓�30鍒嗛挓
-        const before30MinBegin = dayjs(this.abnormalBt)
-          .subtract(30, 'minute')
-          .format('YYYY-MM-DD HH:mm:ss');
-        // 鍚庝竴娈电殑寮�濮嬫椂闂�
-        const after10MinBegin = dayjs(this.abnormalEt)
-          .add(10, 'minute')
-          .format('YYYY-MM-DD HH:mm:ss');
-        // 寰�鍚�40鍒嗛挓
-        const after40MinEnd = dayjs(this.abnormalEt)
-          .add(40, 'minute')
-          .format('YYYY-MM-DD HH:mm:ss');
-
-        let paramsBefore = {
-          devId: this.displayData[this.selectedRowIndex].devId,
-          beginTime: before30MinBegin,
-          endTime: this.displayData[this.selectedRowIndex].beginTime
-        };
-        let paramsAfter = {
-          devId: this.displayData[this.selectedRowIndex].devId,
-          beginTime: after10MinBegin,
-          endTime: after40MinEnd
-        };
-        // 璇锋眰鍓嶅崐娈�
-        axiosInstanceInstance
-          .get('/fume/history', { params: paramsBefore })
-          .then((result) => {
-            this.beforeData = result.data.data;
-          });
-
-        // 璇锋眰鍚庡崐娈�
-        axiosInstanceInstance
-          .get('/fume/history', { params: paramsAfter })
-          .then((result) => {
-            this.afterData = result.data.data;
-          });
-
-        //鐢╪ull濉厖涓紓甯告棤鏁版嵁鐨勬椂闂�
-        //鐩稿樊鍑犱釜10鍒嗛挓
-        const TenMinuteNum = this.diffTenMinutesNum(
-          this.abnormalBt,
-          this.abnormalEt
-        );
-        //淇濆瓨绌哄��
-        let tempArr = [];
-        for (let i = 0; i < TenMinuteNum; i++) {
-          tempArr.push(null);
-        }
-        console.log('濉厖鏁扮粍涓猴細', tempArr);
-
-        //鍚堝苟鏁扮粍
-        setTimeout(() => {
-          this.allExceptionTimeData = [
-            ...this.beforeData,
-            ...tempArr,
-            ...this.afterData
-          ];
-          console.log('鍚堝苟鍚庢暟缁勪负', this.allExceptionTimeData);
-          //灞曠ず鍥惧舰
-          // x杞存棩鏈熸椂闂�
-          let dateList = [];
-          // y杞� 瓒呮爣娌圭儫娴撳害
-          let fumeExceeding = [];
-          for (let i = 0; i < this.allExceptionTimeData.length; i++) {
-            if (this.allExceptionTimeData[i] == null) {
-              //x杞存棩鏈�
-              //鏃犳暟鎹椂锛� 涓哄墠闈㈡椂闂寸偣澧炲姞10鍒嗛挓
-              dateList.push(
-                dayjs(dateList[dateList.length - 1])
-                  .add(10, 'minute')
-                  .format('YYYY-MM-DD HH:mm:ss')
-              );
-              // 瓒呮爣娌圭儫娴撳害
-              fumeExceeding.push(null);
-            } else {
-              //x杞存棩鏈�
-              dateList.push(this.allExceptionTimeData[i].mvDataTime);
-              // 瓒呮爣娌圭儫娴撳害
-              fumeExceeding.push(
-                this.allExceptionTimeData[i].mvFumeConcentration2
-              );
-            }
-          }
-          console.log('x:', dateList);
-          console.log('fume:', fumeExceeding);
-
-          //灞曠ず鎶樼嚎鍥�
-          this.chart = null;
-          this.linechart(
-            dateList,
-            this.abnormalBt,
-            this.abnormalEt,
-            fumeExceeding
-          );
-        }, 500);
-
-        // ----------------------------------------
-      }
-      // 娌圭儫娴撳害瓒呮爣鏃剁殑鎶樼嚎鍥�
-      else {
-        // // 娓呯┖锛岃鏃犳暟鎹潯鏁伴殣钘忥紝浣垮巻鍙叉暟鎹殑鏍囩鏉℃暟鏄剧ず鍑烘潵
-        // this.abnormalTimeTenMinute = []
-        this.isAbnormal = false;
-        // x杞存棩鏈熸椂闂�
-        let dateList = [];
-        // y杞� 瓒呮爣娌圭儫娴撳害
-        let fumeExceeding = [];
-        this.exceedingData.forEach((item) => {
-          //x杞存棩鏈�
-          dateList.push(item.mvDataTime);
-          // 瓒呮爣娌圭儫娴撳害
-          fumeExceeding.push(item.mvFumeConcentration2);
-        });
-        // // 瀛樻斁璇ユ椂闂存姣忛殧鍗佸垎閽熶竴娆$殑鏃堕棿鐐�
-        // const xAxisData = [];
-        // const xAxisData1 = [];
-        let beginTime = new Date(dateList[0]);
-        const endTime = new Date(dateList[dateList.length - 1]);
-
-        // 寰�鍓�30鍒嗛挓
-        const before30MinBegin = dayjs(beginTime)
-          .subtract(30, 'minute')
-          .format('YYYY-MM-DD HH:mm:ss');
-        const before10MinBegin = dayjs(beginTime)
-          .subtract(10, 'minute')
-          .format('YYYY-MM-DD HH:mm:ss');
-
-        // 寰�鍚�40鍒嗛挓
-        const after30MinEnd = dayjs(endTime)
-          .add(30, 'minute')
-          .format('YYYY-MM-DD HH:mm:ss');
-        const after10MinEnd = dayjs(endTime)
-          .add(10, 'minute')
-          .format('YYYY-MM-DD HH:mm:ss');
-        console.log('鍓嶅悗鏃堕棿涓�', before30MinBegin, after30MinEnd);
-        let paramsBefore = {
-          devId: this.displayData[this.selectedRowIndex].devId,
-          beginTime: before30MinBegin,
-          endTime: before10MinBegin
-        };
-        let paramsAfter = {
-          devId: this.displayData[this.selectedRowIndex].devId,
-          beginTime: after10MinEnd,
-          endTime: after30MinEnd
-        };
-        // 璇锋眰鍓嶅崐娈�
-        axiosInstanceInstance
-          .get('/fume/history', { params: paramsBefore })
-          .then((result) => {
-            this.beforeData = result.data.data;
-          });
-        // 璇锋眰鍚庡崐娈�
-        axiosInstanceInstance
-          .get('/fume/history', { params: paramsAfter })
-          .then((result) => {
-            this.afterData = result.data.data;
-          });
-
-        setTimeout(() => {
-          console.log('璇锋眰鍚庣殑鏁版嵁涓�', this.beforeData, this.afterData);
-          this.allExceptionTimeData = [
-            ...this.beforeData,
-            ...this.exceedingData,
-            ...this.afterData
-          ];
-          // x杞存棩鏈熸椂闂�
-          let dateList1 = [];
-          // y杞� 瓒呮爣娌圭儫娴撳害
-          let fumeExceeding1 = [];
-          console.log('鎵�鏈夋暟鎹暱搴�', this.allExceptionTimeData.length);
-          console.log('鎵�鏈夋暟鎹�', this.allExceptionTimeData);
-          for (let i = 0; i < this.allExceptionTimeData.length; i++) {
-            if (this.allExceptionTimeData[i] == null) {
-              //x杞存棩鏈�
-              //鏃犳暟鎹椂锛� 涓哄墠闈㈡椂闂寸偣澧炲姞10鍒嗛挓
-              dateList1.push(
-                dayjs(dateList1[dateList1.length - 1])
-                  .add(10, 'minute')
-                  .format('YYYY-MM-DD HH:mm:ss')
-              );
-              // 瓒呮爣娌圭儫娴撳害
-              fumeExceeding1.push(null);
-            } else {
-              //x杞存棩鏈�
-              dateList1.push(this.allExceptionTimeData[i].mvDataTime);
-              // 瓒呮爣娌圭儫娴撳害
-              fumeExceeding1.push(
-                this.allExceptionTimeData[i].mvFumeConcentration2
-              );
-            }
-          }
-
-          // 鎻愬彇鏃堕棿鍖洪棿鍐呯殑鏁版嵁绱㈠紩
-          var startIndex = dateList1.findIndex((item) => item === dateList[0]);
-          var endIndex = dateList1.findIndex(
-            (item) => item === dateList[dateList.length - 1]
-          );
-
-          this.chart = echarts.init(this.$refs.chart);
-          this.chart.setOption({
-            grid: {
-              left: '3%',
-              right: '4%',
-              bottom: '3%',
-              containLabel: true
-            },
-            tooltip: {},
-            // legend: {
-            //   data: ['娌圭儫瓒呮爣鏁版嵁']
-            // },
-            toolbox: {
-              // 宸ュ叿鏍�
-              feature: {
-                dataZoom: {
-                  // 鍖哄煙缂╂斁
-                  yAxisIndex: 'none'
-                },
-                // 淇濆瓨涓哄浘鐗�
-                saveAsImage: {}
-              }
-            },
-            xAxis: {
-              // type: 'time',
-              // 鍦ㄧ被鐩酱锛坱ype: 'category'锛変腑鏈夋晥銆�
-              data: dateList1,
-              name: '鏃堕棿'
-            },
-            yAxis: {
-              type: 'value',
-              axisLabel: {
-                show: true,
-                interval: 'auto'
-                // formatter:'{value} %'
-              },
-              name: 'mg/m鲁'
-            },
-            visualMap: {
-              show: false,
-              dimension: 0,
-              pieces: [
-                {
-                  lte: startIndex,
-                  color: 'green'
-                },
-                {
-                  gt: startIndex,
-                  lte: endIndex,
-                  color: 'red'
-                },
-                {
-                  gt: endIndex,
-                  lte: dateList1.length - 1,
-                  color: 'green'
-                }
-              ]
-            },
-            series: [
-              {
-                name: '娌圭儫瓒呮爣鏁版嵁',
-                type: 'line',
-                data: fumeExceeding1,
-
-                // markArea: {
-                //   itemStyle: {
-                //     color: 'rgba(255, 173, 177, 0.4)'
-                //   },
-                //   data: [
-                //     [
-                //       {
-                //         name: '娴撳害瓒呮爣',
-                //         xAxis: dateList[0]
-                //       },
-                //       {
-                //         xAxis: dateList[dateList.length - 1]
-                //       }
-                //     ]
-                //   ]
-                // },
-                markLine: {
-                  symbol: 'none',
-                  itemStyle: {
-                    // 鍩虹嚎鍏叡鏍峰紡
-                    normal: {
-                      lineStyle: {
-                        // show:false,
-                        // 'solid'瀹炵嚎锛�'dashed'铏氱嚎锛�'dotted'鐐圭嚎
-                        type: 'dashed'
-                      },
-                      label: {
-                        show: true,
-                        position: 'end',
-                        formatter: '{b}'
-                      }
+          yAxis: {
+            type: 'value',
+            name: 'mg/m鲁',
+          },
+          series: [
+            {
+              name: '娌圭儫娴撳害',
+              type: 'line',
+              data: yData.map((item) => {
+                if (item >= 1) {
+                  return {
+                    value: item,
+                    itemStyle: {
+                      color: 'red'
                     }
-                  },
-                  data: [
+                  };
+                }
+                return item;
+              }),
+              // 鍙樻崲鎸囧畾鏃堕棿鍖洪棿鐨勮儗鏅鑹�
+              markArea: {
+                itemStyle: {
+                  color: 'rgba(255, 173, 177, 0.4)'
+                },
+                data: [
+                  [
                     {
-                      name: '棰勮',
-                      type: 'average',
-                      yAxis: 1,
-                      lineStyle: {
-                        // color: '#ff0000'
-                        color: 'red'
-                      }
+                      name: '瓒呮爣鏃堕棿娈�',
+                      xAxis: exceptionBeginTime,
+                    },
+                    {
+                      xAxis: exceptionEndTime,
                     }
                   ]
-                }
+                ]
+              },
+              markLine: {
+                symbol: 'none',
+                itemStyle: {
+                  // 鍩虹嚎鍏叡鏍峰紡
+                  normal: {
+                    lineStyle: {
+                      type: 'dashed'
+                    },
+                    label: {
+                      show: true,
+                      position: 'end',
+                      formatter: '{b}'
+                    }
+                  }
+                },
+                data: [
+                  {
+                    name: '瓒呮爣',
+                    type: 'average',
+                    yAxis: 1,
+                    lineStyle: {
+                      // color: '#ff0000'
+                      color: 'red'
+                    }
+                  }
+                ]
+              }
+            }
+          ],
+          // 鎸囧畾鏃堕棿鍖洪棿鐨勭嚎娈靛彉棰滆壊
+          visualMap: {
+            show: false,
+            dimension: 0,
+            pieces: [
+              {
+                lte: beginIndex,
+                color: 'green'
+              },
+              {
+                gt: beginIndex,
+                lte: endIndex,
+                color: 'red'
+              },
+              {
+                gt: endIndex,
+                lte: xData.length - 1,
+                color: 'green'
               }
             ]
-          });
-        }, 500);
+          }
+        };
+      }
+      // 渚涚數寮傚父鍜屾帀绾�
+      else if (exceptionCategory == 1) {
+        this.option = {
+          tooltip: {},
+        toolbox: {
+          // 宸ュ叿鏍�
+          feature: {
+            // dataZoom: {
+            //   // 鍖哄煙缂╂斁
+            //   yAxisIndex: 'none'
+            // },
+            // 淇濆瓨涓哄浘鐗�
+            saveAsImage: {}
+          }
+        },
+          xAxis: {
+            type: 'category',
+            data: xData,
+            name: '鏃堕棿',
+            axisLabel: {
+              formatter: function (value) {
+                return value.slice(11, -3);
+              }
+            }
+          },
+          yAxis: {
+            type: 'value',
+            name: 'mg/m鲁'
+          },
+          series: [
+            {
+              name: '娌圭儫鏁版嵁',
+              type: 'line',
+              data: yData,
+              markLine: {
+                silent: true,
+                data: [
+                  // 鏍囨敞鏃犳暟鎹椂闂存鐨勬晥鏋滐紝灏嗚繖涓椂闂存鐨勬暟杞撮儴鍒嗗彉涓虹孩鑹�
+                  {
+                    name: '鏃犳暟鎹�',
+                    xAxis: exceptionBeginTime
+                  },
+                  {
+                    xAxis: exceptionEndTime
+                  }
+                ],
+                lineStyle: {
+                  color: 'red'
+                }
+              }
+            }
+          ]
+        };
       }
     },
+
+
+    // 鍔熻兘锛氱偣鍑� 鈥樻煡鐪嬭鎯呪�欙紝 鈥樹笅涓�鏉♀�欐寜閽椂浼� 鍏堥�昏緫璁$畻銆傛渶鍚庡睍绀哄浘褰�
+    drawChartTest() {
+      this.beforeData = []
+      this.afterData= []
+      this.allExceptionTimeData = []
+      //寮傚父鐨勫紑濮嬫椂闂� 缁撴潫鏃堕棿
+      let exceptionBeginTime =this.rowBeginTime
+      let exceptionEndTime = this.rowEndTime
+
+      // beforeAndAfterTime[0]:鍓�30鍒嗛挓鐨勬椂闂寸偣
+      // beforeAndAfterTime[1]:鍚�10鍒嗛挓鐨勬椂闂寸偣
+      // beforeAndAfterTime[2]:鍚�40鍒嗛挓鐨勬椂闂寸偣
+      let beforeAndAfterTime = this.before30AndAfter40(
+        exceptionBeginTime,
+        exceptionEndTime
+      );
+
+      // 鏋勯�犲紓甯告椂闂村墠鐨勫尯闂存暟鎹姹傚弬鏁�
+      let paramsBefore = this.requestGetParms(
+        this.displayData[this.selectedRowIndex].devId,
+        beforeAndAfterTime[0],
+        this.displayData[this.selectedRowIndex].beginTime
+      );
+
+      // 鏋勯�犲紓甯告椂闂村悗鐨勫尯闂存暟鎹姹傚弬鏁�
+      let paramsAfter = this.requestGetParms(
+        this.displayData[this.selectedRowIndex].devId,
+        beforeAndAfterTime[1],
+        beforeAndAfterTime[2]
+      );
+
+      // 璇锋眰鍓嶅崐娈�
+      axiosInstanceInstance
+        .get('/fume/history', { params: paramsBefore })
+        .then((result1) => {
+          this.beforeData = result1.data.data;
+          console.log('beforeData:',this.beforeData);
+          // 璇锋眰鍚庡崐娈�
+          axiosInstanceInstance
+            .get('/fume/history', { params: paramsAfter })
+            .then((result2) => {
+              this.afterData = result2.data.data;
+              console.log('afterData:',this.afterData);
+              //淇濆瓨寮傚父鍖洪棿鐨勫��
+              let tempArr = [];
+              // 淇濆瓨寮傚父鍖洪棿鍓嶅悗鐨勫��
+              let before = [];
+              let after = [];
+
+              // 鍒ゆ柇鏄惁鏄緵鐢靛紓甯告垨鎺夌嚎
+              if (
+                this.rowExceptionType === '1' ||
+                this.rowExceptionType === '2'
+              ) {
+                // 閲嶆瀯琛ㄦ牸 缂哄け寮傚父鏁版嵁鑷姩濉厖
+                this.setExceptionData();
+
+                //鐩稿樊鍑犱釜10鍒嗛挓
+                const TenMinuteNum = this.diffTenMinutesNum(
+                  exceptionBeginTime,
+                  exceptionEndTime
+                );
+                //鐢╪ull濉厖涓紓甯告棤鏁版嵁鐨勬椂闂�
+                for (let i = 0; i < TenMinuteNum; i++) {
+                  tempArr.push(null);
+                }
+                before = this.shallowCopyList(this.beforeData);
+
+                after = this.shallowCopyList(this.afterData);
+                // after = this.afterData
+                console.log('after:',after);
+              } 
+              // 瓒呮爣
+              else {
+                let beforeTemp = this.removeLastItemOfBeforeData(this.beforeData)
+                // 鍓嶅悗鍖洪棿鍙樉绀鸿窛绂昏秴鏍囧尯闂存椂闂存渶杩戠殑娴撳害灏忎簬1鐨勬椂闂寸偣
+                for (let i = beforeTemp.length - 1; i >= 0; i--) {
+                  if (beforeTemp[i].mvFumeConcentration2 >= 1) {
+                    break;
+                  }
+                  if (beforeTemp[i].mvFumeConcentration2 < 1) {
+                    before.unshift(this.beforeData[i]);
+                  }
+                }
+
+                for (let i = 0; i<this.afterData.length; i++) {
+                  if (this.afterData[i].mvFumeConcentration2 >= 1) {
+                    break;
+                  }
+                  if (this.afterData[i].mvFumeConcentration2 < 1) {
+                    after.unshift(this.afterData[i]);
+                  }
+                }
+                tempArr = this.shallowCopyList(this.exceedingData);
+              }
+
+              // 灏嗗墠鍚庡尯闂存暟鎹� 涓� 寮傚父鍖洪棿鏁版嵁 鍚堝苟
+              this.allExceptionTimeData = [...before, ...tempArr, ...after];
+              console.log('缁勫悎鏁版嵁锛�',this.allExceptionTimeData);
+              // x杞存棩鏈熸椂闂�
+              let dateList = [];
+              // y杞� 瓒呮爣娌圭儫娴撳害
+              let fumeExceeding = [];
+              let timeAndValue = {};
+
+              // 浠庢坊鍔犱簡棣栦綅鍖洪棿鐨勫紑濮嬪拰缁撴潫鏃堕棿杩涜閬嶅巻 淇濊瘉鏃堕棿浠�10鍒嗛挓涓洪棿闅�
+              timeAndValue = this.keepContinuousByEachTenMinutes(
+                beforeAndAfterTime[0],
+                beforeAndAfterTime[2],
+                this.allExceptionTimeData
+              );
+
+              dateList = timeAndValue['xAxis'];
+              fumeExceeding = timeAndValue['yAxis'];
+              
+              console.log('dateList:',dateList);
+              console.log('fumeExceeding:',fumeExceeding);
+
+              // 鎻愬彇寮傚父璧峰鏃堕棿鐐瑰湪鏁翠釜鍖洪棿鍐呯殑鏁版嵁绱㈠紩
+              let startIndex = dateList.findIndex(
+                (item) => item === exceptionBeginTime
+              );
+              let endIndex = dateList.findIndex(
+                (item) => item === exceptionEndTime
+              );
+
+              // 渚涚數寮傚父鍜屾帀绾挎儏鍐� 瓒呮爣鎯呭喌
+              if (
+                this.rowExceptionType === '1' ||
+                this.rowExceptionType === '2'
+              ) {
+                this.setOption(
+                  dateList,
+                  fumeExceeding,
+                  1,
+                  exceptionBeginTime,
+                  exceptionEndTime,
+                  startIndex,
+                  endIndex
+                );
+              } else {
+                // 瓒呮爣鎯呭喌
+                this.setOption(
+                  dateList,
+                  fumeExceeding,
+                  0,
+                  exceptionBeginTime,
+                  exceptionEndTime,
+                  startIndex,
+                  endIndex
+                );
+              }
+            });
+        });
+    },
+
     getDeviceInfo() {
       // 绾ц仈涓嬫媺妗嗘暟鎹� 浠庢帴鍙d腑鍔ㄦ�佽幏鍙�
       axiosInstanceInstance.get('/fume/device').then((result) => {
@@ -1340,34 +1471,6 @@
       XLSX.writeFile(wb, '鍒嗘瀽鏁版嵁.xlsx');
     },
 
-    // 鏌ヨ鍏ㄩ儴寮傚父琛ㄦ暟鎹�
-    getAllData() {
-      this.isNoData = false;
-      this.loading = true;
-      axiosInstanceInstance.get('/fume/abnormal').then((result) => {
-        this.abnormalData = result.data.data;
-        this.loading = false;
-        this.total = this.abnormalData.length;
-        if (result.data.data.length == 0) {
-          alert('璇ユ椂娈垫棤鏁版嵁');
-          this.isNoData = true;
-          return;
-        }
-        this.isNoData = false;
-        // 榛樿鏄剧ず绗竴椤�
-        this.handleCurrentChange(1);
-      });
-
-      // 寰楀埌寮傚父琛ㄧ殑鏈�鏃╁拰鏈�鏅氭椂闂�
-      setTimeout(() => {
-        axiosInstanceInstance.get('/fume/time').then((result) => {
-          this.beginTime = result.data.data[0].beginTime;
-          this.endTime = result.data.data[0].endTime;
-          // console.log('be,end',this.beginTime,this.endTime);
-        });
-      }, 500);
-    },
-
     getAbnormalDataByClick(val) {
       this.abnormalData = val;
       this.total = this.abnormalData.length;
@@ -1414,19 +1517,11 @@
           this.exception2 = result.data.data;
         });
     },
-    
+
     // 椤甸潰鍔犺浇鏃堕粯璁ゅ睍绀�7澶╁紓甯歌〃鏁版嵁
     getRecentSevenDays() {
       // 缁欑骇鑱旈�夋嫨鍣ㄨ缃粯璁ょ殑閫夋嫨椤�
       this.devId = ['浠樺皬濮愬湪鎴愰兘', 'qinshi_31010320210010'];
-      // 缁欐椂闂撮�夋嫨鍣ㄨ缃粯璁ゆ椂闂�
-      // this.beginTime = dayjs()
-      //   .subtract(3, 'week')
-      //   .format('YYYY-MM-DD HH:mm:ss');
-      // this.endTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
-
-      // this.currentDateTime = dayjs().format('YYYY-MM-DD HH:mm:ss')
-      // this.oneWeekAgoDateTime = dayjs().subtract(1,'week').format('YYYY-MM-DD HH:mm:ss')
       console.log(this.currentDateTime, this.oneWeekAgoDateTime);
       let params = {};
       params['beginTime'] = this.beginTime;
@@ -1435,7 +1530,7 @@
         .get('/fume/abnormalone', { params: params })
         .then((response) => {
           if (response.data.data.length == 0) {
-            alert('璇ユ椂娈垫棤鏁版嵁');
+            ElMessage('璇ユ椂娈垫棤鏁版嵁');
             return;
           }
           // 淇濆瓨杩斿洖鐨�
@@ -1447,23 +1542,21 @@
           this.loading = false;
         });
     }
-  },
- 
+  }
 };
 </script>
 
 <style scoped>
-
-.exception-root-container {
+/* .exception-root-container {
   margin: 20px;
   padding: 10px;
-  border: 1px; 
+  border: 1px;
   height: 615px;
-  /* min-height: 80vh;
-  min-width: 100vh; */
-}
+
+} */
 .header-container {
   display: flex;
+  margin-left: 20px;
   /* flex-wrap: wrap;
     align-items: center; */
 }
@@ -1515,6 +1608,7 @@
   color: var(--el-color-primary);
 }
 .collapse-header {
+  margin-left: 5px;
   font-size: 18px;
 }
 .collapse-header-text {
@@ -1527,11 +1621,10 @@
 .box-card-label {
   font-size: 14px;
   white-space: nowrap;
-  overflow-x: auto;
+  /* overflow-x: auto; */
 }
 :deep().el-card {
   border-radius: 9px;
-  
 }
 /* 鈥樻煡鐪嬭鎯呪�� 鐨勫脊鍑烘楂樺害璋冩暣 */
 :deep().el-dialog {
@@ -1540,15 +1633,18 @@
   overflow-y: hidden;
   border-radius: 9px;
 }
+.table-page {
+  margin-left: 20px;
+}
 :deep().table-page .el-card__body {
-  padding: 0px;
+  /* padding: 0px; */
 }
 .table-text {
   font-size: 18px;
-  margin-bottom: 10px;
+  margin: 5px 0px 10px 20px;
 }
 .text-blank {
-  margin-left: 10px;
+  margin-right: 10px;
 }
 /* 搴楅摵鍚嶉�夋嫨鏂囨湰 */
 .describe-info {
@@ -1563,7 +1659,6 @@
   font-weight: bold;
 }
 
-
 /* 寮傚父琛ㄦ牸涓嬫爣绛句腑鐨勬暟缁� */
 .table-line-num {
   font-weight: bold;
@@ -1572,22 +1667,24 @@
 .button_info.el-button_inner {
   text-align: left;
 }
-:deep().el-collapse .el-collapse-item__content{
+.el-collapse {
+  margin-left: 20px;
+}
+:deep().el-collapse .el-collapse-item__content {
   padding-bottom: 0px;
 }
 .box-card {
   height: 190px;
 }
 :deep().box-card .el-card__body {
-  padding: 5px;
+  /* padding: 5px; */
 }
 .sub-box-card {
   height: 100px;
-  overflow-y: auto;
   border: 0px;
 }
 :deep().sub-box-card .el-card__body {
-  padding: 0px;
+  /* padding: 0px; */
 }
 .mx-1 {
   margin-bottom: 0px;

--
Gitblit v1.9.3