Browse Source

[Mod 0000] 传感器新增echarts图表

hongrunxia 20 hours ago
parent
commit
440639512d

+ 1 - 1
package.json

@@ -92,7 +92,7 @@
     "vxe-table": "4.5.12",
     "vxe-table-plugin-antd": "3.1.0",
     "xe-utils": "3.5.13",
-    "xgplayer": "^3.0.14",
+    "xgplayer": "^3.0.23",
     "xgplayer-flv": "^3.0.14",
     "xgplayer-hls": "^3.0.14",
     "xgplayer-mp4": "^3.0.21",

File diff suppressed because it is too large
+ 323 - 344
pnpm-lock.yaml


+ 1 - 1
public/js/config.js

@@ -20,5 +20,5 @@ const VENT_PARAM = {
   gasControlMock: true, // 项目关于瓦斯自主调控,是否模拟演示, true: 真实调控; false 模拟调控
   historyIsMultiple: false, // 设备历史数据是否支持多选
   isShowQy: true, // 是否显示气压
-  is2DModel: true, // 是否尽最大可能使用2D模型
+  is2DModel: false, // 是否尽最大可能使用2D模型
 }

BIN
src/assets/images/vent/camera_bg.png


+ 4 - 2
src/design/vent/comment.less

@@ -245,14 +245,16 @@
   height: 100%;
   // height: 208px;
   position: relative;
-
+  display: flex;
+  flex-direction: column;
   .liveVideo {
     pointer-events: auto !important;
     width: 460px !important;
-    height: 305px !important;
+    height: 269px !important;
     padding: 10px;
     background: var(--image-camera_bg);
     background-size: cover;
+    align-self: flex-end;
     // .player {
     //     width: 314px;
     //     height: 208px;

+ 20 - 14
src/views/vent/home/colliery/index.vue

@@ -15,15 +15,15 @@
         <div class="left-content">
           <!-- 主通风机 -->
           <div class="monitor-box">
-            <mainMonitor :maindata="mainList" @goDetail="goDetail" />
+            <mainMonitor :maindata="mainList" @go-detail="goDetail" />
           </div>
           <!-- 局部通风机 -->
           <div class="monitor-box monitor-box1">
-            <fanMonitor @goDetail="goDetail" :fandata="fanLocalList" />
+            <fanMonitor @go-detail="goDetail" :fandata="fanLocalList" />
           </div>
           <!-- 通风设备远程控制 -->
           <div class="monitor-box">
-            <windDevice :devicedata="deviceData" @goDetail="goDetail" />
+            <windDevice :devicedata="deviceData" @go-detail="goDetail" />
           </div>
         </div>
         <div class="center-content">
@@ -31,7 +31,7 @@
           <div class="three-box">
             <div class="three-nav" v-if="!hasPermission('monitor:show')">
               <template v-for="(item, index) in navList" :key="index">
-                <div class="nav-item" v-if="(item.valList && item.valList.length > 0) || item.val">
+                <div class="nav-item" v-if="!item.disabled && ((item.valList && item.valList.length > 0) || item.val)">
                   <div class="item-label">{{ item.name }}</div>
                   <div class="item-value">
                     <template v-if="item.isShow">
@@ -57,27 +57,33 @@
           </div>
           <!-- 风量监测 -->
           <div class="wind-box">
-            <windMonitor :flList="flList" @goDetail="goDetail" />
+            <windMonitor :flList="flList" @go-detail="goDetail" />
           </div>
         </div>
         <div class="right-content">
           <!-- 关键通风路线 -->
           <div class="monitor-box">
-            <windLine :lineList="lineList" @goDetail="goDetail" />
+            <windLine :lineList="lineList" @go-detail="goDetail" />
           </div>
           <!-- 工作面智能管控 -->
           <div class="monitor-box monitor-box1">
-            <workMonitor :workList="workList" @goDetail="goDetail" />
+            <workMonitor :workList="workList" @go-detail="goDetail" />
           </div>
           <!-- 设备预警 -->
           <div class="monitor-box">
-            <deviceWarn :warnData="warnData" @goDetail="goDetail" />
+            <deviceWarn :warnData="warnData" @go-detail="goDetail" />
           </div>
         </div>
       </div>
     </div>
   </div>
-  <Network ref="NetworkRef" v-if="pageType == 'timesolution'" :pageResult="pageResult" @changePageType="changePageType" style="position: absolute" />
+  <Network
+    ref="NetworkRef"
+    v-if="pageType == 'timesolution'"
+    :pageResult="pageResult"
+    @change-page-type="changePageType"
+    style="position: absolute"
+  />
   <VentModal
     v-if="pageType == 'model3D' || pageType == 'timesolution'"
     ref="fullModalRef"
@@ -123,13 +129,13 @@
   let warnData = ref<any>([]); //预警数据
   let deviceData = ref<any>({}); //设备监测数据
   let navList = reactive([
-    { name: '总回风量(m³/min)', isShow: true, valList: [] },
-    { name: '总进风量(m³/min)', isShow: true, valList: [] },
-    { name: '计划风量(m³/min)', isShow: true, valList: [] },
+    { name: '总回风量(m³/min)', isShow: true, valList: [], disabled: false },
+    { name: '总进风量(m³/min)', isShow: true, valList: [], disabled: false },
+    { name: '计划风量(m³/min)', isShow: true, valList: [], disabled: true },
     // { name: '有效风量(m³/min)', isShow: true, valList: [] },
     // { name: '等积孔(m²)', isShow: true, valList: [] },
-    { name: '有效风量率', isShow: false, val: '0%' },
-    { name: '外部漏风率', isShow: false, val: 0 },
+    { name: '有效风量率', isShow: false, val: '0%', disabled: false },
+    { name: '外部漏风率', isShow: false, val: 0, disabled: false },
   ]);
   let nowTimeYear = ref('');
   let nowTimeWeek = ref('');

+ 4 - 4
src/views/vent/monitorManager/alarmMonitor/common.data.ts

@@ -184,16 +184,16 @@ export function getMonitorFlag() {
     case 'sdmtjthlgmk': //哈拉钩
       typeFlag = '2';
       return typeFlag;
-       case 'sdmtjtdltmk': //大柳塔
+    case 'sdmtjtdltmk': //大柳塔
       typeFlag = '2';
       return typeFlag;
-       case 'sdmtjtdltmkhjtj': //活鸡兔
+    case 'sdmtjtdltmkhjtj': //活鸡兔
       typeFlag = '2';
       return typeFlag;
-        case 'sdmtjtcctrk': //寸草塔
+    case 'sdmtjtcctrk': //寸草塔
       typeFlag = '2';
       return typeFlag;
-       case 'sdmtjtwlmlmk': //乌兰木伦
+    case 'sdmtjtwlmlmk': //乌兰木伦
       typeFlag = '2';
       return typeFlag;
     default:

+ 188 - 179
src/views/vent/monitorManager/alarmMonitor/common/top-area.vue

@@ -1,155 +1,166 @@
 <template>
-    <div class="topArea">
-
-        <div v-if="!activeIndex">
-            <div class="work-nav">
-                <div class="nav" v-for="(item, index) in statusD" :key="index">
-                    <div class="pic" v-if="item.imgSrc"></div>
-                    <div class="content" v-if="item.label && item.value">
-                        <span>{{ item.label }}</span>
-                        <span>{{ item.value }}</span>
-                    </div>
-                    <div :style="{ color: item.text == '正常' ? 'var(--vent-table-action-link)' : '#ff2313' }"
-                        style="width: 100%; padding: 0px 10px; text-align: center; font-weight: bold" v-if="item.text">
-                        {{ item.text }}
-                    </div>
-                    <div class="percent" v-if="item.list.length != 0">
-                        <div class="title">{{ item.label }}</div>
-                        <div class="value">
-                            <div class="content-box" v-for="(items, ind) in item.list" :key="ind">
-                                <span style="color: #b3b8cc">{{ `${items.label} :` }}</span>
-                                <span style="color: var(--vent-table-action-link); margin-left: 10px">{{ items.value
-                                    }}</span>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-            <div class="bot-area">
-                <div class="title-t">
-                    <div class="text-t">通风信息状态监测</div>
-                </div>
-                <div class="echart-boxd">
-                    <echartLine :echartDataGq="echartD" :maxY="maxY" :minY="minY" :echartDw="echartDw" />
-                </div>
+  <div class="topArea">
+    <div v-if="!activeIndex">
+      <div class="work-nav">
+        <div class="nav" v-for="(item, index) in statusD" :key="index">
+          <div class="pic" v-if="item.imgSrc"></div>
+          <div class="content" v-if="item.label && item.value">
+            <span>{{ item.label }}</span>
+            <span>{{ item.value }}</span>
+          </div>
+          <div
+            :style="{ color: item.text == '正常' ? 'var(--vent-table-action-link)' : '#ff2313' }"
+            style="width: 100%; padding: 0px 10px; text-align: center; font-weight: bold"
+            v-if="item.text"
+          >
+            {{ item.text }}
+          </div>
+          <div class="percent" v-if="item.list.length != 0">
+            <div class="title">{{ item.label }}</div>
+            <div class="value">
+              <div class="content-box" v-for="(items, ind) in item.list" :key="ind">
+                <span style="color: #b3b8cc">{{ `${items.label} :` }}</span>
+                <span style="color: var(--vent-table-action-link); margin-left: 10px">{{ items.value }}</span>
+              </div>
             </div>
+          </div>
         </div>
-        <div v-else>
-            <MonitorTable ref="tunMonitorRef" :columns="ventTunColumns" :dataSource="ventTunDataSource"
-                :isShowSelect="false" :scroll="{ y: 300 }" title="巷道阻力分析" />
+      </div>
+      <div class="bot-area">
+        <div class="title-t">
+          <div class="text-t">通风信息状态监测</div>
         </div>
-
+        <div class="echart-boxd">
+          <echartLine :echartDataGq="echartD" :maxY="maxY" :minY="minY" :echartDw="echartDw" />
+        </div>
+      </div>
     </div>
+    <div v-else>
+      <MonitorTable
+        ref="tunMonitorRef"
+        :columns="ventTunColumns"
+        :dataSource="ventTunDataSource"
+        :isShowSelect="false"
+        :scroll="{ y: 300 }"
+        title="巷道阻力分析"
+      />
+    </div>
+  </div>
 </template>
 
 <script setup lang="ts">
-import { ref, reactive, watch } from 'vue'
-import { ventTunColumns } from '../alarm.data';
-import MonitorTable from '../../comment/MonitorTable.vue';
-import echartLine from '../common/echartLine.vue';
-let props = defineProps({
+  import { ref, reactive, watch } from 'vue';
+  import { ventTunColumns } from '../alarm.data';
+  import MonitorTable from '../../comment/MonitorTable.vue';
+  import echartLine from '../common/echartLine.vue';
+  let props = defineProps({
     activeIndex: {
-        type: Number,
-        default: 0
+      type: Number,
+      default: 0,
     },
     statusData: {
-        type: Array,
-        default: () => {
-            return []
-        }
+      type: Array,
+      default: () => {
+        return [];
+      },
     },
-    echartData:{
-        type:Object,
-        default:()=>{
-            return {}
-        }
+    echartData: {
+      type: Object,
+      default: () => {
+        return {};
+      },
     },
-    maxY:{
-        type:Number,
-        default:0
+    maxY: {
+      type: Number,
+      default: 0,
     },
-    minY:{
-        type:Number,
-        default:0
+    minY: {
+      type: Number,
+      default: 0,
     },
-    ventTunDataSource:{
-        type:Array,
-        default:()=>{
-            return []
-        }
-    }
-})
-
-let statusD = ref<any[]>([])
-let echartD=reactive({})
-let echartDw = ref('(m³/min)');
-
-
-
-watch(() => props.statusData, (newV, oldV) => {
-    statusD.value = newV
-}, { immediate: true })
+    ventTunDataSource: {
+      type: Array,
+      default: () => {
+        return [];
+      },
+    },
+  });
 
-watch(()=>props.echartData,(newE,oldE)=>{
-    console.log(newE,'999')
-    echartD=Object.assign({},newE)
-},{immediate:true})
+  let statusD = ref<any[]>([]);
+  let echartD = reactive({});
+  let echartDw = ref('(m³/min)');
 
+  watch(
+    () => props.statusData,
+    (newV, oldV) => {
+      statusD.value = newV;
+    },
+    { immediate: true }
+  );
+
+  watch(
+    () => props.echartData,
+    (newE, oldE) => {
+      console.log(newE, '999');
+      echartD = Object.assign({}, newE);
+    },
+    { immediate: true }
+  );
 </script>
 
 <style lang="less" scoped>
-.topArea {
+  .topArea {
     position: relative;
     width: 100%;
     height: 100%;
 
     .work-nav {
-        height: 30%;
-        width: 100%;
-        background: var(--image-bj1) no-repeat center;
-        background-size: 100% 100%;
+      height: 30%;
+      width: 100%;
+      background: var(--image-bj1) no-repeat center;
+      background-size: 100% 100%;
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      border-bottom: 3px solid;
+      border-image: var(--border-image-1) 1 1 1;
+
+      .nav {
         display: flex;
-        justify-content: space-between;
+        justify-content: center;
         align-items: center;
-        border-bottom: 3px solid;
-        border-image: var(--border-image-1) 1 1 1;
-
-        .nav {
-            display: flex;
-            justify-content: center;
-            align-items: center;
 
-            &:nth-child(1) {
-                flex: 1;
-                height: 100%;
-                border-right: 2px solid;
-                border-image: var(--border-image-2) 1 1 1;
-            }
+        &:nth-child(1) {
+          flex: 1;
+          height: 100%;
+          border-right: 2px solid;
+          border-image: var(--border-image-2) 1 1 1;
+        }
 
-            &:nth-child(2) {
-                flex: 1;
-                height: 100%;
-                border-right: 2px solid;
-                border-image: var(--border-image-2) 1 1 1;
-            }
+        &:nth-child(2) {
+          flex: 1;
+          height: 100%;
+          border-right: 2px solid;
+          border-image: var(--border-image-2) 1 1 1;
+        }
 
-            &:nth-child(3) {
-                flex: 1;
-                height: 100%;
-                border-right: 2px solid;
-                border-image: var(--border-image-2) 1 1 1;
-            }
+        &:nth-child(3) {
+          flex: 1;
+          height: 100%;
+          border-right: 2px solid;
+          border-image: var(--border-image-2) 1 1 1;
+        }
 
-            &:nth-child(4) {
-                flex: 1;
-                color: #b3b8cc;
-                font-size: 16px;
-                height: 100%;
-                border-right: 2px solid;
-                border-image: var(--border-image-2) 1 1 1;
-            }
+        &:nth-child(4) {
+          flex: 1;
+          color: #b3b8cc;
+          font-size: 16px;
+          height: 100%;
+          border-right: 2px solid;
+          border-image: var(--border-image-2) 1 1 1;
+        }
 
-            /**
+        /**
             &:nth-child(5) {
               flex: 1.4;
               height: 100%;
@@ -182,78 +193,76 @@ watch(()=>props.echartData,(newE,oldE)=>{
               }
             }*/
 
-            .pic {
-                width: 90px;
-                height: 90px;
-            }
+        .pic {
+          width: 90px;
+          height: 90px;
+        }
 
-            .content {
-                height: 82%;
-                margin-left: 15px;
-                color: var(--vent-font-color);
-                display: flex;
-                flex-direction: column;
-                justify-content: space-around;
+        .content {
+          height: 82%;
+          margin-left: 15px;
+          color: var(--vent-font-color);
+          display: flex;
+          flex-direction: column;
+          justify-content: space-around;
 
-                span {
-                    font-size: 14px;
+          span {
+            font-size: 14px;
 
-                    &:nth-child(1) {
-                        padding: 5px 0px;
-                        color: #b3b8cc;
-                    }
+            &:nth-child(1) {
+              padding: 5px 0px;
+              color: #b3b8cc;
+            }
 
-                    &:nth-child(2) {
-                        font-family: 'douyuFont';
-                        font-size: 16px;
-                        color: var(--vent-table-action-link);
-                    }
-                }
+            &:nth-child(2) {
+              font-family: 'douyuFont';
+              font-size: 16px;
+              color: var(--vent-table-action-link);
             }
+          }
         }
+      }
 
-        .nav:nth-child(1) .pic {
-            background: var(--image-jinfengliang) no-repeat center;
-            background-size: 100% 100%;
-        }
+      .nav:nth-child(1) .pic {
+        background: var(--image-jinfengliang) no-repeat center;
+        background-size: 100% 100%;
+      }
 
-        .nav:nth-child(2) .pic {
-            background: var(--image-huifengliang) no-repeat center;
-            background-size: 100% 100%;
-        }
+      .nav:nth-child(2) .pic {
+        background: var(--image-huifengliang) no-repeat center;
+        background-size: 100% 100%;
+      }
 
-        .nav:nth-child(3) .pic {
-            background: var(--image-xufengliang) no-repeat center;
-            background-size: 100% 100%;
-        }
+      .nav:nth-child(3) .pic {
+        background: var(--image-xufengliang) no-repeat center;
+        background-size: 100% 100%;
+      }
     }
 
     .bot-area {
-        height: calc(100% - 30% - 3px);
-        padding: 10px;
-        background: var(--image-bj1) no-repeat;
-        background-size: 100% 100%;
-        box-sizing: border-box;
-
-        .title-t {
-            height: 30px;
-            display: flex;
-            justify-content: space-between;
-            align-items: center;
+      height: calc(100% - 30% - 3px);
+      padding: 10px;
+      background: var(--image-bj1) no-repeat;
+      background-size: 100% 100%;
+      box-sizing: border-box;
+
+      .title-t {
+        height: 30px;
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
 
-            .text-t {
-                font-family: 'douyuFont';
-                font-size: 14px;
-                color: var(--vent-font-color);
-            }
+        .text-t {
+          font-family: 'douyuFont';
+          font-size: 14px;
+          color: var(--vent-font-color);
         }
+      }
 
-        .echart-boxd {
-            width: 100%;
-            height: 250px;
-        }
+      .echart-boxd {
+        width: 100%;
+        height: 250px;
+      }
     }
-
-
-}
-</style>
+  }
+</style>

+ 473 - 464
src/views/vent/monitorManager/alarmMonitor/warn/ventilateWarn.vue

@@ -6,21 +6,25 @@
       <img v-else src="@/assets/images/vent/report-toggle.png" alt="" />
     </div>
     <div class="ventilate-top">
-      <a-button v-if="!hasPermission('ventilateWarn:return')" preIcon="ant-design:rollback-outlined" type="text"
-        size="small" style="position: absolute; left: 15px; top: 15px; color: var(--vent-font-color)" @click="getBack">
+      <a-button
+        v-if="!hasPermission('ventilateWarn:return')"
+        preIcon="ant-design:rollback-outlined"
+        type="text"
+        size="small"
+        style="position: absolute; left: 15px; top: 15px; color: var(--vent-font-color)"
+        @click="getBack"
+      >
         返回
       </a-button>
       <div class="alarm-menu">
         <div class="type-btn">
-          <div :class="activeIndex == index ? 'btn1' : 'btn'" v-for="(item, index) in typeMenuListTf" :key="index"
-            @click="btnClick(index)">
+          <div :class="activeIndex == index ? 'btn1' : 'btn'" v-for="(item, index) in typeMenuListTf" :key="index" @click="btnClick(index)">
             {{ item.name }}
           </div>
         </div>
         <div class="card-btn">
           <div style="width: 100%; height: 100%" v-if="menuList.length">
-            <div :class="activeIndex1 == ind ? 'btn1' : 'btn'" v-for="(item, ind) in menuList" :key="ind"
-              @click="cardClick(ind, item)">
+            <div :class="activeIndex1 == ind ? 'btn1' : 'btn'" v-for="(item, ind) in menuList" :key="ind" @click="cardClick(ind, item)">
               <div class="text">{{ item.name }}</div>
               <div class="warn">{{ item.warn }}</div>
             </div>
@@ -33,8 +37,14 @@
       </div>
       <div class="ventilate-content">
         <a-spin :spinning="loading">
-          <TopArea :activeIndex="activeIndex" :statusData="ventilateTopList" :echartData="echartDataFc1"
-            :ventTunDataSource="ventTunDataSource" :maxY="maxY" :minY="minY"></TopArea>
+          <TopArea
+            :activeIndex="activeIndex"
+            :statusData="ventilateTopList"
+            :echartData="echartDataFc1"
+            :ventTunDataSource="ventTunDataSource"
+            :maxY="maxY"
+            :minY="minY"
+          />
         </a-spin>
       </div>
     </div>
@@ -47,522 +57,521 @@
 </template>
 
 <script setup lang="ts">
-import { ref, reactive, onMounted, onUnmounted, computed } from 'vue';
-import { useSystemSelect } from '/@/hooks/vent/useSystemSelect';
-import { usePermission } from '/@/hooks/web/usePermission';
-import { useGlobSetting } from '/@/hooks/setting';
-import { useRouter } from 'vue-router';
-import { sysTypeWarnList, sysWarn, getDevice } from '../common.api';
-import { ventilateTopList, typeMenuListTf, getMaxY, getMinY } from '../common.data';
-import CustomHeader from '/@/components/vent/customHeader.vue';
-import MeasurePoint from '../common/measurePoint.vue';
-import { realTimeNetCal, modalParam } from '../alarm.api';
-import TopArea from '../common/top-area.vue';
-
-//巷道阻力分析数据
-let hdData = reactive({
-  maxLevel: '',
-  address: '',
-});
-//通风选项激活索引
-let activeIndex = ref(0);
-let monitor = ref(true);
-let toggleData = reactive<any>({});
-const { hasPermission } = usePermission();
-const { options, optionValue, getSelectRow, getSysDataSource } = useSystemSelect('sys_surface_caimei'); // 参数为场景类型(设备类型管理中可以查询到)
-let router = useRouter();
-//左侧数据列表
-let menuList = reactive<any[]>([]);
-const ventTunDataSource = ref([]);
-//当前左侧激活菜单的索引
-let activeIndex1 = ref(0);
-let maxY = ref<any>(0);
-let minY = ref<any>(0)
-const loading = ref(false);
-
-//通风图表数据
-const echartDataFc1 = reactive<any>({
-  maxData: {
-    lengedData: '进风量',
-    data: [],
-  },
-  minData: {
-    lengedData: '回风量',
-    data: [],
-  },
-  aveValue: {
-    lengedData: '需风量',
-    data: [],
-  },
-  xData: [],
-});
-let cardListTf = ref<any[]>([]);
-const chartListTf = ref<any[]>([]);
-let showToggle = ref('report');
-
-// https获取监测数据
-let timer: null | NodeJS.Timeout = null;
-function getMonitor(flag?) {
-  timer = setTimeout(
-    async () => {
-      //获取左侧菜单数据
-      await getMenuList();
-      await getWindDeviceList();
-      getMonitor(false);
+  import { ref, reactive, onMounted, onUnmounted, computed } from 'vue';
+  import { useSystemSelect } from '/@/hooks/vent/useSystemSelect';
+  import { usePermission } from '/@/hooks/web/usePermission';
+  import { useGlobSetting } from '/@/hooks/setting';
+  import { useRouter } from 'vue-router';
+  import { sysTypeWarnList, sysWarn, getDevice } from '../common.api';
+  import { ventilateTopList, typeMenuListTf, getMaxY, getMinY } from '../common.data';
+  import CustomHeader from '/@/components/vent/customHeader.vue';
+  import MeasurePoint from '../common/measurePoint.vue';
+  import { realTimeNetCal, modalParam } from '../alarm.api';
+  import TopArea from '../common/top-area.vue';
+
+  //巷道阻力分析数据
+  let hdData = reactive({
+    maxLevel: '',
+    address: '',
+  });
+  //通风选项激活索引
+  let activeIndex = ref(0);
+  let monitor = ref(true);
+  let toggleData = reactive<any>({});
+  const { hasPermission } = usePermission();
+  const { options, optionValue, getSelectRow, getSysDataSource } = useSystemSelect('sys_surface_caimei'); // 参数为场景类型(设备类型管理中可以查询到)
+  let router = useRouter();
+  //左侧数据列表
+  let menuList = reactive<any[]>([]);
+  const ventTunDataSource = ref([]);
+  //当前左侧激活菜单的索引
+  let activeIndex1 = ref(0);
+  let maxY = ref<any>(0);
+  let minY = ref<any>(0);
+  const loading = ref(false);
+
+  //通风图表数据
+  const echartDataFc1 = reactive<any>({
+    maxData: {
+      lengedData: '进风量',
+      data: [],
     },
-    flag ? 0 : 1500
-  );
-}
-//获取巷道阻力分析数据
-let timer1: null | NodeJS.Timeout = null;
-function getMonitor1(flag?) {
-  timer1 = setTimeout(
-    async () => {
-      await getRealTimeNetData();
-      getMonitor1(false);
+    minData: {
+      lengedData: '回风量',
+      data: [],
     },
-    flag ? 0 : 30000
-  );
-}
-
-//返回首页
-function getBack() {
-  router.push('/monitorChannel/monitor-alarm-home');
-}
-//点击切换实时\报表数据
-let handlerToggle = () => {
-  monitor.value = !monitor.value;
-  echartDataFc1.maxData.data.length = 0;
-  echartDataFc1.minData.data.length = 0;
-  echartDataFc1.aveValue.data.length = 0;
-  echartDataFc1.xData.length = 0;
-  getData()
-};
-//实时报表数据
-function getData(){
-  ventilateTopList[0].value = monitor.value ? toggleData.faceIntM3 : toggleData.jin;
-  ventilateTopList[1].value = monitor.value ? toggleData.faceRetM3 : toggleData.hui;
-  if (monitor.value) {
-    toggleData.history_report.forEach((v) => {
-      echartDataFc1.maxData.data.push(parseFloat(v.faceIntM3));
-      echartDataFc1.minData.data.push(parseFloat(v.faceRetM3));
-      echartDataFc1.aveValue.data.push(0);
-      echartDataFc1.xData.push(v.time);
-    });
-  } else {
-    toggleData.history.forEach((v) => {
-      echartDataFc1.maxData.data.push(parseFloat(v.jin));
-      echartDataFc1.minData.data.push(parseFloat(v.hui));
-      if (ventilateTopList[2].value && ventilateTopList[2].value != '--') {
-        echartDataFc1.aveValue.data.push(ventilateTopList[2].value);
-      } else {
-        echartDataFc1.aveValue.data.push(0);
-      }
-      echartDataFc1.xData.push(v.time);
-    });
+    aveValue: {
+      lengedData: '需风量',
+      data: [],
+    },
+    xData: [],
+  });
+  let cardListTf = ref<any[]>([]);
+  const chartListTf = ref<any[]>([]);
+  let showToggle = ref('report');
+
+  // https获取监测数据
+  let timer: null | NodeJS.Timeout = null;
+  function getMonitor(flag?) {
+    timer = setTimeout(
+      async () => {
+        //获取左侧菜单数据
+        await getMenuList();
+        await getWindDeviceList();
+        getMonitor(false);
+      },
+      flag ? 0 : 1500
+    );
   }
-}
-//获取左侧数据列表
-async function getMenuList() {
-  let res = await sysTypeWarnList({ type: 'vent' });
-  if (res.length != 0) {
-    menuList.length = 0;
-    res.forEach((el) => {
-      menuList.push({
-        name: el.deviceName,
-        warn: el.warnDes.indexOf('预警') != -1 ? '风量不足' : el.warnDes,
-        deviceID: el.deviceID,
-        strtype: el.deviceType,
-        detail: el.detail
-      });
-    });
-    //获取右侧详情数据
-    getDetailList(menuList[activeIndex1.value].detail)
+  //获取巷道阻力分析数据
+  let timer1: null | NodeJS.Timeout = null;
+  function getMonitor1(flag?) {
+    timer1 = setTimeout(
+      async () => {
+        await getRealTimeNetData();
+        getMonitor1(false);
+      },
+      flag ? 0 : 30000
+    );
   }
-}
-
-//获取右侧详情数据
-function getDetailList(param) {
-  echartDataFc1.maxData.data.length = 0;
-  echartDataFc1.minData.data.length = 0;
-  echartDataFc1.aveValue.data.length = 0;
-  echartDataFc1.xData.length = 0;
-  if (JSON.stringify(param) != '{}') {
-    toggleData = Object.assign({}, param);
-    ventilateTopList[2].value = param.xufengliang || '--';
-    ventilateTopList[3].text = param.warnFlag ? param.warnDes : '正常';
-    if (showToggle.value == 'monitor') {
-      ventilateTopList[0].value = param.jin;
-      ventilateTopList[1].value = param.hui;
-      if (param.history.length != 0) {
-        param.history.forEach((v) => {
-          echartDataFc1.maxData.data.push(parseFloat(v.jin));
-          echartDataFc1.minData.data.push(parseFloat(v.hui));
-          if (ventilateTopList[2].value && ventilateTopList[2].value != '--') {
-            echartDataFc1.aveValue.data.push(ventilateTopList[2].value);
-          } else {
-            echartDataFc1.aveValue.data.push(0);
-          }
-          echartDataFc1.xData.push(v.time);
-        });
-      }
-    } else if (showToggle.value == 'report') {
-      ventilateTopList[0].value = param.faceIntM3;
-      ventilateTopList[1].value = param.faceRetM3;
-      param.history_report.forEach((v) => {
+
+  //返回首页
+  function getBack() {
+    router.push('/monitorChannel/monitor-alarm-home');
+  }
+  //点击切换实时\报表数据
+  let handlerToggle = () => {
+    monitor.value = !monitor.value;
+    echartDataFc1.maxData.data.length = 0;
+    echartDataFc1.minData.data.length = 0;
+    echartDataFc1.aveValue.data.length = 0;
+    echartDataFc1.xData.length = 0;
+    getData();
+  };
+  //实时报表数据
+  function getData() {
+    ventilateTopList[0].value = monitor.value ? toggleData.faceIntM3 : toggleData.jin;
+    ventilateTopList[1].value = monitor.value ? toggleData.faceRetM3 : toggleData.hui;
+    if (monitor.value) {
+      toggleData.history_report.forEach((v) => {
         echartDataFc1.maxData.data.push(parseFloat(v.faceIntM3));
         echartDataFc1.minData.data.push(parseFloat(v.faceRetM3));
         echartDataFc1.aveValue.data.push(0);
         echartDataFc1.xData.push(v.time);
       });
     } else {
-      getData()
+      toggleData.history.forEach((v) => {
+        echartDataFc1.maxData.data.push(parseFloat(v.jin));
+        echartDataFc1.minData.data.push(parseFloat(v.hui));
+        if (ventilateTopList[2].value && ventilateTopList[2].value != '--') {
+          echartDataFc1.aveValue.data.push(ventilateTopList[2].value);
+        } else {
+          echartDataFc1.aveValue.data.push(0);
+        }
+        echartDataFc1.xData.push(v.time);
+      });
     }
-
-    let echartD = [echartDataFc1.maxData.data, echartDataFc1.minData.data]
-    maxY.value = getMaxY(echartD)
-    minY.value = getMinY(echartD)
   }
-}
-
-
-//通风选项切换
-function btnClick(ind) {
-  activeIndex.value = ind;
-  switch (ind) {
-    case 0:
-      if (timer1) clearTimeout(timer1);
-      activeIndex1.value = 0;
-      getMenuList();
-      break;
-    case 1:
-      if (timer) clearTimeout(timer);
-      activeIndex1.value = 0;
+  //获取左侧数据列表
+  async function getMenuList() {
+    let res = await sysTypeWarnList({ type: 'vent' });
+    if (res.length != 0) {
       menuList.length = 0;
-      getRealTimeNetData();
-      getMonitor1();
-      break;
-  }
-}
-
-//菜单选项切换
-function cardClick(ind, item) {
-  clearTimeout(timer);
-  if (!activeIndex.value && !loading.value) {
-    activeIndex1.value = ind;
-    loading.value = true;
-    setTimeout(() => {
-      getMonitor();
-      loading.value = false;
-    }, 2000);
-  } 
-}
-
-//获取通风监控测点信息
-async function getWindDeviceList() {
-  const cardTfList: any[] = [];
-  const chartTfList: any[] = [];
-  let res = await getDevice({ devicetype: 'windrect', pagetype: 'normal' });
-  if (res && res.msgTxt[0]) {
-    let list = res.msgTxt[0].datalist || [];
-    if (list.length > 0) {
-      list.forEach((el: any) => {
-        const readData = el.readData;
-        el = Object.assign(el, readData);
-        cardTfList.push({
-          label: '通信状态',
-          value: el.netStatus == '0' ? '断开' : '连接',
-          listR: [
-            { id: 0, label: '安装位置', dw: '', value: el.strinstallpos },
-            { id: 1, label: '风量', dw: 'm³/min', value: el.m3 || '--' },
-            { id: 2, label: '风速', dw: 'm/s', value: el.va || '--' },
-            { id: 4, label: '时间', dw: '', value: el.readTime },
-            {
-              id: 3,
-              label: '是否报警',
-              dw: '',
-              value: el.warnFlag == '0' ? '正常' : el.warnFlag == 1 ? '报警' : el.warnFlag == 2 ? '断开' : '未监测',
-            },
-          ],
-        });
-        // 初始化预测曲线配置,分别为x轴时间、平均、最大、最小、实时
-        const avgParam = el.avgParam || {
-          avg_vent_value: 0,
-          max_vent_value: 0,
-          min_vent_value: 0,
-        };
-        chartTfList.push({
-          label: el.strinstallpos,
-          time: new Date(),
-          data: [avgParam.avg_m3_value, avgParam.max_m3_value, avgParam.min_m3_value, el.readData.m3],
+      res.forEach((el) => {
+        menuList.push({
+          name: el.deviceName,
+          warn: el.warnDes.indexOf('预警') != -1 ? '风量不足' : el.warnDes,
+          deviceID: el.deviceID,
+          strtype: el.deviceType,
+          detail: el.detail,
         });
       });
+      //获取右侧详情数据
+      getDetailList(menuList[activeIndex1.value].detail);
     }
-    cardListTf.value = cardTfList;
-    chartListTf.value = chartTfList;
   }
-}
-async function getRealTimeNetData() {
-  const modalData = await modalParam({});
-  if (modalData && modalData.param && modalData.param.records.length && modalData.param.records.length > 0) {
-    const res = await realTimeNetCal({ modelID: modalData.param.records[0]['defaultmodelid'] });
-    if (res && res['result']) ventTunDataSource.value = res['result']['tuns'];
-    let data = [];
-    ventTunDataSource.value.forEach((el) => {
-      if (el['dHTotal'] && el['oldHTotal']) {
-        el['leveld'] = ((el['dHTotal'] - el['oldHTotal']) / el['oldHTotal']) * 100;
-        data.push(el['leveld']);
+
+  //获取右侧详情数据
+  function getDetailList(param) {
+    echartDataFc1.maxData.data.length = 0;
+    echartDataFc1.minData.data.length = 0;
+    echartDataFc1.aveValue.data.length = 0;
+    echartDataFc1.xData.length = 0;
+    if (JSON.stringify(param) != '{}') {
+      toggleData = Object.assign({}, param);
+      ventilateTopList[2].value = param.xufengliang || '--';
+      ventilateTopList[3].text = param.warnFlag ? param.warnDes : '正常';
+      if (showToggle.value == 'monitor') {
+        ventilateTopList[0].value = param.jin;
+        ventilateTopList[1].value = param.hui;
+        if (param.history.length != 0) {
+          param.history.forEach((v) => {
+            echartDataFc1.maxData.data.push(parseFloat(v.jin));
+            echartDataFc1.minData.data.push(parseFloat(v.hui));
+            if (ventilateTopList[2].value && ventilateTopList[2].value != '--') {
+              echartDataFc1.aveValue.data.push(ventilateTopList[2].value);
+            } else {
+              echartDataFc1.aveValue.data.push(0);
+            }
+            echartDataFc1.xData.push(v.time);
+          });
+        }
+      } else if (showToggle.value == 'report') {
+        ventilateTopList[0].value = param.faceIntM3;
+        ventilateTopList[1].value = param.faceRetM3;
+        param.history_report.forEach((v) => {
+          echartDataFc1.maxData.data.push(parseFloat(v.faceIntM3));
+          echartDataFc1.minData.data.push(parseFloat(v.faceRetM3));
+          echartDataFc1.aveValue.data.push(0);
+          echartDataFc1.xData.push(v.time);
+        });
       } else {
-        data = [];
+        getData();
       }
-    });
-    hdData.maxLevel = '正常';
+
+      let echartD = [echartDataFc1.maxData.data, echartDataFc1.minData.data];
+      maxY.value = getMaxY(echartD);
+      minY.value = getMinY(echartD);
+    }
+  }
+
+  //通风选项切换
+  function btnClick(ind) {
+    activeIndex.value = ind;
+    switch (ind) {
+      case 0:
+        if (timer1) clearTimeout(timer1);
+        activeIndex1.value = 0;
+        getMenuList();
+        break;
+      case 1:
+        if (timer) clearTimeout(timer);
+        activeIndex1.value = 0;
+        menuList.length = 0;
+        getRealTimeNetData();
+        getMonitor1();
+        break;
+    }
   }
-}
-
-onMounted(async () => {
-  const { sysOrgCode, sysDataType } = useGlobSetting();
-  showToggle.value = sysDataType || 'report';
-  await getMenuList();
-  await getMonitor();
-});
-onUnmounted(() => {
-  if (timer) {
+
+  //菜单选项切换
+  function cardClick(ind, item) {
     clearTimeout(timer);
-    timer = undefined;
+    if (!activeIndex.value && !loading.value) {
+      activeIndex1.value = ind;
+      loading.value = true;
+      setTimeout(() => {
+        getMonitor();
+        loading.value = false;
+      }, 2000);
+    }
   }
-  if (timer1) {
-    clearTimeout(timer1);
-    timer1 = undefined;
+
+  //获取通风监控测点信息
+  async function getWindDeviceList() {
+    const cardTfList: any[] = [];
+    const chartTfList: any[] = [];
+    let res = await getDevice({ devicetype: 'windrect', pagetype: 'normal' });
+    if (res && res.msgTxt[0]) {
+      let list = res.msgTxt[0].datalist || [];
+      if (list.length > 0) {
+        list.forEach((el: any) => {
+          const readData = el.readData;
+          el = Object.assign(el, readData);
+          cardTfList.push({
+            label: '通信状态',
+            value: el.netStatus == '0' ? '断开' : '连接',
+            listR: [
+              { id: 0, label: '安装位置', dw: '', value: el.strinstallpos },
+              { id: 1, label: '风量', dw: 'm³/min', value: el.m3 || '--' },
+              { id: 2, label: '风速', dw: 'm/s', value: el.va || '--' },
+              { id: 4, label: '时间', dw: '', value: el.readTime },
+              {
+                id: 3,
+                label: '是否报警',
+                dw: '',
+                value: el.warnFlag == '0' ? '正常' : el.warnFlag == 1 ? '报警' : el.warnFlag == 2 ? '断开' : '未监测',
+              },
+            ],
+          });
+          // 初始化预测曲线配置,分别为x轴时间、平均、最大、最小、实时
+          const avgParam = el.avgParam || {
+            avg_vent_value: 0,
+            max_vent_value: 0,
+            min_vent_value: 0,
+          };
+          chartTfList.push({
+            label: el.strinstallpos,
+            time: new Date(),
+            data: [avgParam.avg_m3_value, avgParam.max_m3_value, avgParam.min_m3_value, el.readData.m3],
+          });
+        });
+      }
+      cardListTf.value = cardTfList;
+      chartListTf.value = chartTfList;
+    }
   }
-});
+  async function getRealTimeNetData() {
+    const modalData = await modalParam({});
+    if (modalData && modalData.param && modalData.param.records.length && modalData.param.records.length > 0) {
+      const res = await realTimeNetCal({ modelID: modalData.param.records[0]['defaultmodelid'] });
+      if (res && res['result']) ventTunDataSource.value = res['result']['tuns'];
+      let data = [];
+      ventTunDataSource.value.forEach((el) => {
+        if (el['dHTotal'] && el['oldHTotal']) {
+          el['leveld'] = ((el['dHTotal'] - el['oldHTotal']) / el['oldHTotal']) * 100;
+          data.push(el['leveld']);
+        } else {
+          data = [];
+        }
+      });
+      hdData.maxLevel = '正常';
+    }
+  }
+
+  onMounted(async () => {
+    const { sysOrgCode, sysDataType } = useGlobSetting();
+    showToggle.value = sysDataType || 'report';
+    await getMenuList();
+    await getMonitor();
+  });
+  onUnmounted(() => {
+    if (timer) {
+      clearTimeout(timer);
+      timer = undefined;
+    }
+    if (timer1) {
+      clearTimeout(timer1);
+      timer1 = undefined;
+    }
+  });
 </script>
 
 <style lang="less" scoped>
-@import '/@/design/theme.less';
+  @import '/@/design/theme.less';
+
+  @{theme-deepblue} {
+    .ventilateWarn {
+      --image-border: url('/@/assets/images/themify/deepblue/fire/border.png');
+      --image-no-choice: url('/@/assets/images/themify/deepblue/fire/no-choice.png');
+      --image-choice: url('/@/assets/images/themify/deepblue/fire/choice.png');
+      --image-bj1: url('/@/assets/images/themify/deepblue/fire/bj1.png');
+      --image-jinfengliang: url('/@/assets/images/themify/deepblue/fire/jinfengliang.png');
+      --image-huifengliang: url('/@/assets/images/themify/deepblue/fire/huifengliang.png');
+      --image-xufengliang: url('/@/assets/images/themify/deepblue/fire/xufengliang.png');
+    }
+  }
 
-@{theme-deepblue} {
   .ventilateWarn {
-    --image-border: url('/@/assets/images/themify/deepblue/fire/border.png');
-    --image-no-choice: url('/@/assets/images/themify/deepblue/fire/no-choice.png');
-    --image-choice: url('/@/assets/images/themify/deepblue/fire/choice.png');
-    --image-bj1: url('/@/assets/images/themify/deepblue/fire/bj1.png');
-    --image-jinfengliang: url('/@/assets/images/themify/deepblue/fire/jinfengliang.png');
-    --image-huifengliang: url('/@/assets/images/themify/deepblue/fire/huifengliang.png');
-    --image-xufengliang: url('/@/assets/images/themify/deepblue/fire/xufengliang.png');
-  }
-}
-
-.ventilateWarn {
-  --image-border: url('/@/assets/images/fire/border.png');
-  --image-no-choice: url('/@/assets/images/fire/no-choice.png');
-  --image-choice: url('/@/assets/images/fire/choice.png');
-  --image-bj1: url('/@/assets/images/fire/bj1.png');
-  --image-jinfengliang: url('/@/assets/images/fire/jinfengliang.png');
-  --image-huifengliang: url('/@/assets/images/fire/huifengliang.png');
-  --image-xufengliang: url('/@/assets/images/fire/xufengliang.png');
-  --border-image-1: linear-gradient(to bottom, #2d74a0, #2d74a0, #2d74a0);
-  --border-image-2: linear-gradient(to bottom, transparent, #024688, transparent);
-  position: reactive;
-  width: 100%;
-  height: 100%;
-  padding: 80px 10px 15px 10px;
-  box-sizing: border-box;
-
-  .ventilate-top {
+    --image-border: url('/@/assets/images/fire/border.png');
+    --image-no-choice: url('/@/assets/images/fire/no-choice.png');
+    --image-choice: url('/@/assets/images/fire/choice.png');
+    --image-bj1: url('/@/assets/images/fire/bj1.png');
+    --image-jinfengliang: url('/@/assets/images/fire/jinfengliang.png');
+    --image-huifengliang: url('/@/assets/images/fire/huifengliang.png');
+    --image-xufengliang: url('/@/assets/images/fire/xufengliang.png');
+    --border-image-1: linear-gradient(to bottom, #2d74a0, #2d74a0, #2d74a0);
+    --border-image-2: linear-gradient(to bottom, transparent, #024688, transparent);
+    position: reactive;
     width: 100%;
-    display: flex;
-    justify-content: space-between;
-    height: 50%;
-    margin-bottom: 15px;
-    background: var(--image-border) no-repeat center;
-    background-size: 100% 100%;
-    padding-right: 15px;
-
-    .alarm-menu {
-      height: 100%;
-      width: 332px;
-      padding: 10px;
-      box-sizing: border-box;
-
-      .type-btn {
-        width: 100%;
-        height: 28px;
-        line-height: 28px;
-        background-color: var(--vent-warn-tab-bg);
-        border: 2px solid var(--vent-warn-tab-border);
-        margin-bottom: 20px;
-        border-radius: 5px;
-        box-sizing: border-box;
-        display: flex;
-        justify-content: space-between;
-
-        .btn {
-          width: 50%;
-          height: 24px;
-          line-height: 24px;
-          font-size: 14px;
-          text-align: center;
-          color: var(--vent-font-color);
-          cursor: pointer;
-        }
-
-        .btn1 {
-          width: 50%;
-          height: 24px;
-          line-height: 24px;
-          font-size: 14px;
-          color: var(--vent-font-color);
-          text-align: center;
-          border-radius: 2px;
-          background: var(--vent-warn-tab-bg-actived);
-          cursor: pointer;
-        }
-      }
+    height: 100%;
+    padding: 80px 10px 15px 10px;
+    box-sizing: border-box;
 
-      .card-btn {
-        width: 100%;
-        height: calc(100% - 50px);
-        overflow-y: auto;
-
-        .btn {
-          position: relative;
-          width: 81%;
-          height: 24%;
-          margin-bottom: 6%;
-          font-family: 'douyuFont';
-          background: var(--image-no-choice) no-repeat;
-          background-size: 100% 100%;
-          cursor: pointer;
-
-          .text {
-            width: 80%;
-            position: absolute;
-            left: 50%;
-            top: 28px;
-            font-size: 14px;
-            color: var(--vent-table-action-link);
-            text-align: center;
-            transform: translate(-50%, 0);
-          }
+    .ventilate-top {
+      width: 100%;
+      display: flex;
+      justify-content: space-between;
+      height: 50%;
+      margin-bottom: 15px;
+      background: var(--image-border) no-repeat center;
+      background-size: 100% 100%;
+      padding-right: 15px;
 
-          .warn {
-            width: 100%;
-            position: absolute;
-            left: 50%;
-            bottom: 8px;
-            font-size: 12px;
-            color: var(--vent-font-color);
-            text-align: center;
-            transform: translate(-50%, 0);
-          }
-        }
+      .alarm-menu {
+        height: 100%;
+        width: 332px;
+        padding: 10px;
+        box-sizing: border-box;
 
-        .btn1 {
-          position: relative;
+        .type-btn {
           width: 100%;
-          height: 24%;
-          margin-bottom: 6%;
-          font-family: 'douyuFont';
-          background: var(--image-choice) no-repeat;
-          background-size: 100% 100%;
-          cursor: pointer;
-
-          .text {
-            width: 80%;
-            position: absolute;
-            left: 50%;
-            top: 28px;
+          height: 28px;
+          line-height: 28px;
+          background-color: var(--vent-warn-tab-bg);
+          border: 2px solid var(--vent-warn-tab-border);
+          margin-bottom: 20px;
+          border-radius: 5px;
+          box-sizing: border-box;
+          display: flex;
+          justify-content: space-between;
+
+          .btn {
+            width: 50%;
+            height: 24px;
+            line-height: 24px;
             font-size: 14px;
-            color: var(--vent-table-action-link);
             text-align: center;
-            transform: translate(-62%, 0);
+            color: var(--vent-font-color);
+            cursor: pointer;
           }
 
-          .warn {
-            width: 100%;
-            position: absolute;
-            left: 50%;
-            bottom: 8px;
+          .btn1 {
+            width: 50%;
+            height: 24px;
+            line-height: 24px;
             font-size: 14px;
             color: var(--vent-font-color);
             text-align: center;
-            transform: translate(-60%, 0);
+            border-radius: 2px;
+            background: var(--vent-warn-tab-bg-actived);
+            cursor: pointer;
           }
         }
 
-        .hd-content {
-          position: relative;
+        .card-btn {
           width: 100%;
-          height: 300px;
-          padding: 0 20px;
-          background: var(--image-no-choice) no-repeat;
-          background-size: 100% 100%;
+          height: calc(100% - 50px);
+          overflow-y: auto;
+
+          .btn {
+            position: relative;
+            width: 81%;
+            height: 24%;
+            margin-bottom: 6%;
+            font-family: 'douyuFont';
+            background: var(--image-no-choice) no-repeat;
+            background-size: 100% 100%;
+            cursor: pointer;
+
+            .text {
+              width: 80%;
+              position: absolute;
+              left: 50%;
+              top: 28px;
+              font-size: 14px;
+              color: var(--vent-table-action-link);
+              text-align: center;
+              transform: translate(-50%, 0);
+            }
+
+            .warn {
+              width: 100%;
+              position: absolute;
+              left: 50%;
+              bottom: 8px;
+              font-size: 12px;
+              color: var(--vent-font-color);
+              text-align: center;
+              transform: translate(-50%, 0);
+            }
+          }
 
-          .hd-content-text {
-            display: flex;
+          .btn1 {
+            position: relative;
             width: 100%;
-            height: 200px;
-            align-items: center;
-            justify-content: center;
-            font-size: 18px;
-            color: var(--vent-font-yellow-color);
+            height: 24%;
+            margin-bottom: 6%;
+            font-family: 'douyuFont';
+            background: var(--image-choice) no-repeat;
+            background-size: 100% 100%;
+            cursor: pointer;
+
+            .text {
+              width: 80%;
+              position: absolute;
+              left: 50%;
+              top: 28px;
+              font-size: 14px;
+              color: var(--vent-table-action-link);
+              text-align: center;
+              transform: translate(-62%, 0);
+            }
+
+            .warn {
+              width: 100%;
+              position: absolute;
+              left: 50%;
+              bottom: 8px;
+              font-size: 14px;
+              color: var(--vent-font-color);
+              text-align: center;
+              transform: translate(-60%, 0);
+            }
           }
 
-          .hd-content-val {
-            position: absolute;
-            width: calc(100% - 40px);
-            display: flex;
-            justify-content: center;
-            font-family: 'douyuFont';
-            bottom: 80px;
-            font-size: 20px;
-            color: var(--vent-table-action-link);
+          .hd-content {
+            position: relative;
+            width: 100%;
+            height: 300px;
+            padding: 0 20px;
+            background: var(--image-no-choice) no-repeat;
+            background-size: 100% 100%;
+
+            .hd-content-text {
+              display: flex;
+              width: 100%;
+              height: 200px;
+              align-items: center;
+              justify-content: center;
+              font-size: 18px;
+              color: var(--vent-font-yellow-color);
+            }
+
+            .hd-content-val {
+              position: absolute;
+              width: calc(100% - 40px);
+              display: flex;
+              justify-content: center;
+              font-family: 'douyuFont';
+              bottom: 80px;
+              font-size: 20px;
+              color: var(--vent-table-action-link);
+            }
           }
         }
       }
-    }
 
-    .ventilate-content {
-      height: 100%;
-      width: calc(100% - 332px);
-      padding: 10px 0px;
-      box-sizing: border-box;
-      margin-right: 10px;
+      .ventilate-content {
+        height: 100%;
+        width: calc(100% - 332px);
+        padding: 10px 0px;
+        box-sizing: border-box;
+        margin-right: 10px;
+      }
     }
-  }
 
-  .tun-box {
-    width: 600px;
-    height: 300px;
-  }
-
-  .ventilate-bottom {
-    height: calc(50% - 15px);
-    background: var(--image-border) no-repeat center;
-    background-size: 100% 100%;
-    padding: 10px;
-    box-sizing: border-box;
+    .tun-box {
+      width: 600px;
+      height: 300px;
+    }
 
-    .bot-area {
-      height: 100%;
-      padding: 10px;
-      background: var(--image-bj1) no-repeat center;
+    .ventilate-bottom {
+      height: calc(50% - 15px);
+      background: var(--image-border) no-repeat center;
       background-size: 100% 100%;
+      padding: 10px;
       box-sizing: border-box;
+
+      .bot-area {
+        height: 100%;
+        padding: 10px;
+        background: var(--image-bj1) no-repeat center;
+        background-size: 100% 100%;
+        box-sizing: border-box;
+      }
     }
-  }
 
-  .icon-toggle {
-    position: absolute;
-    right: 345px;
-    top: 17px;
+    .icon-toggle {
+      position: absolute;
+      right: 345px;
+      top: 17px;
 
-    img {
-      width: 26px;
-      height: 26px;
-      cursor: pointer;
+      img {
+        width: 26px;
+        height: 26px;
+        cursor: pointer;
+      }
     }
   }
-}
 </style>

+ 230 - 230
src/views/vent/monitorManager/balancePressMonitor/components/balancePressHome.vue

@@ -139,260 +139,260 @@
   </a-spin>
 </template>
 <script setup lang="ts" name="balancePressHome">
-import { onBeforeMount, ref, onMounted, onUnmounted, reactive, defineProps, watch, computed } from 'vue';
-import ventBox1 from '/@/components/vent/ventBox1.vue';
-import CustomChart from '@/views/vent/home/configurable/components/detail/CustomChart.vue';
-import { PressO2Option, mockData1 } from '../balancePressO2.data';
-import { SvgIcon } from '/@/components/Icon';
-import { mountedThree, destroy, setModelType, updateText, play } from '../balancePress.threejs';
-import { settingParam1, settingParam2, settingParam3, windowParam, localFanParam, windrectParam } from '../balancePress.data';
-import { list, submit, subList, submitEdit, getO2PressData } from '../balancePress.api';
-import { message } from 'ant-design-vue';
-import { get } from 'lodash-es';
-const props = defineProps({
-  deviceId: {
-    type: String,
-    require: true,
-  },
-});
-const loading = ref(false);
-// 默认初始是第一行
-const isAutoControl = ref('1');
-const O2PressDataFetched = ref(false);
-// 监测数据
-const selectData = reactive({
-  frontRearDP: '-',
-  sourcePressure: '-',
-  fault: '-',
-});
-const monitorParam = [
-  {
-    title: '监测值',
-    code: 'readData.ss_analog_value',
-    unit: '',
-  },
-];
-const changeType = (isAutoControl) => {
-  isAutoControl;
-  //
-};
+  import { onBeforeMount, ref, onMounted, onUnmounted, reactive, defineProps, watch, computed } from 'vue';
+  import ventBox1 from '/@/components/vent/ventBox1.vue';
+  import CustomChart from '@/views/vent/home/configurable/components/detail/CustomChart.vue';
+  import { PressO2Option, mockData1 } from '../balancePressO2.data';
+  import { SvgIcon } from '/@/components/Icon';
+  import { mountedThree, destroy, setModelType, updateText, play } from '../balancePress.threejs';
+  import { settingParam1, settingParam2, settingParam3, windowParam, localFanParam, windrectParam } from '../balancePress.data';
+  import { list, submit, subList, submitEdit, getO2PressData } from '../balancePress.api';
+  import { message } from 'ant-design-vue';
+  import { get } from 'lodash-es';
+  const props = defineProps({
+    deviceId: {
+      type: String,
+      require: true,
+    },
+  });
+  const loading = ref(false);
+  // 默认初始是第一行
+  const isAutoControl = ref('1');
+  const O2PressDataFetched = ref(false);
+  // 监测数据
+  const selectData = reactive({
+    frontRearDP: '-',
+    sourcePressure: '-',
+    fault: '-',
+  });
+  const monitorParam = [
+    {
+      title: '监测值',
+      code: 'readData.ss_analog_value',
+      unit: '',
+    },
+  ];
+  const changeType = (isAutoControl) => {
+    isAutoControl;
+    //
+  };
 
-let listData = ref<any[]>([]);
+  let listData = ref<any[]>([]);
 
-// https获取监测数据
-let timer: any = null;
-function getMonitor(flag?) {
-  if (Object.prototype.toString.call(timer) === '[object Null]') {
-    timer = setTimeout(
-      async () => {
-        if (props.deviceId) {
-          const data = await getDataSource(props.deviceId);
-          Object.assign(selectData, data);
-          updateText(selectData);
-        }
-        if (timer) {
-          timer = null;
-        }
-        await getMonitor();
-        loading.value = false;
-      },
-      flag ? 0 : 1000
-    );
+  // https获取监测数据
+  let timer: any = null;
+  function getMonitor(flag?) {
+    if (Object.prototype.toString.call(timer) === '[object Null]') {
+      timer = setTimeout(
+        async () => {
+          if (props.deviceId) {
+            const data = await getDataSource(props.deviceId);
+            Object.assign(selectData, data);
+            updateText(selectData);
+          }
+          if (timer) {
+            timer = null;
+          }
+          await getMonitor();
+          loading.value = false;
+        },
+        flag ? 0 : 1000
+      );
+    }
   }
-}
 
-const safetyMonitorData = ref<any[]>([]);
-const fanlocalMonitorData = ref<any[]>([]);
-const windowMonitorData = ref<any[]>([]);
-const windrectMonitorData = ref<any[]>([]);
-const modelsensorO2Data = ref<any[]>([]);
-const mockData = ref<{ chartData: { dateTime: string; o2Val: string; pressureVal: string }[] }>({
-  chartData: [],
-});
-const chartData1 = ref<any[]>([]);
-async function getDataSource(systemID) {
-  const res = await list({ devicetype: 'sys', systemID });
-  const result = res.msgTxt;
-  safetyMonitorData.value = [];
-  fanlocalMonitorData.value = [];
-  windowMonitorData.value = [];
-  windrectMonitorData.value = [];
-  modelsensorO2Data.value = [];
-  result.forEach((item) => {
-    if (item.type.startsWith('safetymonitor')) {
-      safetyMonitorData.value.push(...item.datalist);
-    }
-    if (item.type.startsWith('fanlocal')) {
-      item.datalist.forEach((e) => {
-        const f1Run = e.readData.Fan1StartStatus == '1';
-        e.FanfHz = f1Run ? e.readData.Fan1_Frequency : e.readData.Fan2_Frequency;
-        e.FanRun = f1Run ? '1#风机' : '2#风机';
-      });
-      fanlocalMonitorData.value.push(...item.datalist);
-    }
-    if (item.type.startsWith('window')) {
-      windowMonitorData.value.push(...item.datalist);
-    }
-    if (item.type.startsWith('windrect')) {
-      windrectMonitorData.value.push(...item.datalist);
-    }
-    if (item.type.startsWith('modelsensor_o2')) {
-      modelsensorO2Data.value.push(...item.datalist);
-    }
+  const safetyMonitorData = ref<any[]>([]);
+  const fanlocalMonitorData = ref<any[]>([]);
+  const windowMonitorData = ref<any[]>([]);
+  const windrectMonitorData = ref<any[]>([]);
+  const modelsensorO2Data = ref<any[]>([]);
+  const mockData = ref<{ chartData: { dateTime: string; o2Val: string; pressureVal: string }[] }>({
+    chartData: [],
   });
-  if (!O2PressDataFetched.value) {
-    O2PressDataFetched.value = true;
-    getO2Press(modelsensorO2Data.value);
+  const chartData1 = ref<any[]>([]);
+  async function getDataSource(systemID) {
+    const res = await list({ devicetype: 'sys', systemID });
+    const result = res.msgTxt;
+    safetyMonitorData.value = [];
+    fanlocalMonitorData.value = [];
+    windowMonitorData.value = [];
+    windrectMonitorData.value = [];
+    modelsensorO2Data.value = [];
+    result.forEach((item) => {
+      if (item.type.startsWith('safetymonitor')) {
+        safetyMonitorData.value.push(...item.datalist);
+      }
+      if (item.type.startsWith('fanlocal')) {
+        item.datalist.forEach((e) => {
+          const f1Run = e.readData.Fan1StartStatus == '1';
+          e.FanfHz = f1Run ? e.readData.Fan1_Frequency : e.readData.Fan2_Frequency;
+          e.FanRun = f1Run ? '1#风机' : '2#风机';
+        });
+        fanlocalMonitorData.value.push(...item.datalist);
+      }
+      if (item.type.startsWith('window')) {
+        windowMonitorData.value.push(...item.datalist);
+      }
+      if (item.type.startsWith('windrect')) {
+        windrectMonitorData.value.push(...item.datalist);
+      }
+      if (item.type.startsWith('modelsensor_o2')) {
+        modelsensorO2Data.value.push(...item.datalist);
+      }
+    });
+    if (!O2PressDataFetched.value) {
+      O2PressDataFetched.value = true;
+      getO2Press(modelsensorO2Data.value);
+    }
   }
-}
-async function getO2Press(params) {
-  const deviceID = params[0].deviceID;
-  const param = {
-    deviceId: deviceID,
-  };
-  const res = await getO2PressData(param);
+  async function getO2Press(params) {
+    const deviceID = params[0].deviceID;
+    const param = {
+      deviceId: deviceID,
+    };
+    const res = await getO2PressData(param);
 
-  const chartData = [...res.o2HistoryDataList, ...res.o2List];
-  mockData.value = { chartData };
-  O2PressDataFetched.value = true;
-}
+    const chartData = [...res.o2HistoryDataList, ...res.o2List];
+    mockData.value = { chartData };
+    O2PressDataFetched.value = true;
+  }
 
-// 喷粉操作
-async function onSubmit() {
-  if (listData.value.length != 0) {
-    //编辑
-    let res = await submitEdit(listData.value[0]);
-    if (res) {
-      initParamList();
-    }
-  } else {
-    //新增
-    let res = await submit(formData.value);
-    if (res) {
-      initParamList();
-      message.success('提交成功');
+  // 喷粉操作
+  async function onSubmit() {
+    if (listData.value.length != 0) {
+      //编辑
+      let res = await submitEdit(listData.value[0]);
+      if (res) {
+        initParamList();
+      }
+    } else {
+      //新增
+      let res = await submit(formData.value);
+      if (res) {
+        initParamList();
+        message.success('提交成功');
+      }
     }
   }
-}
 
-//获取低氧参数监测返显列表
-async function initParamList() {
-  let res = await subList();
-  if (res && res.records && res.records.length != 0) {
-    listData.value = res.records;
-    formData.value = res.records[0];
+  //获取低氧参数监测返显列表
+  async function initParamList() {
+    let res = await subList();
+    if (res && res.records && res.records.length != 0) {
+      listData.value = res.records;
+      formData.value = res.records[0];
+    }
   }
-}
 
-watch(
-  () => props.deviceId,
-  (newVal, oldVal) => {
-    if (newVal && oldVal != undefined) {
-      setModelType('balancePressBase');
+  watch(
+    () => props.deviceId,
+    (newVal, oldVal) => {
+      if (newVal && oldVal != undefined) {
+        setModelType('balancePressBase');
+      }
+      loading.value = true;
     }
-    loading.value = true;
-  }
-);
+  );
 
-const formData = ref({
-  id: '',
-  coMaxStart: 0,
-  o2MinStart: 0,
-  coRiseStart: 0,
-  o2DownStart: 0,
-  windowAreaSetGrad: 0,
-  windowSetTime: 0,
-  windowMinArea: 0,
-  windowAreaDef: 0,
-  setMinTime: 0,
-  coEnd: 0,
-  coTimeEnd: 0,
-  o2End: 0,
-  o2TimeEnd: 0,
-});
+  const formData = ref({
+    id: '',
+    coMaxStart: 0,
+    o2MinStart: 0,
+    coRiseStart: 0,
+    o2DownStart: 0,
+    windowAreaSetGrad: 0,
+    windowSetTime: 0,
+    windowMinArea: 0,
+    windowAreaDef: 0,
+    setMinTime: 0,
+    coEnd: 0,
+    coTimeEnd: 0,
+    o2End: 0,
+    o2TimeEnd: 0,
+  });
 
-onBeforeMount(() => {});
+  onBeforeMount(() => {});
 
-onMounted(() => {
-  loading.value = true;
-  mountedThree().then(async () => {
-    await setModelType('balancePressBase'); //balancePressBase
-    loading.value = false;
-    timer = null;
-    await initParamList();
-    await getMonitor(true);
-    play('startSmoke', 'top', 30, 'open', 0);
+  onMounted(() => {
+    loading.value = true;
+    mountedThree().then(async () => {
+      await setModelType('balancePressBase'); //balancePressBase
+      loading.value = false;
+      timer = null;
+      await initParamList();
+      await getMonitor(true);
+      play('startSmoke', 'top', 30, 'open', 0);
+    });
   });
-});
 
-onUnmounted(() => {
-  destroy();
-  if (timer) {
-    clearTimeout(timer);
-  }
-});
+  onUnmounted(() => {
+    destroy();
+    if (timer) {
+      clearTimeout(timer);
+    }
+  });
 </script>
 <style lang="less" scoped>
-@import '/@/design/vent/modal.less';
-@import '../../comment/less/workFace.less';
-@ventSpace: zxm;
-.monitor-container {
-  margin-top: 60px;
-}
-.lr {
-  width: 340px !important;
-}
-.auto-control {
-  padding: 10px 8px;
-  margin: 0 4px 4px 4px;
-  border-radius: 4px;
-  border: 1px solid #ffffff05;
-  background-image: linear-gradient(to left, #39deff15, #3977e500, #39deff15);
-}
-.divider-line {
-  position: relative;
-  color: aqua;
-  padding-left: 20px;
-  font-size: 14px;
-  &::before {
-    position: absolute;
-    content: '';
-    display: block;
-    top: 10px;
-    left: 0;
-    height: 1px;
-    width: 15px;
-    background-color: #ffffff33;
+  @import '/@/design/vent/modal.less';
+  @import '../../comment/less/workFace.less';
+  @ventSpace: zxm;
+  .monitor-container {
+    margin-top: 60px;
+  }
+  .lr {
+    width: 340px !important;
   }
-  &::after {
-    position: absolute;
-    content: '';
-    display: block;
-    top: 10px;
-    right: 0;
-    height: 1px;
-    width: calc(100% - 85px);
-    background-color: #ffffff33;
+  .auto-control {
+    padding: 10px 8px;
+    margin: 0 4px 4px 4px;
+    border-radius: 4px;
+    border: 1px solid #ffffff05;
+    background-image: linear-gradient(to left, #39deff15, #3977e500, #39deff15);
   }
-}
-.input-value {
-  width: 120px !important;
-}
-.unit {
-  text-align: right;
-}
-.btn-box {
-  margin: 10px 4px;
-  .btn1 {
-    padding: 4px 0;
+  .divider-line {
+    position: relative;
+    color: aqua;
+    padding-left: 20px;
+    font-size: 14px;
+    &::before {
+      position: absolute;
+      content: '';
+      display: block;
+      top: 10px;
+      left: 0;
+      height: 1px;
+      width: 15px;
+      background-color: #ffffff33;
+    }
+    &::after {
+      position: absolute;
+      content: '';
+      display: block;
+      top: 10px;
+      right: 0;
+      height: 1px;
+      width: calc(100% - 85px);
+      background-color: #ffffff33;
+    }
+  }
+  .input-value {
+    width: 120px !important;
+  }
+  .unit {
+    text-align: right;
+  }
+  .btn-box {
+    margin: 10px 4px;
+    .btn1 {
+      padding: 4px 0;
+    }
   }
-}
 
-:deep(.@{ventSpace}-tabs-tabpane-active) {
-  overflow: auto;
-}
+  :deep(.@{ventSpace}-tabs-tabpane-active) {
+    overflow: auto;
+  }
 
-:deep(.@{ventSpace}-input-number) {
-  border-color: #ffffff88 !important;
-}
+  :deep(.@{ventSpace}-input-number) {
+    border-color: #ffffff88 !important;
+  }
 </style>

+ 3 - 3
src/views/vent/monitorManager/fireDoorMonitor/index.vue

@@ -66,7 +66,7 @@
               :isShowActionColumn="true"
               :dataSource="dataSource"
               design-scope="gate-monitor"
-              @selectRow="getSelectRow"
+              @select-row="getSelectRow"
               :scroll="{ y: scroll.y - 40 }"
               title="风门监测"
               :isShowPagination="true"
@@ -252,8 +252,8 @@
   const MonitorDataTable = ref();
   let contrlValue = '';
   const playerRef = ref();
-  // const deviceType = ref('door');
-  const deviceType = ref('gate');
+  const deviceType = ref('door');
+  // const deviceType = ref('gate');
   // const deviceType = ref('firedoor');
   const activeKey = ref('1'); // tab
   const loading = ref(false);

+ 4 - 4
src/views/vent/monitorManager/gateMonitor/index.vue

@@ -94,7 +94,7 @@
       </div>
     </div>
     <div class="title-text"> {{ selectData.supplyAirAddr || selectData.strinstallpos || selectData.strname }} </div>
-    <div class="bottom-tabs-box" @mousedown="setDivHeight($event, 350, scroll)">
+    <div class="bottom-tabs-box" @mousedown="setDivHeight($event, 50, scroll)">
       <dv-border-box8 :dur="5" :style="`padding: 5px; height: ${scroll.y + 120}px`">
         <a-tabs class="tabs-box" v-model:activeKey="activeKey" @change="tabChange">
           <a-tab-pane v-if="!hasPermission('show:noMonitor')" key="1" tab="实时监测">
@@ -106,7 +106,7 @@
               :isShowActionColumn="true"
               :dataSource="dataSource"
               design-scope="gate-monitor"
-              @selectRow="getSelectRow"
+              @select-row="getSelectRow"
               :scroll="{ y: scroll.y - 40 }"
               title="风门监测"
               :isShowPagination="true"
@@ -326,9 +326,9 @@
       right: 0px;
       width: 100%;
       height: 800px;
-      overflow-y: auto;
       pointer-events: none;
-      margin-left: auto;
+      overflow-y: auto;
+      flex-direction: column;
     "
   >
   </div>

+ 2 - 3
src/views/vent/monitorManager/safetyMonitor/index.vue

@@ -153,11 +153,11 @@
           </div>
         </a-tab-pane>
       </template>
-      <template v-else>
+      <template v-else-if="deviceType != 'safetymonitor'">
         <a-tab-pane key="3" tab="报警历史">
           <div class="tab-item">
             <AlarmHistoryCommentTable
-              v-if="activeKey == '3' && deviceType != 'safetymonitor'"
+              v-if="activeKey == '3'"
               columns-type="alarm"
               :device-type="deviceType"
               :device-list-api="getDeviceList.bind(null, { devicekind: deviceType, pageSize: 10000 })"
@@ -166,7 +166,6 @@
           </div>
         </a-tab-pane>
       </template>
-
       <a-tab-pane key="4" tab="操作历史" v-if="deviceType !== 'safetymonitor' && deviceType !== 'wasichoufang'">
         <div class="tab-item">
           <HandlerHistoryTable

+ 2 - 2
src/views/vent/monitorManager/sensorMonitor/index.vue

@@ -45,7 +45,8 @@
               </MonitorTable>
             </div>
             <!-- v-if="chartsColumns.length > 0" -->
-            <div class="charts-box" v-if="false">
+            <div class="charts-box" v-if="hasPermission('sensor:showMonitorChart') && chartsColumns && chartsColumns.length > 0">
+              ">
               <BarAndLine
                 :chartsColumnsType="selectData.deviceType"
                 xAxisPropType="readTime"
@@ -64,7 +65,6 @@
             <HistoryTable
               :columns-type="deviceKind"
               :device-type="deviceKind"
-              :device-list-api="list.bind(null, { devicetype: selectData.deviceType })"
               @change="historyDataSourceChange"
               designScope="modelsensor-history"
               :scroll="{ y: 600 }"

+ 12 - 4
src/views/vent/monitorManager/windowMonitor/index.vue

@@ -8,8 +8,6 @@
           <div v-if="hasPermission('window:AreaControl')" class="button-box" @click="setArea(2)">设定后窗面积</div>
           <div v-if="hasPermission('window:showAngle')" class="button-box" @click="setAngle(1)">设定前窗角度</div>
           <div v-if="hasPermission('window:showAngle')" class="button-box" @click="setAngle(2)">设定后窗角度</div>
-          <div v-if="hasPermission('window:gateControl')" class="button-box" @click="playAnimation(1)">打开前门</div>
-          <div v-if="hasPermission('window:gateControl')" class="button-box" @click="playAnimation(2)">关闭前门</div>
           <div v-if="hasPermission('window:twoAreaControl')" class="button-box" @click="setControl('1', '窗1面积设定')">窗1面积设定</div>
           <div v-if="hasPermission('window:twoAreaControl')" class="button-box" @click="setControl('2', '窗2面积设定')">窗2面积设定</div>
           <div v-if="hasPermission('window:twoAngleControl')" class="button-box" @click="setControl('1', '窗1角度设定')">窗1角度设定</div>
@@ -36,6 +34,16 @@
           <div v-if="hasPermission('window:showAddArea')" class="button-box" @click="setControl('addSetValue', '增加面积设置')">增加面积</div>
           <div v-if="hasPermission('window:showAddArea')" class="button-box" @click="setControl('deSetValue', '减少面积设置')">减少面积</div>
         </div>
+        <div class="row" v-if="hasPermission('window:gateControl') && Number(selectData.ndoorcount) == 2">
+          <div class="button-box" @click="setControl('frontGateOpen_S', '打开前门')">打开前门</div>
+          <div class="button-box" @click="setControl('frontGateClose_S', '关闭前门')">关闭前门</div>
+          <div class="button-box" @click="setControl('rearGateOpen_S', '打开后门')">打开前门</div>
+          <div class="button-box" @click="setControl('rearGateClose_S', '关闭后门')">关闭前门</div>
+        </div>
+        <div class="row" v-if="hasPermission('window:gateControl') && Number(selectData.ndoorcount) == 1">
+          <div class="button-box" @click="setControl('frontGateOpen_S', '打开门')">打开门</div>
+          <div class="button-box" @click="setControl('frontGateClose_S', '关闭门')">关闭门</div>
+        </div>
         <div v-if="hasPermission('window:sameSet')" class="button-box" @click="setControl('sameSetValue', '风窗面积设置')">设定风窗面积</div>
         <div v-if="hasPermission('window:COTest')" class="button-box" @click="setControl('COTest', 'CO调控预测')">CO调控预测</div>
       </div>
@@ -80,7 +88,7 @@
     <div class="title-text">
       {{ selectData.strinstallpos || selectData.strname }}
     </div>
-    <div class="bottom-tabs-box" @mousedown="setDivHeight($event, 350, scroll)">
+    <div class="bottom-tabs-box" @mousedown="setDivHeight($event, 50, scroll)">
       <dv-border-box8 :dur="5" :style="`padding: 5px; height: ${scroll.y + 120}px`">
         <a-tabs class="tabs-box" v-model:activeKey="activeKey" @change="tabChange">
           <a-tab-pane key="1" tab="实时监测">
@@ -89,7 +97,7 @@
               ref="MonitorDataTable"
               :columnsType="deviceType"
               :dataSource="dataSource"
-              @selectRow="getSelectRow"
+              @select-row="getSelectRow"
               design-scope="window-monitor"
               :scroll="{ y: scroll.y - 40 }"
               title="风窗监测"

+ 4 - 5
src/views/vent/monitorManager/windrectMonitor/index.vue

@@ -40,7 +40,7 @@
     <div class="title-text">
       {{ selectData.supplyAirAddr || selectData.strinstallpos || selectData.strname }}
     </div>
-    <div class="bottom-tabs-box" @mousedown="setDivHeight($event, 350, scroll)">
+    <div class="bottom-tabs-box" @mousedown="setDivHeight($event, 50, scroll)">
       <dv-border-box8 :dur="5" :style="`padding: 5px; height: ${scroll.y + 120}px`">
         <div class="tabs-button-group">
           <a-button v-if="hasPermission('windrect:handler')" class="tabs-button" type="primary" @click="openModel">一键测风</a-button>
@@ -54,7 +54,7 @@
               :columnsType="deviceType"
               :dataSource="dataSource"
               design-scope="windrect-monitor"
-              @selectRow="getSelectRow"
+              @select-row="getSelectRow"
               :scroll="{ y: scroll.y - 40 }"
               title="测风装置监测"
               :isShowPagination="true"
@@ -87,13 +87,12 @@
           <a-tab-pane v-if="hasPermission('windrect:chartMonitor')" key="2" tab="监测曲线图" force-render>
             <div class="tab-item" style="height: 280px" v-if="activeKey === '2'">
               <DeviceEcharts
-                chartsColumnsType="windrect_chart"
+                :chartsColumnsType="deviceType + '_chart'"
                 xAxisPropType="strname"
                 :dataSource="dataSource"
                 height="100%"
-                :chartsColumns="chartsColumnList"
                 :device-list-api="list.bind(null, { devicetype: 'windrect', pagetype: 'normal' })"
-                device-type="windrect"
+                :device-type="deviceType"
               />
             </div>
           </a-tab-pane>

Some files were not shown because too many files changed in this diff