Kaynağa Gözat

红沙泉露天煤矿界面布局更新-提交

lxh 3 hafta önce
ebeveyn
işleme
92c5992091
52 değiştirilmiş dosya ile 2270 ekleme ve 10512 silme
  1. BIN
      src/assets/images/home-container/configurable/hsq/6-1.png
  2. BIN
      src/assets/images/home-container/configurable/hsq/6-2.png
  3. 1 1
      src/utils/http/axios/index.ts
  4. 1 111
      src/views/vent/home/configurable/components/content.vue
  5. 0 202
      src/views/vent/home/configurable/components/preset/CustomGalleryNew.vue
  6. 0 78
      src/views/vent/home/configurable/components/preset/ImageCardNew.vue
  7. 0 281
      src/views/vent/home/configurable/components/preset/MeasureDetail.vue
  8. 0 47
      src/views/vent/home/configurable/components/preset/PermissionSet.vue
  9. 0 174
      src/views/vent/home/configurable/components/preset/SelectCs.vue
  10. 0 79
      src/views/vent/home/configurable/components/preset/StatisticDay.vue
  11. 0 229
      src/views/vent/home/configurable/components/preset/UserList.vue
  12. 0 158
      src/views/vent/home/configurable/components/preset/buttonList.vue
  13. 0 59
      src/views/vent/home/configurable/components/preset/cameraModal.vue
  14. 0 262
      src/views/vent/home/configurable/components/preset/cardList.vue
  15. 0 109
      src/views/vent/home/configurable/components/preset/generalList.vue
  16. 0 74
      src/views/vent/home/configurable/components/preset/radioLabel.vue
  17. 2 712
      src/views/vent/home/configurable/configurable.api.ts
  18. 29 7384
      src/views/vent/home/configurable/configurable.data.ts
  19. 0 96
      src/views/vent/home/configurable/deviceManger.vue
  20. 0 82
      src/views/vent/home/configurable/fireMonitor.vue
  21. 0 172
      src/views/vent/home/configurable/systemManger.vue
  22. 0 101
      src/views/vent/home/configurable/warnMonitor.vue
  23. 118 0
      src/views/vent/monitorManager/hsqHome/components/AlarmMonitor.vue
  24. 69 0
      src/views/vent/monitorManager/hsqHome/components/CommonBd.vue
  25. 202 0
      src/views/vent/monitorManager/hsqHome/components/CommonTable.vue
  26. 353 0
      src/views/vent/monitorManager/hsqHome/components/CustomChart.vue
  27. 157 0
      src/views/vent/monitorManager/hsqHome/components/CustomGalleryNew.vue
  28. 1 1
      src/views/vent/monitorManager/hsqHome/components/DeviceCenter.vue
  29. 1 1
      src/views/vent/monitorManager/hsqHome/components/DeviceLeft.vue
  30. 1 1
      src/views/vent/monitorManager/hsqHome/components/DeviceRight.vue
  31. 5 7
      src/views/vent/monitorManager/hsqHome/components/EnvironmentMonitor.vue
  32. 7 11
      src/views/vent/monitorManager/hsqHome/components/QuickAction.vue
  33. 98 0
      src/views/vent/monitorManager/hsqHome/components/SystemCenBottom.vue
  34. 88 50
      src/views/vent/monitorManager/hsqHome/components/SystemLeftBottom.vue
  35. 278 0
      src/views/vent/monitorManager/hsqHome/components/SystemLeftTop.vue
  36. 0 0
      src/views/vent/monitorManager/hsqHome/components/SystemRightBot.vue
  37. 46 5
      src/views/vent/monitorManager/hsqHome/components/SystemRightTop.vue
  38. 0 0
      src/views/vent/monitorManager/hsqHome/components/WarnBottom.vue
  39. 3 3
      src/views/vent/monitorManager/hsqHome/components/WarnCenTop.vue
  40. 0 0
      src/views/vent/monitorManager/hsqHome/components/WarnLeftTop.vue
  41. 11 10
      src/views/vent/monitorManager/hsqHome/components/WarnRightTop.vue
  42. 0 0
      src/views/vent/monitorManager/hsqHome/components/basicBorder.vue
  43. 0 0
      src/views/vent/monitorManager/hsqHome/components/basicDevice.vue
  44. 0 0
      src/views/vent/monitorManager/hsqHome/components/navMenu.vue
  45. 100 0
      src/views/vent/monitorManager/hsqHome/deviceManger.vue
  46. 221 0
      src/views/vent/monitorManager/hsqHome/fireMonitor.vue
  47. 23 0
      src/views/vent/monitorManager/hsqHome/hsqHome.api.ts
  48. 156 0
      src/views/vent/monitorManager/hsqHome/hsqHome.data.ts
  49. 6 12
      src/views/vent/monitorManager/hsqHome/index.vue
  50. 0 0
      src/views/vent/monitorManager/hsqHome/largeScreen.vue
  51. 175 0
      src/views/vent/monitorManager/hsqHome/systemManger.vue
  52. 118 0
      src/views/vent/monitorManager/hsqHome/warnMonitor.vue

BIN
src/assets/images/home-container/configurable/hsq/6-1.png


BIN
src/assets/images/home-container/configurable/hsq/6-2.png


+ 1 - 1
src/utils/http/axios/index.ts

@@ -310,7 +310,7 @@ function createAxios(opt?: Partial<CreateAxiosOptions>) {
         // authentication schemes,e.g: Bearer
         // authenticationScheme: 'Bearer',
         authenticationScheme: '',
-        timeout: 60 * 1000,
+        timeout: 60000,
         // 基础接口地址
         // baseURL: globSetting.apiUrl,
         headers: { 'Content-Type': ContentTypeEnum.JSON },

+ 1 - 111
src/views/vent/home/configurable/components/content.vue

@@ -92,97 +92,13 @@
         </template>
         <template v-if="config.name === 'device_alarm'">
           <DeviceAlarm class="content__module" :devicedata="config.data" :config="config.config" />
-        </template>
-        <!-- lxh -->
-        <template v-if="config.name === 'select_cs'">
-          <SelectCs :devicedata="config.data" :config="config.config" />
-        </template>
-        <template v-if="config.name === 'measure_detail'">
-          <MeasureDetail class="content__module" :show-title="false" :composite-data="config.data"
-            :topconfig="config.config.topconfig" :btnconfig="config.config.btnconfig" />
-        </template>
+        </template>  
         <template v-if="config.name === 'partition'">
           <Partition class="content__module" :type="config.type" :label="config.label" :icon="config.icon" />
         </template>
         <template v-if="config.name === 'selector_dual_chart'">
           <SelectorDualChart :data="config.data" :moduleData="props.moduleData" :config="config" />
         </template>
-        <template v-if="config.name === 'radio_label'">
-          <RadioLabel class="content__module" :type="config.config.type" :config="config.config" />
-        </template>
-        <template v-if="config.name === 'button_list'">
-          <ButtonList class="content__module" :type="config.config.type" :config="config.config"
-            :buttonList="config.config.buttonList" />
-        </template>
-        <template v-if="config.name === 'card_list'">
-          <cardList class="content__module" :cardData="config.data" />
-        </template>
-        <template v-else-if="config.name === 'generalist'">
-          <generalList class="content__module" :generalData="config.data" />
-        </template>
-    
-    
-        
-        
-    
-        <template v-else-if="config.name === 'jk-video'">
-          <cameraModal class="content__module" :deviceId="config.data" />
-        </template>
-        <template v-if="config.name === 'gallery_new'">
-          <CustomGalleryNew class="content__module" :type="config.config.type" :option="config.config.items"
-            :galleryData="config.data" />
-        </template>
-        <template v-if="config.name === 'card_new'">
-          <ImageCardNew :option="config.config.items" :cardData="config.data"></ImageCardNew>
-        </template>
-        <template v-if="config.name === 'btn_new'">
-          <BtnListNew :option="config.config.items" :data="config.data"></BtnListNew>
-        </template>
-        <template v-if="config.name === 'oerate_new'">
-          <OperateNew :option="config.config.items" :btnOption="config.config.option" :data="config.data"></OperateNew>
-        </template>
-        <template v-if="config.name === 'long_list'">
-          <LongList></LongList>
-        </template>
-        <template v-if="config.name === 'long_list1'">
-          <LongList1></LongList1>
-        </template>
-        <template v-if="config.name === 'long_list2'">
-          <LongList2></LongList2>
-        </template>
-        <template v-if="config.name === 'search_table'">
-          <SearchTable></SearchTable>
-        </template>
-        <template v-if="config.name === 'mixed_warn'">
-          <MixedWarn></MixedWarn>
-        </template>
-        <template v-if="config.name === 'rule_list'">
-          <RuleList></RuleList>
-        </template>
-        <template v-if="config.name === 'echart_bar_new'">
-          <EchartBarNew></EchartBarNew>
-        </template>
-        <template v-if="config.name === 'user_list'">
-          <UserList></UserList>
-        </template>
-        <template v-if="config.name === 'log_audit'">
-          <LogAudit></LogAudit>
-        </template>
-        <template v-if="config.name === 'user_edit'">
-          <UserEdit></UserEdit>
-        </template>
-        <template v-if="config.name === 'permission_info'">
-          <PermissionManager></PermissionManager>
-        </template>
-        <template v-if="config.name === 'permission_set'">
-          <PermissionSet></PermissionSet>
-        </template>
-        <template v-if="config.name === 'statistic_day'">
-          <StatisticDay></StatisticDay>
-        </template>
-        <template v-if="config.name === 'system_view'">
-          <SystemView></SystemView>
-        </template>
       </div>
     </div>
   </div>
@@ -211,38 +127,12 @@ import { clone } from 'lodash-es';
 import { getData, getFormattedText } from '../hooks/helper';
 import BlastDelta from '../../../monitorManager/deviceMonitor/components/device/modal/blastDelta.vue';
 import QHCurve from './preset/QHCurve.vue';
-import MeasureDetail from './preset/MeasureDetail.vue';
 import CustomTabs from './preset/CustomTabs.vue';
 import AIChat from '/@/components/AIChat/MiniChat.vue';
 import DeviceAlarm from './preset/DeviceAlarm.vue';
-import SelectCs from './preset/SelectCs.vue';
 import MiniBoardNew from './detail/MiniBoard-New.vue';
 import Partition from './preset/partition.vue';
 import SelectorDualChart from './preset/selectorDualChart.vue';
-import RadioLabel from './preset/radioLabel.vue';
-import ButtonList from './preset/buttonList.vue';
-import cardList from './preset/cardList.vue';
-import generalList from './preset/generalList.vue';
-
-import cameraModal from './preset/cameraModal.vue'
-import CustomGalleryNew from './preset/CustomGalleryNew.vue'
-import ImageCardNew from './preset/ImageCardNew.vue'
-import BtnListNew from './preset/BtnListNew.vue'
-import OperateNew from './preset/OperateNew.vue'
-import LongList from './preset/LongList.vue'
-import LongList1 from './preset/LongList1.vue'
-import LongList2 from './preset/LongList2.vue'
-import SearchTable from './preset/SearchTable.vue'
-import MixedWarn from './preset/MixedWarn.vue'
-import RuleList from './preset/RuleList.vue'
-import EchartBarNew from './preset/EchartBarNew.vue'
-import UserList from './preset/UserList.vue'
-import LogAudit from './preset/LogAudit.vue'
-import UserEdit from './preset/UserEdit.vue'
-import PermissionManager from './preset/PermissionManager.vue'
-import PermissionSet from './preset/PermissionSet.vue'
-import StatisticDay from './preset/StatisticDay.vue'
-import SystemView from './preset/SystemView.vue'
 // import FIreWarn from './preset/FIreWarn.vue';
 // import FIreControl from './preset/FIreControl.vue';
 

+ 0 - 202
src/views/vent/home/configurable/components/preset/CustomGalleryNew.vue

@@ -1,202 +0,0 @@
-<template>
-  <div class="custom-gallery-new">
-    <div :class="`gallery-new-box-${type}`">
-      <div :class="`gallery-content-${type}`" v-for="(item, index) in option" :key="index">
-        <SvgIcon v-if="type == 'B'" :class="index % 2 == 0 ? 'icon-style' : 'icon-style1'" size="20"
-          :name="item.iconName" />
-        <div :class="index % 2 == 0 ? 'gallery-content-text' : 'gallery-content-text-r'">{{ item.label }}</div>
-        <div :class="index % 2 == 0 ? 'gallery-content-value' : 'gallery-content-value-r'">{{ galleryData ?
-          galleryData[item.value] : 0}}</div>
-      </div>
-      <div :class="`gallery-content-${type}`">
-        <SvgIcon  class="icon-style2" size="30" :name="type=='B' ? 'zsj' : 'device-status'" />
-        <!-- <div v-else class="gallery-content-text1">{{ galleryData?.totalNum || 0 }}</div> -->
-      </div>
-    </div>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref, watch } from 'vue'
-import { SvgIcon } from '/@/components/Icon';
-
-let props = defineProps({
-  type: {
-    type: String
-  },
-  option: {
-    type: Array as any
-  },
-  galleryData: {
-    type: Object
-  }
-})
-
-</script>
-
-<style lang="less" scoped>
-@import '/@/design/theme.less';
-
-@{theme-deepblue} {}
-
-.custom-gallery-new {
-  --image-gallery-bg: url('@/assets/images/home-container/configurable/dusthome/gallery-bg.png');
-  --image-gallery-bg-b: url('@/assets/images/home-container/configurable/dusthome/gallery-bg-b.png');
-  position: relative;
-  padding: 10px 15px;
-
-  .gallery-new-box-A {
-    position: relative;
-    width: 100%;
-    height: 100%;
-    background: var(--image-gallery-bg) no-repeat;
-    background-size: 100% 100%;
-
-  }
-
-  .gallery-new-box-B {
-    position: relative;
-    width: 100%;
-    height: 100%;
-    background: var(--image-gallery-bg-b) no-repeat;
-    background-size: 100% 100%;
-
-  }
-
-  .gallery-content-A {
-    position: absolute;
-
-    &:nth-child(1) {
-      left: 22px;
-      top: 1px;
-    }
-
-    &:nth-child(2) {
-      display: flex;
-      flex-direction: column;
-      align-items: flex-end;
-      right: 24px;
-      top: 1px;
-    }
-
-    &:nth-child(3) {
-      left: 22px;
-      top: 61px;
-    }
-
-    &:nth-child(4) {
-      display: flex;
-      flex-direction: column;
-      align-items: flex-end;
-      right: 24px;
-      top: 61px;
-    }
-
-    &:nth-child(5) {
-      left: 50%;
-      top: 50%;
-      transform: translate(-50%, -50%);
-    }
-
-    .gallery-content-text {
-      margin-bottom: 2px;
-    }
-
-    .gallery-content-text-r {
-      margin-bottom: 2px;
-    }
-
-    .gallery-content-text1 {
-      font-size: 24px;
-      font-family: 'douyuFont';
-    }
-
-    .gallery-content-value,
-    .gallery-content-value-r {
-      font-family: 'douyuFont';
-      color: #fff;
-    }
-
-  }
-
-  .gallery-content-B {
-    position: absolute;
-    width: 160px;
-    height: 80px;
-
-    &:nth-child(1) {
-      left: 0px;
-      top: 0px;
-    }
-
-    &:nth-child(2) {
-      right: 0px;
-      top: 0px;
-    }
-
-    &:nth-child(3) {
-      left: 0px;
-      top: 99px;
-    }
-
-    &:nth-child(4) {
-      right: 0px;
-      top: 98px;
-    }
-
-    &:nth-child(5) {
-      left: 50%;
-      top: 50%;
-      transform: translate(-50%, -50%);
-    }
-
-    .icon-style {
-      position: absolute;
-      left: 15px;
-      top: 8px;
-    }
-
-    .icon-style1 {
-      position: absolute;
-      right: 15px;
-      top: 8px;
-    }
-
-    .icon-style2 {
-      position: absolute;
-      left: 65px;
-      top: 25px;
-    }
-
-    .gallery-content-text {
-      position: absolute;
-      left: 42px;
-      top: 6px;
-    }
-
-    .gallery-content-text-r {
-      position: absolute;
-      right: 42px;
-      top: 6px;
-    }
-
-    .gallery-content-value {
-      position: absolute;
-      left: 42px;
-      top: 50px;
-      font-family: 'douyuFont';
-      color: #b9f3ff;
-    }
-
-    .gallery-content-value-r {
-      position: absolute;
-      right: 42px;
-      top: 50px;
-      font-family: 'douyuFont';
-      color: #b9f3ff;
-    }
-  }
-
-
-}
-</style>

+ 0 - 78
src/views/vent/home/configurable/components/preset/ImageCardNew.vue

@@ -1,78 +0,0 @@
-<template>
-  <div class="ImageCardNew">
-    <div class="card-item" v-for="(item, index) in option" :key="index">
-      <div class="item-value">{{ cardData[item.value] }}</div>
-      <div class="item-label">{{ item.label }}</div>
-    </div>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref } from 'vue'
-
-let props=defineProps({
-  option:{
-    type:Array as any
-  },
-  cardData:{
-    type:Object as any,
-    default:()=>{
-      return {
-          dayWarn:12,
-      warnOk:2,
-      warnUnOk:10
-      }
-    }
-  }
-})
-</script>
-
-<style lang="less" scoped>
-@import '/@/design/theme.less';
-
-@{theme-deepblue} {}
-
-.ImageCardNew {
-  --image-card-bg: url('@/assets/images/home-container/configurable/hsq/1-7.png');
-  --image-card-bg1: url('@/assets/images/home-container/configurable/hsq/1-8.png');
-  display: flex;
-  justify-content: space-around;
-  align-items: center;
-  width: calc(100% - 20px);
-  height: 100%;
-  background: var(--image-card-bg) no-repeat bottom;
-  background-size: 100% auto;
-  margin: 0px 10px;
-
-  .card-item {
-    display: flex;
-    flex-direction: column;
-    align-items: center;
-    justify-content: center;
-    width: 89px;
-    height: 49px;
-    background: var(--image-card-bg1) no-repeat;
-    background-size: 100% 100%;
-
-    &:nth-child(1) {
-      .item-value {
-        font-family: 'douyuFont';
-        color: #ff3d3d;
-      }
-    }
-     &:nth-child(2) {
-      .item-value {
-        font-family: 'douyuFont';
-        color: #ff983d;
-      }
-    }
-     &:nth-child(3) {
-      .item-value {
-        font-family: 'douyuFont';
-        color: #3dff69;
-      }
-    }
-  }
-
-}
-</style>

+ 0 - 281
src/views/vent/home/configurable/components/preset/MeasureDetail.vue

@@ -1,281 +0,0 @@
-<template>
-  <div class="content-box">
-    <div class="dust-scroll-content">
-      <a-carousel dot-position="left" dotsClass="dots-class" :dots="true" :autoplay="true">
-        <template v-for="(data, selectIndex) in selectData" :key="selectIndex">
-          <div class="monitor-item">
-            <div class="title-box">{{ data['devicePos'] }}</div>
-            <div class="monitor-content-top">
-              <div v-for="(dustItem, index) in topConfig" :key="index" class="top-item-box" :class="`top-item-box-${index + 1}`">
-                <div class="item-top-title">{{ dustItem.title }}</div>
-                <div class="item-top-value">{{ data[dustItem.code] }}</div>
-              </div>
-            </div>
-            <div class="monitor-content-bottom">
-              <div v-for="(dustItem, index) in btnConfig" :key="index" class="bottom-item-box" :class="`bottom-item-box-${index + 1}`">
-                <div class="item-bottom-title">{{ dustItem.title }}</div>
-                <div class="item-bottom-value">{{ data[dustItem.code] }}</div>
-              </div>
-            </div>
-          </div>
-        </template>
-      </a-carousel>
-    </div>
-  </div>
-</template>
-
-<script setup lang="ts">
-  import { ref, watch } from 'vue';
-
-  let props = defineProps({
-    compositeData: {
-      type: Array,
-      default: () => {
-        return [];
-      },
-    },
-    topconfig: {
-      type: Array,
-      default: () => {
-        return [
-          {
-            title: '粉尘类型',
-            code: 'dustType',
-            value: '',
-          },
-          {
-            title: '火焰长度(mm)',
-            code: 'fireLen',
-            value: '',
-          },
-          {
-            title: '爆炸性',
-            code: 'isBlast',
-            value: '',
-          },
-          {
-            title: '风量(m³/min)',
-            code: 'airQuantity',
-            value: '',
-          },
-        ];
-      },
-    },
-    btnconfig: {
-      type: Array,
-      default: () => {
-        return [
-          {
-            title: '总粉尘浓度 (mg/m³)',
-            code: 'dustCon',
-            value: '',
-          },
-          {
-            title: '呼尘浓度 (mg/m³)',
-            code: 'respirableDustCon',
-            value: '',
-          },
-          {
-            title: '二氧化硅含量 (%)',
-            code: 'SiO2Content',
-            value: '',
-          },
-          {
-            title: '呼尘颗粒占比 (%)',
-            code: 'respirableDustRatio',
-            value: '',
-          },
-        ];
-      },
-    },
-  });
-  const selectData = ref<any>([]);
-  const topConfig: any = props.topconfig;
-  const btnConfig: any = props.btnconfig;
-  watch(
-    () => props.compositeData,
-    (newS) => {
-      selectData.value = newS;
-    },
-    {
-      immediate: true,
-      deep: true,
-    }
-  );
-</script>
-
-<style lang="less" scoped>
-  @font-face {
-    font-family: 'douyuFont';
-    src: url('/@/assets/font/douyuFont.otf');
-  }
-
-  .content-box {
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    width: 100%;
-    height: 100%;
-
-    .dust-scroll-content {
-      width: 400px;
-      height: 420px;
-      overflow-y: auto;
-      overflow-x: hidden;
-      .monitor-item {
-        margin-bottom: 15px;
-        .title-box {
-          color: #fff;
-          width: 100%;
-          height: 40px;
-          margin-left: 5px;
-          margin-top: 00px;
-          margin-bottom: 5px;
-          padding-left: 40px;
-          padding-top: 6px;
-          background: url('/@/assets//images//company//lentj.png') no-repeat;
-          background-size: 199px 100%;
-          font-size: 15px;
-          font-weight: 600;
-        }
-        .monitor-content-top {
-          width: 100%;
-          display: flex;
-          flex-direction: row;
-          flex-wrap: wrap;
-          color: #fff;
-          .top-item-box {
-            width: 193px;
-            height: 64px;
-            display: flex;
-            justify-content: space-between;
-            align-items: center;
-            padding: 0 28px;
-          }
-          .top-item-box-1 {
-            background: url('/@/assets//images//company//dust//tip-bg-1.png');
-          }
-          .top-item-box-2 {
-            background: url('/@/assets//images//company//dust//tip-bg-2.png');
-          }
-          .top-item-box-3 {
-            background: url('/@/assets//images//company//dust//tip-bg-3.png');
-          }
-          .top-item-box-4 {
-            background: url('/@/assets//images//company//dust//tip-bg-4.png');
-          }
-        }
-        .monitor-content-bottom {
-          padding: 0 20px;
-          color: #fff;
-          .bottom-item-box {
-            width: 358px;
-            height: 43px;
-            display: flex;
-            justify-content: space-between;
-            align-items: center;
-            margin-top: 14px;
-            position: relative;
-            .item-bottom-title {
-              margin-left: 65px;
-            }
-            .item-bottom-value {
-              margin-right: 20px;
-            }
-          }
-          .bottom-item-box-1 {
-            background: url('/@/assets//images//company//dust//tip-bg1-1.png');
-            &::after {
-              content: '';
-              width: 25px;
-              height: 25px;
-              position: absolute;
-              left: 13px;
-              top: 7px;
-              background: url('/@/assets//images//company//dust//dustCon-icon.png');
-            }
-          }
-          .bottom-item-box-2 {
-            background: url('/@/assets//images//company//dust//tip-bg1-2.png');
-            &::after {
-              content: '';
-              width: 25px;
-              height: 25px;
-              position: absolute;
-              left: 12px;
-              top: 6px;
-              background: url('/@/assets//images//company//dust//respirableDustCon-icon.png');
-            }
-          }
-          .bottom-item-box-3 {
-            background: url('/@/assets//images//company//dust//tip-bg1-1.png');
-            &::after {
-              content: '';
-              width: 28px;
-              height: 22px;
-              position: absolute;
-              left: 10px;
-              top: 7px;
-              background: url('/@/assets//images//company//dust//SiO2Content-icon.png');
-            }
-          }
-          .bottom-item-box-4 {
-            background: url('/@/assets//images//company//dust//tip-bg1-2.png');
-            &::after {
-              content: '';
-              width: 26px;
-              height: 20px;
-              position: absolute;
-              left: 11px;
-              top: 8px;
-              background: url('/@/assets//images//company//dust//respirableDustRatio-icon.png');
-            }
-          }
-        }
-      }
-    }
-  }
-  .dots-class {
-    width: 8px;
-  }
-  ::v-deep .slick-dots-left {
-    left: 0 !important;
-  }
-  ::v-deep .zxm-select-single:not(.zxm-select-customize-input) .zxm-select-selector {
-    height: 24px;
-  }
-
-  ::v-deep .zxm-select-single:not(.zxm-select-customize-input) .zxm-select-selector .zxm-select-selection-search-input {
-    height: 24px;
-  }
-
-  ::v-deep .zxm-select-selection-placeholder {
-    color: #fff !important;
-    line-height: 22px !important;
-  }
-
-  ::v-deep .zxm-select-single:not(.zxm-select-customize-input) .zxm-select-selector::after {
-    line-height: 24px;
-  }
-
-  ::v-deep .zxm-select:not(.zxm-select-customize-input) .zxm-select-selector {
-    background-color: transparent;
-    border-top: 0px;
-    border-bottom: 0px;
-    border-left: 2px solid;
-    border-right: 2px solid;
-    border-image: linear-gradient(to bottom, transparent, rgba(49, 184, 255, 1), transparent) 1 1 1;
-  }
-
-  ::v-deep .zxm-select-arrow {
-    color: #fff !important;
-  }
-
-  ::v-deep .zxm-select-selection-item {
-    color: #fff !important;
-  }
-
-  ::v-deep .zxm-select-single .zxm-select-selector .zxm-select-selection-item {
-    line-height: 24px !important;
-  }
-</style>

+ 0 - 47
src/views/vent/home/configurable/components/preset/PermissionSet.vue

@@ -1,47 +0,0 @@
-<template>
-  <div class="permission-set">
-    <basicBorder title="安全主管【权限配置】" color-v="orange" :width-v="174">
-      <a-checkbox-group v-model:value="value" name="checkboxgroup" :options="plainOptions" />
-    </basicBorder>
-
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref } from 'vue'
-import basicBorder from '../basicBorder.vue'
-
-let value = ref<any[]>([])
-let plainOptions = ref<any[]>([
-  { label: '一张图查看', value: '1' },
-  { label: '报警确认处理', value: '2' },
-  { label: '报警解除', value: '3' },
-  { label: '视频调取查看', value: '4' },
-  { label: '设备状态查看', value: '5' },
-  { label: '设备参数配置', value: '6' },
-  { label: '设备重启', value: '7' },
-  { label: '联动规则编辑', value: '8' },
-  { label: '联动规则查看', value: '9' },
-  { label: '联动日志查看', value: '10' },
-  { label: '用户管理', value: '11' },
-  { label: '角色权限管理', value: '12' },
-])
-</script>
-
-<style lang="less" scoped>
-.permission-set {
-  position: relative;
-  width: 100%;
-  height: 100%;
-  padding: 15px;
-  box-sizing: border-box;
- 
-}
-:deep(.zxm-checkbox-group-item){
-    width: 50% !important;
-    margin: 0px 0px 15px 0px !important;
-    padding: 0px 15px !important;
-      background: linear-gradient(to right, #134c77, transparent) !important;
-      color: #fff !important;
-  }
-</style>

+ 0 - 174
src/views/vent/home/configurable/components/preset/SelectCs.vue

@@ -1,174 +0,0 @@
-<template>
-  <div class="select-cs">
-    <div class="select-item">
-      <div class="select-item-box">
-        <a-select v-model:value="selectVal" :bordered="false" style="width: 100%">
-          <a-select-option v-for="item in options" :key="item.value" :value="item.value">{{ item.label }}</a-select-option>
-        </a-select>
-      </div>
-      <div class="select-item-box">
-        <span>{{ config.switch1.label[0] }}</span>
-        <a-switch
-          :disabled="config.switch1.disabled"
-          :checked="getFormattedText(devicedata, config.switch1.value, config.switch1.trans)"
-          @update:checked="handlUpdate($event, config.switch1)"
-        />
-        <span>{{ config.switch1.label[1] }}</span>
-      </div>
-    </div>
-    <div class="select-item">
-      <div class="select-item-box1">
-        <span>{{ config.switch2.label[0] }}</span>
-        <a-switch
-          :disabled="config.switch2.disabled"
-          :checked="getFormattedText(devicedata, config.switch2.value, config.switch2.trans)"
-          @update:checked="handlUpdate($event, config.switch2)"
-        />
-      </div>
-      <div class="select-item-box1">
-        <span>{{ config.switch3.label[0] }}</span>
-        <a-switch
-          :disabled="config.switch3.disabled"
-          :checked="getFormattedText(devicedata, config.switch3.value, config.switch3.trans)"
-          @update:checked="handlUpdate($event, config.switch3)"
-        />
-      </div>
-    </div>
-  </div>
-</template>
-
-<script lang="ts" setup>
-  import { computed, ref } from 'vue';
-  import { getData, getFormattedText } from '../../hooks/helper';
-  import { deviceControlApi } from '/@/api/vent';
-  import { message } from 'ant-design-vue';
-
-  interface SwitchConfig {
-    /** 提交控制时 启动 状态对应的key */
-    keyOn: string;
-    /** 提交控制时 关闭 状态对应的key */
-    keyOff: string;
-    /** 提交控制时 启动 状态对应的value */
-    valueOn: string;
-    /** 提交控制时 关闭 状态对应的value */
-    valueOff: string;
-    /** 提示文本,按需从数组中依次读取内容 */
-    label: string[];
-    disabled?: boolean;
-    /** 判断该项的默认状态时用到的value,formatter格式 */
-    value: string;
-    /** 如果value不是boolean类型,需要给出trans转换 */
-    trans: any;
-  }
-  interface CSConfig {
-    selector: {
-      label: string;
-      value: string;
-      readFrom: string;
-    };
-    switch1: SwitchConfig;
-    switch2: SwitchConfig;
-    switch3: SwitchConfig;
-  }
-
-  const props = defineProps<{
-    config: CSConfig;
-    devicedata: Record<string, any>;
-  }>();
-
-  const options = computed(() => {
-    const { readFrom, value, label } = props.config.selector;
-    const res = getData(props.devicedata.value, readFrom);
-    return (Array.isArray(res) ? res : [res]).map((item) => {
-      return {
-        label: getFormattedText(item, label),
-        value: getFormattedText(item, value),
-      };
-    });
-  });
-
-  const selectVal = ref(undefined);
-
-  function handlUpdate(checked: boolean, item: SwitchConfig) {
-    deviceControlApi({
-      deviceid: selectVal,
-      paramcode: checked ? item.keyOn : item.keyOff,
-      value: checked ? item.valueOn : item.valueOff,
-    })
-      .then((r) => {
-        if (!r.success) throw r.message || '操作失败';
-        message.success('指令下发成功');
-      })
-      .catch((e) => {
-        message.error(typeof e === 'string' ? e : '指令下发失败');
-      });
-  }
-</script>
-
-<style lang="less" scoped>
-  .select-cs {
-    height: 100%;
-    padding: 5px 15px;
-    box-sizing: border-box;
-    width: 100%;
-    overflow-y: auto;
-
-    .select-item {
-      display: flex;
-      width: 100%;
-      height: calc(50% - 2px);
-
-      &:nth-child(1) {
-        margin-bottom: 2px;
-        padding: 0px 10px;
-        background: url('@/assets/images/vent/homeNew/databg/11.png') no-repeat;
-        background-size: 100% 100%;
-      }
-
-      &:nth-child(2) {
-        margin-top: 2px;
-      }
-
-      .select-item-box {
-        display: flex;
-        justify-content: center;
-        align-items: center;
-        width: 50%;
-        height: 34px;
-        padding-top: 6px;
-        box-sizing: border-box;
-
-        &:nth-child(1) {
-          background: url('@/assets/images/vent/homeNew/databg/bg-line.png') no-repeat right;
-        }
-
-        span {
-          margin: 0px 10px;
-        }
-      }
-
-      .select-item-box1 {
-        display: flex;
-        justify-content: space-between;
-        width: 100%;
-        height: 100%;
-        padding: 10px 20px 0px 20px;
-        box-sizing: border-box;
-        background: url('@/assets/images/vent/homeNew/databg/13.png') no-repeat;
-        background-size: 100% 100%;
-      }
-    }
-
-    ::v-deep .zxm-select-selector {
-      background-color: transparent;
-      height: 28px;
-      padding: 0 10px;
-    }
-
-    ::v-deep .zxm-switch {
-      border-top: 1px solid rgba(45, 187, 255);
-      border-bottom: 1px solid rgba(45, 187, 255);
-      border-right: 1px solid rgba(45, 187, 255);
-    }
-  }
-</style>

+ 0 - 79
src/views/vent/home/configurable/components/preset/StatisticDay.vue

@@ -1,79 +0,0 @@
-<template>
-  <div class="statistic-day">
-    <div class="list-title">今日登录统计</div>
-     <div class="list-content">
-        <basicBorder title="最近登录">
-          <div class="basic-box">
-            <div class="box-item" v-for="(item,index) in list" :key="index">
-              <span style="margin-right: 10px;">{{ `${item.label} : ` }}</span>
-              <span>{{ item.value }}</span>
-            </div>
-          </div>
-        </basicBorder>
-     </div>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref } from 'vue'
-import basicBorder from '../basicBorder.vue'
-
-let list=ref<any[]>([
-  {label:'名称',value:'14:15:33 192.168.1.42'},
-  {label:'名称',value:'14:15:33 192.168.1.42'},
-  {label:'名称',value:'14:15:33 192.168.1.42'},
-  {label:'名称',value:'14:15:33 192.168.1.42'},
-  {label:'名称',value:'14:15:33 192.168.1.42'},
-  {label:'名称',value:'14:15:33 192.168.1.42'},
-])
-</script>
-
-<style lang="less" scoped>
-@import '/@/design/theme.less';
-
-@{theme-deepblue} {
-  .statistic-day {}
-}
-
-.statistic-day {
-  --image-box-bg: url('@/assets/images/home-container/configurable/hsq/2-5.png');
-  position: relative;
-  width: 100%;
-  height: 100%;
-  padding: 15px;
-  box-sizing: border-box;
-
-  .list-title {
-    width: 177px;
-    height: 30px;
-    line-height: 22px;
-    padding-left: 16px;
-    color: #01fefc;
-    font-weight: bolder;
-    background: var(--image-box-bg) no-repeat;
-    background-size: 100% 100%;
-    margin-bottom: 5px;
-  }
-   .list-content {
-    width: 100%;
-    height: calc(100% - 35px);
-  }
-  .basic-box{
-    height: 100%;
-    overflow-y: auto;
-  }
-  .box-item{
-    display: flex;
-    // justify-content: space-between;
-    align-items: center;
-    height: 26px;
-    margin-bottom: 6px;
-    padding: 0px 10px;
-    box-sizing: border-box;
-     background: linear-gradient(to right, #134c77, transparent);
-  }
-   ::-webkit-scrollbar {
-    display: none;
-  }
-}
-</style>

+ 0 - 229
src/views/vent/home/configurable/components/preset/UserList.vue

@@ -1,229 +0,0 @@
-<template>
-  <div class="user-list">
-    <div class="list-title">
-      <div class="title-l">用户列表</div>
-      <div class="title-r">
-        <div class="basic-btn">新增用户</div>
-      </div>
-    </div>
-    <div class="list-content">
-      <div class="search-area">
-        <a-input v-model:value="searchData" placeholder="搜索" size="small" />
-        <div class="search-btn">
-          <div class="basic-btn">筛选</div>
-        </div>
-      </div>
-      <div class="content-area">
-        <div class="content-title">
-          <div class="title-item" v-for="(item, index) in titleList" :key="index">{{ item.label }}</div>
-        </div>
-        <div class="table-content">
-          <div class="content-item" v-for="(item, index) in tableData" :key="index">
-            <div class="item-text">{{ item.id}}</div>
-            <div class="item-text">{{ item.address }}
-            </div>
-            <div class="item-text item-text1">{{ item.grade }}</div>
-            <div class="item-text item-text2">{{ item.status }}</div>
-            <div class="item-text">
-              <span class="text-look">确认</span>
-              <span class="text-look">详情</span>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref } from 'vue';
-
-let searchData = ref('')
-let titleList = ref<any[]>([
-  { label: 'ID', value: '1' },
-  { label: '用户名', value: '2' },
-  { label: '姓名', value: '3' },
-  { label: '角色', value: '4' },
-  { label: '部门', value: '5' },
-  { label: '电话', value: '5' },
-  { label: '状态', value: '5' },
-  { label: '操作', value: '5' },
-])
-let tableData = ref<any[]>([
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-])
-</script>
-
-<style lang="less" scoped>
-@import '/@/design/theme.less';
-
-@{theme-deepblue} {
-  .user-list {}
-}
-
-.user-list {
-  --image-box-bg: url('@/assets/images/home-container/configurable/hsq/2-5.png');
-  --image-box-bg1: url('@/assets/images/home-container/configurable/hsq/2-6.png');
-  --image-box-bg2: url('@/assets/images/home-container/configurable/hsq/2-24.png');
-  position: relative;
-  width: 100%;
-  height: 100%;
-  padding: 15px;
-  box-sizing: border-box;
-
-  .list-title {
-    display: flex;
-    justify-content: space-between;
-    width: 100%;
-    height: 30px;
-    line-height: 22px;
-    margin-bottom: 10px;
-  }
-
-  .title-l {
-    width: 177px;
-    height: 100%;
-    color: #01fefc;
-    font-weight: bolder;
-    padding-left: 16px;
-    background: var(--image-box-bg) no-repeat;
-    background-size: 100% 100%;
-  }
-
-  .title-r {
-    width: 85px;
-    height: 30px;
-    border: 1px solid #01fefc;
-    border-radius: 4px;
-    padding: 3px;
-    cursor: pointer;
-    // margin-right: 16px;
-  }
-
-  .basic-btn {
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    width: 100%;
-    height: 100%;
-    background-color: rgba(32, 166, 169);
-  }
-
-  .list-content {
-    height: calc(100% - 40px);
-  }
-
-  .search-area {
-    height: 42px;
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    margin-bottom: 5px;
-  }
-
-  .search-btn {
-    width: 85px;
-    height: 30px;
-    border: 1px solid #01fefc;
-    border-radius: 4px;
-    padding: 3px;
-    cursor: pointer;
-  }
-
-  .content-area {
-    height: calc(100% - 47px);
-  }
-
-  .content-title {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    height: 34px;
-    background: var(--image-box-bg2) no-repeat;
-    background-size: 100% 100%;
-    margin-bottom: 6px;
-  }
-
-  .title-item {
-    display: flex;
-    flex: 1;
-    justify-content: center;
-    align-items: center;
-    color: #01fefc;
-  }
-
-  .table-content {
-    height: calc(100% - 40px);
-    overflow-y: auto;
-  }
-
-  .content-item {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    height: 36px;
-
-    &:nth-child(odd) {
-      background-color: #0e3455;
-    }
-
-    &:nth-child(even) {
-      background-color: #114268;
-    }
-  }
-
-  .item-text {
-    display: flex;
-    flex: 1;
-    justify-content: center;
-    align-items: center;
-  }
-
-  .item-text1 {
-    color: #fc002a;
-  }
-
-  .item-text2 {
-    color: orange;
-  }
-
-  .text-look {
-    padding: 0px 3px;
-    margin: 0px 2px;
-    border-radius: 2px;
-    background-color: #2484bc;
-    cursor: pointer;
-  }
-
-  .zxm-input {
-    height: 42px;
-    color: #fff;
-    background-color: transparent;
-    border: none;
-    background: var(--image-box-bg1) no-repeat;
-    background-size: 100% 100%;
-  }
-
-  .zxm-input-sm {
-    padding: 0px 20px;
-  }
-
-  ::-webkit-scrollbar {
-    display: none;
-  }
-}
-</style>

+ 0 - 158
src/views/vent/home/configurable/components/preset/buttonList.vue

@@ -1,158 +0,0 @@
-<template>
-  <div ref="buttonContainer">
-    <div :class="`button-block_${type}`" v-if="type === 'A'">
-      <div :class="`button-item_${type}`" v-for="button in buttonList" :key="button.value">
-        <div v-if="button.isShowInput" :class="`input-area_${type}`">
-          <a-input v-model:value="button.inputValue" :placeholder="button.inputContent" />
-          <a-button type="primary" @click="handleData(button)">{{ button.label }}</a-button>
-        </div>
-        <div v-else>
-          <a-button type="primary" @click="handleData(button)">{{ button.label }}</a-button>
-        </div>
-      </div>
-    </div>
-    <div :class="`button-block_${type}`" v-if="type === 'B'">
-      <!-- 遍历分组后的按钮组 -->
-      <div :class="`button-group_${type}`" v-for="(group, groupIndex) in groupedButtons" :key="groupIndex">
-        <!-- 遍历每组中的按钮 -->
-        <div :class="`button-item_${type}`" v-for="button in group" :key="button.value">
-          <a-button type="primary" @click="handleData(button)">{{ button.label }}</a-button>
-        </div>
-      </div>
-    </div>
-  </div>
-  <ConfirmModal v-model:visible="modalVisible" @ok="handleConfirm" @cancel="handleCancel" class="btn-confirm-modal">
-    <SvgIcon class="icon" size="34" name="warning-icon-gas" />
-    <span> {{ currentButton?.content }} </span>
-    <inputPassword v-model:value="password" placeholder="请输入密码校验(必填)" class="pswInput" />
-    <div class="warn-text">
-      <span>{{ inputWarn }}</span>
-    </div>
-  </ConfirmModal>
-</template>
-
-<script lang="ts" setup>
-  defineOptions({ name: 'ButtonList' });
-  import ConfirmModal from '/@/views/vent/comment/components/modal/confirmModal.vue';
-  import { computed, ref, inject } from 'vue';
-  import { InputPassword } from 'ant-design-vue';
-  // 定义组件属性
-  const props = defineProps<{
-    type: string;
-    config: any;
-    buttonList: ButtonItem[];
-  }>();
-  // 定义按钮项的类型
-  interface ButtonItem {
-    isShowInput: boolean;
-    inputContent: string;
-    inputValue: string | number;
-    value: string | number;
-    label: string;
-    content: string;
-    // 可以根据实际需求添加其他属性
-  }
-  const password = ref('');
-  const inputWarn = ref('密码错误请重新输入');
-  const modalVisible = ref(false);
-  const currentButton = ref<ButtonItem | null>(null); // 记录当前点击的按钮
-
-  const groupedButtons = computed<ButtonItem[][]>(() => {
-    if (props.type !== 'B') return [];
-    const groups: ButtonItem[][] = [];
-    for (let i = 0; i < props.buttonList.length; i += 2) {
-      groups.push(props.buttonList.slice(i, i + 2));
-    }
-    return groups;
-  });
-  // 注入祖父组件提供的处理函数
-  const handleButtonConfirm = inject<(button: ButtonItem) => void>(
-    'handleButtonConfirm',
-    () => console.warn('未提供handleButtonConfirm函数') // 默认值,避免报错
-  );
-  const handleData = (button: ButtonItem) => {
-    modalVisible.value = !modalVisible.value;
-    currentButton.value = button;
-  };
-  const handleConfirm = () => {
-    if (!currentButton.value) return;
-    password.value = '';
-    inputWarn.value = '';
-    handleButtonConfirm(currentButton.value);
-  };
-  const handleCancel = () => {
-    password.value = '';
-    inputWarn.value = '';
-  };
-</script>
-
-<style lang="less">
-  .button-block_A {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    padding: 0 15px;
-    flex-wrap: wrap;
-    margin-bottom: 20px;
-    .input-area_A {
-      height: 50px;
-      width: 250px;
-      display: flex;
-      background: url('@/assets/images/vent/homeNew/databg/11.png') no-repeat;
-      background-size: 100% 100%;
-      align-items: center;
-      justify-content: space-between;
-      margin: 5px 0;
-      padding: 3px 18px 3px 13px;
-      input {
-        height: 23px;
-        width: 120px;
-        background-color: #09172c;
-        border: solid 1px #1f7394;
-        color: #fff;
-      }
-      button {
-        height: 24px;
-        width: 50px;
-        padding: 0 10px;
-      }
-    }
-  }
-  .button-block_B {
-    display: flex;
-    justify-content: space-between;
-    padding: 0 10px 10px 10px;
-    .button-group_B {
-      background: url('/@/assets/images/home-container/configurable/minehome/button-bg-a.png') no-repeat;
-      background-size: 100% 100%;
-      width: 130px;
-      height: 100px;
-      display: flex;
-      align-items: center;
-      flex-wrap: wrap;
-      justify-content: center;
-      padding: 10px 0;
-    }
-  }
-  .btn-confirm-modal {
-    .zxm-modal-content {
-      height: 330px !important;
-      background-size: 100% 100%;
-      .zxm-modal-body {
-        height: 260px;
-        padding-top: 85px;
-      }
-      .zxm-modal-footer {
-        text-align: center;
-      }
-    }
-  }
-  .pswInput {
-    margin-top: 55px;
-    width: 80%;
-  }
-  .warn-text {
-    color: red;
-    font-size: 15px;
-  }
-</style>

+ 0 - 59
src/views/vent/home/configurable/components/preset/cameraModal.vue

@@ -1,59 +0,0 @@
-<template>
-  <div class="camera-modal">
-    <div v-if="renderPlayer" ref="playerRef" style="
-     display: flex;
-      width: 100%;
-      height: 100%;
-      overflow-y: auto;
-      pointer-events: none;
-    ">
-    </div>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { onMounted, onUnmounted, ref, reactive, onBeforeUnmount } from 'vue';
-import { useCamera } from '/@/hooks/system/useCamera';
-
-let props = defineProps({
-  deviceId: {
-    type: String,
-    default: ''
-  },
-});
-const { getCamera, removeCamera } = useCamera();
-const playerRef = ref();
-const renderPlayer = ref(true);
-
-onMounted(async () => {
-  await getCamera(props.deviceId, playerRef, renderPlayer);
-});
-
-onBeforeUnmount(() => {
-  removeCamera(playerRef);
-});
-</script>
-
-<style lang="less" scoped>
-:deep(#LivePlayerBox) {
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-start;
-  flex-wrap: wrap;
-  pointer-events: none;
-
-  .liveVideo {
-    width: 525px !important;
-    height: 312px !important;
-    padding: 15px !important;
-    align-self: auto !important;
-    margin: 10px 8px !important;
-    background-size: 100% 100% !important;
-  }
-
-  .video-parent {
-    pointer-events: auto !important;
-    align-self: auto !important;
-  }
-}
-</style>

+ 0 - 262
src/views/vent/home/configurable/components/preset/cardList.vue

@@ -1,262 +0,0 @@
-<template>
-  <div class="card-list">
-    <div class="list-box">
-      <div class="box-item-title">{{ cardData.title }}</div>
-      <div class="box-item-content">
-        <div class="content-area">
-          <img src="@/assets/images/home-container/configurable/electroChamper/2-6.png" alt="">
-          <div class="item-text">{{ cardData.areaText }}</div>
-          <div class="item-val">{{ cardData.areaVal }}</div>
-        </div>
-         <div class="content-module">
-          <img src="@/assets/images/home-container/configurable/electroChamper/2-8.png" alt="">
-          <div class="item-text">{{ cardData.moduleText }}</div>
-          <div class="item-val">{{ cardData.moduleVal }}</div>
-        </div>
-        <div class="content-status">
-          <img src="@/assets/images/home-container/configurable/electroChamper/2-6.png" alt="">
-          <div class="item-text">{{ cardData.statusText }}</div>
-          <div class="item-val">{{ cardData.statusVal }}</div>
-        </div>
-        <div class="content-card-box">
-          <div class="card-box-item">
-            <div class="item-common item-green">
-              <div class="common-text">{{ cardData.phoneText }}</div>
-              <div class="common-val val-green">{{ cardData.phoneVal }}</div>
-            </div>
-            <div class="item-common item-blue">
-              <div class="common-text">{{ cardData.tempNowText }}</div>
-              <div class="common-val val-blue">{{ `${cardData.tempNowVal}℃` }}</div>
-            </div>
-            <div class="item-common item-green">
-              <div class="common-text">{{ cardData.tempOpenText }}</div>
-              <div class="common-val val-green">{{ `${cardData.tempOpenVal}℃` }}</div>
-            </div>
-            <div class="item-common item-blue">
-              <div class="common-text">{{ cardData.timeText }}</div>
-              <div class="common-val val-blue">{{ `${cardData.timeVal}s` }}</div>
-            </div>
-          </div>
-          <div class="card-box-item">
-            <div class="item-common item-blue item-switch">
-              <div>开启</div>
-              <a-switch v-model:checked="checked" size="small" />
-              <div>关闭</div>
-            </div>
-            <div class="item-common item-green">
-              <div class="common-text">{{ cardData.tempMaxText }}</div>
-              <div class="common-val val-green">{{ `${cardData.tempMaxVal}℃` }}</div>
-            </div>
-            <div class="item-common item-blue">
-              <div class="common-text">{{ cardData.tempCloseText }}</div>
-              <div class="common-val val-blue">{{ `${cardData.tempCloseVal}℃` }}</div>
-            </div>
-            <div class="item-common item-green">
-              <div class="common-text">{{ cardData.time3Text }}</div>
-              <div class="common-val val-green">{{ `${cardData.time3Val}s` }}</div>
-            </div>
-          </div>
-        </div>
-      </div>
-
-    </div>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref,watchEffect } from 'vue'
-
-let props=defineProps({
-  cardData:{
-    type:Object,
-    default:()=>{
-      return {}
-    }
-  }
-})
-//设备开关状态
-let checked = ref(true)
-watchEffect(()=>{
-  console.log(props.cardData,'888999000')
-  checked.value=props.cardData.deviceSTAT
-})
-</script>
-
-<style lang="less" scoped>
-@import '/@/design/theme.less';
-
-@{theme-deepblue} {
-  .card-list {
-    --image-title: url('@/assets/images/themify/deepblue/home-container/configurable/electroChamper/2-3.png');
-    --image-list-box: url('@/assets/images/themify/deepblue/home-container/configurable/electroChamper/2-4.png');
-    --image-content-area: url('@/assets/images/themify/deepblue/home-container/configurable/electroChamper/2-5.png');
-    --image-content-status: url('@/assets/images/themify/deepblue/home-container/configurable/electroChamper/2-7.png');
-    --image-blue: url('@/assets/images/themify/deepblue/home-container/configurable/electroChamper/2-9.png');
-    --image-green: url('@/assets/images/themify/deepblue/home-container/configurable/electroChamper/2-10.png');
-  }
-}
-
-.card-list {
-  --image-title: url('@/assets/images/home-container/configurable/electroChamper/2-3.png');
-  --image-list-box: url('@/assets/images/home-container/configurable/electroChamper/2-4.png');
-  --image-content-area: url('@/assets/images/home-container/configurable/electroChamper/2-5.png');
-  --image-content-status: url('@/assets/images/home-container/configurable/electroChamper/2-7.png');
-  --image-blue: url('@/assets/images/home-container/configurable/electroChamper/2-9.png');
-  --image-green: url('@/assets/images/home-container/configurable/electroChamper/2-10.png');
-  position: relative;
-  width: 100%;
-  height: 100%;
-  padding: 5px 15px 0px 15px;
-  box-sizing: border-box;
-  overflow-y: auto;
-
-  .list-box {
-    width: 100%;
-    // height: calc(50% - 5px);
-    // margin-bottom: 5px;
-    height: 100%;
-    background: var(--image-list-box) no-repeat;
-    background-size: 100% 100%;
-
-    .box-item-title {
-      width: 100%;
-      height: 38px;
-      line-height: 38px;
-      text-align: center;
-      background: var(--image-title) no-repeat;
-      background-size: 100% 100%;
-    }
-
-    .box-item-content {
-      display: flex;
-      flex-direction: column;
-      justify-content: space-around;
-      width: 100%;
-      height: calc(100% - 38px);
-      padding: 0px 8px;
-      box-sizing: border-box;
-      // font-size: 12px;
-
-      .content-area {
-        position: relative;
-        width: 100%;
-        height: 38px;
-        line-height: 38px;
-        background: var(--image-content-area) no-repeat;
-        background-size: 100% 100%;
-      }
-        .content-module {
-        position: relative;
-        width: 100%;
-        height: 38px;
-        line-height: 38px;
-        background: var(--image-content-status) no-repeat;
-        background-size: 100% 100%;
-      }
-
-      .content-status {
-        position: relative;
-        width: 100%;
-        height: 38px;
-        line-height: 38px;
-        background: var(--image-content-area) no-repeat;
-        background-size: 100% 100%;
-      }
-
-      .content-card-box {
-        display: flex;
-        justify-content: space-between;
-
-        .card-box-item {
-          width: calc(50% - 5px);
-          height: 100%;
-
-          .item-common {
-            position: relative;
-            width: 100%;
-            height: 38px;
-            margin-bottom: 16px;
-          }
-
-          .item-green {
-            background: var(--image-green) no-repeat;
-            background-size: 100% 100%;
-          }
-
-          .item-blue {
-            background: var(--image-blue) no-repeat;
-            background-size: 100% 100%;
-          }
-
-          .item-switch {
-            display: flex;
-            justify-content: center;
-            align-items: center;
-          }
-
-          .common-text {
-            position: absolute;
-            left: 10px;
-            top: 50%;
-            transform: translate(0, -50%);
-            // font-size: 12px;
-          }
-
-          .common-val {
-            position: absolute;
-            right: 15px;
-            top: 50%;
-            transform: translate(0, -50%);
-            font-size: 12px;
-          }
-
-          .val-green {
-            font-family: 'douyuFont';
-            color: #2af7d7;
-          }
-
-          .val-blue {
-            font-family: 'douyuFont';
-            color: #91e0ff;
-          }
-        }
-      }
-
-      img {
-        position: absolute;
-        left: 12px;
-        top: 50%;
-        transform: translate(0, -50%);
-        width: 19px;
-        height: 17px;
-      }
-
-      .item-text {
-        position: absolute;
-        left: 52px;
-        top: 50%;
-        transform: translate(0, -50%);
-        // font-size: 12px;
-
-      }
-
-      .item-val {
-        position: absolute;
-        right: 16px;
-        top: 50%;
-        transform: translate(0, -50%);
-        // font-size: 12px;
-      }
-    }
-  }
-
-  ::v-deep .zxm-switch-small {
-    min-width: 36px;
-  }
-
-  ::v-deep .zxm-switch {
-    margin: 0px 5px;
-  }
-
-}
-</style>

+ 0 - 109
src/views/vent/home/configurable/components/preset/generalList.vue

@@ -1,109 +0,0 @@
-<template>
-  <div class="general-list">
-    <div class="general-content-box" v-for="(item, index) in generalData" :key="index">
-      <div class="general-icon" :class="index % 2 == 0 ? 'icon-blue' : 'icon-green'"></div>
-      <div class="general-label">{{ item.areaName }}</div>
-      <div class="general-status" :class="index % 2 == 0 ? 'text-blue' : 'text-green'">{{ item.CORealtime || '-' }}</div>
-    </div>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { ref } from 'vue'
-
-let props = defineProps({
-  generalData: {
-    type: Array,
-    default: () => {
-      return []
-    }
-  }
-})
-
-</script>
-
-<style lang="less" scoped>
-@import '/@/design/theme.less';
-
-@{theme-deepblue} {
-  .card-list {
-    --image-bg-green: url('@/assets/images/themify/deepblue/home-container/configurable/electroChamper/3-3.png');
-    --image-bg-blue: url('@/assets/images/themify/deepblue/home-container/configurable/electroChamper/3-4.png');
-    --image-bg-green-icon: url('@/assets/images/themify/deepblue/home-container/configurable/electroChamper/3-3.png');
-    --image-bg-blue-icon: url('@/assets/images/themify/deepblue/home-container/configurable/electroChamper/3-2.png');
-
-  }
-}
-
-.general-list {
-  --image-bg-green: url('@/assets/images/home-container/configurable/electroChamper/3-3.png');
-  --image-bg-blue: url('@/assets/images/home-container/configurable/electroChamper/3-1.png');
-  --image-bg-green-icon: url('@/assets/images/home-container/configurable/electroChamper/3-4.png');
-  --image-bg-blue-icon: url('@/assets/images/home-container/configurable/electroChamper/3-2.png');
-  width: 100%;
-  height: 100%;
-  padding: 10px 15px;
-  box-sizing: border-box;
-
-  .general-content-box {
-    position: relative;
-    width: 100%;
-    height: 36px;
-    margin-bottom: 10px;
-    display: flex;
-    align-items: center;
-
-    &:nth-child(odd) {
-      background: var(--image-bg-blue) no-repeat;
-      background-size: 100% 100%;
-    }
-
-    &:nth-child(even) {
-      background: var(--image-bg-green) no-repeat;
-      background-size: 100% 100%;
-    }
-
-    .general-label {
-      position: absolute;
-      left: 60px;
-    }
-
-    .general-status {
-      position: absolute;
-      right: 98px;
-    }
-
-  }
-
-  .general-icon {
-    position: absolute;
-    width: 22px;
-    height: 22px;
-    left: 12px;
-    top: 50%;
-    transform: translate(0, -50%);
-  }
-
-  .icon-green {
-    background: var(--image-bg-green-icon) no-repeat;
-    background-size: 100% 100%;
-  }
-
-  .icon-blue {
-    background: var(--image-bg-blue-icon) no-repeat;
-    background-size: 100% 100%;
-  }
-
-  .text-green {
-    font-size: 12px;
-    font-family: 'douyuFont';
-    color: #2af7d7;
-  }
-
-  .text-blue {
-    font-size: 12px;
-    font-family: 'douyuFont';
-    color: #91e0ff;
-  }
-}
-</style>

+ 0 - 74
src/views/vent/home/configurable/components/preset/radioLabel.vue

@@ -1,74 +0,0 @@
-<template>
-  <div ref="radioContainer">
-    <div :class="`radio-block_${type}`">
-      <div :class="`left-label_${type}`">
-        <span>{{ props.config.leftLabel }}</span>
-      </div>
-      <div :class="`left-label_${type}`" v-if="props.config.isShowRadio">
-        <a-radio-group v-model:value="defaultValue" :options="options" @change="handleChange" />
-      </div>
-      <div :class="`right-label_${type}`" v-else>
-        <span>{{ props.config.rightLbel }}</span>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script lang="ts" setup>
-  defineOptions({ name: 'PresetRadio' });
-
-  import { onMounted, ref, inject } from 'vue';
-  import { RadioGroupProps } from 'ant-design-vue';
-  // 定义组件属性
-  const props = defineProps<{
-    type: any;
-    config: any;
-  }>();
-
-  // 定义选项数据
-  let options: RadioGroupProps['options'] = [];
-  // 定义各个单选组的默认值
-  const defaultValue = ref('');
-  // 组件挂载时初始化一次
-  onMounted(() => {
-    initData();
-    // 设置默认选中项
-  });
-  // 初始化数据
-  const initData = () => {
-    if (props.config) {
-      // 从数据中获取第一个选择器的选项
-      options = props.config.options || [];
-      // 从数据中获取第二个选择器的选项
-      defaultValue.value = props.config.defaultValue || '';
-    }
-  };
-  // 注入祖父组件提供的处理函数(关键:跨层级获取)
-  const handleRadioChange = inject<(value: string) => void>(
-    'handleRadioChange', // 注入的key,需与祖父组件保持一致
-    () => console.warn('未提供handleRadioChange函数') // 默认值,避免报错
-  );
-
-  // 处理单选框变化,触发原生DOM事件
-  const handleChange = (value: string) => {
-    handleRadioChange(value);
-  };
-</script>
-
-<style lang="less" scoped>
-  .radio-block_A {
-    height: 50px;
-    display: flex;
-    justify-content: space-between;
-    background: url('@/assets/images/vent/homeNew/databg/11.png') no-repeat;
-    background-size: 100% 100%;
-    align-items: center;
-    padding: 0 15px 0 25px;
-    margin: 10px 8px 5px 8px;
-    .right-label_A {
-      margin-right: 10px;
-      font-family: 'douyuFont';
-      font-size: 12px;
-    }
-  }
-</style>

+ 2 - 712
src/views/vent/home/configurable/configurable.api.ts

@@ -4,721 +4,11 @@ import { get } from '../billboard/utils';
 import { useGlobSetting } from '/@/hooks/setting';
 import { ref, reactive } from 'vue';
 import _ from 'lodash';
+import LongList from './components/preset/LongList.vue';
 
-enum Api {
-  list = '/safety/ventanalyDevice/homedata2',
-  getHomeData = '/safety/ventanalyDevice/homedata',
-  getDisHome = '/monitor/disaster/getDisHome',
-  getBDDustData = '/monitor/disaster/getDisDustHome',
-  // getBDFireData = '/monitor/disaster/getDisFireHome',
-  getDeviceSys = '/ventanaly-device/monitor/getSysFireHomeInfo',
-  getAlarmRecord = '/ventanaly-device/safety/ventanalyAlarmLog/sysLinkDevAlarmLog',
-  getTotal = '/safety/ventanalyAlarmLog/total',
-  sysTypeWarnList = '/safety/ventanalyAlarmLog/sysTypeWarn',
-  getDisasterProportion = '/safety/ventanalyAlarmLog/getDisasterProportion',
-  system = '/ventanaly-device/monitor/device',
-  getSystem = '/monitor/deviceForZhuQi',
-  listdays = '/safety/ventanalyMonitorData/listdaysFast',
-  todayDeviceRunStatus = '/safety/ventanalyMonitorData/todayDeviceRunStatus',
-  summary = '/safety/ventanalyAlarmStatistic/summary',
-}
+enum Api {}
 
 // 搞这个缓存是由于:目前代码上的设计是多个模块发出多次请求,每个模块自己负责消费前者的响应。
 // 这会导致相同的请求被同时发送多次。
 const cache = new Map<string, Promise<any>>();
 
-/**
- * 列表接口,5.5专用,和6.0的getHomeData基本一致
- * @param params
- */
-export const list = (params) => {
-  const key = `${Api.list}?${JSON.stringify(params)}`;
-  if (!cache.has(key)) {
-    cache.set(
-      key,
-      defHttp.post({ url: Api.list, params }).finally(() => {
-        cache.delete(key);
-      })
-    );
-  }
-  return (cache.get(key) as Promise<any>).then((res) => {
-    if (res.fanmain) {
-      // 处理频率字段,为了兼容旧版保留,现配置项已支持一级动态字段
-      res.fanmain.forEach((e) => {
-        if (e.readData.Fan2StartStatus === '1') {
-          e.current = '二号';
-          e.readData.FanFreqHz = e.readData.Fan2FreqHz;
-        } else {
-          e.current = '一号';
-          e.readData.FanFreqHz = e.readData.Fan1FreqHz;
-        }
-      });
-    }
-    if (res.fanlocal) {
-      res.fanlocal.forEach((e) => {
-        e.chartData = [
-          {
-            x: '吸风量',
-            yRealtime: e.readData.windQuantity1,
-            yMock: floor(parseFloat(e.inletAirVolume_merge) * random(0.98, 1, false), 2),
-            y: e.inletAirVolume_merge,
-          },
-          {
-            x: '供风量',
-            yRealtime: e.readData.windQuantity2,
-            yMock: floor(parseFloat(e.ductOutletAirVolume_merge) * random(0.98, 1, false), 2),
-            y: e.ductOutletAirVolume_merge,
-          },
-        ];
-        if (e.readData.Fan2StartStatus === '1') {
-          e.current = '二号';
-          e.readData.FanfHz = e.readData.Fan2fHz;
-        } else {
-          e.current = '一号';
-          e.readData.FanfHz = e.readData.Fan1fHz;
-        }
-      });
-    }
-    if (res.sys_majorpath) {
-      res.sys_majorpath.forEach((e) => {
-        const { drag_1, drag_2, drag_3, drag_total } = e.majorpath;
-        const { fy_merge = { value: '1' } } = e.readData;
-        const drag_merge = parseInt(fy_merge.value);
-        // const m3_merge = parseInt(retM3_merge.value);
-
-        e.piechart = [
-          { val: drag_1, valMock: floor((drag_1 / drag_total) * drag_merge), label: '进风区' },
-          { val: drag_2, valMock: floor((drag_2 / drag_total) * drag_merge), label: '用风区' },
-          { val: drag_3, valMock: floor((drag_3 / drag_total) * drag_merge), label: '回风区' },
-        ];
-        e.readData.dengjikong_merge = get(res, 'midinfo[0].sysinfo.equalarea');
-        e.readData.fy_merge_int = drag_merge;
-        // e.dengjikong_merge = floor((1.19 * (m3_merge / 60)) / Math.sqrt(drag_merge), 2);
-      });
-    }
-    if (res.sys_surface_caimei) {
-      res.sys_surface_caimei.forEach((e) => {
-        if (isArray(e.history)) {
-          e.history = slice(e.history, e.history.length - 30, e.history.length);
-        }
-        if (isArray(e.history_report)) {
-          e.history_report = slice(e.history_report, e.history_report.length - 30, e.history_report.length);
-        }
-      });
-    }
-    if (res.device_arr) {
-      res.device_arr = Object.values(res.device);
-    }
-    if (res.sys_wind) {
-      res.sys_wind.forEach((e) => {
-        if (e.readData.m3) {
-          e.readData.m3 = e.readData.m3.replace('-', '');
-        }
-        if (e.readData.va) {
-          e.readData.va = e.readData.va.replace('-', '');
-        }
-      });
-    }
-    if (res.windrect) {
-      res.windrect.forEach((e) => {
-        if (e.readData.m3) {
-          e.readData.m3 = e.readData.m3.replace('-', '');
-        }
-        if (e.readData.va) {
-          e.readData.va = e.readData.va.replace('-', '');
-        }
-      });
-    }
-    if (res.safetymonitor) {
-      const { sysOrgCode } = useGlobSetting();
-      // 沙坪
-      if (sysOrgCode === 'jsnyspmy') {
-        res.safetymonitor = _.sortBy(res.safetymonitor, (e) => {
-          const map = new Map([
-            ['1960160466651189249', 1],
-            ['1960160465543892994', 2],
-            ['1960160465376120833', 3],
-            ['1960160466168844289', 4],
-            ['1960160465736830977', 5],
-            ['1960160466026237954', 6],
-            ['1960160407146598402', 7],
-          ]);
-
-          const inx = map.get(e.deviceID) || 9999;
-
-          return inx;
-        });
-      }
-    }
-
-    return res;
-  });
-};
-
-export const getHomeData = (params) => {
-  const key = `${Api.getHomeData}?${JSON.stringify(params)}`;
-  if (!cache.has(key)) {
-    cache.set(
-      key,
-      defHttp.post({ url: Api.getHomeData, params }).finally(() => {
-        cache.delete(key);
-      })
-    );
-  }
-  return (cache.get(key) as Promise<any>).then((res) => {
-    res.fanmain.forEach((e) => {
-      if (e.readData.Fan2StartStatus === '1') {
-        e.current = '二号';
-        e.readData.FanFreqHz = e.readData.Fan2FreqHz;
-      } else {
-        e.current = '一号';
-        e.readData.FanFreqHz = e.readData.Fan1FreqHz;
-      }
-    });
-    res.fanlocal.forEach((e) => {
-      e.chartData = [
-        {
-          x: '吸风量',
-          y: e.readData.windQuantity1,
-        },
-        {
-          x: '供风量',
-          y: e.readData.windQuantity2,
-        },
-      ];
-      if (e.readData.Fan2StartStatus === '1') {
-        e.current = '二号';
-        e.readData.FanfHz = e.readData.Fan2fHz;
-      } else {
-        e.current = '一号';
-        e.readData.FanfHz = e.readData.Fan1fHz;
-      }
-    });
-    res.sys_majorpath.forEach((e) => {
-      e.piechart = [
-        { val: e.majorpath.drag_1, label: '进风区' },
-        { val: e.majorpath.drag_2, label: '用风区' },
-        { val: e.majorpath.drag_3, label: '回风区' },
-      ];
-    });
-
-    return res;
-  });
-};
-
-export const getBDDustData = (params) => {
-  const key = `${Api.getBDDustData}?${JSON.stringify(params)}`;
-  if (!cache.has(key)) {
-    cache.set(
-      key,
-      defHttp.post({ url: Api.getBDDustData, params }).finally(() => {
-        cache.delete(key);
-      })
-    );
-  }
-  return cache.get(key) as Promise<any>;
-};
-
-// 塔山火灾预警页面获取数据接口
-export const getDeviceSys = (params) => {
-  const key = `${Api.getDeviceSys}?${JSON.stringify(params)}`;
-  if (!cache.has(key)) {
-    cache.set(
-      key,
-      defHttp.post({ url: Api.getDeviceSys, params }).finally(() => {
-        cache.delete(key);
-      })
-    );
-  }
-  return (cache.get(key) as Promise<any>).then((res) => {
-    return res;
-  });
-};
-
-export const getAlarmRecord = (params) => {
-  const key = `${Api.getAlarmRecord}?${JSON.stringify(params)}`;
-  if (!cache.has(key)) {
-    cache.set(
-      key,
-      defHttp.post({ url: Api.getAlarmRecord, params }).finally(() => {
-        cache.delete(key);
-      })
-    );
-  }
-  return (cache.get(key) as Promise<any>).then((res) => {
-    return res;
-  });
-};
-
-export const getDisHome = (params) => {
-  // 生成缓存key,基于接口地址和参数
-  const key = `${Api.getDisHome}?${JSON.stringify(params)}`;
-
-  // 缓存不存在时发起请求
-  if (!cache.has(key)) {
-    cache.set(
-      key,
-      defHttp.post({ url: Api.getDisHome, params }).finally(() => {
-        // 请求完成后删除缓存,保证下次请求能获取最新数据
-        cache.delete(key);
-      })
-    );
-  }
-
-  // 返回缓存中的Promise并处理响应数据
-  return (cache.get(key) as Promise<any>).then((res) => {
-    // 1. 处理 pdArray 中的光纤温度数据(解析JSON字符串)
-    if (res.pdArray && Array.isArray(res.pdArray)) {
-      res.pdArray.forEach((e) => {
-        // 先校验 arrayFiber 是数组,避免forEach报错
-        if (e.arrayFiber && Array.isArray(e.arrayFiber)) {
-          e.arrayFiber.forEach((j) => {
-            // 安全解析 JSON,避免 undefined/无效JSON 导致报错
-            j.fibreTemperatureArr = safeJsonParse(j.fibreTemperature, []);
-          });
-        }
-      });
-    }
-
-    // 2. 处理 sgGxObj 下的设备数据
-    if (res.sgGxObj) {
-      // 2.1 解析 devGxcw 中的光纤温度
-      if (res.sgGxObj.devGxcw && Array.isArray(res.sgGxObj.devGxcw)) {
-        res.sgGxObj.devGxcw.forEach((e) => {
-          e.fibreTemperatureArr = safeJsonParse(e.fibreTemperature, []);
-        });
-      }
-
-      // 2.2 为 devSgjc 中的气体字段设置默认值
-      if (res.sgGxObj.devSgjc && Array.isArray(res.sgGxObj.devSgjc)) {
-        res.sgGxObj.devSgjc.forEach((e) => {
-          e.o2val = e.o2Val || 0;
-          e.coval = e.coVal || 0;
-          e.gasval = e.gasVal || 0;
-          e.ch2val = e.ch2Val || 0;
-          e.chval = e.chVal || 0;
-        });
-      }
-    }
-
-    // 3. 重组 obfObj 为按气体类型分类的结构
-    if (res.obfObj && Array.isArray(res.obfObj.arrayDev)) {
-      res.obfObj.obfObjModded = [
-        { objType: '氧气', arrayDev: mapObfDev(res.obfObj.arrayDev, 'o2Val') },
-        { objType: '甲烷', arrayDev: mapObfDev(res.obfObj.arrayDev, 'ch4Val') },
-        { objType: '一氧化碳', arrayDev: mapObfDev(res.obfObj.arrayDev, 'coVal') },
-        { objType: '乙炔', arrayDev: mapObfDev(res.obfObj.arrayDev, 'c2h2Val') },
-        { objType: '二氧化碳', arrayDev: mapObfDev(res.obfObj.arrayDev, 'co2Val') },
-        { objType: '乙烯', arrayDev: mapObfDev(res.obfObj.arrayDev, 'c2h4Val') },
-        { objType: '压差', arrayDev: mapObfDev(res.obfObj.arrayDev, 'dpVal') },
-        { objType: '温度', arrayDev: mapObfDev(res.obfObj.arrayDev, 'tempVal') },
-      ];
-    }
-
-    return res;
-  });
-};
-
-/**
- * 安全解析 JSON 字符串的工具函数
- * @param {string} jsonStr - 要解析的JSON字符串
- * @param {any} defaultValue - 解析失败/值无效时的默认值
- * @returns {any} 解析结果或默认值
- */
-function safeJsonParse(jsonStr, defaultValue = null) {
-  // 先校验值是否为有效字符串
-  if (!jsonStr || typeof jsonStr !== 'string') {
-    return defaultValue;
-  }
-  // 捕获解析异常
-  try {
-    return JSON.parse(jsonStr);
-  } catch (err) {
-    console.warn('JSON解析失败', jsonStr, err);
-    return defaultValue;
-  }
-}
-
-/**
- * 映射 obfObj.arrayDev 数据的工具函数,减少重复代码
- * @param {Array} devArray - 设备数组
- * @param {string} valKey - 要取值的字段名
- * @returns {Array} 映射后的数组
- */
-function mapObfDev(devArray, valKey) {
-  return devArray.map((e) => ({
-    strinstallpos: e.strinstallpos,
-    val: e[valKey] || 0,
-  }));
-}
-//获取通风监测预警图表数据
-export const sysTypeWarnList = (params) => {
-  const key = `${Api.sysTypeWarnList}?${JSON.stringify(params)}`;
-  if (!cache.has(key)) {
-    cache.set(
-      key,
-      defHttp.post({ url: Api.sysTypeWarnList, params }).finally(() => {
-        cache.delete(key);
-      })
-    );
-  }
-  return (cache.get(key) as Promise<any>).then((res) => {
-    return res;
-  });
-};
-//获取多灾融合预警-风险权重比例数据
-export const getDisasterProportion = (params) => {
-  const key = `${Api.getDisasterProportion}?${JSON.stringify(params)}`;
-  if (!cache.has(key)) {
-    cache.set(
-      key,
-      defHttp.post({ url: Api.getDisasterProportion, params }).finally(() => {
-        cache.delete(key);
-      })
-    );
-  }
-  return (cache.get(key) as Promise<any>).then((res) => {
-    return res;
-  });
-};
-
-//多灾融合预警
-function getLevelNum() {
-  return new Promise(async (resolve) => {
-    const list: Record<string, any> = {};
-    const typeArr = ['fire', 'dust', 'vent', 'gas'];
-    for (let i = 0; i < typeArr.length; i++) {
-      const type = typeArr[i];
-      const result = await sysTypeWarnList({ type });
-      if (type == 'fire') {
-        list.fire = result.length || 0;
-      } else if (type == 'dust') {
-        list.dust = result.length || 0;
-      } else if (type == 'vent') {
-        list.vent = result.length || 0;
-      } else if (type == 'gas') {
-        list.gas = result.length || 0;
-      }
-    }
-    resolve(list);
-  });
-}
-export const getTotal = (params) => {
-  const { sysDataType } = useGlobSetting();
-
-  const key = `${Api.getTotal}?${JSON.stringify(params)}`;
-  if (!cache.has(key)) {
-    cache.set(
-      key,
-      defHttp.get({ url: Api.getTotal, params }).finally(() => {
-        cache.delete(key);
-      })
-    );
-  }
-  return (cache.get(key) as Promise<any>).then(async (res) => {
-    let dataVent = await getLevelNum();
-    const levelsList = [
-      {
-        name: '报警',
-        value: 0,
-      },
-      {
-        name: '重大风险',
-        value: 0,
-      },
-      {
-        name: '较大风险',
-        value: 0,
-      },
-      {
-        name: '一般风险',
-        value: 0,
-      },
-      {
-        name: '低风险',
-        value: dataVent.vent || 0,
-      },
-    ];
-    //通风监测预警数据
-    switch (sysDataType) {
-      case 'monitor':
-        res.ventWarn = {
-          ventJf: res.ventInfo.zongjinfeng,
-          ventXf: res.ventInfo.xufengliang,
-          ventHf: res.ventInfo.zonghuifeng,
-        };
-        res.ventData = [
-          {
-            name: '报警',
-            value: res.info.sysInfo.ventS.levels.alarm,
-          },
-          {
-            name: '重大风险',
-            value: res.info.sysInfo.ventS.levels.red,
-          },
-          {
-            name: '较大风险',
-            value: res.info.sysInfo.ventS.levels.orange,
-          },
-          {
-            name: '一般风险',
-            value: res.info.sysInfo.ventS.levels.yellow,
-          },
-          {
-            name: '低风险',
-            value: dataVent.vent ? dataVent.vent : res.info.sysInfo.ventS.levels.blue,
-          },
-        ];
-
-        break;
-      case 'report':
-        res.ventWarn = {
-          ventJf: res.ventInfo.totalIntM3,
-          ventXf: res.ventInfo.xufengliang,
-          ventHf: res.ventInfo.totalRetM3,
-        };
-        res.ventData = levelsList;
-        break;
-      default:
-        res.ventWarn = {
-          ventJf: res.ventInfo.totalIntM3,
-          ventXf: res.ventInfo.xufengliang,
-          ventHf: res.ventInfo.totalRetM3,
-        };
-        res.ventData = levelsList;
-    }
-    //设备监测预警数据
-    res.deviceWarn = reactive({});
-    Object.keys(res.info.devicekindInfo).forEach((el) => {
-      res.deviceWarn[`${el}_all`] = res.info.devicekindInfo[el].totalcount;
-      res.deviceWarn[`${el}_warn`] = res.info.devicekindInfo[el].count;
-      res.deviceWarn[`${el}_close`] = res.info.devicekindInfo[el].netstatus;
-    });
-    //瓦斯监测预警数据
-    res.gasData = reactive({});
-    res.gasData.safety_sum = res.info.sysInfo.gasS.devices.reduce((a, b) => a + b.gasNumber, 0);
-    res.gasData.gas_sum = res.info.sysInfo.gasS.devices.reduce((a, b) => a + b.pumpNumber, 0);
-    res.gasData.monitorData = res.info.sysInfo.gasS.devices.map((el) => {
-      return {
-        label: el.systemname,
-        value: el.gasNumber,
-        value1: el.pumpNumber,
-      };
-    });
-
-    //火灾监测预警数据
-    res.fireInfos = reactive({});
-    res.fireInfos.dataOn = [];
-
-    if (res.bundletubeInfo && res.bundletubeInfo.msgTxt.length != 0 && res.bundletubeInfo.msgTxt[0].datalist.length != 0) {
-      res.bundletubeInfo.msgTxt[0].datalist.forEach((el) => {
-        res.fireInfos.dataOn.push({
-          warnLevel: el.syswarnLevel_str,
-          smokeJd: el.syswarnLevel_des,
-          value1: el.strinstallpos,
-        });
-      });
-    } else {
-      res.fireInfos.dataOn = [];
-    }
-    res.fireInfos.tempVal = res.info.sysInfo.fireS.summaryInfo
-      ? res.info.sysInfo.fireS.summaryInfo.external.temperature && res.info.sysInfo.fireS.summaryInfo.external.temperature.maxlevel == '0'
-        ? '低风险'
-        : '低风险'
-      : '';
-    res.fireInfos.smokeVal = res.info.sysInfo.fireS.summaryInfo
-      ? res.info.sysInfo.fireS.summaryInfo.external.smokeval &&
-        res.info.sysInfo.fireS.summaryInfo.external.smokeval.maxlevel &&
-        res.info.sysInfo.fireS.summaryInfo.external.smokeval.maxlevel == '0'
-        ? '低风险'
-        : '低风险'
-      : '';
-
-    res.fireInfos.fireVal = res.info.sysInfo.fireS.summaryInfo
-      ? res.info.sysInfo.fireS.summaryInfo.external.fireval &&
-        res.info.sysInfo.fireS.summaryInfo.external.fireval.maxlevel &&
-        res.info.sysInfo.fireS.summaryInfo.external.fireval.maxlevel == '0'
-        ? '低风险'
-        : '低风险'
-      : '';
-
-    res.fireInfos.coVal = res.info.sysInfo.fireS.summaryInfo
-      ? res.info.sysInfo.fireS.summaryInfo.external.coval && res.info.sysInfo.fireS.summaryInfo.external.coval.value
-        ? res.info.sysInfo.fireS.summaryInfo.external.coval.value
-        : '-'
-      : '';
-    //粉尘监测预警数据
-    res.dustInfo = [
-      {
-        name: '报警',
-        value: res.info.sysInfo.dustS.levels.alarm,
-      },
-      {
-        name: '重大风险',
-        value: res.info.sysInfo.dustS.levels.red,
-      },
-      {
-        name: '较大风险',
-        value: res.info.sysInfo.dustS.levels.orange,
-      },
-      {
-        name: '一般风险',
-        value: res.info.sysInfo.dustS.levels.yellow,
-      },
-      {
-        name: '低风险',
-        value: dataVent.dust ? dataVent.dust : res.info.sysInfo.dustS.levels.blue,
-      },
-    ];
-
-    return res;
-  });
-};
-
-//机电硐室
-export const getElectroData = (params) => {
-  const key = `${Api.system}?${JSON.stringify(params)}`;
-  if (!cache.has(key)) {
-    cache.set(
-      key,
-      defHttp.post({ url: Api.system, params }).finally(() => {
-        cache.delete(key);
-      })
-    );
-  }
-  return (cache.get(key) as Promise<any>).then(async (res) => {
-    let data = res.msgTxt.find((el) => el.type == 'ballvalve_auto');
-    data.tempData = data?.datalist?.map((el, index) => {
-      return {
-        areaName: el.readData.areaName,
-        tempStart: el.readData.tempStart,
-        tempStop: el.readData.tempStop,
-        CORealtime: el.readData.CORealtime,
-      };
-    });
-    if (data?.datalist) {
-      data.datalist.forEach((el) => {
-        el.cardData = {
-          title: el.strinstallpos,
-          areaText: '区域',
-          areaVal: el.readData.areaName,
-          moduleText: '模式',
-          moduleVal: el.readData.smokePattern,
-          statusText: '烟雾传感器状态',
-          statusVal: el.readData.smokeSensorStatus == 'False' ? '正常-低电平' : '异常',
-          phoneText: '机号',
-          phoneVal: el.readData.deviceName,
-          tempNowText: '实时测温',
-          tempNowVal: el.readData.tempRealtime,
-          tempOpenText: '开启温度',
-          tempOpenVal: el.readData.tempStart,
-          timeText: '延时t1',
-          timeVal: 0,
-          tempMaxText: '最高温度',
-          tempMaxVal: el.readData.tempMax,
-          tempCloseText: '关闭温度',
-          tempCloseVal: el.readData.tempMin,
-          time3Text: '延时t3',
-          time3Val: 0,
-          deviceSTAT: el.readData.deviceSTAT == '1' ? true : false,
-        };
-      });
-      data.chartData = data.datalist.map((el) => {
-        return {
-          time: el.readData.areaName,
-          coRealTime: el.readData.CORealtime,
-          coWarn: el.readData.COWarn,
-        };
-      });
-    }
-    return data;
-  });
-};
-
-//获取红沙泉露天煤矿数据
-export const getSystemApi = (params) => {
-  const key = `${Api.getSystem}?${JSON.stringify(params)}`;
-  if (!cache.has(key)) {
-    cache.set(
-      key,
-      defHttp.post({ url: Api.getSystem, params }).finally(() => {
-        cache.delete(key);
-      })
-    );
-  }
-  return (cache.get(key) as Promise<any>).then(async (res) => {
-    //设备状态总览
-    res.deviceStatusNum = {
-      zxNum: 5,
-      lxNum: 5,
-      gzNum: 5,
-      bjNum: 5,
-    };
-    res.deviceStatusData = [
-      { deviceName: 'CAM-001', status: '在线', remark: '正常' },
-      { deviceName: 'CAM-002', status: '在线', remark: '正常' },
-      { deviceName: 'CAM-003', status: '报警', remark: '高温' },
-      { deviceName: 'CAM-001', status: '在线', remark: '正常' },
-      { deviceName: 'CAM-002', status: '在线', remark: '正常' },
-      { deviceName: 'CAM-003', status: '报警', remark: '高温' },
-    ];
-    //实时温度曲线
-    res.temptureLineData = [
-      { pos: '1', value: '12' },
-      { pos: '2', value: '44' },
-      { pos: '3', value: '44' },
-      { pos: '4', value: '20' },
-    ];
-    //最近处理记录
-    res.processingRecordData = [
-      { time: '14:25:10', deviceName: 'CAM-001', status: '在线' },
-      { time: '14:25:10', deviceName: 'CAM-002', status: '在线' },
-      { time: '14:25:10', deviceName: 'CAM-003', status: '报警' },
-      { time: '14:25:10', deviceName: 'CAM-001', status: '在线' },
-      { time: '14:25:10', deviceName: 'CAM-002', status: '在线' },
-      { time: '14:25:10', deviceName: 'CAM-003', status: '报警' },
-    ];
-    //报警监控
-    res.alarmMonitoringDataT = {
-      dayWarn: 12,
-      warnOk: 2,
-      warnUnOk: 10,
-    };
-    res.alarmMonitoringData = [
-      { time: '14:25:10', address: '采掘场A区', grade: '一级' },
-      { time: '14:25:10', address: '采掘场B区', grade: '一级' },
-      { time: '14:25:10', address: '采掘场C区', grade: '一级' },
-      { time: '14:25:10', address: '采掘场D区', grade: '一级' },
-      { time: '14:25:10', address: '采掘场E区', grade: '一级' },
-      { time: '14:25:10', address: '采掘场F区', grade: '一级' },
-    ];
-    //
-    res.areaTemptureData = [
-      { x: '1', y: '12' },
-      { x: '2', y: '44' },
-      { x: '3', y: '44' },
-      { x: '4', y: '20' },
-    ];
-    //环境监测数据
-    res.environmentalMonitoringData = {
-      tempHj: '-8.5',
-      fsfx: '3.2',
-      temp: '42',
-      coval: '12',
-      co2val: '380',
-      o2val: '20.9',
-      ch4val: '0.02',
-      fcnd: '0.08',
-      ywzs: '0.15',
-      tempDb: '28',
-    };
-    //快捷操作
-    res.quickOperationData = {
-      time: '128天06:32:18',
-      sjsx: '实时',
-      wlyc: '12s',
-    };
-    console.log(res, '红沙泉---');
-    return res;
-  });
-};

+ 29 - 7384
src/views/vent/home/configurable/configurable.data.ts

@@ -2,178 +2,12 @@ import { Config } from '../../deviceManager/configurationTable/types';
 // import { BDdustMock, BDfireMock } from './configurable.data.bd';
 import { getThemifyImagesURL } from '/@/utils/ui';
 
-//火灾实时监测一张图
-export const testConfigFire: Config[] = [
-  {
-    deviceType: 'deviceStatus',
-    moduleName: '设备状态总览',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'gallery_new',
-            basis: '40%',
-          },
-          {
-            name: 'table',
-            basis: '60%',
-            overflow: true,
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [
-        {
-          type: 'A',
-          //parser: 'json',
-          readFrom: 'deviceStatusData',
-          columns: [
-            {
-              name: '设备名称',
-              prop: 'deviceName',
-            },
-            {
-              name: '状态',
-              prop: 'status',
-            },
-            {
-              name: '备注',
-              prop: 'remark',
-            },
-          ],
-        },
-      ],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          type: 'A',
-          readFrom: 'deviceStatusNum',
-          items: [
-            {
-              label: '在线设备',
-              value: 'zxNum',
-            },
-            {
-              label: '离线设备',
-              value: 'lxNum',
-            },
-            {
-              label: '故障设备',
-              value: 'gzNum',
-            },
-            {
-              label: '报警设备',
-              value: 'bjNum',
-            },
-          ],
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:420px;height:360px;',
-      version: '普通版',
-      position: 'top:0px;left:10px;',
-    },
-  },
-  {
-    deviceType: 'temptureLine',
-    moduleName: '实时温度曲线',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'chart',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [
-        {
-          type: 'line_area',
-          readFrom: '',
-          // parser: 'json',
-          grid: {
-            top: 40,
-            left: 50,
-            bottom: 14,
-            right: 50,
-          },
-          legend: { show: false },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '(℃)', position: 'left' }],
-          series: [
-            {
-              label: '温度',
-              readFrom: 'temptureLineData',
-              xprop: 'pos',
-              yprop: 'value',
-            },
-          ],
-        },
-      ],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:420px;height:220px;',
-      version: '普通版',
-      position: 'top:370px;left:10px;',
-    },
-  },
+
+//联动配置
+export const testConfigLink: Config[] = [
   {
-    deviceType: 'processingRecord',
-    moduleName: '最近处理记录',
+    deviceType: '',
+    moduleName: '联动规则列表',
     pageType: 'gas_injection',
     moduleData: {
       header: {
@@ -198,196 +32,34 @@ export const testConfigFire: Config[] = [
         direction: 'column',
         items: [
           {
-            name: 'table',
+            name: 'rule_table',
             basis: '100%',
-            overflow: true,
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [
-        {
-          type: 'A',
-          // parser: 'json',
-          readFrom: 'processingRecordData',
-          columns: [
-            {
-              name: '时间',
-              prop: 'time',
-            },
-            {
-              name: '设备',
-              prop: 'deviceName',
-            },
-            {
-              name: '状态',
-              prop: 'status',
-            },
-          ],
-        },
-      ],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:420px;height:250px;',
-      version: '普通版',
-      position: 'top:600px;left:10px;',
-    },
-  },
-  {
-    deviceType: 'alarmMonitoring',
-    moduleName: '报警监控',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'card_new',
-            basis: '25%',
-          },
-          {
-            name: 'table',
-            basis: '75%',
-            overflow: true,
           },
         ],
       },
       board: [],
       list: [],
       chart: [],
-      table: [
-        {
-          type: 'A',
-          //parser: 'json',
-          readFrom: 'alarmMonitoringData',
-          columns: [
-            {
-              name: '时间',
-              prop: 'time',
-            },
-            {
-              name: '位置',
-              prop: 'address',
-            },
-            {
-              name: '级别',
-              prop: 'grade',
-            },
-          ],
-        },
-      ],
+      table: [],
       gallery: [],
       complex_list: [],
       gallery_list: [],
       preset: [
         {
-          readFrom: 'alarmMonitoringDataT',
-          items: [
-            { label: '今日报警', value: 'dayWarn' },
-            { label: '未处理', value: 'warnOk' },
-            { label: '已处理', value: 'warnUnOk' },
-          ],
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:420px;height:360px;',
-      version: '普通版',
-      position: 'top:0px;right:10px;',
-    },
-  },
-  {
-    deviceType: 'areaTempture',
-    moduleName: '区域温度统计',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'chart',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [
-        {
-          type: 'bar_cylinder_wide',
           readFrom: '',
-          grid: {
-            top: 40,
-            left: 50,
-            bottom: 14,
-            right: 50,
-          },
-          legend: { show: false },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '', position: 'left' }],
-          series: [{ readFrom: 'areaTemptureData', xprop: 'x', yprop: 'y', label: '温度' }],
         },
       ],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
+      to: '',
     },
     showStyle: {
-      size: 'width:420px;height:220px;',
+      size: 'width:420px;height:calc(100% - 200px);',
       version: '普通版',
-      position: 'top:370px;right:10px;',
+      position: 'top:0px;left:10px;',
     },
   },
   {
-    deviceType: 'environmentalMonitoring',
-    moduleName: '环境监测数据',
+    deviceType: '',
+    moduleName: '联动规则编辑器',
     pageType: 'gas_injection',
     moduleData: {
       header: {
@@ -412,7 +84,7 @@ export const testConfigFire: Config[] = [
         direction: 'column',
         items: [
           {
-            name: 'btn_new',
+            name: 'link_edit',
             basis: '100%',
           },
         ],
@@ -426,32 +98,20 @@ export const testConfigFire: Config[] = [
       gallery_list: [],
       preset: [
         {
-          readFrom: 'environmentalMonitoringData',
-          items: [
-            { label: '环境温度', value: 'tempHj', unit: '℃' },
-            { label: '风速风向', value: 'fsfx', unit: 'm/s' },
-            { label: '温度', value: 'temp', unit: '%' },
-            { label: 'CO浓度', value: 'coval', unit: 'ppm' },
-            { label: 'CO2浓度', value: 'co2val', unit: 'ppm' },
-            { label: 'O2浓度', value: 'o2val', unit: '%' },
-            { label: 'Ch4浓度', value: 'ch4val', unit: '%' },
-            { label: '粉尘浓度', value: 'fcnd', unit: 'mg/m³' },
-            { label: '烟雾指数', value: 'ywzs', unit: '' },
-            { label: '地表温度', value: 'tempDb', unit: '℃' },
-          ],
+          readFrom: '',
         },
       ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
+      to: '',
     },
     showStyle: {
-      size: 'width:420px;height:250px;',
+      size: 'width:1020px;height:calc(100% - 76px);',
       version: '普通版',
-      position: 'top:600px;right:10px;',
+      position: 'top:65px;left:440px;',
     },
   },
   {
-    deviceType: 'quickOperation',
-    moduleName: '快捷操作',
+    deviceType: '',
+    moduleName: '联动日志',
     pageType: 'gas_injection',
     moduleData: {
       header: {
@@ -476,7 +136,7 @@ export const testConfigFire: Config[] = [
         direction: 'column',
         items: [
           {
-            name: 'oerate_new',
+            name: 'link_log',
             basis: '100%',
           },
         ],
@@ -490,34 +150,20 @@ export const testConfigFire: Config[] = [
       gallery_list: [],
       preset: [
         {
-          readFrom: 'quickOperationData',
-          items: [
-            { label: '系统运行时间', value: 'time', iconName: 'time-run' },
-            { label: '数据刷新', value: 'sjsx', iconName: 'data-reset' },
-            { label: '网络延迟', value: 'wlyc', iconName: 'internet-on' },
-          ],
-          option: [
-            { firstLabel: '报警确认', secondLabel: '视屏调取', thirdLabel: '联动控制' },
-            { firstLabel: '数据导出', secondLabel: '生成报表', thirdLabel: '定位追踪' },
-            { firstLabel: '声光关闭', secondLabel: '应急广播', thirdLabel: '系统设置' },
-          ],
+          readFrom: '',
         },
       ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
+      to: '',
     },
     showStyle: {
-      size: 'width:calc(100% - 880px);height:155px;',
+      size: 'width:420px;height:calc(100% - 10px);',
       version: '普通版',
-      position: 'bottom:10px;left:440px;',
+      position: 'top:0px;right:10px;',
     },
   },
-];
-
-//设备管理
-export const testConfigDevice: Config[] = [
   {
-    deviceType: 'deviceList',
-    moduleName: '设备列表',
+    deviceType: '',
+    moduleName: '规则统计',
     pageType: 'gas_injection',
     moduleData: {
       header: {
@@ -542,7 +188,7 @@ export const testConfigDevice: Config[] = [
         direction: 'column',
         items: [
           {
-            name: 'long_list',
+            name: 'rule_num',
             basis: '100%',
           },
         ],
@@ -559,7013 +205,12 @@ export const testConfigDevice: Config[] = [
           readFrom: '',
         },
       ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
+      to: '',
     },
     showStyle: {
-      size: 'width:420px;height:calc(100% - 10px);',
-      version: '普通版',
-      position: 'top:0px;left:10px;',
-    },
-  },
-  {
-    deviceType: 'deviceDetail',
-    moduleName: '设备详情',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'long_list1',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: 'deviceStatusNum',
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:1020px;height:calc(100% - 76px);',
-      version: '普通版',
-      position: 'top:65px;left:440px;',
-    },
-  },
-  {
-    deviceType: 'deviceStatus',
-    moduleName: '设备配置',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'long_list2',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: 'deviceStatusNum',
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:420px;height:calc(100% - 10px);',
-      version: '普通版',
-      position: 'top:0px;right:10px;',
-    },
-  },
-];
-
-//监测预警
-export const testConfigWarn: Config[] = [
-  {
-    deviceType: 'listLeft',
-    moduleName: '',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'search_table',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: '',
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:420px;height:calc(100% - 200px);',
-      version: '普通版',
-      position: 'top:0px;left:10px;',
-    },
-  },
-  {
-    deviceType: 'listCenter',
-    moduleName: '',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'mixed_warn',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: '',
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:1020px;height:calc(100% - 265px);',
-      version: '普通版',
-      position: 'top:65px;left:440px;',
-    },
-  },
-  {
-    deviceType: 'warnRule',
-    moduleName: '预警规则配置',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'rule_list',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: '',
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:420px;height:calc(100% - 200px);',
-      version: '普通版',
-      position: 'top:0px;right:10px;',
-    },
-  },
-  {
-    deviceType: 'warnCount',
-    moduleName: '',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'echart_bar_new',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: '',
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:calc(100% - 10px);height:180px;',
+      size: 'width:420px;height:180px;',
       version: '普通版',
       position: 'bottom:10px;bottom:10px;',
     },
   },
 ];
-//联动配置
-export const testConfigLink: Config[] = [
-  {
-    deviceType: '',
-    moduleName: '联动规则列表',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'rule_table',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: '',
-        },
-      ],
-      to: '',
-    },
-    showStyle: {
-      size: 'width:420px;height:calc(100% - 200px);',
-      version: '普通版',
-      position: 'top:0px;left:10px;',
-    },
-  },
-  {
-    deviceType: '',
-    moduleName: '联动规则编辑器',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'link_edit',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: '',
-        },
-      ],
-      to: '',
-    },
-    showStyle: {
-      size: 'width:1020px;height:calc(100% - 76px);',
-      version: '普通版',
-      position: 'top:65px;left:440px;',
-    },
-  },
-  {
-    deviceType: '',
-    moduleName: '联动日志',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'link_log',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: '',
-        },
-      ],
-      to: '',
-    },
-    showStyle: {
-      size: 'width:420px;height:calc(100% - 10px);',
-      version: '普通版',
-      position: 'top:0px;right:10px;',
-    },
-  },
-  {
-    deviceType: '',
-    moduleName: '规则统计',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'rule_num',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: '',
-        },
-      ],
-      to: '',
-    },
-    showStyle: {
-      size: 'width:420px;height:180px;',
-      version: '普通版',
-      position: 'bottom:10px;bottom:10px;',
-    },
-  },
-];
-//系统管理
-export const testConfigSystem: Config[] = [
-  {
-    deviceType: 'listLeft',
-    moduleName: '',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'user_list',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: '',
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:770px;height:calc(100% - 315px);',
-      version: '普通版',
-      position: 'top:65px;left:10px;',
-    },
-  },
-  {
-    deviceType: 'listLeft',
-    moduleName: '',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'user_edit',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: '',
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:670px;height:calc(100% - 315px);',
-      version: '普通版',
-      position: 'top:65px;left:790px;',
-    },
-  },
-  {
-    deviceType: 'listLeft',
-    moduleName: '',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'permission_info',
-            basis: '50%',
-          },
-          {
-            name: 'permission_set',
-            basis: '50%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: '',
-        },
-        {
-          readFrom: '',
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:420px;height:calc(100% - 251px);',
-      version: '普通版',
-      position: 'top:0px;right:10px;',
-    },
-  },
-  {
-    deviceType: 'listLeft',
-    moduleName: '',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'log_audit',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: '',
-        },
-
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:770px;height:230px;',
-      version: '普通版',
-      position: 'bottom:10px;left:10px;',
-    },
-  },
-  {
-    deviceType: 'listLeft',
-    moduleName: '',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'statistic_day',
-            basis: '50%',
-          },
-          {
-            name: 'chart',
-            basis: '50%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [
-        {
-          type: 'bar_cylinder_wide',
-          readFrom: '',
-          grid: {
-            top: 55,
-            left: 20,
-            bottom:35,
-            right: 50,
-          },
-          legend: { show: false },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '', position: 'left' }],
-          series: [{ readFrom: 'areaTemptureData', xprop: 'x', yprop: 'y', label: '温度' }],
-        },
-      ],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: '',
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:670px;height:230px;',
-      version: '普通版',
-      position: 'bottom:10px;left:790px;',
-    },
-  },
-  {
-    deviceType: 'listLeft',
-    moduleName: '',
-    pageType: 'gas_injection',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-          trans: {},
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'system_view',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: '',
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:420px;height:230px;',
-      version: '普通版',
-      position: 'bottom:10px;right:10px;',
-    },
-  },
-];
-export const testConfigVentSsl: Config[] = [
-  {
-    deviceType: 'fanmain',
-    moduleName: '主通风机系统',
-    pageType: 'vent',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: true,
-          value: '运行风机:${readData.Fan1StartStatus}',
-          trans: {
-            '1': '一号',
-            '0': '二号',
-          },
-        },
-      },
-      background: {
-        show: true,
-        type: 'video',
-        link: '/video/video.mp4',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'board',
-            basis: '33%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'A',
-          readFrom: '',
-          layout: 'val-top',
-          items: [
-            {
-              label: '风量(m³/min)',
-              value: '${flow_merge}',
-            },
-            {
-              label: '负压(Pa)',
-              value: '${fy_merge}',
-            },
-            {
-              label: '漏风率(%)',
-              value: '${leakage}',
-            },
-          ],
-        },
-      ],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:420px;height:280px;',
-      version: '原版',
-      position: 'top:60px;left:0;',
-    },
-  },
-  {
-    deviceType: 'fanlocal',
-    moduleName: '局部通风机系统',
-    pageType: 'vent',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: true,
-          value: '运行风机:${readData.Fan1StartStatus}',
-          trans: {
-            '1': '一号',
-            '0': '二号',
-          },
-        },
-      },
-      background: {
-        show: true,
-        type: 'video',
-        link: '/video/video.mp4',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'board',
-            basis: '33%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'A',
-          readFrom: '',
-          layout: 'val-top',
-          items: [
-            {
-              label: '风量(m³/min)',
-              value: '${flow_merge}',
-            },
-            {
-              label: '负压(Pa)',
-              value: '${fy_merge}',
-            },
-            {
-              label: '漏风率(%)',
-              value: '${leakage}',
-            },
-          ],
-        },
-      ],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanlocal',
-    },
-    showStyle: {
-      size: 'width:420px;height:280px;',
-      version: '原版',
-      position: 'top:350px;left:0;',
-    },
-  },
-  {
-    deviceType: '',
-    moduleName: '通风设施远程控制',
-    pageType: 'vent',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: true,
-        type: 'video',
-        link: '/video/video.mp4',
-      },
-      layout: {
-        direction: 'row',
-        items: [],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=gate_xinJianFuXieJin',
-    },
-    showStyle: {
-      size: 'width:420px;height:280px;',
-      version: '原版',
-      position: 'top:640px;left:0;',
-    },
-  },
-  {
-    deviceType: 'sys_wind',
-    moduleName: '风量监测',
-    pageType: 'vent_new',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'chart',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      table: [],
-      preset: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      chart: [
-        {
-          type: 'bar',
-          readFrom: '',
-          legend: { show: true },
-          xAxis: [{ show: true }],
-          yAxis: [
-            { show: true, name: '风量(m³/min)', position: 'left' },
-            { show: true, name: '风速(m/s)', position: 'right' },
-          ],
-          dataZoom: [
-            {
-              show: false,
-              end: 20,
-            },
-          ],
-          series: [
-            { readFrom: 'sys_wind', xprop: 'strinstallpos', yprop: 'readData.m3', label: '风量' },
-            { readFrom: 'sys_wind', xprop: 'strinstallpos', yprop: 'readData.va', label: '风速' },
-          ],
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=windrect',
-    },
-    showStyle: {
-      size: 'width:1100px;height:280px;',
-      version: '原版',
-      position: 'top:640px;left:410px;',
-    },
-  },
-  {
-    deviceType: '',
-    moduleName: '风窗监测',
-    pageType: 'vent',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: true,
-        type: 'video',
-        link: '/video/video.mp4',
-      },
-      layout: {
-        direction: 'row',
-        items: [],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=gate_xinJianFuXieJin',
-    },
-    showStyle: {
-      size: 'width:420px;height:280px;',
-      version: '原版',
-      position: 'top:60px;right:0;',
-    },
-  },
-  {
-    deviceType: 'safetymonitor',
-    moduleName: '安全监控系统',
-    pageType: 'fire',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'table',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [
-        {
-          type: 'C',
-          readFrom: 'safetymonitor',
-          columns: [
-            {
-              name: '测点位置',
-              prop: 'strinstallpos',
-            },
-            {
-              name: '数据',
-              prop: 'readData.V',
-            },
-            {
-              name: '单位',
-              prop: 'readData.unit',
-            },
-          ],
-        },
-      ],
-      list: [],
-      complex_list: [],
-      preset: [],
-    },
-    showStyle: {
-      size: 'width:420px;height:280px;',
-      version: '原版',
-      position: 'top:350px;right:0;',
-    },
-  },
-  {
-    deviceType: 'warn',
-    moduleName: '预警监测',
-    pageType: 'vent',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: true,
-          value: '网络异常:${warn[0].netstatus.val}',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'list',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [
-        {
-          type: 'timeline',
-          readFrom: 'warn[0]',
-          items: [
-            {
-              label: '报警',
-              value: '${alarm.val}',
-              info: '',
-              color: 'red',
-            },
-            {
-              label: '重大风险预警',
-              value: '${red.val}',
-              info: '',
-              color: 'red',
-            },
-            {
-              label: '较大风险预警',
-              value: '${orange.val}',
-              info: '',
-              color: 'orange',
-            },
-            {
-              label: '一般风险预警',
-              value: '${yellow.val}',
-              info: '',
-              color: 'yellow',
-            },
-            {
-              label: '低风险预警',
-              value: '${blue.val}',
-              info: '',
-              color: 'blue',
-            },
-          ],
-        },
-      ],
-      preset: [],
-      table: [],
-      gallery: [],
-      chart: [],
-      gallery_list: [],
-      complex_list: [],
-      to: '/monitorChannel/monitor-alarm-home',
-    },
-    showStyle: {
-      size: 'width:420px;height:280px;',
-      version: '原版',
-      position: 'top:640px;right:0;',
-    },
-  },
-];
-
-export const testConfigVent: Config[] = [
-  {
-    deviceType: 'fanmain',
-    moduleName: '主通风机系统',
-    pageType: 'vent',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: true,
-          value: '运行风机:${readData.Fan1StartStatus}',
-          trans: {
-            '1': '一号',
-            '0': '二号',
-          },
-        },
-      },
-      background: {
-        show: false,
-        type: 'image',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'qh_curve',
-            basis: '67%',
-          },
-          {
-            name: 'board',
-            basis: '33%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'D',
-          readFrom: '',
-          layout: 'label-top',
-          items: [
-            {
-              label: '风量(m³/min)',
-              value: '${flow_merge}',
-            },
-            {
-              label: '负压(Pa)',
-              value: '${fy_merge}',
-            },
-            {
-              label: '漏风率(%)',
-              value: '${leakage}',
-            },
-          ],
-        },
-      ],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: '',
-          fan1Prop: ['flow_merge', 'fy_merge'],
-          fan2Prop: ['flow_merge', 'fy_merge'],
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:390px;height:260px;',
-      version: '原版',
-      position: 'top:15px;left:15px;',
-    },
-  },
-  {
-    deviceType: 'fanlocal',
-    moduleName: '局部通风机系统',
-    pageType: 'vent',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '运行风机:${readData.Fan1StartStatus}',
-          trans: {
-            '1': '一号',
-            '0': '二号',
-          },
-        },
-      },
-      background: {
-        show: false,
-        type: 'image',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'chart',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [
-        {
-          type: 'bar_cylinder_wide',
-          readFrom: '',
-          legend: { show: false },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '(m³/min)', position: 'left' }],
-          series: [{ readFrom: 'chartData', xprop: 'x', yprop: 'y', label: '风量' }],
-        },
-      ],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanlocal',
-    },
-    showStyle: {
-      size: 'width:390px;height:260px;',
-      version: '原版',
-      position: 'top:295px;left:15px;',
-    },
-  },
-  // {
-  // deviceType: '',
-  // moduleName: '通风设施远程控制',
-  // pageType: 'vent',
-  // moduleData: {
-  // header: {
-  // show: false,
-  // readFrom: '',
-  // selector: {
-  // show: false,
-  // value: '',
-  // },
-  // slot: {
-  // show: false,
-  // value: '',
-  // },
-  // },
-  // background: {
-  // // show: true,
-  // show: false,
-  // type: 'video',
-  // link: '/video/gate.mp4',
-  // },
-  // layout: {
-  // direction: 'row',
-  // items: [
-  // {
-  // name: 'device_alarm',
-  // basis: '100%',
-  // },
-  // ],
-  // },
-  // board: [],
-  // list: [],
-  // chart: [],
-  // table: [],
-  // gallery: [],
-  // complex_list: [],
-  // gallery_list: [],
-  // preset: [
-  // {
-  // readFrom: 'device',
-  // },
-  // ],
-  // to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=gate_xinJianFuXieJin',
-  // },
-  // showStyle: {
-  // size: 'width:390px;height:260px;',
-  // version: '原版',
-  // position: 'top:555px;left:15px;',
-  // },
-  // },
-  {
-    deviceType: 'warn',
-    moduleName: '预警监测',
-    pageType: 'vent_realtime',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: true,
-          value: '网络异常:${warn[0].netstatus.val}',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'list',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [
-        {
-          type: 'timeline',
-          readFrom: 'warn[0]',
-          items: [
-            {
-              label: '报警',
-              value: '${alarm.val}',
-              info: '',
-              color: 'red',
-            },
-            {
-              label: '重大风险预警',
-              value: '${red.val}',
-              info: '',
-              color: 'red',
-            },
-            {
-              label: '较大风险预警',
-              value: '${orange.val}',
-              info: '',
-              color: 'orange',
-            },
-            {
-              label: '一般风险预警',
-              value: '${yellow.val}',
-              info: '',
-              color: 'yellow',
-            },
-            {
-              label: '低风险预警',
-              value: '${blue.val}',
-              info: '',
-              color: 'blue',
-            },
-          ],
-        },
-      ],
-      preset: [],
-      table: [],
-      gallery: [],
-      chart: [],
-      gallery_list: [],
-      complex_list: [],
-      to: '/monitorChannel/monitor-alarm-home',
-    },
-    showStyle: {
-      size: 'width:390px;height:260px;',
-      version: '原版',
-      position: 'top:555px;left:15px;',
-    },
-  },
-  {
-    deviceType: 'sys_wind',
-    moduleName: '风量监测',
-    pageType: 'vent',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'chart',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      table: [],
-      preset: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      chart: [
-        {
-          type: 'bar',
-          readFrom: '',
-          legend: { show: true },
-          xAxis: [{ show: true }],
-          yAxis: [
-            { show: true, name: '风量(m³/min)', position: 'left' },
-            { show: true, name: '风速(m/s)', position: 'right' },
-          ],
-          dataZoom: [
-            {
-              show: true,
-              end: 20,
-            },
-          ],
-          series: [
-            { readFrom: 'sys_wind', xprop: 'strinstallpos', yprop: 'readData.m3', label: '风量' },
-            { readFrom: 'sys_wind', xprop: 'strinstallpos', yprop: 'readData.va', label: '风速' },
-          ],
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=windrect',
-    },
-    showStyle: {
-      size: 'width:505px;height:260px;',
-      version: '原版',
-      position: 'bottom:15px;left:420px;',
-    },
-  },
-  {
-    deviceType: 'sys_majorpath',
-    moduleName: '关键通风路线',
-    pageType: 'vent',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${devicePos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'chart',
-            basis: '67%',
-          },
-          {
-            name: 'board',
-            basis: '33%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'D',
-          readFrom: 'readData',
-          layout: 'label-top',
-          items: [
-            {
-              label: '风量(m³/min)',
-              value: '${retM3_merge.value}',
-            },
-            {
-              label: '矿井阻力(Pa)',
-              value: '${fy_merge.value}',
-            },
-            {
-              label: '等积孔',
-              value: '${dengjikong_merge}',
-            },
-          ],
-        },
-      ],
-      complex_list: [],
-      gallery: [],
-      list: [],
-      table: [],
-      chart: [
-        {
-          type: 'pie_halo',
-          readFrom: '',
-          legend: { show: false, formatter: '{b}:{c}\n{d}%' },
-          xAxis: [{ show: false }],
-          yAxis: [{ show: false, name: '风量', position: 'left' }],
-          series: [{ readFrom: 'piechart', xprop: 'label', yprop: 'valMock', label: '' }],
-        },
-      ],
-      gallery_list: [],
-      preset: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=sys_majorpath&deviceid=${deviceID}',
-    },
-    showStyle: {
-      size: 'width:460px;height:260px;',
-      version: '原版',
-      position: 'bottom:15px;left:940px;',
-    },
-  },
-  {
-    deviceType: 'sys_surface_caimei',
-    moduleName: '工作面智能监控',
-    pageType: 'vent',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${devicePos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'chart',
-            basis: '65%',
-          },
-          {
-            name: 'board',
-            basis: '35%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'B',
-          readFrom: '',
-          layout: 'label-top',
-          items: [
-            {
-              label: '进风(m³/min)',
-              value: '${faceIntM3}',
-            },
-            {
-              label: '回风(m³/min)',
-              value: '${faceRetM3}',
-            },
-            {
-              label: '需风量(m³/min)',
-              value: '${facePlanM3}',
-            },
-          ],
-        },
-      ],
-      list: [],
-      preset: [],
-      table: [],
-      gallery: [],
-      chart: [
-        {
-          type: 'line',
-          readFrom: '',
-          legend: { show: true },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '风量(m³/min)', position: 'left' }],
-          series: [
-            { readFrom: 'history_report', xprop: 'time', yprop: 'faceIntM3', label: '进风' },
-            { readFrom: 'history_report', xprop: 'time', yprop: 'faceRetM3', label: '回风' },
-          ],
-        },
-      ],
-      gallery_list: [],
-      complex_list: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=sys_surface_caimei&deviceid=${deviceID}',
-    },
-    showStyle: {
-      size: 'width:460px;height:260px;',
-      version: '原版',
-      position: 'bottom:15px;right:15px;',
-    },
-  },
-];
-
-export const testConfigDust: Config[] = [
-  {
-    deviceType: '',
-    moduleName: '工作面风险监测',
-    pageType: 'dust',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'gallery',
-            basis: '20%',
-          },
-          {
-            name: 'complex_list',
-            basis: '80%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [
-        {
-          type: 'D',
-          readFrom: 'dustManageInfo',
-          items: [
-            {
-              label: '监测总数',
-              value: '${totalNum}',
-              color: 'blue',
-            },
-            {
-              label: '低风险',
-              value: '${dfxNum}',
-              color: 'blue',
-            },
-            {
-              label: '一般风险',
-              value: '${ybNum}',
-              color: 'blue',
-            },
-            {
-              label: '较大风险',
-              value: '${jdNum}',
-              color: 'blue',
-            },
-            {
-              label: '重大风险',
-              value: '${zdNum}',
-              color: 'blue',
-            },
-          ],
-        },
-      ],
-      gallery_list: [],
-      table: [],
-      complex_list: [
-        {
-          type: 'C',
-          readFrom: 'dustManageInfo.sysList',
-          mapFromData: true,
-          items: [
-            {
-              title: '${sysNamme}',
-              contents: [
-                {
-                  label: '风险监测',
-                  value: '${warnLevel}',
-                  color: 'blue',
-                  info: '',
-                },
-                {
-                  label: '最高粉尘浓度',
-                  value: '${maxVal}',
-                  color: 'blue',
-                  info: '',
-                },
-              ],
-            },
-          ],
-        },
-      ],
-      preset: [],
-      // mock: BDdustMock,
-    },
-    showStyle: {
-      size: 'width:450px;height:860px;',
-      version: '新版',
-      position: 'top:60px;left:0;',
-    },
-  },
-  {
-    deviceType: 'dustDustGraph',
-    moduleName: '综放工作面粉尘浓度',
-    pageType: 'dust',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'chart',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [
-        {
-          type: 'line_area',
-          readFrom: '',
-          legend: { show: false },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '浓度', position: 'left' }],
-          series: [
-            {
-              label: '${strinstallpos}',
-              readFrom: 'historyList',
-              xprop: 'time',
-              yprop: 'dustval',
-            },
-          ],
-        },
-      ],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [],
-      // mock: BDdustMock,
-    },
-    showStyle: {
-      size: 'width:1000px;height:280px;',
-      version: '新版',
-      position: 'top:640px;left:460px;',
-    },
-  },
-  {
-    deviceType: '',
-    moduleName: '智能喷雾降尘装置',
-    pageType: 'dust',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'gallery',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [
-        {
-          type: 'A',
-          readFrom: 'atomObj',
-          items: [
-            {
-              label: '设备总数',
-              value: '${totalNum}',
-              color: 'blue',
-            },
-            {
-              label: '喷雾开启数',
-              value: '${atomOpenNum}',
-              color: 'blue',
-            },
-            {
-              label: '连网数量',
-              value: '${openNum}',
-              color: 'blue',
-            },
-            {
-              label: '断网数量',
-              value: '${breakNum}',
-              color: 'blue',
-            },
-          ],
-        },
-      ],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [],
-      to: 'http://10.248.210.154:8801',
-      // mock: BDdustMock,
-    },
-    showStyle: {
-      size: 'width:450px;height:280px;',
-      version: '新版',
-      position: 'top:60px;right:0;',
-    },
-  },
-  {
-    deviceType: '',
-    moduleName: '隔爆设施管理台账',
-    pageType: 'dust',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'table',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [
-        {
-          type: 'C',
-          readFrom: 'devGbsb',
-          columns: [
-            {
-              name: '地点',
-              prop: 'strinstallpos',
-            },
-            {
-              name: '吊挂位置',
-              prop: 'addr',
-            },
-            {
-              name: '性质',
-              prop: 'kind',
-            },
-          ],
-        },
-      ],
-      list: [],
-      complex_list: [],
-      preset: [],
-      // mock: BDdustMock,
-    },
-    showStyle: {
-      size: 'width:450px;height:280px;',
-      version: '新版',
-      position: 'top:350px;right:0;',
-    },
-  },
-  {
-    deviceType: 'statics',
-    moduleName: '粉尘静态指标',
-    pageType: 'dust',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'board',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'E',
-          readFrom: '',
-          layout: 'label-top',
-          items: [
-            {
-              label: '火焰长度',
-              value: '>400mm',
-            },
-            {
-              label: '抑制煤层爆炸最低岩粉量',
-              value: '75%',
-            },
-            {
-              label: '鉴定结论',
-              value: '有煤层爆炸性',
-            },
-          ],
-        },
-      ],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [],
-      // mock: BDdustMock,
-    },
-    showStyle: {
-      size: 'width:450px;height:280px;',
-      version: '新版',
-      position: 'top:640px;right:0;',
-    },
-  },
-];
-
-//粉尘绿色首页
-export const testConfigDustGreen: Config[] = [
-  {
-    deviceType: '',
-    moduleName: '工作面风险监测',
-    pageType: 'dust-green',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'gallery',
-            basis: '20%',
-          },
-          {
-            name: 'complex_list',
-            basis: '80%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [
-        {
-          type: 'D',
-          readFrom: 'dustManageInfo',
-          items: [
-            {
-              label: '监测总数',
-              value: '${totalNum}',
-              color: 'blue',
-            },
-            {
-              label: '低风险',
-              value: '${dfxNum}',
-              color: 'blue',
-            },
-            {
-              label: '一般风险',
-              value: '${ybNum}',
-              color: 'blue',
-            },
-            {
-              label: '较大风险',
-              value: '${jdNum}',
-              color: 'blue',
-            },
-            {
-              label: '重大风险',
-              value: '${zdNum}',
-              color: 'blue',
-            },
-          ],
-        },
-      ],
-      gallery_list: [],
-      table: [],
-      complex_list: [
-        {
-          type: 'C',
-          readFrom: 'dustManageInfo.sysList',
-          mapFromData: true,
-          items: [
-            {
-              title: '${sysNamme}',
-              contents: [
-                {
-                  label: '风险监测',
-                  value: '${warnLevel}',
-                  color: 'blue',
-                  info: '',
-                },
-                {
-                  label: '最高粉尘浓度',
-                  value: '${maxVal}',
-                  color: 'blue',
-                  info: '',
-                },
-              ],
-            },
-          ],
-        },
-      ],
-      preset: [],
-      // mock: BDdustMock,
-    },
-    showStyle: {
-      size: 'width:420px;height:815px;',
-      version: '新版',
-      position: 'top:0px;left:15px',
-    },
-  },
-  {
-    deviceType: 'dustDustGraph',
-    moduleName: '综放工作面粉尘浓度',
-    pageType: 'dust-green',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'chart',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [
-        {
-          type: 'line_area',
-          readFrom: '',
-          legend: { show: false },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '浓度', position: 'left' }],
-          series: [
-            {
-              label: '${strinstallpos}',
-              readFrom: 'historyList',
-              xprop: 'time',
-              yprop: 'dustval',
-            },
-          ],
-        },
-      ],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [],
-      // mock: BDdustMock,
-    },
-    showStyle: {
-      size: 'width:580px;height:260px;',
-      version: '新版',
-      position: 'bottom:0px;left:450px;',
-    },
-  },
-  {
-    deviceType: '',
-    moduleName: '智能喷雾降尘装置',
-    pageType: 'dust-green',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'gallery',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [
-        {
-          type: 'A',
-          readFrom: 'atomObj',
-          items: [
-            {
-              label: '设备总数',
-              value: '${totalNum}',
-              color: 'blue',
-            },
-            {
-              label: '喷雾开启数',
-              value: '${atomOpenNum}',
-              color: 'blue',
-            },
-            {
-              label: '连网数量',
-              value: '${openNum}',
-              color: 'blue',
-            },
-            {
-              label: '断网数量',
-              value: '${breakNum}',
-              color: 'blue',
-            },
-          ],
-        },
-      ],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [],
-      to: 'http://10.248.210.154:8801',
-      // mock: BDdustMock,
-    },
-    showStyle: {
-      size: 'width:390px;height:260px;',
-      version: '新版',
-      position: 'bottom:0px;right:450px;',
-    },
-  },
-  {
-    deviceType: '',
-    moduleName: '隔爆设施管理台账',
-    pageType: 'dust-green',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'table',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [
-        {
-          type: 'C',
-          readFrom: 'devGbsb',
-          columns: [
-            {
-              name: '地点',
-              prop: 'strinstallpos',
-            },
-            {
-              name: '吊挂位置',
-              prop: 'addr',
-            },
-            {
-              name: '性质',
-              prop: 'kind',
-            },
-          ],
-        },
-      ],
-      list: [],
-      complex_list: [],
-      preset: [],
-      // mock: BDdustMock,
-    },
-    showStyle: {
-      size: 'width:420px;height:530px;',
-      version: '新版',
-      position: 'top:0px;right:15px;',
-    },
-  },
-  {
-    deviceType: 'statics',
-    moduleName: '粉尘静态指标',
-    pageType: 'dust-green',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'board',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'E',
-          readFrom: '',
-          layout: 'label-top',
-          items: [
-            {
-              label: '火焰长度',
-              value: '>400mm',
-            },
-            {
-              label: '抑制煤层爆炸最低岩粉量',
-              value: '75%',
-            },
-            {
-              label: '鉴定结论',
-              value: '有煤层爆炸性',
-            },
-          ],
-        },
-      ],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [],
-      // mock: BDdustMock,
-    },
-    showStyle: {
-      size: 'width:420px;height:260px;',
-      version: '新版',
-      position: 'bottom:0px;right:15px;',
-    },
-  },
-];
-
-export const testConfigFireGreen: Config[] = [
-  {
-    deviceType: 'fireManageInfo',
-    moduleName: '重点区域风险监测',
-    pageType: 'fire-green',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'board',
-            basis: '35%',
-          },
-          {
-            name: 'complex_list',
-            basis: '65%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'A',
-          readFrom: 'fireManageInfo',
-          layout: 'label-top',
-          items: [
-            {
-              label: '内因风险等级',
-              value: '${nyWarnLevel}',
-            },
-            {
-              label: '外因风险等级',
-              value: '${wyWarnLevel}',
-            },
-          ],
-        },
-      ],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [
-        {
-          type: 'D',
-          readFrom: 'fireManageInfo.sysList',
-          mapFromData: true,
-          items: [
-            {
-              title: '${sysNamme}',
-              contents: [
-                {
-                  label: '风险监测',
-                  value: '${warnLevel}',
-                  color: 'blue',
-                  info: '',
-                },
-                {
-                  label: '最高温度',
-                  value: '${maxVal}',
-                  color: 'blue',
-                  info: '',
-                },
-              ],
-            },
-          ],
-        },
-      ],
-      preset: [],
-      // mock: BDfireMock,
-    },
-    showStyle: {
-      size: 'width:420px;height:400px;',
-      version: '原版',
-      position: 'top:0px;left:15px',
-    },
-  },
-  {
-    deviceType: 'pdArray',
-    moduleName: '带式输送机防灭火监控系统',
-    pageType: 'fire-green',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${systemname}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'board',
-            basis: '25%',
-          },
-          {
-            name: 'chart',
-            basis: '75%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'F',
-          layout: 'val-top',
-          readFrom: 'arrayCount',
-          items: [
-            {
-              label: '光纤预警',
-              value: '${[0].val}℃',
-            },
-            {
-              label: '一氧化碳预警',
-              value: '${[1].val}ppm',
-            },
-            {
-              label: '烟雾预警',
-              value: '${[2].val}',
-            },
-          ],
-        },
-      ],
-      chart: [
-        {
-          type: 'line_smooth',
-          readFrom: 'arrayFiber',
-          legend: { show: true },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '温度(℃)', position: 'left' }],
-          series: [
-            {
-              label: '${strinstallpos}',
-              readFrom: 'fibreTemperature',
-              xprop: 'pos',
-              yprop: 'value',
-            },
-          ],
-        },
-      ],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [],
-      // mock: BDfireMock,
-    },
-    showStyle: {
-      size: 'width:420px;height:400px;',
-      version: '原版',
-      position: 'top:415px;left:15px;',
-    },
-  },
-  {
-    deviceType: 'sgGxObj',
-    moduleName: '工作面光纤监测',
-    pageType: 'fire-green',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: 'devGxcw',
-        selector: {
-          show: true,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'chart',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [
-        {
-          type: 'line_smooth',
-          readFrom: '',
-          legend: { show: true },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '温度(℃)', position: 'left' }],
-          series: [
-            {
-              label: '${strinstallpos}',
-              readFrom: 'fibreTemperature',
-              xprop: 'pos',
-              yprop: 'value',
-            },
-          ],
-        },
-      ],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [],
-      // mock: BDfireMock,
-    },
-    showStyle: {
-      size: 'width:990px;height:260px;',
-      version: '原版',
-      position: 'bottom:15px;left:450px;',
-    },
-  },
-  {
-    deviceType: 'sgGxObj',
-    moduleName: '工作面束管监测',
-    pageType: 'fire-green',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: 'devSgjc',
-        selector: {
-          show: true,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'gallery_list',
-            basis: '42%',
-          },
-          {
-            name: 'blast_delta',
-            basis: '58%',
-            overflow: false,
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [],
-      gallery_list: [
-        {
-          type: 'B',
-          readFrom: '',
-          items: [
-            {
-              label: '一氧化碳',
-              value: '${coVal}',
-              color: 'blue',
-              info: '',
-            },
-            {
-              label: '二氧化碳',
-              value: '${co2Val}',
-              color: 'blue',
-              info: '',
-            },
-            {
-              label: '氧气',
-              value: '${o2Val}',
-              color: 'blue',
-              info: '',
-            },
-            {
-              label: '乙烯',
-              value: '${c2h4Val}',
-              color: 'blue',
-              info: '',
-            },
-            {
-              label: '甲烷',
-              value: '${ch4Val}',
-              color: 'blue',
-              info: '',
-            },
-            {
-              label: '乙炔',
-              value: '${c2h2Val}',
-              color: 'blue',
-              info: '',
-            },
-          ],
-          galleryItems: [
-            {
-              label: '风险等级',
-              value: '${warnLevel}',
-              color: 'blue',
-            },
-          ],
-        },
-      ],
-      table: [],
-      list: [
-        {
-          type: 'E',
-          readFrom: 'arrayCount',
-          items: [
-            {
-              label: '一氧化碳',
-              value: '${coVal}',
-              color: 'blue',
-              info: '',
-            },
-            {
-              label: '二氧化碳',
-              value: '${co2Val}',
-              color: 'blue',
-              info: '',
-            },
-            {
-              label: '氧气',
-              value: '${o2Val}',
-              color: 'blue',
-              info: '',
-            },
-            {
-              label: '温度',
-              value: '${tempVal}',
-              color: 'blue',
-              info: '',
-            },
-          ],
-        },
-      ],
-      complex_list: [],
-      preset: [
-        {
-          readFrom: '',
-        },
-      ],
-      // mock: BDfireMock,
-    },
-    showStyle: {
-      size: 'width:420px;height:510px;',
-      version: '原版',
-      position: 'top:0px;right:15px',
-    },
-  },
-  {
-    deviceType: 'aqjkArray',
-    moduleName: '安全监控系统',
-    pageType: 'fire',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'table',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [
-        {
-          type: 'C',
-          readFrom: 'aqjkArray',
-          columns: [
-            {
-              name: '测点位置',
-              prop: 'strinstallpos',
-            },
-            {
-              name: '温度',
-              prop: 'nowVal',
-            },
-            {
-              name: '预警级别',
-              prop: 'warnLevel',
-            },
-          ],
-        },
-      ],
-      list: [],
-      complex_list: [],
-      preset: [],
-      // mock: BDfireMock,
-    },
-    showStyle: {
-      size: 'width:420px;height:260px;',
-      version: '原版',
-      position: 'bottom:15px;right:15px',
-    },
-  },
-];
-export const testConfigVentRealtime: Config[] = [
-  {
-    deviceType: 'fanmain',
-    moduleName: '主通风机系统',
-    pageType: 'vent_realtime',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: true,
-          value: '运行风机:${readData.Fan1StartStatus}',
-          trans: {
-            '1': '一号',
-            '0': '二号',
-          },
-        },
-      },
-      background: {
-        show: false,
-        type: 'image',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'qh_curve',
-            basis: '67%',
-          },
-          {
-            name: 'board',
-            basis: '33%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'D',
-          readFrom: '',
-          layout: 'label-top',
-          items: [
-            {
-              label: '风量(m³/min)',
-              trans: {
-                '0': '${readData.Fan2_FanFlow}',
-                '1': '${readData.Fan1_FanFlow}',
-              },
-              value: '${readData.Fan1StartStatus}',
-            },
-            {
-              label: '负压(Pa)',
-              trans: {
-                '0': '${readData.Fan2FanPre}',
-                '1': '${readData.Fan1FanPre}',
-              },
-              value: '${readData.Fan1StartStatus}',
-            },
-            {
-              label: '漏风率(%)',
-              value: '${leakage}',
-            },
-          ],
-        },
-      ],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: '',
-          fan1Prop: ['readData.Fan1_FanFlow', 'readData.Fan1FanPre'],
-          fan2Prop: ['readData.Fan2_FanFlow', 'readData.Fan2FanPre'],
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:470px;height:280px;',
-      version: '原版',
-      position: 'top:60px;left:0;',
-    },
-  },
-  {
-    deviceType: 'fanlocal',
-    moduleName: '局部通风机系统',
-    pageType: 'vent_realtime',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '运行风机:${readData.Fan1StartStatus}',
-          trans: {
-            '1': '一号',
-            '0': '二号',
-          },
-        },
-      },
-      background: {
-        show: false,
-        type: 'image',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'chart',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [
-        {
-          type: 'bar_cylinder_wide',
-          readFrom: '',
-          legend: { show: false },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '(m³/min)', position: 'left' }],
-          series: [
-            { readFrom: 'chartData', xprop: 'x', yprop: 'yMock', label: '风量' },
-            // { readFrom: '', xprop: 'x', yprop: 'y2', label: '风量' },
-          ],
-        },
-      ],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanlocal',
-    },
-    showStyle: {
-      size: 'width:470px;height:280px;',
-      version: '原版',
-      position: 'top:350px;left:0;',
-    },
-  },
-  {
-    deviceType: '',
-    moduleName: '通风设施远程控制',
-    pageType: 'vent_realtime',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'image',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'device_alarm',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: 'device',
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=gate_xinJianFuXieJin',
-    },
-    showStyle: {
-      size: 'width:470px;height:280px;',
-      version: '原版',
-      position: 'top:640px;left:0;',
-    },
-  },
-  {
-    deviceType: 'sys_wind',
-    moduleName: '风量监测',
-    pageType: 'vent_realtime',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'chart',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      table: [],
-      preset: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      chart: [
-        {
-          type: 'bar',
-          readFrom: '',
-          legend: { show: true },
-          xAxis: [{ show: true }],
-          yAxis: [
-            { show: true, name: '风量(m³/min)', position: 'left' },
-            { show: true, name: '风速(m/s)', position: 'right' },
-          ],
-          dataZoom: [
-            {
-              show: true,
-              end: 20,
-            },
-          ],
-          series: [
-            { readFrom: 'sys_wind', xprop: 'strinstallpos', yprop: 'readData.m3', label: '风量' },
-            { readFrom: 'sys_wind', xprop: 'strinstallpos', yprop: 'readData.va', label: '风速' },
-          ],
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=windrect',
-    },
-    showStyle: {
-      size: 'width:1000px;height:280px;',
-      version: '原版',
-      position: 'top:640px;left:460px;',
-    },
-  },
-  {
-    deviceType: 'sys_majorpath',
-    moduleName: '关键通风路线',
-    pageType: 'vent_realtime',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${devicePos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'chart',
-            basis: '67%',
-          },
-          {
-            name: 'board',
-            basis: '33%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'D',
-          readFrom: 'majorpath',
-          layout: 'label-top',
-          items: [
-            {
-              label: '风量(m³/min)',
-              value: '${m3_total}',
-            },
-            {
-              label: '矿井阻力(Pa)',
-              value: '${drag_total}',
-            },
-            {
-              label: '等积孔',
-              value: '${dengjikong}',
-            },
-          ],
-        },
-      ],
-      complex_list: [],
-      gallery: [],
-      list: [],
-      table: [],
-      chart: [
-        {
-          type: 'pie_drag',
-          readFrom: '',
-          legend: { show: false },
-          xAxis: [{ show: false }],
-          yAxis: [{ show: false, name: '风量', position: 'left' }],
-          series: [{ readFrom: 'piechart', xprop: 'label', yprop: 'val', label: '-' }],
-        },
-      ],
-      gallery_list: [],
-      preset: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=sys_majorpath',
-    },
-    showStyle: {
-      size: 'width:470px;height:280px;',
-      version: '原版',
-      position: 'top:60px;right:0;',
-    },
-  },
-  {
-    deviceType: 'sys_surface_caimei',
-    moduleName: '工作面智能监控',
-    pageType: 'vent_realtime',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${devicePos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'chart',
-            basis: '65%',
-          },
-          {
-            name: 'board',
-            basis: '35%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'B',
-          readFrom: '',
-          layout: 'label-top',
-          items: [
-            {
-              label: '进风(m³/min)',
-              value: '${jin}',
-            },
-            {
-              label: '回风(m³/min)',
-              value: '${hui}',
-            },
-            // {
-            // label: '需风量(m³/min)',
-            // value: '${xufengliang}',
-            // },
-          ],
-        },
-      ],
-      list: [],
-      preset: [],
-      table: [],
-      gallery: [],
-      chart: [
-        {
-          type: 'line',
-          readFrom: '',
-          legend: { show: true },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '风量(m³/min)', position: 'left' }],
-          series: [
-            { readFrom: 'history', xprop: 'time', yprop: 'jin', label: '进风' },
-            { readFrom: 'history', xprop: 'time', yprop: 'hui', label: '回风' },
-          ],
-        },
-      ],
-      gallery_list: [],
-      complex_list: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=sys_surface_caimei&deviceid=${deviceID}',
-    },
-    showStyle: {
-      size: 'width:470px;height:280px;',
-      version: '原版',
-      position: 'top:350px;right:0;',
-    },
-  },
-  {
-    deviceType: 'warn',
-    moduleName: '预警监测',
-    pageType: 'vent_realtime',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: true,
-          value: '网络异常:${warn[0].netstatus.val}',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'list',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [
-        {
-          type: 'timeline',
-          readFrom: 'warn[0]',
-          items: [
-            {
-              label: '报警',
-              value: '${alarm.val}',
-              info: '',
-              color: 'red',
-            },
-            {
-              label: '重大风险预警',
-              value: '${red.val}',
-              info: '',
-              color: 'red',
-            },
-            {
-              label: '较大风险预警',
-              value: '${orange.val}',
-              info: '',
-              color: 'orange',
-            },
-            {
-              label: '一般风险预警',
-              value: '${yellow.val}',
-              info: '',
-              color: 'yellow',
-            },
-            {
-              label: '低风险预警',
-              value: '${blue.val}',
-              info: '',
-              color: 'blue',
-            },
-          ],
-        },
-      ],
-      preset: [],
-      table: [],
-      gallery: [],
-      chart: [],
-      gallery_list: [],
-      complex_list: [],
-      to: '/monitorChannel/monitor-alarm-home',
-    },
-    showStyle: {
-      size: 'width:470px;height:280px;',
-      version: '原版',
-      position: 'top:640px;right:0;',
-    },
-  },
-];
-
-export const testConfigFusionGreen: Config[] = [
-  {
-    deviceType: 'ventWarn',
-    moduleName: '通风监测预警',
-    pageType: 'fusion-warn-green',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'board',
-            basis: '20%',
-          },
-          {
-            name: 'dz_chart',
-            basis: '80%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'J',
-          readFrom: 'ventWarn',
-          layout: 'val-top',
-          items: [
-            {
-              label: '总进风量',
-              dw: '(m³/min)',
-              value: '${ventJf}',
-            },
-            {
-              label: '总回风量',
-              dw: '(m³/min)',
-              value: '${ventHf}',
-            },
-            {
-              label: '总需风量',
-              dw: '(m³/min)',
-              value: '${ventXf}',
-            },
-          ],
-        },
-      ],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [
-        {
-          readFrom: 'ventData',
-          echartOption: {
-            colorList: ['#ff0000', '#ff7700', '#d8b66f', '#dbbf2e', '#61b4c5'],
-          },
-        },
-      ],
-      to: '/ventilate/warn/home',
-    },
-    showStyle: {
-      size: 'width:420px;height:400px;',
-      version: '原版',
-      position: 'top:0px;left:15px',
-    },
-  },
-  {
-    deviceType: 'deviceWarn',
-    moduleName: '设备监测预警',
-    pageType: 'fusion-warn-green',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'dz_list',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [
-        {
-          readFrom: 'deviceWarn',
-          listOption: {
-            fanmain: {
-              url: getThemifyImagesURL('vent/alarm-icons/zfj.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'fanmain_all',
-              warnCount: 'fanmain_warn',
-              closeCount: 'fanmain_close',
-            },
-            fanlocal: {
-              url: getThemifyImagesURL('vent/alarm-icons/jbfj.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'fanlocal_all',
-              warnCount: 'fanlocal_warn',
-              closeCount: 'fanlocal_close',
-            },
-            bundletube: {
-              url: getThemifyImagesURL('vent/alarm-icons/sgjc.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'bundletube_all',
-              warnCount: 'bundletube_warn',
-              closeCount: 'bundletube_close',
-            },
-            fanlocaldp: {
-              url: getThemifyImagesURL('vent/alarm-icons/jbfj-db.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'fanlocaldp_all',
-              warnCount: 'fanlocaldp_warn',
-              closeCount: 'fanlocaldp_close',
-            },
-            gate: {
-              url: getThemifyImagesURL('vent/alarm-icons/fm-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'gate_all',
-              warnCount: 'gate_warn',
-              closeCount: 'gate_close',
-            },
-            window: {
-              url: getThemifyImagesURL('vent/alarm-icons/fc-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'window_all',
-              warnCount: 'window_warn',
-              closeCount: 'window_close',
-            },
-            windrect: {
-              url: getThemifyImagesURL('vent/alarm-icons/dscf-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'windrect_all',
-              warnCount: 'windrect_warn',
-              closeCount: 'windrect_close',
-            },
-            forcFan: {
-              url: getThemifyImagesURL('vent/alarm-icons/yf-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'forcFan_all',
-              warnCount: 'forcFan_warn',
-              closeCount: 'forcFan_close',
-            },
-            spray: {
-              url: getThemifyImagesURL('vent/alarm-icons/pl-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'spray_all',
-              warnCount: 'spray_warn',
-              closeCount: 'spray_close',
-            },
-            dustdev: {
-              url: getThemifyImagesURL('vent/alarm-icons/pf-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'dustdev_all',
-              warnCount: 'dustdev_warn',
-              closeCount: 'dustdev_close',
-            },
-            nitrogen: {
-              url: getThemifyImagesURL('vent/alarm-icons/zd-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'nitrogen_all',
-              warnCount: 'nitrogen_warn',
-              closeCount: 'nitrogen_close',
-            },
-            pulping: {
-              url: getThemifyImagesURL('vent/alarm-icons/zj-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'pulping_all',
-              warnCount: 'pulping_warn',
-              closeCount: 'pulping_close',
-            },
-            atomizing: {
-              url: getThemifyImagesURL('vent/alarm-icons/pw-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'atomizing_all',
-              warnCount: 'atomizing_warn',
-              closeCount: 'atomizing_close',
-            },
-            dustsensor: {
-              url: getThemifyImagesURL('vent/alarm-icons/cgq-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'dustsensor_all',
-              warnCount: 'dustsensor_warn',
-              closeCount: 'dustsensor_close',
-            },
-            gas: {
-              url: getThemifyImagesURL('vent/alarm-icons/ccb-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'gas_all',
-              warnCount: 'gas_warn',
-              closeCount: 'gas_close',
-            },
-            pump: {
-              url: getThemifyImagesURL('vent/alarm-icons/ccb-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'pump_all',
-              warnCount: 'pump_warn',
-              closeCount: 'pump_close',
-            },
-            modelsensor: {
-              url: getThemifyImagesURL('vent/alarm-icons/cf-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'modelsensor_all',
-              warnCount: 'modelsensor_warn',
-              closeCount: 'modelsensor_close',
-            },
-          },
-        },
-      ],
-      to: '/device/warn/home',
-    },
-    showStyle: {
-      size: 'width:420px;height:400px;',
-      version: '原版',
-      position: 'top:415px;left:15px',
-    },
-  },
-  {
-    deviceType: 'fusionManageInfo',
-    moduleName: '火灾监测预警',
-    pageType: 'fireInfos',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'board',
-            basis: '35%',
-          },
-          {
-            name: 'dz_card',
-            basis: '65%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'K',
-          readFrom: 'fireInfos',
-          layout: 'label-top',
-          items: [
-            {
-              label: '内因火灾',
-              value: '',
-            },
-            {
-              label: '外因火灾',
-              value: '',
-            },
-          ],
-        },
-      ],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [
-        {
-          readFrom: 'fireInfos',
-          leftTitle: {
-            address: '监测位置',
-            gradewarn: '预警等级',
-            smoke: '煤自燃阶段',
-          },
-          rightTitle: {
-            temp: '温度',
-            smokeing: '烟雾',
-            fire: '火焰',
-            comax: 'CO最大值(ppm)',
-          },
-        },
-      ],
-      to: '/fire/warn/home',
-    },
-    showStyle: {
-      size: 'width:420px;height:400px;',
-      version: '原版',
-      position: 'top:0px;right:15px',
-    },
-  },
-  {
-    deviceType: 'fusionManageInfo',
-    moduleName: '粉尘监测预警',
-    pageType: 'dustInfo',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'dz_dust',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [
-        {
-          readFrom: 'dustInfo',
-          echartOption: {
-            colorList: [
-              ['rgba(63, 124, 136, 1)', 'rgba(77, 193, 211, 1)'],
-              ['rgba(145, 129, 47, 1)', 'rgba(211, 184, 46, 1)'],
-              ['rgba(159, 121, 69, 1)', 'rgba(226, 173, 101, 1)'],
-              ['rgba(163, 90, 25, 1)', 'rgba(240, 114, 4, 1)'],
-              ['rgba(158, 13, 13, 1)', 'rgba(239, 2, 2, 1)'],
-            ],
-            grid: {
-              top: '8%',
-              left: '5%',
-              right: '5%',
-              bottom: '5%',
-              containLabel: true,
-            },
-            axisLineX: {
-              show: true,
-              lineStyle: {
-                // width: 1,
-                color: 'rgba(34, 55, 81,.7)',
-              },
-            },
-            axisLabelX: {
-              fontSize: 14,
-              interval: 0,
-              textStyle: {
-                color: '#FFF', //更改坐标轴文字颜色
-                fontSize: 12, //更改坐标轴文字大小
-              },
-            },
-            splitLineY: {
-              show: true,
-              lineStyle: {
-                // type: 'dashed',
-                color: 'rgba(34, 55, 81,.7)',
-              },
-            },
-            axisLabelY: {
-              fontSize: 14,
-              textStyle: {
-                color: '#FFF', //更改坐标轴文字颜色
-                fontSize: 12, //更改坐标轴文字大小
-              },
-            },
-          },
-        },
-      ],
-      to: '/dust/warn/home',
-    },
-    showStyle: {
-      size: 'width:420px;height:400px;',
-      version: '原版',
-      position: 'top:415px;right:15px',
-    },
-  },
-  {
-    deviceType: 'fusionManageInfo',
-    moduleName: '瓦斯监测预警',
-    pageType: 'gasData',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'dz_gas',
-            basis: '50%',
-          },
-          {
-            name: 'dz_gas',
-            basis: '50%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [
-        {
-          readFrom: 'gasData',
-          type: 'A',
-          titleData: {
-            label: '安全监测系统监测点',
-            value: 'safety_sum',
-          },
-        },
-        {
-          readFrom: 'gasData',
-          type: 'B',
-          titleData: {
-            label: '瓦斯抽采系统监测点',
-            value: 'gas_sum',
-          },
-        },
-      ],
-      to: '/gas/warn/home',
-    },
-    showStyle: {
-      size: 'width:990px;height:170px;',
-      version: '原版',
-      position: 'bottom:15px;left:450px',
-    },
-  },
-];
-
-export const testConfigVentNew: Config[] = [
-  {
-    deviceType: 'fanmain',
-    moduleName: '主通风机系统',
-    pageType: 'vent_new',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: true,
-          value: '风机:${readData.Fan1StartStatus}',
-          trans: {
-            '1': '1#风机',
-            '0': '2#风机',
-          },
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '/video/mainFan.mp4',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'qh_curve',
-            basis: '67%',
-          },
-          {
-            name: 'board',
-            basis: '33%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'New',
-          readFrom: 'readData',
-          layout: 'new-top',
-          items: [
-            {
-              label: '风量(m³/min)',
-              value: '${m3}',
-            },
-            {
-              label: '风压(Pa)',
-              value: '${DataPa}',
-              // trans: {
-              // '1': '${Fan1FreqHz}',
-              // '0': '${Fan1FreqHz}',
-              // },
-            },
-            {
-              label: '漏风率(%)',
-              value: '-',
-            },
-          ],
-        },
-      ],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: '',
-          fan1Prop: ['flow_merge', 'fy_merge'],
-          fan2Prop: ['flow_merge', 'fy_merge'],
-        },
-      ],
-    },
-    showStyle: {
-      size: 'width:440px;height:280px;',
-      version: '原版',
-      position: 'top:60px;left:0;',
-    },
-  },
-  {
-    deviceType: '',
-    moduleName: '通风设施远程控制',
-    pageType: 'vent_new',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '/video/fanLocal.webm',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'device_alarm',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: 'device',
-        },
-      ],
-      mock: {
-        device: {
-          fanmain: {
-            maxLevel: 0,
-            name: '主扇',
-            totalCount: 0,
-            count: 0,
-            netstatus: 0,
-          },
-          fanlocal: {
-            maxLevel: 0,
-            name: '局扇',
-            totalCount: 0,
-            count: 0,
-            netstatus: 0,
-          },
-          gate: {
-            maxLevel: 0,
-            name: '风门',
-            totalCount: 0,
-            count: 0,
-            netstatus: 0,
-          },
-          window: {
-            maxLevel: 0,
-            name: '风窗',
-            totalCount: 0,
-            count: 0,
-            netstatus: 0,
-          },
-        },
-      },
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=gate_xinJianFuXieJin',
-    },
-    showStyle: {
-      size: 'width:440px;height:280px;',
-      version: '原版',
-      position: 'top:350px;left:0;',
-    },
-  },
-  {
-    deviceType: 'warn',
-    moduleName: '预警监测',
-    pageType: 'vent_new',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: true,
-          value: '网络异常:${warn[0].netstatus.val}',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'list',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [
-        {
-          type: 'timelineNew',
-          readFrom: 'warn[0]',
-          items: [
-            {
-              label: '重大风险预警',
-              value: '${red.val}',
-              info: '',
-              color: 'red',
-            },
-            {
-              label: '较大风险预警',
-              value: '${orange.val}',
-              info: '',
-              color: 'orange',
-            },
-            {
-              label: '一般风险预警',
-              value: '${yellow.val}',
-              info: '',
-              color: 'yellow',
-            },
-            {
-              label: '低风险预警',
-              value: '${blue.val}',
-              info: '',
-              color: 'blue',
-            },
-          ],
-        },
-      ],
-      preset: [],
-      table: [],
-      gallery: [],
-      chart: [],
-      gallery_list: [],
-      complex_list: [],
-      to: '/monitorChannel/monitor-alarm-home',
-    },
-    showStyle: {
-      size: 'width:440px;height:280px;',
-      version: '新版',
-      position: 'top:640px;left:0;',
-    },
-  },
-  {
-    deviceType: 'sys_wind',
-    moduleName: '风量监测',
-    pageType: 'vent_new',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'chart',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      table: [],
-      preset: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      chart: [
-        {
-          type: 'bar',
-          readFrom: '',
-          legend: { show: true },
-          xAxis: [{ show: true }],
-          yAxis: [
-            { show: true, name: '风量(m³/min)', position: 'left' },
-            { show: true, name: '风速(m/s)', position: 'right' },
-          ],
-          dataZoom: [
-            {
-              show: true,
-              end: 20,
-            },
-          ],
-          series: [
-            { readFrom: 'sys_wind', xprop: 'strinstallpos', yprop: 'readData.m3', label: '风量' },
-            { readFrom: 'sys_wind', xprop: 'strinstallpos', yprop: 'readData.va', label: '风速' },
-          ],
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=windrect',
-    },
-    showStyle: {
-      size: 'width:1000px;height:260px;',
-      version: '原版',
-      position: 'bottom:8px;left:460px;',
-    },
-  },
-  {
-    deviceType: 'fanlocal',
-    moduleName: '局部通风机系统',
-    pageType: 'vent_new',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: true,
-          value: '风机:${readData.Fan1StartStatus}',
-          trans: {
-            '1': '1#风机',
-            '0': '2#风机',
-          },
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '/video/fanLocal.mp4',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          // {
-          // name: 'board',
-          // basis: '25%',
-          // },
-          {
-            name: 'chart',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'New1',
-          readFrom: 'readData',
-          layout: 'new1-top',
-          items: [
-            {
-              label: '风筒出口风量',
-              value: '${windQuantity1}',
-            },
-            {
-              label: '风机吸入风量',
-              value: '${windQuantity2}',
-            },
-            {
-              label: '百米漏风率(%)',
-              value: '${windQuantity1}',
-            },
-          ],
-        },
-      ],
-      list: [],
-      chart: [
-        {
-          type: 'bar_cylinder_wide',
-          readFrom: '',
-          legend: { show: false },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '(m³/min)', position: 'left' }],
-          series: [{ readFrom: 'chartData', xprop: 'x', yprop: 'y', label: '风量' }],
-        },
-      ],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanlocal',
-    },
-    showStyle: {
-      size: 'width:440px;height:265px;',
-      version: '原版',
-      position: 'top:60px;right:0;',
-    },
-  },
-  {
-    deviceType: 'sys_majorpath',
-    moduleName: '关键通风路线',
-    pageType: 'vent_new',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${devicePos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: true,
-        type: 'image',
-        link: '/src/assets/images/vent/homeNew/gjBG.png',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'board',
-            basis: '100%',
-            pageType: 'vent_New',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'New2',
-          readFrom: 'readData',
-          layout: 'new2-top',
-          items: [
-            {
-              label: '风量(m³/min)',
-              value: '${retM3_merge.value}',
-            },
-            {
-              label: '矿井阻力(Pa)',
-              value: '${fy_merge.value}',
-            },
-            {
-              label: '等积孔',
-              value: '${dengjikong.value}',
-            },
-          ],
-        },
-      ],
-      complex_list: [],
-      gallery: [],
-      list: [],
-      table: [],
-      chart: [],
-      gallery_list: [],
-      preset: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=sys_majorpath&deviceid=${deviceID}',
-    },
-    showStyle: {
-      size: 'width:440px;height:310px;',
-      version: '新版',
-      position: 'top:335px;right:0;',
-    },
-  },
-  {
-    deviceType: 'sys_surface_caimei',
-    moduleName: '工作面智能监控',
-    pageType: 'vent_new',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${devicePos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'chart',
-            basis: '100%',
-          },
-          // {
-          // name: 'board',
-          // basis: '25%',
-          // },
-        ],
-      },
-      board: [
-        {
-          type: 'New3',
-          readFrom: '',
-          layout: 'new3-top',
-          items: [
-            {
-              label: '进风(m³/min)',
-              value: '${faceIntM3}',
-            },
-            {
-              label: '回风(m³/min)',
-              value: '${faceRetM3}',
-            },
-          ],
-        },
-      ],
-      list: [],
-      preset: [],
-      table: [],
-      gallery: [],
-      chart: [
-        {
-          type: 'line_area',
-          readFrom: '',
-          legend: { show: false },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '', position: 'left' }],
-          series: [
-            { readFrom: 'history_report', xprop: 'time', yprop: 'faceIntM3', label: '进风' },
-            { readFrom: 'history_report', xprop: 'time', yprop: 'faceRetM3', label: '回风' },
-          ],
-        },
-      ],
-      gallery_list: [],
-      complex_list: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=sys_surface_caimei&deviceid=${deviceID}',
-    },
-    showStyle: {
-      size: 'width:440px;height:270px;',
-      version: '新版',
-      position: 'top:650px;right:0;',
-    },
-  },
-];
-
-export const testConfigWarnMonitor: Config[] = [
-  {
-    deviceType: 'ventWarn',
-    moduleName: '通风监测预警',
-    pageType: 'fusion-warn-green',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'board',
-            basis: '25%',
-          },
-          {
-            name: 'yj_ventWarn',
-            basis: '75%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'U',
-          readFrom: 'ventWarn',
-          layout: 'label-top',
-          items: [
-            {
-              label: '总进风量',
-              dw: '(m³/min)',
-              value: '${ventJf}',
-            },
-            {
-              label: '总回风量',
-              dw: '(m³/min)',
-              value: '${ventHf}',
-            },
-            {
-              label: '总需风量',
-              dw: '(m³/min)',
-              value: '${ventXf}',
-            },
-          ],
-        },
-      ],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [
-        {
-          readFrom: 'ventData',
-        },
-      ],
-      // mock: BDfireMock,
-    },
-    showStyle: {
-      size: 'width:420px;height:400px;',
-      version: '原版',
-      position: 'top:70px;left:15px',
-    },
-  },
-  {
-    deviceType: 'fireWarnInfo',
-    moduleName: '火灾监测预警',
-    pageType: 'fusion-warn-green',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'board',
-            basis: '30%',
-          },
-          {
-            name: 'dz_card',
-            basis: '70%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'T',
-          readFrom: 'fireInfos',
-          layout: 'label-top',
-          items: [
-            {
-              label: '内因火灾',
-              value: '',
-            },
-            {
-              label: '外因火灾',
-              value: '',
-            },
-          ],
-        },
-      ],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [
-        {
-          readFrom: 'fireInfos',
-          leftTitle: {
-            address: '监测位置',
-            gradewarn: '预警等级',
-            smoke: '煤自燃阶段',
-          },
-          rightTitle: {
-            temp: '温度',
-            smokeing: '烟雾',
-            fire: '火焰',
-            comax: 'CO最大值(ppm)',
-          },
-        },
-      ],
-      // mock: BDfireMock,
-    },
-    showStyle: {
-      size: 'width:420px;height:420px;',
-      version: '原版',
-      position: 'top:490px;left:15px',
-    },
-  },
-  {
-    deviceType: 'deviceWarn',
-    moduleName: '瓦斯监测预警',
-    pageType: 'gasData',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'yj_gas',
-            basis: '50%',
-          },
-          {
-            name: 'yj_gas',
-            basis: '50%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [
-        {
-          readFrom: 'gasData',
-          type: 'A',
-          titleData: {
-            label: '安全监测系统监测点',
-            value: 'safety_sum',
-          },
-        },
-        {
-          readFrom: 'gasData',
-          type: 'B',
-          titleData: {
-            label: '瓦斯抽采系统监测点',
-            value: 'gas_sum',
-          },
-        },
-      ],
-      // mock: BDfireMock,
-    },
-    showStyle: {
-      size: 'width:420px;height:400px;',
-      version: '原版',
-      position: 'top:70px;right:15px',
-    },
-  },
-  {
-    deviceType: 'deviceManageInfo',
-    moduleName: '设备监测预警',
-    pageType: 'fusion-warn-green',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'dz_list',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [
-        {
-          readFrom: 'deviceWarn',
-          listOption: {
-            fanmain: {
-              url: getThemifyImagesURL('vent/alarm-icons/zfj.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'fanmain_all',
-              warnCount: 'fanmain_warn',
-              closeCount: 'fanmain_close',
-            },
-            fanlocal: {
-              url: getThemifyImagesURL('vent/alarm-icons/jbfj.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'fanlocal_all',
-              warnCount: 'fanlocal_warn',
-              closeCount: 'fanlocal_close',
-            },
-            bundletube: {
-              url: getThemifyImagesURL('vent/alarm-icons/sgjc.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'bundletube_all',
-              warnCount: 'bundletube_warn',
-              closeCount: 'bundletube_close',
-            },
-            fanlocaldp: {
-              url: getThemifyImagesURL('vent/alarm-icons/jbfj-db.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'fanlocaldp_all',
-              warnCount: 'fanlocaldp_warn',
-              closeCount: 'fanlocaldp_close',
-            },
-            gate: {
-              url: getThemifyImagesURL('vent/alarm-icons/fm-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'gate_all',
-              warnCount: 'gate_warn',
-              closeCount: 'gate_close',
-            },
-            window: {
-              url: getThemifyImagesURL('vent/alarm-icons/fc-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'window_all',
-              warnCount: 'window_warn',
-              closeCount: 'window_close',
-            },
-            windrect: {
-              url: getThemifyImagesURL('vent/alarm-icons/dscf-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'windrect_all',
-              warnCount: 'windrect_warn',
-              closeCount: 'windrect_close',
-            },
-            forcFan: {
-              url: getThemifyImagesURL('vent/alarm-icons/yf-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'forcFan_all',
-              warnCount: 'forcFan_warn',
-              closeCount: 'forcFan_close',
-            },
-            spray: {
-              url: getThemifyImagesURL('vent/alarm-icons/pl-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'spray_all',
-              warnCount: 'spray_warn',
-              closeCount: 'spray_close',
-            },
-            dustdev: {
-              url: getThemifyImagesURL('vent/alarm-icons/pf-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'dustdev_all',
-              warnCount: 'dustdev_warn',
-              closeCount: 'dustdev_close',
-            },
-            nitrogen: {
-              url: getThemifyImagesURL('vent/alarm-icons/zd-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'nitrogen_all',
-              warnCount: 'nitrogen_warn',
-              closeCount: 'nitrogen_close',
-            },
-            pulping: {
-              url: getThemifyImagesURL('vent/alarm-icons/zj-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'pulping_all',
-              warnCount: 'pulping_warn',
-              closeCount: 'pulping_close',
-            },
-            atomizing: {
-              url: getThemifyImagesURL('vent/alarm-icons/pw-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'atomizing_all',
-              warnCount: 'atomizing_warn',
-              closeCount: 'atomizing_close',
-            },
-            dustsensor: {
-              url: getThemifyImagesURL('vent/alarm-icons/cgq-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'dustsensor_all',
-              warnCount: 'dustsensor_warn',
-              closeCount: 'dustsensor_close',
-            },
-            gas: {
-              url: getThemifyImagesURL('vent/alarm-icons/ccb-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'gas_all',
-              warnCount: 'gas_warn',
-              closeCount: 'gas_close',
-            },
-            pump: {
-              url: getThemifyImagesURL('vent/alarm-icons/ccb-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'pump_all',
-              warnCount: 'pump_warn',
-              closeCount: 'pump_close',
-            },
-            modelsensor: {
-              url: getThemifyImagesURL('vent/alarm-icons/cf-green.png'),
-              text: '',
-              allText: '总数',
-              warnText: '报警数',
-              closeText: '断开数',
-              allCount: 'modelsensor_all',
-              warnCount: 'modelsensor_warn',
-              closeCount: 'modelsensor_close',
-            },
-          },
-        },
-      ],
-      // mock: BDfireMock,
-    },
-    showStyle: {
-      size: 'width:1020px;height:240px;',
-      version: '原版',
-      position: 'bottom:15px;left:450px',
-    },
-  },
-  {
-    deviceType: 'fusionManageInfo',
-    moduleName: '火灾监测预警',
-    pageType: 'fusion-warn-green',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'yj_chart',
-            basis: '90%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [
-        {
-          readFrom: 'dustInfo',
-          echartOption: {
-            colorList: [
-              ['rgba(78, 8, 10, 1)', 'rgba(255, 0, 0, 1)'],
-              ['rgba(78, 44, 10, 1)', 'rgba(255, 119, 0, 1)'],
-              ['rgba(72, 62, 41, 1)', 'rgba(234, 179, 105, 1)'],
-              ['rgba(78, 73, 10, 1)', 'rgba(255, 214, 0, 1)'],
-              ['rgba(24, 60, 76, 1)', 'rgba(78, 171, 217, 1)'],
-            ],
-            grid: {
-              top: '8%',
-              left: '5%',
-              right: '5%',
-              bottom: '5%',
-              containLabel: true,
-            },
-            axisLineX: {
-              show: true,
-              lineStyle: {
-                // width: 1,
-                color: 'rgba(34, 55, 81,.7)',
-              },
-            },
-            axisLabelX: {
-              fontSize: 14,
-              interval: 0,
-              textStyle: {
-                color: '#FFF', //更改坐标轴文字颜色
-                fontSize: 12, //更改坐标轴文字大小
-              },
-            },
-            splitLineY: {
-              show: true,
-              lineStyle: {
-                // type: 'dashed',
-                color: 'rgba(34, 55, 81,.7)',
-              },
-            },
-            axisLabelY: {
-              fontSize: 14,
-              textStyle: {
-                color: '#FFF', //更改坐标轴文字颜色
-                fontSize: 12, //更改坐标轴文字大小
-              },
-            },
-          },
-        },
-      ],
-      // mock: BDfireMock,
-    },
-    showStyle: {
-      size: 'width:420px;height:420px;',
-      version: '原版',
-      position: 'top:490px;right:15px',
-    },
-  },
-];
-
-export const menuList: any[] = [
-  { name: '灾害预警', MenuItemList: [] },
-  { name: '通风预警', MenuItemList: [] },
-  { name: '火灾预警', MenuItemList: [] },
-  { name: '粉尘预警', MenuItemList: [] },
-];
-export const testConfigBDFire: Config[] = [
-  {
-    deviceType: 'fireManageInfo',
-    moduleName: '重点区域风险监测',
-    pageType: 'BD_fire',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'board',
-            basis: '50%',
-          },
-          {
-            name: 'complex_list',
-            basis: '50%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'H',
-          readFrom: 'fireManageInfo',
-          layout: 'label-top',
-          items: [
-            {
-              label: '内因风险等级',
-              value: '${nyWarnLevel}',
-            },
-            {
-              label: '外因风险等级',
-              value: '${wyWarnLevel}',
-            },
-          ],
-        },
-      ],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [
-        {
-          type: 'D',
-          readFrom: 'fireManageInfo.sysList',
-          mapFromData: true,
-          items: [
-            {
-              title: '${sysNamme}',
-              contents: [
-                {
-                  label: '风险监测',
-                  value: '${warnLevel}',
-                  color: 'lightgreen',
-                  info: '',
-                },
-                {
-                  label: '最高温度',
-                  value: '${maxVal}',
-                  color: 'lightgreen',
-                  info: '',
-                },
-              ],
-            },
-          ],
-        },
-      ],
-      preset: [],
-    },
-    showStyle: {
-      size: 'width:420px;height:270px;',
-      version: '保德',
-      position: 'top:105px;left:10px;',
-    },
-  },
-  {
-    deviceType: '',
-    moduleName: '开采煤层自燃发火特性',
-    pageType: 'BD_fire',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'table',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [
-        {
-          type: 'A',
-          readFrom: 'mockTable',
-          columns: [
-            {
-              name: '煤层',
-              prop: 'a',
-            },
-            {
-              name: '自燃倾向性',
-              prop: 'b',
-            },
-            {
-              name: '最短发火期',
-              prop: 'c',
-            },
-            {
-              name: '最小推进速度',
-              prop: 'd',
-            },
-          ],
-        },
-      ],
-      list: [],
-      complex_list: [],
-      preset: [],
-      mock: {
-        mockTable: [
-          {
-            a: '8煤',
-            b: '自燃',
-            c: '123天',
-            d: '0.87md',
-          },
-        ],
-      },
-    },
-    showStyle: {
-      size: 'width:420px;height:130px;',
-      version: '保德',
-      position: 'top:390px;left:10px;',
-    },
-  },
-  {
-    deviceType: 'pdArray',
-    moduleName: '带式输送机防灭火监控系统',
-    pageType: 'BD_fire',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${systemname}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'board',
-            basis: '30%',
-          },
-          {
-            name: 'chart',
-            basis: '70%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'F',
-          layout: 'label-top',
-          readFrom: 'arrayCount',
-          items: [
-            {
-              label: '光纤预警',
-              value: '${[0].val}℃',
-            },
-            {
-              label: '一氧化碳预警',
-              value: '${[1].val}ppm',
-            },
-            {
-              label: '烟雾预警',
-              value: '${[2].val}',
-            },
-          ],
-        },
-      ],
-      chart: [
-        {
-          type: 'line_smooth',
-          readFrom: 'arrayFiber',
-          legend: { show: true },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '温度(℃)', position: 'left' }],
-          series: [
-            {
-              label: '${strinstallpos}',
-              readFrom: 'fibreTemperatureArr',
-              xprop: 'pos',
-              yprop: 'value',
-            },
-          ],
-        },
-      ],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [],
-    },
-    showStyle: {
-      size: 'width:420px;height:280px;',
-      version: '保德',
-      position: 'top:535px;left:10px;',
-    },
-  },
-  {
-    deviceType: 'sgGxObj',
-    moduleName: '工作面束管监测',
-    pageType: 'BD_fire',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: 'devSgjc',
-        selector: {
-          show: true,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'list',
-            basis: '60%',
-          },
-          {
-            name: 'blast_delta',
-            basis: '40%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [
-        {
-          type: 'I',
-          readFrom: '',
-          items: [
-            {
-              label: 'CO',
-              value: '${coVal}',
-              color: 'lightgreen',
-              info: '一氧化碳',
-            },
-            {
-              label: 'CO₂',
-              value: '${co2Val}',
-              color: 'lightgreen',
-              info: '二氧化碳',
-            },
-            {
-              label: 'CH₄',
-              value: '${ch4Val}',
-              color: 'lightgreen',
-              info: '甲烷',
-            },
-            {
-              label: 'C₂H₂',
-              value: '${c2h2Val}',
-              color: 'lightgreen',
-              info: '乙炔',
-            },
-            {
-              // label: 'C₂H₄',
-              label: 'O₂',
-              value: '${o2Val}',
-              color: 'lightgreen',
-              info: '氧气',
-            },
-            {
-              // label: 'O₂',
-              label: 'C₂H₄',
-              value: '${c2h4Val}',
-              color: 'lightgreen',
-              info: '乙烯',
-            },
-            {
-              label: '温度',
-              value: '--',
-              color: 'lightgreen',
-              info: '',
-            },
-            {
-              label: '风险',
-              value: '${warnLevel}',
-              color: 'lightgreen',
-              info: '',
-            },
-          ],
-        },
-      ],
-      complex_list: [],
-      preset: [
-        {
-          readFrom: '',
-        },
-      ],
-    },
-    showStyle: {
-      size: 'width:998px;height:286px;',
-      version: '保德',
-      position: 'bottom:10px;left:445px',
-    },
-  },
-  {
-    deviceType: 'sgGxObj',
-    moduleName: '工作面光纤监测',
-    pageType: 'BD_fire',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: 'devGxcw',
-        selector: {
-          show: true,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'chart',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [
-        {
-          type: 'line_smooth',
-          readFrom: '',
-          legend: { show: true },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '温度(℃)', position: 'left' }],
-          series: [
-            {
-              label: '${strinstallpos}',
-              readFrom: 'fibreTemperatureArr',
-              xprop: 'pos',
-              yprop: 'value',
-            },
-          ],
-        },
-      ],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [],
-    },
-    showStyle: {
-      size: 'width:998px;height:286px;',
-      version: '保德',
-      position: 'bottom:10px;left:445px',
-    },
-  },
-  {
-    deviceType: 'obfObj',
-    moduleName: '密闭采空区监测区域',
-    pageType: 'BD_fire',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: 'obfObjModded',
-        selector: {
-          show: true,
-          value: '${objType}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'chart',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [
-        {
-          type: 'bar_cylinder',
-          readFrom: '',
-          legend: { show: false },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '', position: 'left' }],
-          series: [
-            {
-              readFrom: 'arrayDev',
-              xprop: 'strinstallpos',
-              yprop: 'val',
-              label: '',
-            },
-          ],
-        },
-      ],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [],
-    },
-    showStyle: {
-      size: 'width:420px;height:220px;',
-      version: '保德',
-      position: 'top:105px;right:10px;',
-    },
-  },
-  {
-    deviceType: 'dsArray',
-    moduleName: '变电硐室防灭火监控系统',
-    pageType: 'BD_fire',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${systemname}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'list',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [
-        {
-          type: 'H',
-          readFrom: 'arrayCount',
-          items: [
-            {
-              label: '光纤预警',
-              info: '最高温度',
-              value: '${[0].val}℃',
-              color: 'lightgreen',
-            },
-            {
-              label: '一氧化碳预警',
-              info: '最高浓度',
-              value: '${[1].val}ppm',
-              color: 'lightgreen',
-            },
-            {
-              label: '烟雾预警',
-              info: '最高浓度',
-              value: '${[2].val}',
-              color: 'lightgreen',
-            },
-          ],
-        },
-      ],
-      complex_list: [],
-      preset: [],
-    },
-    showStyle: {
-      size: 'width:420px;height:220px;',
-      version: '保德',
-      position: 'top:340px;right:10px;',
-    },
-  },
-  {
-    deviceType: '',
-    moduleName: '安全监控系统',
-    pageType: 'BD_fire',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'table',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [
-        {
-          type: 'A',
-          readFrom: 'aqjkArray',
-          columns: [
-            {
-              name: '测点位置',
-              prop: 'strinstallpos',
-            },
-            {
-              name: '温度',
-              prop: 'nowVal',
-            },
-            {
-              name: '预警级别',
-              prop: 'warnLevel',
-            },
-            // {
-            // name: '时间',
-            // prop: 'time',
-            // },
-          ],
-        },
-      ],
-      list: [],
-      complex_list: [],
-      preset: [],
-      mock: {
-        aqjkArray: [
-          {
-            strinstallpos: '安全监控A',
-            nowVal: '33',
-            warnLevel: '低',
-          },
-          {
-            strinstallpos: '安全监控B',
-            nowVal: '33',
-            warnLevel: '低',
-          },
-          {
-            strinstallpos: '安全监控C',
-            nowVal: '33',
-            warnLevel: '低',
-          },
-          {
-            strinstallpos: '安全监控D',
-            nowVal: '33',
-            warnLevel: '低',
-          },
-        ],
-      },
-    },
-    showStyle: {
-      size: 'width:420px;height:240px;',
-      version: '保德',
-      position: 'top:575px;right:10px;',
-    },
-  },
-];
-
-export const testConfigBDDust: Config[] = [
-  {
-    deviceType: 'dustManageInfo',
-    moduleName: '工作面风险监测',
-    pageType: 'BD_dust',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'gallery',
-            basis: '30%',
-          },
-          {
-            name: 'complex_list',
-            basis: '70%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [
-        {
-          type: 'I',
-          readFrom: 'dustManageInfo',
-          items: [
-            {
-              label: '',
-              value: '${totalNum}',
-              color: 'lightgreen',
-            },
-            {
-              label: '低风险',
-              value: '${dfxNum}',
-              color: 'lightgreen',
-            },
-            {
-              label: '一般风险',
-              value: '${ybNum}',
-              color: 'lightgreen',
-            },
-            {
-              label: '较大风险',
-              value: '${jdNum}',
-              color: 'lightgreen',
-            },
-            {
-              label: '重大风险',
-              value: '${zdNum}',
-              color: 'lightgreen',
-            },
-          ],
-        },
-      ],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [
-        {
-          type: 'E',
-          readFrom: 'dustManageInfo.sysList',
-          mapFromData: true,
-          items: [
-            {
-              title: '${sysNamme}',
-              contents: [
-                {
-                  label: '风险监测',
-                  value: '${warnLevel}',
-                  color: 'lightgreen',
-                  info: '',
-                },
-                {
-                  label: '最高粉尘浓度',
-                  value: '${maxVal}',
-                  color: 'lightgreen',
-                  info: '',
-                },
-              ],
-            },
-          ],
-        },
-      ],
-      preset: [],
-    },
-    showStyle: {
-      size: 'width:420px;height:430px;',
-      version: '保德',
-      position: 'top:105px;left:10px;',
-    },
-  },
-  {
-    deviceType: 'atomizing',
-    moduleName: '喷雾设备信息',
-    pageType: 'BD_dust',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'table',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [
-        {
-          type: 'A',
-          columns: [
-            {
-              name: '设备名称',
-              prop: 'strinstallpos',
-            },
-            {
-              name: '排污状态',
-              prop: 'airStatus_str',
-            },
-            {
-              name: '应用场景',
-              prop: 'appScenes_str',
-            },
-            {
-              name: '喷雾状态',
-              prop: 'stateSpray_str',
-            },
-          ],
-          readFrom: 'atomizingArray',
-        },
-      ],
-      list: [],
-      complex_list: [],
-      preset: [],
-    },
-    showStyle: {
-      size: 'width:420px;height:270px;',
-      version: '保德',
-      position: 'top:550px;left:10px;',
-    },
-  },
-  {
-    deviceType: 'dustDustGraph',
-    moduleName: '综放工作面粉尘浓度',
-    pageType: 'BD_dust',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'chart',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [
-        {
-          type: 'line_area',
-          readFrom: '',
-          legend: { show: false },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '浓度', position: 'left' }],
-          series: [
-            {
-              label: '${strinstallpos}',
-              readFrom: 'historyList',
-              xprop: 'time',
-              yprop: 'dustval',
-            },
-          ],
-        },
-      ],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [],
-    },
-    showStyle: {
-      size: 'width:998px;height:270px;',
-      version: '保德',
-      position: 'bottom:10px;left:445px',
-    },
-  },
-  {
-    deviceType: 'atomObj',
-    moduleName: '智能喷雾降尘装置',
-    pageType: 'BD_dust',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'gallery',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [
-        {
-          type: 'E',
-          readFrom: 'atomObj',
-          items: [
-            {
-              label: '设备总数',
-              value: '${totalNum}',
-              color: 'lightgreen',
-            },
-            {
-              label: '喷雾开启数',
-              value: '${atomOpenNum}',
-              color: 'lightgreen',
-            },
-            {
-              label: '连网数量',
-              value: '${openNum}',
-              color: 'lightgreen',
-            },
-            {
-              label: '断网数量',
-              value: '${breakNum}',
-              color: 'lightgreen',
-            },
-          ],
-        },
-      ],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [],
-      to: 'http://10.248.210.154:8801',
-    },
-    showStyle: {
-      size: 'width:420px;height:270px;',
-      version: '保德',
-      position: 'top:0px;right:10px;',
-    },
-  },
-  {
-    deviceType: '',
-    moduleName: '煤尘爆炸性',
-    pageType: 'BD_dust',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '${name}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'board',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'E',
-          readFrom: '',
-          layout: 'val-top',
-          items: [
-            {
-              label: '火焰长度',
-              value: '>400mm',
-            },
-            {
-              label: '抑制煤层爆炸最低岩粉量',
-              value: '85%',
-            },
-            {
-              label: '鉴定结论',
-              value: '有煤层爆炸性',
-            },
-          ],
-        },
-      ],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [],
-    },
-    showStyle: {
-      size: 'width:420px;height:250px;',
-      version: '保德',
-      position: 'top:285px;right:10px;',
-    },
-  },
-  {
-    deviceType: 'devGbsb',
-    moduleName: '隔爆设施管理台账',
-    pageType: 'BD_dust',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'table',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [
-        {
-          type: 'A',
-          readFrom: 'devGbsb',
-          columns: [
-            {
-              name: '地点',
-              prop: 'strinstallpos',
-            },
-            {
-              name: '吊挂位置',
-              prop: 'addr',
-            },
-            {
-              name: '性质',
-              prop: 'kind',
-            },
-          ],
-        },
-      ],
-      list: [],
-      complex_list: [],
-      preset: [],
-    },
-    showStyle: {
-      size: 'width:420px;height:270px;',
-      version: '保德',
-      position: 'top:550px;right:10px;',
-    },
-  },
-];
-
-//机电硐室
-export const testConfigElectro: Config[] = [
-  {
-    deviceType: 'datalist',
-    moduleName: '球阀',
-    pageType: 'electro-champer',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${strinstallpos}',
-          toggleIcon: true,
-        },
-
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'card_list',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      chart: [],
-      gallery: [],
-      gallery_list: [],
-      table: [],
-      list: [],
-      complex_list: [],
-      preset: [
-        {
-          readFrom: 'datalist',
-        },
-      ],
-      to: '/ventilate/warn/home',
-    },
-    showStyle: {
-      size: 'width:380px;height:590px;',
-      version: '原版',
-      position: 'left:0px;top:0px',
-    },
-  },
-  {
-    deviceType: 'coData',
-    moduleName: '一氧化碳',
-    pageType: 'electro-chamber',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'chart',
-            basis: '30%',
-          },
-          {
-            name: 'generalist',
-            basis: '70%',
-          },
-        ],
-      },
-      board: [],
-      list: [
-        {
-          type: 'N',
-          readFrom: 'arrayCount',
-          items: [
-            {
-              label: '分区1',
-              value: '${coVal}',
-              color: 'blue',
-              info: '',
-            },
-            {
-              label: '分区2',
-              value: '${co2Val}',
-              color: 'blue',
-              info: '',
-            },
-            {
-              label: '分区3',
-              value: '${o2Val}',
-              color: 'blue',
-              info: '',
-            },
-            {
-              label: '分区4',
-              value: '${tempVal}',
-              color: 'blue',
-              info: '',
-            },
-            {
-              label: '分区5',
-              value: '${coVal}',
-              color: 'blue',
-              info: '',
-            },
-            {
-              label: '分区6',
-              value: '${co2Val}',
-              color: 'blue',
-              info: '',
-            },
-            {
-              label: '分区7',
-              value: '${o2Val}',
-              color: 'blue',
-              info: '',
-            },
-            {
-              label: '分区8',
-              value: '${tempVal}',
-              color: 'blue',
-              info: '',
-            },
-          ],
-        },
-      ],
-      chart: [
-        {
-          type: 'line',
-          readFrom: '',
-          legend: { show: true },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '(%)', position: 'left' }],
-          series: [
-            { readFrom: 'chartData', xprop: 'time', yprop: 'coRealTime', label: 'CO实时值' },
-            { readFrom: 'chartData', xprop: 'time', yprop: 'coWarn', label: 'CO报警阈值' },
-          ],
-        },
-      ],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [
-        {
-          readFrom: 'tempData',
-        },
-      ],
-      to: '',
-    },
-    showStyle: {
-      size: 'width:380px;height:590px;',
-      version: '原版',
-      position: 'top:0px;right:0px;',
-    },
-  },
-];
-
-export const testConfigVent182: Config[] = [
-  {
-    deviceType: 'fanmain',
-    moduleName: '主通风机系统',
-    pageType: 'vent_182',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: true,
-          value: '运行风机:${readData.Fan1StartStatus}',
-          trans: {
-            '1': '一号',
-            '0': '二号',
-          },
-        },
-      },
-      background: {
-        show: true,
-        type: 'video',
-        link: '/video/mainFan.mp4',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'board',
-            basis: '33%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'A',
-          readFrom: '',
-          layout: 'val-top',
-          items: [
-            {
-              label: '风量(m³/min)',
-              value: '${flow_merge}',
-            },
-            {
-              label: '负压(Pa)',
-              value: '${fy_merge}',
-            },
-            {
-              label: '漏风率(%)',
-              value: '${leakage}',
-            },
-          ],
-        },
-      ],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanmain',
-    },
-    showStyle: {
-      size: 'width:420px;height:280px;',
-      version: '原版',
-      position: 'top:60px;left:0;',
-    },
-  },
-  {
-    deviceType: 'fanlocal',
-    moduleName: '局部通风机系统',
-    pageType: 'vent_182',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${strinstallpos}',
-        },
-        slot: {
-          show: true,
-          value: '运行风机:${readData.Fan1StartStatus}',
-          trans: {
-            '1': '一号',
-            '0': '二号',
-          },
-        },
-      },
-      background: {
-        show: true,
-        type: 'video',
-        link: '/video/fanLocal.mp4',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'board',
-            basis: '33%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'A',
-          readFrom: 'readData',
-          layout: 'val-top',
-          items: [
-            {
-              label: '风筒出口风量',
-              value: '${windQuantity1}',
-            },
-            {
-              label: '风机吸入风量',
-              value: '${windQuantity2}',
-            },
-            {
-              label: '频率(Hz)',
-              value: '${Fan1StartStatus}',
-              trans: {
-                '1': '${Fan1fHz}',
-                '0': '${Fan2fHz}',
-              },
-            },
-          ],
-        },
-      ],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=fanlocal',
-    },
-    showStyle: {
-      size: 'width:420px;height:280px;',
-      version: '原版',
-      position: 'top:350px;left:0;',
-    },
-  },
-  {
-    deviceType: '',
-    moduleName: '通风设施远程控制',
-    pageType: 'vent_182',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: true,
-        type: 'video',
-        link: '/video/gate.mp4',
-      },
-      layout: {
-        direction: 'row',
-        items: [],
-      },
-      board: [],
-      list: [],
-      chart: [],
-      table: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      preset: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=gate_xinJianFuXieJin',
-    },
-    showStyle: {
-      size: 'width:420px;height:280px;',
-      version: '原版',
-      position: 'top:640px;left:0;',
-    },
-  },
-  {
-    deviceType: 'sys_wind',
-    moduleName: '风量监测',
-    pageType: 'vent_182',
-    moduleData: {
-      header: {
-        show: false,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'chart',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [],
-      table: [],
-      preset: [],
-      gallery: [],
-      complex_list: [],
-      gallery_list: [],
-      chart: [
-        {
-          type: 'bar',
-          readFrom: '',
-          legend: { show: true },
-          xAxis: [{ show: true }],
-          yAxis: [
-            { show: true, name: '风量(m³/min)', position: 'left' },
-            { show: true, name: '风速(m/s)', position: 'right' },
-          ],
-          dataZoom: [
-            {
-              show: true,
-              end: 20,
-            },
-          ],
-          series: [
-            { readFrom: 'sys_wind', xprop: 'strinstallpos', yprop: 'readData.m3', label: '风量' },
-            { readFrom: 'sys_wind', xprop: 'strinstallpos', yprop: 'readData.va', label: '风速' },
-          ],
-        },
-      ],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=windrect',
-    },
-    showStyle: {
-      size: 'width:1100px;height:280px;',
-      version: '原版',
-      position: 'bottom: 8px;left:410px;',
-    },
-  },
-  {
-    deviceType: 'sys_majorpath',
-    moduleName: '关键通风路线',
-    pageType: 'vent_182',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${devicePos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'chart',
-            basis: '67%',
-          },
-          {
-            name: 'board',
-            basis: '33%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'D',
-          readFrom: 'readData',
-          layout: 'label-top',
-          items: [
-            {
-              label: '风量(m³/min)',
-              value: '${retM3_merge.value}',
-            },
-            {
-              label: '矿井阻力(Pa)',
-              value: '${fy_merge.value}',
-            },
-            {
-              label: '等积孔',
-              value: '${dengjikong_merge}',
-            },
-          ],
-        },
-      ],
-      complex_list: [],
-      gallery: [],
-      list: [],
-      table: [],
-      chart: [
-        {
-          type: 'pie_halo',
-          readFrom: '',
-          legend: { show: false, formatter: '{b}\n{primarytext|{c}(Pa)\n{d}%}' },
-          xAxis: [{ show: false }],
-          yAxis: [{ show: false, name: '风量', position: 'left' }],
-          series: [{ readFrom: 'piechart', xprop: 'label', yprop: 'valMock', label: '' }],
-        },
-      ],
-      gallery_list: [],
-      preset: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=sys_majorpath&deviceid=${deviceID}',
-    },
-    showStyle: {
-      size: 'width:420px;height:280px;',
-      version: '原版',
-      position: 'top:60px;right:0;',
-    },
-  },
-  {
-    deviceType: 'sys_surface_caimei',
-    moduleName: '工作面智能监控',
-    pageType: 'vent_182',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: true,
-          value: '${devicePos}',
-        },
-        slot: {
-          show: false,
-          value: '',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'column',
-        items: [
-          {
-            name: 'chart',
-            basis: '65%',
-          },
-          {
-            name: 'board',
-            basis: '35%',
-          },
-        ],
-      },
-      board: [
-        {
-          type: 'B',
-          readFrom: '',
-          layout: 'label-top',
-          items: [
-            {
-              label: '进风(m³/min)',
-              value: '${faceIntM3}',
-            },
-            {
-              label: '回风(m³/min)',
-              value: '${faceRetM3}',
-            },
-            {
-              label: '需风量(m³/min)',
-              value: '${facePlanM3}',
-            },
-          ],
-        },
-      ],
-      list: [],
-      preset: [],
-      table: [],
-      gallery: [],
-      chart: [
-        {
-          type: 'line',
-          readFrom: '',
-          legend: { show: true },
-          xAxis: [{ show: true }],
-          yAxis: [{ show: true, name: '风量(m³/min)', position: 'left' }],
-          series: [
-            { readFrom: 'history_report', xprop: 'time', yprop: 'faceIntM3', label: '进风' },
-            { readFrom: 'history_report', xprop: 'time', yprop: 'faceRetM3', label: '回风' },
-          ],
-        },
-      ],
-      gallery_list: [],
-      complex_list: [],
-      to: '/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=sys_surface_caimei&deviceid=${deviceID}',
-    },
-    showStyle: {
-      size: 'width:420px;height:280px;',
-      version: '原版',
-      position: 'top:350px;right:0;',
-    },
-  },
-  {
-    deviceType: 'warn',
-    moduleName: '预警监测',
-    pageType: 'vent_182',
-    moduleData: {
-      header: {
-        show: true,
-        readFrom: '',
-        selector: {
-          show: false,
-          value: '',
-        },
-        slot: {
-          show: true,
-          value: '网络异常:${warn[0].netstatus.val}',
-        },
-      },
-      background: {
-        show: false,
-        type: 'video',
-        link: '',
-      },
-      layout: {
-        direction: 'row',
-        items: [
-          {
-            name: 'list',
-            basis: '100%',
-          },
-        ],
-      },
-      board: [],
-      list: [
-        {
-          type: 'timeline',
-          readFrom: 'warn[0]',
-          items: [
-            {
-              label: '报警',
-              value: '${alarm.val}',
-              info: '',
-              color: 'red',
-            },
-            {
-              label: '重大风险预警',
-              value: '${red.val}',
-              info: '',
-              color: 'red',
-            },
-            {
-              label: '较大风险预警',
-              value: '${orange.val}',
-              info: '',
-              color: 'orange',
-            },
-            {
-              label: '一般风险预警',
-              value: '${yellow.val}',
-              info: '',
-              color: 'yellow',
-            },
-            {
-              label: '低风险预警',
-              value: '${blue.val}',
-              info: '',
-              color: 'blue',
-            },
-          ],
-        },
-      ],
-      preset: [],
-      table: [],
-      gallery: [],
-      chart: [],
-      gallery_list: [],
-      complex_list: [],
-      to: '/monitorChannel/monitor-alarm-home',
-    },
-    showStyle: {
-      size: 'width:420px;height:280px;',
-      version: '原版',
-      position: 'top:640px;right:0;',
-    },
-  },
-];

+ 0 - 96
src/views/vent/home/configurable/deviceManger.vue

@@ -1,96 +0,0 @@
-<template>
-  <div class="device-manger">
-    <ModuleCommonHsq
-      v-for="cfg in configs"
-      :key="cfg.deviceType"
-      :show-style="cfg.showStyle"
-      :module-data="cfg.moduleData"
-      :module-name="cfg.moduleName"
-      :device-type="cfg.deviceType"
-      :data="data"
-      :visible="true"
-    />
-  </div>
-</template>
-<script lang="ts" setup>
-import { onMounted, onUnmounted, ref, computed, nextTick, onBeforeMount, watch } from 'vue';
-import { useInitConfigs, useInitPage } from './hooks/useInit';
-import ModuleCommonHsq from './components/ModuleCommonHsq.vue';
-import { getSystemApi } from './configurable.api';
-import { testConfigDevice } from './configurable.data';
-
-const { configs, fetchConfigs } = useInitConfigs();
-const { data, updateData } = useInitPage('红沙泉露天煤矿系统');
-let interval: number | undefined;
-
-// https获取监测数据
-let timer: null | NodeJS.Timeout = null;
-function getMonitor() {
-  timer = setTimeout(async () => {
-    getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
-    if (timer) {
-      timer = null;
-    }
-    getMonitor();
-  }, 10000);
-}
-
-onMounted(() => {
-  fetchConfigs('gas_injection').then(() => {
-    configs.value = testConfigDevice;
-    getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
-  });
-  getMonitor();
-});
-
-watch(
-  () => data.value,
-  (newData, oldData) => {}
-);
-
-onUnmounted(() => {
-  clearInterval(interval);
-});
-</script>
-
-<style lang="less" scoped>
-@import '/@/design/theme.less';
-
-@{theme-deepblue} {
-  .device-manger {
-  }
-}
-
-.device-manger {
-  --image-box1-bg: url('@/assets/images/home-container/configurable/hsq/2-4.png');
-  --image-box1-bg1: url('@/assets/images/home-container/configurable/hsq/2-10.png');
-  width: 100%;
-  height: 100%;
-  color: @white;
-  position: relative;
-  padding: 0px 10px;
-  box-sizing: border-box;
-  background-color: #09172c;
-}
-
-.vent-box1-bg {
-  &:nth-child(1) {
-    background: var(--image-box1-bg) no-repeat;
-    background-size: 100% 100%;
-  }
-
-  &:nth-child(2) {
-    background: var(--image-box1-bg1) no-repeat;
-    background-size: 100% 100%;
-  }
-
-  &:nth-child(3) {
-    background: var(--image-box1-bg) no-repeat;
-    background-size: 100% 100%;
-  }
-}
-
-:deep(.loading-box) {
-  position: unset;
-}
-</style>

+ 0 - 82
src/views/vent/home/configurable/fireMonitor.vue

@@ -1,82 +0,0 @@
-<template>
-  <div class="fire-monitor">
-    <!-- 模型区域 -->
-    <div class="model-box">
-      <dwgViewer />
-    </div>
-    <ModuleCommon v-for="cfg in configs" :key="cfg.deviceType" :show-style="cfg.showStyle" :module-data="cfg.moduleData"
-      :module-name="cfg.moduleName" :device-type="cfg.deviceType" :data="data" :visible="true" />
-  </div>
-</template>
-<script lang="ts" setup>
-import { onMounted, onUnmounted, ref, computed, nextTick, onBeforeMount, watch } from 'vue';
-import { useInitConfigs, useInitPage } from './hooks/useInit';
-import ModuleCommon from './components/ModuleCommon.vue';
-import dwgViewer from '../../cad/dwgViewer.vue'
-import { getSystemApi } from './configurable.api';
-import { testConfigFire } from './configurable.data';
-
-const { configs, fetchConfigs } = useInitConfigs();
-const { data, updateData } = useInitPage('红沙泉露天煤矿系统');
-let interval: number | undefined;
-
-// https获取监测数据
-let timer: null | NodeJS.Timeout = null;
-function getMonitor() {
-  timer = setTimeout(async () => {
-    getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
-    if (timer) {
-      timer = null;
-    }
-    getMonitor();
-  }, 10000);
-}
-
-onMounted(() => {
-  fetchConfigs('gas_injection').then(() => {
-    configs.value = testConfigFire;
-    getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
-  });
-  getMonitor();
-});
-
-watch(
-  () => data.value,
-  (newData, oldData) => { }
-);
-
-onUnmounted(() => {
-  clearInterval(interval);
-});
-</script>
-
-<style lang="less" scoped>
-@import '/@/design/theme.less';
-
-@{theme-deepblue} {
-  .fire-monitor {}
-}
-
-.fire-monitor {
-  width: 100%;
-  height: 100%;
-  color: @white;
-  position: relative;
-  padding: 0px 10px;
-  box-sizing: border-box;
-
-  .model-box {
-    position: absolute;
-    top: 63px;
-    left: 50%;
-    transform: translateX(-50%);
-    width: 1000px;
-    height: 615px;
-  border: 1px solid rgba(40, 165, 232, 0.8);
-  }
-}
-
-:deep(.loading-box) {
-  position: unset;
-}
-</style>

+ 0 - 172
src/views/vent/home/configurable/systemManger.vue

@@ -1,172 +0,0 @@
-<template>
-  <div class="system-manger">
-    <div class="nav-menu">
-      <div
-        :class="activeIndex == index ? 'nav-item-active' : 'nav-item'"
-        v-for="(item, index) in navList"
-        :key="index"
-        @click="handleChange(item, index)"
-        >{{ item.label }}</div
-      >
-    </div>
-    <ModuleCommonHsq
-      v-for="cfg in configs"
-      :key="cfg.deviceType"
-      :show-style="cfg.showStyle"
-      :module-data="cfg.moduleData"
-      :module-name="cfg.moduleName"
-      :device-type="cfg.deviceType"
-      :data="data"
-      :visible="true"
-    />
-  </div>
-</template>
-<script lang="ts" setup>
-import { onMounted, onUnmounted, ref, computed, nextTick, onBeforeMount, watch } from 'vue';
-import { useInitConfigs, useInitPage } from './hooks/useInit';
-import ModuleCommonHsq from './components/ModuleCommonHsq.vue';
-import { getSystemApi } from './configurable.api';
-import { testConfigSystem } from './configurable.data';
-
-const { configs, fetchConfigs } = useInitConfigs();
-const { data, updateData } = useInitPage('红沙泉露天煤矿系统');
-let activeIndex = ref(0);
-let interval: number | undefined;
-let navList = ref<any[]>([
-  { label: '角色权限', value: '1' },
-  { label: '用户管理', value: '2' },
-  { label: '日志审计', value: '3' },
-  { label: '系统配置', value: '4' },
-  { label: '数据备份', value: '5' },
-]);
-
-// https获取监测数据
-let timer: null | NodeJS.Timeout = null;
-function getMonitor() {
-  timer = setTimeout(async () => {
-    getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
-    if (timer) {
-      timer = null;
-    }
-    getMonitor();
-  }, 10000);
-}
-
-//nav选项切换
-function handleChange(item, index) {
-  activeIndex.value = index;
-}
-
-onMounted(() => {
-  fetchConfigs('gas_injection').then(() => {
-    configs.value = testConfigSystem;
-    getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
-  });
-  getMonitor();
-});
-
-watch(
-  () => data.value,
-  (newData, oldData) => {}
-);
-
-onUnmounted(() => {
-  clearInterval(interval);
-});
-</script>
-
-<style lang="less" scoped>
-@import '/@/design/theme.less';
-
-@{theme-deepblue} {
-  .system-manger {
-  }
-}
-
-.system-manger {
-  --image-box1-bg: url('@/assets/images/home-container/configurable/hsq/5-1.png');
-  --image-box1-bg1: url('@/assets/images/home-container/configurable/hsq/5-3.png');
-  --image-box1-bg2: url('@/assets/images/home-container/configurable/hsq/5-4.png');
-  --image-box1-bg3: url('@/assets/images/home-container/configurable/hsq/5-2.png');
-  --image-box1-bg4: url('@/assets/images/home-container/configurable/hsq/5-6.png');
-  --image-box1-bg5: url('@/assets/images/home-container/configurable/hsq/5-5.png');
-  width: 100%;
-  height: 100%;
-  color: @white;
-  position: relative;
-  padding: 0px 10px;
-  box-sizing: border-box;
-  background-color: #09172c;
-}
-
-.vent-box1-bg {
-  &:nth-child(2) {
-    background: var(--image-box1-bg) no-repeat;
-    background-size: 100% 100%;
-  }
-
-  &:nth-child(3) {
-    background: var(--image-box1-bg) no-repeat;
-    background-size: 100% 100%;
-  }
-
-  &:nth-child(4) {
-    background: var(--image-box1-bg1) no-repeat;
-    background-size: 100% 100%;
-  }
-
-  &:nth-child(5) {
-    background: var(--image-box1-bg3) no-repeat;
-    background-size: 100% 100%;
-  }
-
-  &:nth-child(6) {
-    background: var(--image-box1-bg3) no-repeat;
-    background-size: 100% 100%;
-  }
-
-  &:nth-child(7) {
-    background: var(--image-box1-bg2) no-repeat;
-    background-size: 100% 100%;
-  }
-}
-
-.nav-menu {
-  position: absolute;
-  left: 0;
-  top: 0;
-  width: 450px;
-  height: 52px;
-  padding-left: 10px;
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  box-sizing: border-box;
-}
-
-.nav-item {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  width: 100px;
-  height: 36px;
-  background: var(--image-box1-bg4) no-repeat;
-  background-size: 100% 100%;
-  cursor: pointer;
-}
-
-.nav-item-active {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  width: 100px;
-  height: 36px;
-  background: var(--image-box1-bg5) no-repeat;
-  background-size: 100% 100%;
-  cursor: pointer;
-}
-
-:deep(.loading-box) {
-  position: unset;
-}
-</style>

+ 0 - 101
src/views/vent/home/configurable/warnMonitor.vue

@@ -1,101 +0,0 @@
-<template>
-  <div class="warn-monitor">
-    <ModuleCommonHsq
-      v-for="cfg in configs"
-      :key="cfg.deviceType"
-      :show-style="cfg.showStyle"
-      :module-data="cfg.moduleData"
-      :module-name="cfg.moduleName"
-      :device-type="cfg.deviceType"
-      :data="data"
-      :visible="true"
-    />
-  </div>
-</template>
-<script lang="ts" setup>
-import { onMounted, onUnmounted, ref, computed, nextTick, onBeforeMount, watch } from 'vue';
-import { useInitConfigs, useInitPage } from './hooks/useInit';
-import ModuleCommonHsq from './components/ModuleCommonHsq.vue';
-import { getSystemApi } from './configurable.api';
-import { testConfigWarn } from './configurable.data';
-
-const { configs, fetchConfigs } = useInitConfigs();
-const { data, updateData } = useInitPage('红沙泉露天煤矿系统');
-let interval: number | undefined;
-
-// https获取监测数据
-let timer: null | NodeJS.Timeout = null;
-function getMonitor() {
-  timer = setTimeout(async () => {
-    getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
-    if (timer) {
-      timer = null;
-    }
-    getMonitor();
-  }, 10000);
-}
-
-onMounted(() => {
-  fetchConfigs('gas_injection').then(() => {
-    configs.value = testConfigWarn;
-    getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
-  });
-  getMonitor();
-});
-
-watch(
-  () => data.value,
-  (newData, oldData) => {}
-);
-
-onUnmounted(() => {
-  clearInterval(interval);
-});
-</script>
-
-<style lang="less" scoped>
-@import '/@/design/theme.less';
-
-@{theme-deepblue} {
-  .warn-monitor {
-  }
-}
-
-.warn-monitor {
-  --image-box1-bg: url('@/assets/images/home-container/configurable/hsq/2-4.png');
-  --image-box1-bg1: url('@/assets/images/home-container/configurable/hsq/2-10.png');
-  --image-box1-bg2: url('@/assets/images/home-container/configurable/hsq/3-3.png');
-  width: 100%;
-  height: 100%;
-  color: @white;
-  position: relative;
-  padding: 0px 10px;
-  box-sizing: border-box;
-  background-color: #09172c;
-}
-
-.vent-box1-bg {
-  &:nth-child(1) {
-    background: var(--image-box1-bg) no-repeat;
-    background-size: 100% 100%;
-  }
-
-  &:nth-child(2) {
-    background: var(--image-box1-bg1) no-repeat;
-    background-size: 100% 100%;
-  }
-
-  &:nth-child(3) {
-    background: var(--image-box1-bg) no-repeat;
-    background-size: 100% 100%;
-  }
-  &:nth-child(4) {
-    background: var(--image-box1-bg2) no-repeat;
-    background-size: 100% 100%;
-  }
-}
-
-:deep(.loading-box) {
-  position: unset;
-}
-</style>

+ 118 - 0
src/views/vent/monitorManager/hsqHome/components/AlarmMonitor.vue

@@ -0,0 +1,118 @@
+<template>
+  <div class="alarm-monitor">
+    <div class="alarm-top">
+      <div class="card-item" v-for="(item, index) in option" :key="index">
+        <div class="item-value">{{ cardData[item.value] }}</div>
+        <div class="item-label">{{ item.label }}</div>
+      </div>
+    </div>
+    <div class="alarm-bot">
+      <CommonTable :columns="columns" :table-data="tableData"></CommonTable>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref } from 'vue';
+import CommonTable from './CommonTable.vue';
+
+let props = defineProps({
+  option: {
+    type: Array as any
+  },
+  cardData: {
+    type: Object as any,
+    default: () => {
+      return {}
+    }
+  }
+})
+
+let columns = ref<any[]>([
+  {
+    name: '时间',
+    prop: 'time',
+  },
+  {
+    name: '位置',
+    prop: 'address',
+  },
+  {
+    name: '级别',
+    prop: 'grade',
+  },
+])
+let tableData = ref<any[]>([
+  { time: '14:25:10', address: '采掘场A区', grade: '一级' },
+  { time: '14:25:10', address: '采掘场B区', grade: '一级' },
+  { time: '14:25:10', address: '采掘场C区', grade: '一级' },
+  { time: '14:25:10', address: '采掘场D区', grade: '一级' },
+  { time: '14:25:10', address: '采掘场E区', grade: '一级' },
+  { time: '14:25:10', address: '采掘场F区', grade: '一级' },
+   { time: '14:25:10', address: '采掘场D区', grade: '一级' },
+  { time: '14:25:10', address: '采掘场E区', grade: '一级' },
+  { time: '14:25:10', address: '采掘场F区', grade: '一级' },
+])
+</script>
+
+<style lang="less" scoped>
+@import '/@/design/theme.less';
+
+.alarm-monitor {
+  --image-card-bg: url('@/assets/images/home-container/configurable/hsq/1-7.png');
+  --image-card-bg1: url('@/assets/images/home-container/configurable/hsq/1-8.png');
+  position: relative;
+  width: 100%;
+  height: 100%;
+  padding: 10px;
+  box-sizing: border-box;
+
+  .alarm-top {
+    display: flex;
+    justify-content: space-around;
+    align-items: center;
+    width: calc(100% - 20px);
+    height: 25%;
+    background: var(--image-card-bg) no-repeat bottom;
+    background-size: 100% auto;
+    margin: 0px 10px;
+  }
+
+  .alarm-bot {
+    width: 100%;
+    height: 75%;
+  }
+
+  .card-item {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+    width: 89px;
+    height: 49px;
+    background: var(--image-card-bg1) no-repeat;
+    background-size: 100% 100%;
+
+    &:nth-child(1) {
+      .item-value {
+        font-family: 'douyuFont';
+        color: #ff3d3d;
+      }
+    }
+
+    &:nth-child(2) {
+      .item-value {
+        font-family: 'douyuFont';
+        color: #ff983d;
+      }
+    }
+
+    &:nth-child(3) {
+      .item-value {
+        font-family: 'douyuFont';
+        color: #3dff69;
+      }
+    }
+  }
+}
+</style>

+ 69 - 0
src/views/vent/monitorManager/hsqHome/components/CommonBd.vue

@@ -0,0 +1,69 @@
+<template>
+  <div class="common-bd">
+    <div class="basic-bd-top">{{ title }}</div>
+    <div class="basic-bd-cen">
+      <slot></slot>
+    </div>
+    <div class="basic-bd-bot"></div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref } from 'vue';
+
+let props = defineProps({
+  title: {
+    type: String,
+    default: ''
+  }
+});
+</script>
+
+<style lang="less" scoped>
+@import '/@/design/theme.less';
+
+.common-bd {
+  --image-box1-top: url('/@/assets/images/vent/box-top-bg.png');
+  --image-box1-bottom: url('/@/assets/images/vent/box-bottom-bg.png');
+  --container-image: linear-gradient(#3df6ff00, #3df6ff, #3df6ff00);
+  position: relative;
+  width: 100%;
+  height: 100%;
+
+  .basic-bd-top {
+    display: flex;
+    align-items: center;
+   justify-content: center;
+    color: #fff;
+    font-weight: 700;
+
+    width: 100%;
+    height: 36px;
+    background: var(--image-box1-top) no-repeat;
+    background-size: 100% 100%;
+  }
+
+  .basic-bd-cen {
+    width: 100%;
+    height: calc(100% - 36px);
+    border-left-width: 1px;
+    border-left-style: solid;
+    border-right-width: 1px;
+    border-right-style: solid;
+    border-image-source: var(--container-image);
+    border-image-slice: 1;
+    border-image-repeat: stretch;
+  }
+
+  .basic-bd-bot {
+    position: absolute;
+    left: 0;
+    bottom: 0;
+    width: 100%;
+    height: 36px;
+    background: var(--image-box1-bottom) no-repeat;
+    background-size: 100% 100%;
+  }
+
+}
+</style>

+ 202 - 0
src/views/vent/monitorManager/hsqHome/components/CommonTable.vue

@@ -0,0 +1,202 @@
+<template>
+  <div class="common-table">
+    <div class="table__content_label">
+      <div class="label-t" v-for="(item, index) in columns" :key="`svvhbcth-${index}`" :style="{ flexBasis }">{{
+        item.name }}</div>
+    </div>
+    <div ref="scrollRef" class="table__content_list">
+      <div class="table__content_list_row" v-for="(item, index) in tableData" :key="`svvhbct-${index}`">
+        <div v-for="(t, i) in columns" :key="`svvhbctr-${i}`" :style="{ flexBasis }" class="table__content__list_item">
+          <slot :name="t.prop" :scope="item">
+            <span v-if="t.prop == 'status' || t.prop == 'remark' || t.prop == 'grade'" class="icon-pie">
+              <span class="icon-item"></span>
+            </span>
+            <span :style="{ color: t.prop == 'grade' ? 'rgba(79, 255, 173)' : '' }">{{ get(item, t.prop) }}</span>
+          </slot>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { computed, ref } from 'vue';
+import { useAutoScroll } from '/@/hooks/core/useAutoScroll';
+import _ from 'lodash';
+
+let props = defineProps({
+
+  columns: {
+    type: Array as any
+  },
+  autoScroll: {
+    type: Boolean,
+    default: false
+  },
+  tableData: {
+    type: Array as any
+  },
+  defaultValue: {
+    type: String,
+    default: '-'
+  }
+})
+
+const scrollRef = ref(null);
+if (props.autoScroll) {
+  useAutoScroll(scrollRef);
+}
+
+const flexBasis = computed(() => {
+  return Math.fround(100 / props.columns.length) + '%';
+});
+
+function get(o, p) {
+  const d = _.get(o, p);
+  return _.isNil(d) ? props.defaultValue : d === '' ? props.defaultValue : d;
+}
+</script>
+
+<style lang="less" scoped>
+@import '/@/design/theme.less';
+
+.common-table {
+  --image-content-label: url('/@/assets/images/home-container/configurable/hsq/1-5.png');
+  --image-content-text: url('/@/assets/images/company/content-text.png');
+  --image-list-head: url('/@/assets/images/home-container/configurable/firehome/list-head.png');
+  --image-content-label-d: url(/@/assets/images/home-container/configurable/minehome/content-label.png);
+  --image-content-body-d: url('/@/assets/images/home-container/configurable/minehome/content-body.png');
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  position: relative;
+  width: 100%;
+  height: 100%;
+  padding: 10px;
+  box-sizing: border-box;
+
+  .gallery-content {
+    position: absolute;
+
+    &:nth-child(1) {
+      left: 22px;
+      top: 4px;
+    }
+
+    &:nth-child(2) {
+      display: flex;
+      flex-direction: column;
+      align-items: flex-end;
+      right: 24px;
+      top: 4px;
+    }
+
+    &:nth-child(3) {
+      left: 22px;
+      top: 72px;
+    }
+
+    &:nth-child(4) {
+      display: flex;
+      flex-direction: column;
+      align-items: flex-end;
+      right: 24px;
+      top: 72px;
+    }
+
+    &:nth-child(5) {
+      left: 50%;
+      top: 50%;
+      transform: translate(-50%, -50%);
+    }
+
+    .gallery-content-text {
+      margin-bottom: 2px;
+    }
+
+    .gallery-content-text-r {
+      margin-bottom: 2px;
+    }
+
+    .gallery-content-text1 {
+      font-size: 24px;
+      font-family: 'douyuFont';
+    }
+
+    .gallery-content-value,
+    .gallery-content-value-r {
+      font-family: 'douyuFont';
+      color: #fff;
+    }
+
+  }
+
+  .table__content_label {
+    width: 400px;
+    height: 32px;
+    display: flex;
+    justify-content: space-around;
+    align-items: center;
+    background-image: var(--image-content-label);
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+    color: #3df6ff;
+
+    .label-t {
+      text-align: center;
+      font-size: 14px;
+    }
+  }
+
+  .table__content_list {
+    height: calc(100% - 32px);
+    width: 400px;
+    display: flex;
+    flex-direction: column;
+    padding: 5px 0;
+    box-sizing: border-box;
+    overflow-y: auto;
+
+    .table__content_list_row {
+      width: 100%;
+      display: flex;
+      justify-content: space-around;
+      align-items: center;
+      color: #fff;
+      margin-bottom: 5px;
+      background-size: 100% auto;
+      background-repeat: no-repeat;
+      background-position: center bottom;
+      background-image: var(--image-content-text);
+
+      span {
+        display: inline-block;
+        text-align: center;
+      }
+    }
+  }
+.table__content__list_item{
+  text-align: center;
+  padding-left: 8px;
+}
+  .icon-pie {
+    position: relative;
+    width: 12px;
+    height: 12px;
+    border-radius: 50%;
+    background-color: rgba(79, 255, 173, .3);
+    margin-right: 5px;
+  }
+
+  .icon-item {
+    position: absolute;
+    left: 50%;
+    top: 50%;
+    transform: translate(-50%, -50%);
+    width: 6px;
+    height: 6px;
+    border-radius: 50%;
+    background-color: rgba(79, 255, 173);
+  }
+}
+</style>

Dosya farkı çok büyük olduğundan ihmal edildi
+ 353 - 0
src/views/vent/monitorManager/hsqHome/components/CustomChart.vue


+ 157 - 0
src/views/vent/monitorManager/hsqHome/components/CustomGalleryNew.vue

@@ -0,0 +1,157 @@
+<template>
+  <div class="custom-gallery-new">
+    <div class="custom-top">
+      <div class="gallery-new-box">
+        <div class="gallery-content" v-for="(item, index) in option" :key="index">
+          <div :class="index % 2 == 0 ? 'gallery-content-text' : 'gallery-content-text-r'">{{ item.label }}</div>
+          <div :class="index % 2 == 0 ? 'gallery-content-value' : 'gallery-content-value-r'">{{ galleryData ?
+            galleryData[item.value] : 0 }}</div>
+        </div>
+        <div class="gallery-content">
+          <SvgIcon class="icon-style2" size="30" name="device-status" />
+        </div>
+      </div>
+    </div>
+    <div class="custom-bottom">
+      <CommonTable :columns="columns" :table-data="tableData"></CommonTable>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { computed, ref } from 'vue';
+import { SvgIcon } from '/@/components/Icon';
+import CommonTable from './CommonTable.vue';
+
+let props = defineProps({
+  option: {
+    type: Array as any
+  },
+  galleryData: {
+    type: Object
+  },
+})
+
+let columns = ref<any[]>([
+  {
+    name: '设备名称',
+    prop: 'deviceName',
+  },
+  {
+    name: '状态',
+    prop: 'status',
+  },
+  {
+    name: '备注',
+    prop: 'remark',
+  },
+])
+let tableData = ref<any[]>([
+  { deviceName: 'CAM-001', status: '在线', remark: '正常' },
+  { deviceName: 'CAM-002', status: '在线', remark: '正常' },
+  { deviceName: 'CAM-003', status: '报警', remark: '高温' },
+  { deviceName: 'CAM-001', status: '在线', remark: '正常' },
+  { deviceName: 'CAM-002', status: '在线', remark: '正常' },
+  { deviceName: 'CAM-003', status: '报警', remark: '高温' },
+])
+
+</script>
+
+<style lang="less" scoped>
+@import '/@/design/theme.less';
+
+.custom-gallery-new {
+  --image-gallery-bg: url('@/assets/images/home-container/configurable/dusthome/gallery-bg.png');
+  --image-gallery-bg-b: url('@/assets/images/home-container/configurable/dusthome/gallery-bg-b.png');
+  --image-content-label: url('/@/assets/images/home-container/configurable/hsq/1-5.png');
+  --image-content-text: url('/@/assets/images/company/content-text.png');
+  --image-list-head: url('/@/assets/images/home-container/configurable/firehome/list-head.png');
+  --image-content-label-d: url(/@/assets/images/home-container/configurable/minehome/content-label.png);
+  --image-content-body-d: url('/@/assets/images/home-container/configurable/minehome/content-body.png');
+  position: relative;
+  width: 100%;
+  height: 100%;
+  padding: 10px;
+  box-sizing: border-box;
+
+  .custom-top {
+    width: 100%;
+    height: 40%;
+  }
+
+  .custom-bottom {
+    width: 100%;
+    height: 60%;
+    box-sizing: border-box;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    padding: 5px 0;
+  }
+
+  .gallery-new-box {
+    position: relative;
+    width: 100%;
+    height: 100%;
+    background: var(--image-gallery-bg) no-repeat;
+    background-size: 100% 100%;
+  }
+
+  .gallery-content {
+    position: absolute;
+
+    &:nth-child(1) {
+      left: 22px;
+      top: 4px;
+    }
+
+    &:nth-child(2) {
+      display: flex;
+      flex-direction: column;
+      align-items: flex-end;
+      right: 24px;
+      top: 4px;
+    }
+
+    &:nth-child(3) {
+      left: 22px;
+      top: 72px;
+    }
+
+    &:nth-child(4) {
+      display: flex;
+      flex-direction: column;
+      align-items: flex-end;
+      right: 24px;
+      top: 72px;
+    }
+
+    &:nth-child(5) {
+      left: 50%;
+      top: 50%;
+      transform: translate(-50%, -50%);
+    }
+
+    .gallery-content-text {
+      margin-bottom: 2px;
+    }
+
+    .gallery-content-text-r {
+      margin-bottom: 2px;
+    }
+
+    .gallery-content-text1 {
+      font-size: 24px;
+      font-family: 'douyuFont';
+    }
+
+    .gallery-content-value,
+    .gallery-content-value-r {
+      font-family: 'douyuFont';
+      color: #fff;
+    }
+
+  }
+
+}
+</style>

+ 1 - 1
src/views/vent/home/configurable/components/preset/LongList1.vue → src/views/vent/monitorManager/hsqHome/components/DeviceCenter.vue

@@ -137,7 +137,7 @@
 
 <script setup lang="ts">
 import { reactive, ref } from 'vue'
-import basicBorder from '../basicBorder.vue'
+import basicBorder from './basicBorder.vue'
 import { SvgIcon } from '/@/components/Icon';
 
 let deviceModel = ref('CAM-001')

+ 1 - 1
src/views/vent/home/configurable/components/preset/LongList.vue → src/views/vent/monitorManager/hsqHome/components/DeviceLeft.vue

@@ -25,7 +25,7 @@
 
 <script setup lang="ts">
 import { ref } from 'vue'
-import basicDevice from '../basicDevice.vue'
+import basicDevice from './basicDevice.vue'
 
 //设备列表数量
 let count = ref(0)

+ 1 - 1
src/views/vent/home/configurable/components/preset/LongList2.vue → src/views/vent/monitorManager/hsqHome/components/DeviceRight.vue

@@ -138,7 +138,7 @@
 
 <script setup lang="ts">
 import { reactive, ref } from 'vue'
-import basicBorder from '../BasicBorder.vue'
+import basicBorder from './basicBorder.vue'
 
 //当前激活nav选项
 let activeIndex = ref(0)

+ 5 - 7
src/views/vent/home/configurable/components/preset/BtnListNew.vue → src/views/vent/monitorManager/hsqHome/components/EnvironmentMonitor.vue

@@ -1,9 +1,9 @@
 <template>
-  <div class="BtnListNew">
+  <div class="environ-box">
     <div class="basic-btn" v-for="(item, index) in option" :key="index">
       <div class="btn-label">{{ item.label }}</div>
       <div class="btn-value">
-        <div class="text-value">{{ data[item.value] }}</div>
+        <div class="text-value">{{ environData[item.value] }}</div>
         <div class="text-value unit-value">{{ item.unit }}</div>
       </div>
     </div>
@@ -11,13 +11,13 @@
 </template>
 
 <script setup lang="ts">
-import { ref } from 'vue'
+import { ref } from 'vue';
 
 let props = defineProps({
   option: {
     type: Array as any
   },
-  data: {
+ environData: {
     type: Object,
     default: () => {
       return {
@@ -41,9 +41,7 @@ let props = defineProps({
 <style lang="less" scoped>
 @import '/@/design/theme.less';
 
-@{theme-deepblue} {}
-
-.BtnListNew {
+.environ-box {
   --image-btn-bg: url('@/assets/images/home-container/configurable/hsq/1-9.png');
   display: flex;
   flex-wrap: wrap;

+ 7 - 11
src/views/vent/home/configurable/components/preset/OperateNew.vue → src/views/vent/monitorManager/hsqHome/components/QuickAction.vue

@@ -1,10 +1,10 @@
 <template>
-  <div class="OperateNew">
+  <div class="quick-action">
     <div class="basic-box basic-boxT">
-      <div class="nav-box" v-for="(item, index) in option" :key="index">
+      <div class="nav-box" v-for="(item, index) in quickOption" :key="index">
         <SvgIcon class="box-icon-style" size="20" :name="item.iconName" />
         <div class="box-label">{{ item.label }}</div>
-        <div class="box-value">{{ data[item.value] }}</div>
+        <div class="box-value">{{ quickData[item.value] }}</div>
       </div>
     </div>
     <div class="basic-box basic-boxB">
@@ -18,17 +18,17 @@
 </template>
 
 <script setup lang="ts">
-import { ref } from 'vue'
+import { ref } from 'vue';
 import { SvgIcon } from '/@/components/Icon';
 
 let props = defineProps({
-  option: {
+  quickOption: {
     type: Array as any
   },
   btnOption: {
     type: Array as any
   },
-  data: {
+  quickData: {
     type: Object,
     default: () => {
       return {
@@ -39,15 +39,12 @@ let props = defineProps({
     }
   }
 })
-
 </script>
 
 <style lang="less" scoped>
 @import '/@/design/theme.less';
 
-@{theme-deepblue} {}
-
-.OperateNew {
+.quick-action {
   --image-card-bg: url('@/assets/images/home-container/configurable/hsq/1-10.png');
   --image-card-bg1: url('@/assets/images/home-container/configurable/hsq/1-11.png');
   --image-card-bg2: url('@/assets/images/home-container/configurable/hsq/1-15.png');
@@ -159,6 +156,5 @@ let props = defineProps({
       cursor: pointer;
     }
   }
-
 }
 </style>

+ 98 - 0
src/views/vent/monitorManager/hsqHome/components/SystemCenBottom.vue

@@ -0,0 +1,98 @@
+<template>
+  <div class="system-box">
+    <div class="basic-box">
+      <div class="list-title">今日登录统计</div>
+      <div class="list-content">
+        <basicBorder title="最近登录">
+          <div class="basic-box1">
+            <div class="box-item" v-for="(item, index) in data" :key="index">
+              <span style="margin-right: 10px;">{{ `${item.userName} : ` }}</span>
+              <span>{{ item.lastLoginTime }}</span>
+            </div>
+          </div>
+        </basicBorder>
+      </div>
+    </div>
+    <div class="basic-box">
+        <CustomChart :chart-config="dayLoginConfig" :chart-data="dayChartData"></CustomChart>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { reactive, ref,watch} from 'vue'
+import basicBorder from './basicBorder.vue'
+import CustomChart from './CustomChart.vue';
+import { dayLoginConfig, } from '../hsqHome.data';
+
+const props = defineProps<{ data: Array<{
+  [x: string]:
+  any; userName: string; value: string 
+}> }>()
+
+let dayChartData = ref<any[]>([])
+
+watch(()=>props.data,(newV,oldV)=>{
+  if(newV){
+    dayChartData.value=newV.map(el=>{
+      return {
+        x:el.userName,
+        y:el.loginCount,
+      }
+    })
+  }
+},{immediate:true})
+</script>
+
+<style lang="less" scoped>
+.system-box {
+   --image-box-bg: url('@/assets/images/home-container/configurable/hsq/2-5.png');
+  position: relative;
+  width: 100%;
+  height: 100%;
+
+  .basic-box {
+    width: 50%;
+    height: 100%;
+    padding: 15px;
+    box-sizing: border-box;
+  }
+
+  .list-title {
+    width: 177px;
+    height: 30px;
+    line-height: 22px;
+    padding-left: 16px;
+    color: #01fefc;
+    font-weight: bolder;
+    background: var(--image-box-bg) no-repeat;
+    background-size: 100% 100%;
+    margin-bottom: 5px;
+  }
+
+  .list-content {
+    width: 100%;
+    height: calc(100% - 35px);
+  }
+
+  .basic-box1 {
+    height: 100%;
+    overflow-y: auto;
+  }
+
+  .box-item {
+    display: flex;
+    // justify-content: space-between;
+    align-items: center;
+    height: 26px;
+    margin-bottom: 6px;
+    padding: 0px 10px;
+    box-sizing: border-box;
+    background: linear-gradient(to right, #134c77, transparent);
+  }
+
+  ::-webkit-scrollbar {
+    display: none;
+  }
+}
+</style>

+ 88 - 50
src/views/vent/home/configurable/components/preset/LogAudit.vue → src/views/vent/monitorManager/hsqHome/components/SystemLeftBottom.vue

@@ -3,25 +3,20 @@
     <div class="list-title">
       <div class="title-l">日志审计</div>
       <div class="title-r">
-        <div :class="activeIndex == index ? 'basic-btn-active' : 'basic-btn'" v-for="(item, index) in btnList"
+        <div :class="activeIndex == index ? 'basic-btn-active' : 'basic-btn'" v-for="(item, index) in btnOption"
           :key="index" @click="handleClick(item, index)">{{
             item.label }}</div>
       </div>
     </div>
     <div class="list-content">
       <div class="content-title">
-        <div class="title-item" v-for="(item, index) in titleList" :key="index">{{ item.label }}</div>
+        <div class="title-item" v-for="(item, index) in titleOption" :key="index">{{ item.label }}</div>
       </div>
       <div class="table-content">
-        <div class="content-item" v-for="(item, index) in tableData" :key="index">
-          <div class="item-text">{{ item.id }}</div>
-          <div class="item-text">{{ item.address }}
-          </div>
-          <div class="item-text item-text1">{{ item.grade }}</div>
-          <div class="item-text item-text2">{{ item.status }}</div>
-          <div class="item-text">
-            <span class="text-look">确认</span>
-            <span class="text-look">详情</span>
+        <div class="content-item" v-for="(item, index) in data" :key="index">
+          <div class="item-text" v-for="(ite, ind) in titleOption" :key="ind">
+            <div :class="ite.value == 'username' ? 'status-text' : ''">{{ ite.value ? item[ite.value] : '-' }}
+            </div>
           </div>
         </div>
       </div>
@@ -31,45 +26,34 @@
 </template>
 
 <script setup lang="ts">
-import { ref } from 'vue'
+import { ref, type PropType } from 'vue'
+
+interface BtnOption {
+  label: string
+  value?: string | number
+}
 
+let props = defineProps({
+  data: {
+    type: Array as PropType<any[]>,
+    default: () => [],
+  },
+  btnOption: {
+    type: Array as PropType<BtnOption[]>,
+    default: () => [],
+  },
+  titleOption: {
+    type: Array as PropType<BtnOption[]>,
+    default: () => [],
+  }
+})
 let activeIndex = ref(0)
-let btnList = ref<any[]>([
-  { label: '全部', value: '1' },
-  { label: '登录日志', value: '2' },
-  { label: '操作日志', value: '3' },
-  { label: '报警日志', value: '4' },
-])
-let titleList = ref<any[]>([
-  { label: '时间', value: '1' },
-  { label: '用户名', value: '2' },
-  { label: '操作类型', value: '3' },
-  { label: '操作内容', value: '4' },
-  { label: 'IP地址', value: '5' },
-  { label: '结果', value: '5' },
-  { label: '详情', value: '5' },
-])
-let tableData = ref<any[]>([
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-  // { time: '14:31:22', address: '采掘场A区', grade: '一级', status: '未处理', },
-])
-
-//menu选项切换
+let $emit=defineEmits(['changeTab'])
+
+//tab选项切换
 function handleClick(item, index) {
   activeIndex.value = index
+  $emit('changeTab',item.value)
 }
 </script>
 
@@ -155,10 +139,34 @@ function handleClick(item, index) {
 
   .title-item {
     display: flex;
-    flex: 1;
+    // flex: 1;
     justify-content: center;
     align-items: center;
     color: #01fefc;
+
+    &:nth-child(1) {
+      flex: 1
+    }
+
+    &:nth-child(2) {
+      flex: 1
+    }
+
+    &:nth-child(3) {
+      flex: 2
+    }
+
+    &:nth-child(4) {
+      flex: 2
+    }
+
+    &:nth-child(5) {
+      flex: 2
+    }
+
+    &:nth-child(6) {
+      flex: 1
+    }
   }
 
   .table-content {
@@ -183,13 +191,40 @@ function handleClick(item, index) {
 
   .item-text {
     display: flex;
-    flex: 1;
+    // flex: 1;
     justify-content: center;
     align-items: center;
+     text-overflow: ellipsis;
+    white-space: nowrap;
+    overflow: hidden;
+
+    &:nth-child(1) {
+      flex: 1
+    }
+
+    &:nth-child(2) {
+      flex: 1
+    }
+
+    &:nth-child(3) {
+      flex: 2
+    }
+
+    &:nth-child(4) {
+      flex: 2
+    }
+
+    &:nth-child(5) {
+      flex: 2
+    }
+
+    &:nth-child(6) {
+      flex: 1
+    }
   }
 
-  .item-text1 {
-    color: #fc002a;
+  .status-text {
+     color: orange;
   }
 
   .item-text2 {
@@ -203,5 +238,8 @@ function handleClick(item, index) {
     background-color: #2484bc;
     cursor: pointer;
   }
+  ::-webkit-scrollbar {
+    display: none;
+  }
 }
 </style>

+ 278 - 0
src/views/vent/monitorManager/hsqHome/components/SystemLeftTop.vue

@@ -0,0 +1,278 @@
+<template>
+  <div class="user-list">
+    <div class="list-title">
+      <div class="title-l">用户列表</div>
+      <div class="title-r">
+        <div class="basic-btn" @click="handleDetail">详情</div>
+      </div>
+    </div>
+    <div class="list-content">
+      <!-- <div class="search-area">
+        <a-input v-model:value="searchData" placeholder="搜索" size="small" />
+        <div class="search-btn">
+          <div class="basic-btn">筛选</div>
+        </div>
+      </div> -->
+      <!-- <div class="content-area"> -->
+      <div class="content-title">
+        <div class="title-item" v-for="(item, index) in option" :key="index">{{ item.label }}</div>
+      </div>
+      <div class="table-content">
+        <div class="content-item" v-for="(item, index) in data" :key="index">
+          <div class="item-text" v-for="(ite, ind) in option" :key="ind">
+            <!-- <div v-if="ite.value == 'operation'">
+                <span class="text-look">编辑</span>
+                <span class="text-look">更多</span>
+              </div> -->
+            <div :class="ite.value == 'status_dictText' ? 'status-text' : ''">{{ item[ite.value] || '-' }}
+            </div>
+          </div>
+        </div>
+      </div>
+      <!-- </div> -->
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, type PropType } from 'vue';
+import { useRouter } from 'vue-router'
+
+let props = defineProps({
+  data: {
+    type: Array as PropType<Record<string, any>[]>,
+    default: () => [],
+  },
+  option: {
+    type: Object as PropType<Record<string, any>>,
+    default: () => ({}),
+  },
+})
+
+// let searchData = ref('')
+let router = useRouter()
+
+//详情跳转
+function handleDetail() {
+  router.push({
+    path: '/monitorChannel/system/user',
+    query: {},
+  })
+}
+
+</script>
+
+<style lang="less" scoped>
+@import '/@/design/theme.less';
+
+@{theme-deepblue} {
+  .user-list {}
+}
+
+.user-list {
+  --image-box-bg: url('@/assets/images/home-container/configurable/hsq/2-5.png');
+  --image-box-bg1: url('@/assets/images/home-container/configurable/hsq/2-6.png');
+  --image-box-bg2: url('@/assets/images/home-container/configurable/hsq/2-24.png');
+  position: relative;
+  width: 100%;
+  height: 100%;
+  padding: 15px 30px;
+  box-sizing: border-box;
+
+  .list-title {
+    display: flex;
+    justify-content: space-between;
+    width: 100%;
+    height: 30px;
+    line-height: 22px;
+    margin-bottom: 10px;
+  }
+
+  .title-l {
+    width: 177px;
+    height: 100%;
+    color: #01fefc;
+    font-weight: bolder;
+    padding-left: 16px;
+    background: var(--image-box-bg) no-repeat;
+    background-size: 100% 100%;
+  }
+
+  .title-r {
+    width: 85px;
+    height: 30px;
+    border: 1px solid #01fefc;
+    border-radius: 4px;
+    padding: 3px;
+    cursor: pointer;
+    // margin-right: 16px;
+  }
+
+  .basic-btn {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    width: 100%;
+    height: 100%;
+    background-color: rgba(32, 166, 169);
+  }
+
+  .list-content {
+    height: calc(100% - 40px);
+  }
+
+  // .search-area {
+  //   height: 42px;
+  //   display: flex;
+  //   justify-content: space-between;
+  //   align-items: center;
+  //   margin-bottom: 5px;
+  // }
+
+  // .search-btn {
+  //   width: 85px;
+  //   height: 30px;
+  //   border: 1px solid #01fefc;
+  //   border-radius: 4px;
+  //   padding: 3px;
+  //   cursor: pointer;
+  // }
+
+  // .content-area {
+  //   height: calc(100% - 47px);
+  // }
+
+  .content-title {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    height: 34px;
+    background: var(--image-box-bg2) no-repeat;
+    background-size: 100% 100%;
+    margin-bottom: 6px;
+  }
+
+  .title-item {
+    display: flex;
+    // flex: 1;
+    justify-content: center;
+    align-items: center;
+    color: #01fefc;
+
+    &:nth-child(1) {
+      flex: 1;
+    }
+
+    &:nth-child(2) {
+      flex: 1.5;
+    }
+
+    &:nth-child(3) {
+      flex: 1.5;
+    }
+
+    &:nth-child(4) {
+      flex: 1.5;
+    }
+
+    &:nth-child(5) {
+      flex: 1;
+    }
+
+    &:nth-child(6) {
+      flex: 1;
+    }
+
+    &:nth-child(7) {
+      flex: 1;
+    }
+  }
+
+  .table-content {
+    height: calc(100% - 40px);
+    overflow-y: auto;
+  }
+
+  .content-item {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    height: 36px;
+
+    &:nth-child(odd) {
+      background-color: #0e3455;
+    }
+
+    &:nth-child(even) {
+      background-color: #114268;
+    }
+  }
+
+  .item-text {
+    display: flex;
+    // flex: 1;
+    justify-content: center;
+    align-items: center;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    overflow: hidden;
+
+    &:nth-child(1) {
+      flex: 1;
+    }
+
+    &:nth-child(2) {
+      flex: 1.5;
+    }
+
+    &:nth-child(3) {
+      flex: 1.5;
+    }
+
+    &:nth-child(4) {
+      flex: 1.5;
+    }
+
+    &:nth-child(5) {
+      flex: 1;
+    }
+
+    &:nth-child(6) {
+      flex: 1;
+    }
+
+    &:nth-child(7) {
+      flex: 1;
+    }
+  }
+
+  .status-text {
+    color: #15f00d;
+  }
+
+  .text-look {
+    padding: 0px 3px;
+    margin: 0px 2px;
+    border-radius: 2px;
+    background-color: #2484bc;
+    cursor: pointer;
+  }
+
+  .zxm-input {
+    height: 42px;
+    color: #fff;
+    background-color: transparent;
+    border: none;
+    background: var(--image-box-bg1) no-repeat;
+    background-size: 100% 100%;
+  }
+
+  .zxm-input-sm {
+    padding: 0px 20px;
+  }
+
+  ::-webkit-scrollbar {
+    display: none;
+  }
+}
+</style>

+ 0 - 0
src/views/vent/home/configurable/components/preset/SystemView.vue → src/views/vent/monitorManager/hsqHome/components/SystemRightBot.vue


+ 46 - 5
src/views/vent/home/configurable/components/preset/PermissionManager.vue → src/views/vent/monitorManager/hsqHome/components/SystemRightTop.vue

@@ -1,6 +1,11 @@
 <template>
   <div class="permission-manager">
-    <div class="list-title">角色权限管理</div>
+  <div class="list-title">
+      <div class="title-l">角色权限管理</div>
+      <div class="title-r">
+        <div class="basic-btn" @click="handleDetail">详情</div>
+      </div>
+    </div>
     <div class="list-content">
       <div class="per-box" v-for="(item, index) in perList" :key="index">
         <div class="box-label">{{ item.label }}</div>
@@ -13,7 +18,9 @@
 
 <script setup lang="ts">
 import { ref } from 'vue'
+import { useRouter } from 'vue-router'
 
+let router = useRouter()
 let perList = ref<any[]>([
   { label: '超级管理员(全部权限)', value: '1' },
   { label: '安全主管(报警处理+设备管理)', value: '2' },
@@ -21,6 +28,14 @@ let perList = ref<any[]>([
   { label: '设备维护(设备管理+配置)', value: '2' },
   { label: '访客(仅查看)', value: '2' },
 ])
+
+//详情跳转
+function handleDetail() {
+  router.push({
+    path: '/monitorChannel/system/role',
+    query: {},
+  })
+}
 </script>
 
 <style lang="less" scoped>
@@ -43,16 +58,42 @@ let perList = ref<any[]>([
   padding: 15px;
   box-sizing: border-box;
 
-  .list-title {
-    width: 177px;
+ .list-title {
+    display: flex;
+    justify-content: space-between;
+    width: 100%;
     height: 30px;
     line-height: 22px;
-    padding-left: 16px;
+    margin-bottom: 10px;
+  }
+
+  .title-l {
+    width: 177px;
+    height: 100%;
     color: #01fefc;
     font-weight: bolder;
+    padding-left: 16px;
     background: var(--image-box-bg5) no-repeat;
     background-size: 100% 100%;
-    margin-bottom: 5px;
+  }
+
+  .title-r {
+    width: 85px;
+    height: 30px;
+    border: 1px solid #01fefc;
+    border-radius: 4px;
+    padding: 3px;
+    cursor: pointer;
+    // margin-right: 16px;
+  }
+
+  .basic-btn {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    width: 100%;
+    height: 100%;
+    background-color: rgba(32, 166, 169);
   }
 
   .list-content {

+ 0 - 0
src/views/vent/home/configurable/components/preset/EchartBarNew.vue → src/views/vent/monitorManager/hsqHome/components/WarnBottom.vue


+ 3 - 3
src/views/vent/home/configurable/components/preset/MixedWarn.vue → src/views/vent/monitorManager/hsqHome/components/WarnCenTop.vue

@@ -84,7 +84,7 @@
 
 <script setup lang="ts">
 import { reactive, ref } from 'vue'
-import basicBorder from '../BasicBorder.vue'
+import basicBorder from './basicBorder.vue'
 import { getAssetURL } from '/@/utils/ui';
 
 let deviceModel = ref('CAM-001')
@@ -98,8 +98,8 @@ let warnDetail = reactive({
 })
 let picList = ref([
   { src: getAssetURL('home-container/configurable/hsq/4-1.png'), label: '1.报警触发' },
-  { src: getAssetURL('home-container/configurable/hsq/4-2.png'), label: '2.系统确认' },
-  { src: getAssetURL('home-container/configurable/hsq/4-3.png'), label: '3.通知值班' },
+  { src: getAssetURL('home-container/configurable/hsq/6-1.png'), label: '2.系统确认' },
+  { src: getAssetURL('home-container/configurable/hsq/6-2.png'), label: '3.通知值班' },
   { src: getAssetURL('home-container/configurable/hsq/4-4.png'), label: '4.现场处置' },
   { src: getAssetURL('home-container/configurable/hsq/4-5.png'), label: '5.确认解除' },
 ])

+ 0 - 0
src/views/vent/home/configurable/components/preset/SearchTable.vue → src/views/vent/monitorManager/hsqHome/components/WarnLeftTop.vue


+ 11 - 10
src/views/vent/home/configurable/components/preset/RuleList.vue → src/views/vent/monitorManager/hsqHome/components/WarnRightTop.vue

@@ -14,13 +14,13 @@
             <div class="item-text">
               <a-switch v-model:checked="item.status" size="small" />
             </div>
-            <div class="item-text">
+            <!-- <div class="item-text">
               <span class="text-look">编辑</span>
-            </div>
+            </div> -->
           </div>
         </div>
       </div>
-      <div class="basic-list-content">
+      <!-- <div class="basic-list-content">
         <basicBorder :widthV="298" colorV="orange" title="【编辑规则】一级温度报警(Rule-001)">
           <div class="temp-warn">
             <div class="warn-item">
@@ -55,22 +55,22 @@
             </div>
           </div>
         </basicBorder>
-      </div>
+      </div> -->
     </div>
   </div>
 </template>
 
 <script setup lang="ts">
 import { reactive, ref } from 'vue';
-import basicBorder from '../BasicBorder.vue';
-import { rules } from '/@/utils/helper/validator.js';
+// import basicBorder from '../BasicBorder.vue';
+// import { rules } from '/@/utils/helper/validator.js';
 
 let titleList = ref<any[]>([
   { label: '规则ID', value: '1' },
   { label: '规则名称', value: '2' },
   { label: '触发条件', value: '3' },
   { label: '启用', value: '4' },
-  { label: '操作', value: '5' },
+  // { label: '操作', value: '5' },
 ]);
 let tableData = ref<any[]>([
   { ruleId: 'Rule-001', ruleName: '一级温度报警', fctj: '温度>=60℃', status: true },
@@ -107,7 +107,7 @@ let rulesData = reactive({
   position: relative;
   width: 100%;
   height: 100%;
-  padding: 10px 15px;
+  padding: 15px;
   box-sizing: border-box;
 
   .list-title {
@@ -127,12 +127,13 @@ let rulesData = reactive({
     justify-content: space-between;
     align-items: center;
     width: 100%;
-    height: calc(100% - 35px);
+    height: calc(100% - 40px);
   }
 
   .basic-list-content {
     width: 100%;
-    height: calc(50% - 5px);
+    height:100%;
+    // height: calc(50% - 5px);
   }
 
   .content-title {

+ 0 - 0
src/views/vent/home/configurable/components/basicBorder.vue → src/views/vent/monitorManager/hsqHome/components/basicBorder.vue


+ 0 - 0
src/views/vent/home/configurable/components/basicDevice.vue → src/views/vent/monitorManager/hsqHome/components/basicDevice.vue


+ 0 - 0
src/views/vent/home/configurable/components/navMenu.vue → src/views/vent/monitorManager/hsqHome/components/navMenu.vue


+ 100 - 0
src/views/vent/monitorManager/hsqHome/deviceManger.vue

@@ -0,0 +1,100 @@
+<template>
+  <div class="device-manger">
+    <div class="basic-box">
+      <DeviceLeft></DeviceLeft>
+    </div>
+    <div class="basic-box">
+      <DeviceCenter></DeviceCenter>
+    </div>
+    <div class="basic-box">
+      <DeviceRight></DeviceRight>
+    </div>
+  </div>
+</template>
+<script lang="ts" setup>
+import { onMounted, onUnmounted, ref, computed, nextTick, onBeforeMount, watch } from 'vue';
+import DeviceLeft from './components/DeviceLeft.vue'
+import DeviceCenter from './components/DeviceCenter.vue'
+import DeviceRight from './components/DeviceRight.vue'
+
+
+// https获取监测数据
+let timer: null | NodeJS.Timeout = null;
+// function getMonitor() {
+//   timer = setTimeout(async () => {
+//     getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
+//     if (timer) {
+//       timer = null;
+//     }
+//     getMonitor();
+//   }, 10000);
+// }
+
+onMounted(() => {
+  // fetchConfigs('gas_injection').then(() => {
+  //   configs.value = testConfigDevice;
+  //   getSystemApi1({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
+  // });
+  // getMonitor();
+});
+
+onUnmounted(() => {
+  // clearInterval(interval);
+});
+</script>
+
+<style lang="less" scoped>
+@import '/@/design/theme.less';
+
+@{theme-deepblue} {
+  .device-manger {}
+}
+
+.device-manger {
+  --image-box1-bg: url('@/assets/images/home-container/configurable/hsq/2-4.png');
+  --image-box1-bg1: url('@/assets/images/home-container/configurable/hsq/2-10.png');
+  display: flex;
+  justify-content: space-between;
+  width: 100%;
+  height: calc(100% - 10px);
+  color: @white;
+  position: relative;
+  margin-bottom: 10px;
+  background-color: #09172c;
+
+  .basic-box {
+    &:nth-child(1) {
+      width: 430px;
+      height: 100%;
+      background: var(--image-box1-bg) no-repeat;
+      background-size: 100% 100%;
+      margin-right: 10px;
+    }
+
+    &:nth-child(2) {
+      position: absolute;
+      top: 63px;
+      left: 50%;
+      transform: translate(-50%, 0);
+      width: calc(100% - 880px);
+      height: calc(100% - 63px);
+      background: var(--image-box1-bg1) no-repeat;
+      background-size: 100% 100%;
+    }
+
+    &:nth-child(3) {
+      width: 430px;
+      height: 100%;
+      background: var(--image-box1-bg) no-repeat;
+      background-size: 100% 100%;
+      margin-left: 10px;
+    }
+  }
+}
+
+
+
+:deep(.loading-box) {
+  position: unset;
+}
+</style>

+ 221 - 0
src/views/vent/monitorManager/hsqHome/fireMonitor.vue

@@ -0,0 +1,221 @@
+<template>
+  <div class="fire-monitor">
+    <div class="basic-fire-box">
+      <div class="box-top">
+        <CommonBd title="设备状态总览">
+          <CustomGalleryNew :option="option" :galleryData="galleryData"></CustomGalleryNew>
+        </CommonBd>
+      </div>
+      <div class="box-cen">
+        <CommonBd title="实时温度曲线">
+          <CustomChart :chart-config="chartConfig" :chart-data="chartData"></CustomChart>
+        </CommonBd>
+      </div>
+      <div class="box-bot">
+        <CommonBd title="最近处理记录">
+          <CommonTable :columns="recordColumns" :table-data="tableData"></CommonTable>
+        </CommonBd>
+      </div>
+    </div>
+    <div class="basic-fire-box1">
+      <!-- 模型区域 -->
+      <div class="model-box">
+        <dwgViewer />
+      </div>
+      <div class="box1-bot">
+        <CommonBd title="快捷操作">
+          <QuickAction :quick-option="quickOption" :btn-option="btnOption" :quick-data="quickData"></QuickAction>
+        </CommonBd>
+      </div>
+    </div>
+    <div class="basic-fire-box">
+      <div class="box-top">
+        <CommonBd title="报警监控">
+          <AlarmMonitor :option="alarmOption" :cardData="alarmData"></AlarmMonitor>
+        </CommonBd>
+      </div>
+      <div class="box-cen">
+        <CommonBd title="区域温度统计">
+          <CustomChart :chart-config="chartTempConfig" :chart-data="chartTempData"></CustomChart>
+        </CommonBd>
+      </div>
+      <div class="box-bot">
+        <CommonBd title="环境监测数据">
+          <EnvironmentMonitor :option="envOption" :environData="envData"></EnvironmentMonitor>
+        </CommonBd>
+      </div>
+    </div>
+  </div>
+</template>
+<script lang="ts" setup>
+import { onMounted, onUnmounted, ref, computed, nextTick, onBeforeMount, watch, reactive } from 'vue';
+import CommonBd from './components/CommonBd.vue';
+import CustomGalleryNew from './components/CustomGalleryNew.vue';
+import CustomChart from './components/CustomChart.vue';
+import CommonTable from './components/CommonTable.vue';
+import AlarmMonitor from './components/AlarmMonitor.vue';
+import EnvironmentMonitor from './components/EnvironmentMonitor.vue';
+import QuickAction from './components/QuickAction.vue';
+import dwgViewer from '../../cad/dwgViewer.vue';
+import { option, chartConfig, recordColumns, quickOption, btnOption, alarmOption, chartTempConfig, envOption } from './hsqHome.data';
+
+let interval: number | undefined;
+
+let galleryData = reactive({
+  zxNum: 5,
+  lxNum: 5,
+  gzNum: 5,
+  bjNum: 5,
+})
+
+const chartData = [
+  { pos: '1', value: '12' },
+  { pos: '2', value: '44' },
+  { pos: '3', value: '44' },
+  { pos: '4', value: '20' },
+]
+
+
+let tableData = ref<any[]>([
+  { time: '14:25:10', deviceName: 'CAM-001', status: '在线' },
+  { time: '14:25:10', deviceName: 'CAM-002', status: '在线' },
+  { time: '14:25:10', deviceName: 'CAM-003', status: '报警' },
+  { time: '14:25:10', deviceName: 'CAM-001', status: '在线' },
+  { time: '14:25:10', deviceName: 'CAM-002', status: '在线' },
+  { time: '14:25:10', deviceName: 'CAM-003', status: '报警' },
+])
+
+
+let alarmData = ref<any>({
+  dayWarn: 12,
+  warnOk: 2,
+  warnUnOk: 10
+})
+
+
+let chartTempData = [
+  { x: '1', y: '12' },
+  { x: '2', y: '44' },
+  { x: '3', y: '44' },
+  { x: '4', y: '20' },
+]
+
+
+let envData = reactive({
+  tempHj: '-8.5',
+  fsfx: '3.2',
+  temp: '42',
+  coval: '12',
+  co2val: '380',
+  o2val: '20.9',
+  ch4val: '0.02',
+  fcnd: '0.08',
+  ywzs: '0.15',
+  tempDb: '28',
+})
+
+let quickData = reactive({
+  time: '128天06:32:18',
+  sjsx: '实时',
+  wlyc: '12s',
+})
+// https获取监测数据
+let timer: null | NodeJS.Timeout = null;
+// function getMonitor() {
+//   timer = setTimeout(async () => {
+//     getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
+//     if (timer) {
+//       timer = null;
+//     }
+//     getMonitor();
+//   }, 10000);
+// }
+
+onMounted(() => {
+  // fetchConfigs('gas_injection').then(() => {
+  //   configs.value = testConfigFire;
+  //   getSystemApi1({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
+  // });
+  // getMonitor();
+});
+
+
+
+onUnmounted(() => {
+  // clearInterval(interval);
+});
+</script>
+
+<style lang="less" scoped>
+@import '/@/design/theme.less';
+
+
+.fire-monitor {
+  position: relative;
+  width: 100%;
+  height: calc(100% - 10px);
+  color: @white;
+  margin-bottom: 10px;
+  display: flex;
+  justify-content: space-between;
+
+  .basic-fire-box {
+    width: 430px;
+    height: 100%;
+
+
+    &:nth-child(1) {
+      margin-right: 10px;
+    }
+
+    &:nth-child(3) {
+      margin-left: 10px;
+    }
+  }
+
+  .basic-fire-box1 {
+    position: relative;
+    width: calc(100% - 880px);
+    height: 100%;
+  }
+
+  .model-box {
+    position: absolute;
+    top: 63px;
+    left: 0;
+    width: 100%;
+    height: 615px;
+    border: 1px solid rgba(40, 165, 232, 0.8);
+    margin-bottom: 10px;
+  }
+
+  .box1-bot {
+    position: absolute;
+    bottom: 0px;
+    left: 0;
+    width: 100%;
+    height: 155px;
+  }
+
+  .box-top {
+    height: 360px;
+    margin-bottom: 10px;
+
+  }
+
+  .box-cen {
+    height: 220px;
+    margin-bottom: 10px;
+
+  }
+
+  .box-bot {
+    height: 250px;
+  }
+
+}
+
+:deep(.loading-box) {
+  position: unset;
+}
+</style>

+ 23 - 0
src/views/vent/monitorManager/hsqHome/hsqHome.api.ts

@@ -0,0 +1,23 @@
+import { defHttp } from '/@/utils/http/axios';
+
+enum Api {
+userList = '/sys/user/list',//用户列表接口
+LongList = '/sys/log/list',//日志列表接口
+getUserLoginStats= '/sys/log/getUserLoginStats'//今日登录统计
+}
+/**
+* 日志列表接口
+* @param params
+*/
+export const LongList = (params) => defHttp.get({ url: Api.LongList, params });
+/**
+* 用户列表接口
+* @param params
+*/
+export const userList = (params) => defHttp.get({ url: Api.userList, params });
+
+/**
+* 今日登录统计
+* @param params
+*/
+export const getUserLoginStats = (params) => defHttp.post({ url: Api.getUserLoginStats, params });

+ 156 - 0
src/views/vent/monitorManager/hsqHome/hsqHome.data.ts

@@ -0,0 +1,156 @@
+//设备状态总览
+export let option = [
+  {
+    label: '在线设备',
+    value: 'zxNum',
+  },
+  {
+    label: '离线设备',
+    value: 'lxNum',
+  },
+  {
+    label: '故障设备',
+    value: 'gzNum',
+  },
+  {
+    label: '报警设备',
+    value: 'bjNum',
+  },
+]
+
+//实时温度曲线
+export const chartConfig: any = {
+  type: 'line_area',
+  grid: {
+    top: 40,
+    left: 50,
+    bottom: 14,
+    right: 50,
+  },
+  legend: { show: false },
+  xAxis: [{ show: true }],
+  yAxis: [{ show: true, name: '(℃)', position: 'left' }],
+  series: [
+    {
+      label: '温度',
+      readFrom: 'chartData',
+      xprop: 'pos',
+      yprop: 'value',
+    },
+  ],
+};
+
+//最近处理记录
+export let recordColumns: any[] = [
+  {
+    name: '时间',
+    prop: 'time',
+  },
+  {
+    name: '设备',
+    prop: 'deviceName',
+  },
+  {
+    name: '状态',
+    prop: 'status',
+  },
+]
+
+//快捷操作
+export let quickOption = [
+  { label: '系统运行时间', value: 'time', iconName: 'time-run' },
+  { label: '数据刷新', value: 'sjsx', iconName: 'data-reset' },
+  { label: '网络延迟', value: 'wlyc', iconName: 'internet-on' },
+]
+export let btnOption = [
+  { firstLabel: '报警确认', secondLabel: '视屏调取', thirdLabel: '联动控制' },
+  { firstLabel: '数据导出', secondLabel: '生成报表', thirdLabel: '定位追踪' },
+  { firstLabel: '声光关闭', secondLabel: '应急广播', thirdLabel: '系统设置' },
+]
+
+//报警监控
+export let alarmOption = [
+  {
+    label: '今日报警',
+    value: 'dayWarn',
+  },
+  {
+    label: '已处理',
+    value: 'warnOk',
+  },
+  {
+    label: '未处理',
+    value: 'warnUnOk',
+  },
+]
+
+//区域温度统计
+export let chartTempConfig: any = {
+  type: 'bar_cylinder_wide',
+  readFrom: '',
+  grid: {
+    top: 40,
+    left: 50,
+    bottom: 14,
+    right: 50,
+  },
+  legend: { show: false },
+  xAxis: [{ show: true }],
+  yAxis: [{ show: true, name: '', position: 'left' }],
+  series: [{ readFrom: 'chartTempData', xprop: 'x', yprop: 'y', label: '温度' }],
+}
+
+
+export let envOption = [
+  { label: '环境温度', value: 'tempHj', unit: '℃' },
+  { label: '风速风向', value: 'fsfx', unit: 'm/s' },
+  { label: '温度', value: 'temp', unit: '%' },
+  { label: 'CO浓度', value: 'coval', unit: 'ppm' },
+  { label: 'CO2浓度', value: 'co2val', unit: 'ppm' },
+  { label: 'O2浓度', value: 'o2val', unit: '%' },
+  { label: 'Ch4浓度', value: 'ch4val', unit: '%' },
+  { label: '粉尘浓度', value: 'fcnd', unit: 'mg/m³' },
+  { label: '烟雾指数', value: 'ywzs', unit: '' },
+  { label: '地表温度', value: 'tempDb', unit: '℃' },
+]
+
+//用户列表
+export let optionUser = [
+  { label: '用户账号', value: 'username' },
+  { label: '用户姓名', value: 'realname' },
+  { label: '所属角色', value: 'userRolesStr' },
+  { label: '部门', value: 'orgCodeTxt' },
+  { label: '手机号', value: 'phone' },
+  { label: '状态', value: 'status_dictText' },
+]
+
+//日志审计
+export let logbtnOption = [
+  { label: '登录日志', value: 'login' },
+  { label: '操作日志', value: 'operate' },
+  { label: '浏览日志', value: 'look' },
+]
+export let titleOption = [
+  { label: '操作人ID', value: 'userid' },
+  { label: '操作人', value: 'username' },
+  { label: '日志内容', value: 'logContent' },
+  { label: 'IP', value: 'ip' },
+  { label: '创建时间', value: 'createTime' },
+  { label: '日志类型', value: 'logType_dictText' },
+]
+
+//今日登录统计
+export let dayLoginConfig:any = {
+  type: 'bar_cylinder_wide',
+  readFrom: '',
+  grid: {
+    top: 55,
+    left: 20,
+    bottom: 35,
+    right: 50,
+  },
+  legend: { show: false },
+  xAxis: [{ show: true }],
+  yAxis: [{ show: true, name: '', position: 'left' }],
+  series: [{ ww: 'areaTemptureData', xprop: 'x', yprop: 'y', label: '' }],
+}

+ 6 - 12
src/views/vent/home/configurable/gasInjection.vue → src/views/vent/monitorManager/hsqHome/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="deviceManger">
+  <div class="hsq-home">
     <div class="top-bg">
       <div class="main-title">{{ mainTitle }}</div>
     </div>
@@ -13,8 +13,7 @@
 </template>
 
 <script setup lang="ts">
-import { ref } from 'vue';
-import { useInitConfigs, useInitPage } from './hooks/useInit';
+import {ref} from 'vue';
 import navMenu from './components/navMenu.vue'
 import fireMonitor from './fireMonitor.vue'
 import deviceManger from './deviceManger.vue'
@@ -22,11 +21,11 @@ import warnMonitor from './warnMonitor.vue'
 import systemManger from './systemManger.vue'
 import largeScreen from './largeScreen.vue'
 
-const { mainTitle, data, updateData } = useInitPage('红沙泉露天煤矿系统');
+let mainTitle=ref('红沙泉露天煤矿系统');
 //当前激活界面
 const activeComponente = ref<any>(fireMonitor);
 
-//menu选项切换
+  //menu选项切换
 function changeMenu(param) {
   switch (param) {
     case 'yzt':
@@ -49,23 +48,18 @@ function changeMenu(param) {
       break;
   }
 }
+
 </script>
 
 <style lang="less" scoped>
 @import '/@/design/theme.less';
 
-@{theme-deepblue} {
-  .deviceManger {
-  }
-}
-
-.deviceManger {
+.hsq-home {
   --image-modal-top: url('@/assets/images/vent/vent-header1.png');
   position: relative;
   width: 100%;
   height: 100%;
   color: #fff;
-  /* background: url('@/assets/images/vent/homeNew/bg.png') no-repeat center; */
 
   .top-bg {
     width: 100%;

+ 0 - 0
src/views/vent/home/configurable/largeScreen.vue → src/views/vent/monitorManager/hsqHome/largeScreen.vue


+ 175 - 0
src/views/vent/monitorManager/hsqHome/systemManger.vue

@@ -0,0 +1,175 @@
+<template>
+  <div class="system-manger">
+    <div class="basic-top-box">
+      <div class="system-box-t">
+        <SystemLeftTop :option="optionUser" :data="listData"></SystemLeftTop>
+      </div>
+      <div class="system-box-t">
+        <SystemRightTop></SystemRightTop>
+      </div>
+    </div>
+    <div class="basic-bot-box">
+      <div class="system-box-b">
+        <SystemLeftBottom :btnOption="logbtnOption" :titleOption="titleOption" :data="logList" @changeTab="changeTab">
+        </SystemLeftBottom>
+      </div>
+      <div class="system-box-b">
+        <SystemCenBottom :data="dayList"></SystemCenBottom>
+      </div>
+      <div class="system-box-b">
+        <SystemRightBot></SystemRightBot>
+      </div>
+    </div>
+  </div>
+</template>
+<script lang="ts" setup>
+import { onMounted, onUnmounted, reactive, ref, watch } from 'vue';
+import SystemLeftTop from './components/SystemLeftTop.vue';
+import SystemRightTop from './components/SystemRightTop.vue';
+import SystemLeftBottom from './components/SystemLeftBottom.vue';
+import SystemCenBottom from './components/SystemCenBottom.vue';
+import SystemRightBot from './components/SystemRightBot.vue';
+import { userList, LongList, getUserLoginStats } from './hsqHome.api.js'
+import { optionUser, logbtnOption, titleOption } from './hsqHome.data.js'
+import dayjs from 'dayjs';
+
+let listData = ref([])
+let logType = ref(1)
+let logList = ref([])
+let dayList = ref([])
+let searchData = reactive({
+  dayEnd: dayjs().format('YYYY-MM-DD') ,
+  dayStart:dayjs().startOf('date').subtract(7, 'day').format('YYYY-MM-DD'),
+})
+
+//获取用户列表
+async function getUserList() {
+  let res = await userList({ order: 'desc', pageNo: 1, pageSize: 1000 })
+  listData.value = res.records || []
+}
+
+//获取日志列表
+async function getLogList() {
+  let res = await LongList({ logType: logType.value, pageNo: 1, pageSize: 1000 })
+  logList.value = res.records || []
+}
+//日志选项切换
+function changeTab(param) {
+  switch (param) {
+    case 'login':
+      logType.value = 1
+      getLogList()
+      break;
+    case 'operate':
+      logType.value = 2
+      getLogList()
+      break;
+    case 'look':
+      logType.value = 3
+      getLogList()
+      break;
+  }
+}
+//今日统计列表
+async function getDayTjList() {
+  let res = await getUserLoginStats({ pageNoL: 1, pageSize: 100, ...searchData })
+  console.log(res,'今日统计---')
+  dayList.value = res.records || []
+}
+
+onMounted(() => {
+  getUserList()
+  getLogList()
+  getDayTjList()
+});
+
+</script>
+
+<style lang="less" scoped>
+@import '/@/design/theme.less';
+
+@{theme-deepblue} {
+  .system-manger {}
+}
+
+.system-manger {
+  --image-box1-bg: url('@/assets/images/home-container/configurable/hsq/3-2.png');
+  --image-box1-bg1: url('@/assets/images/home-container/configurable/hsq/5-3.png');
+  --image-box1-bg2: url('@/assets/images/home-container/configurable/hsq/5-4.png');
+  --image-box1-bg3: url('@/assets/images/home-container/configurable/hsq/5-2.png');
+  --image-box1-bg4: url('@/assets/images/home-container/configurable/hsq/5-6.png');
+  --image-box1-bg5: url('@/assets/images/home-container/configurable/hsq/5-5.png');
+  width: 100%;
+  height: calc(100% - 10px);
+  color: @white;
+  position: relative;
+  margin-bottom: 10px;
+  background-color: #09172c;
+
+  .basic-top-box {
+    position: relative;
+    height: calc(100% - 280px);
+    margin-bottom: 10px;
+  }
+
+  .basic-bot-box {
+    display: flex;
+    justify-content: space-between;
+    height: 270px;
+  }
+
+  .system-box-t {
+    &:nth-child(1) {
+      position: absolute;
+      top: 63px;
+      left: 0;
+      width: calc(100% - 440px);
+      height: calc(100% - 63px);
+      background: var(--image-box1-bg) no-repeat;
+      background-size: 100% 100%;
+    }
+
+    &:nth-child(2) {
+      position: absolute;
+      top: 0px;
+      right: 0;
+      width: 430px;
+      height: 100%;
+      margin-left: 10px;
+      background: var(--image-box1-bg1) no-repeat;
+      background-size: 100% 100%;
+    }
+  }
+
+  .system-box-b {
+    &:nth-child(1) {
+      width: 770px;
+      height: 100%;
+      margin-right: 10px;
+      background: var(--image-box1-bg3) no-repeat;
+      background-size: 100% 100%;
+    }
+
+    &:nth-child(2) {
+      width: calc(100% - 1220px);
+      height: 100%;
+      background: var(--image-box1-bg3) no-repeat;
+      background-size: 100% 100%;
+    }
+
+    &:nth-child(3) {
+      width: 430px;
+      height: 100%;
+      margin-left: 10px;
+      background: var(--image-box1-bg2) no-repeat;
+      background-size: 100% 100%;
+    }
+  }
+}
+
+
+
+:deep(.loading-box) {
+  position: unset;
+}
+</style>

+ 118 - 0
src/views/vent/monitorManager/hsqHome/warnMonitor.vue

@@ -0,0 +1,118 @@
+<template>
+  <div class="warn-monitor">
+    <div class="warn-top-box">
+      <div class="baisc-box">
+        <WarnLeftTop></WarnLeftTop>
+      </div>
+      <div class="baisc-box">
+        <WarnCenTop></WarnCenTop>
+      </div>
+      <div class="baisc-box">
+        <WarnRightTop></WarnRightTop>
+      </div>
+    </div>
+    <div class="warn-bot-box">
+      <WarnBottom></WarnBottom>
+    </div>
+  </div>
+</template>
+<script lang="ts" setup>
+import { onMounted, onUnmounted, ref, computed, nextTick, onBeforeMount, watch } from 'vue';
+import WarnLeftTop from './components/WarnLeftTop.vue';
+import WarnCenTop from './components/WarnCenTop.vue'
+import WarnRightTop from './components/WarnRightTop.vue'
+import WarnBottom from './components/WarnBottom.vue'
+
+
+// https获取监测数据
+let timer: null | NodeJS.Timeout = null;
+// function getMonitor() {
+//   timer = setTimeout(async () => {
+//     getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
+//     if (timer) {
+//       timer = null;
+//     }
+//     getMonitor();
+//   }, 10000);
+// }
+
+onMounted(() => {
+  // fetchConfigs('gas_injection').then(() => {
+  //   configs.value = testConfigWarn;
+  //   getSystemApi1({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
+  // });
+  // getMonitor();
+});
+
+onUnmounted(() => {
+  // clearInterval(interval);
+});
+</script>
+
+<style lang="less" scoped>
+@import '/@/design/theme.less';
+
+@{theme-deepblue} {
+  .warn-monitor {}
+}
+
+.warn-monitor {
+  --image-box1-bg: url('@/assets/images/home-container/configurable/hsq/2-4.png');
+  --image-box1-bg1: url('@/assets/images/home-container/configurable/hsq/2-10.png');
+  --image-box1-bg2: url('@/assets/images/home-container/configurable/hsq/3-3.png');
+  width: 100%;
+  height: calc(100% - 10px);
+  color: @white;
+  position: relative;
+  background-color: #09172c;
+  margin-bottom: 10px;
+}
+
+.warn-top-box {
+  position: relative;
+  display: flex;
+  justify-content: space-between;
+  height: calc(100% - 200px);
+  margin-bottom: 10px;
+}
+
+.warn-bot-box {
+  width: 100%;
+  height: 190px;
+  background: var(--image-box1-bg2) no-repeat;
+  background-size: 100% 100%;
+}
+
+.baisc-box {
+  &:nth-child(1) {
+    width: 430px;
+    height: 100%;
+    background: var(--image-box1-bg) no-repeat;
+    background-size: 100% 100%;
+    margin-right: 10px;
+  }
+
+  &:nth-child(2) {
+    position: absolute;
+    top: 63px;
+    left: 50%;
+    transform: translate(-50%, 0);
+    width: calc(100% - 880px);
+    height: calc(100% - 63px);
+    background: var(--image-box1-bg1) no-repeat;
+    background-size: 100% 100%;
+  }
+
+  &:nth-child(3) {
+    width: 430px;
+    height: 100%;
+    background: var(--image-box1-bg) no-repeat;
+    background-size: 100% 100%;
+    margin-left: 10px;
+  }
+}
+
+:deep(.loading-box) {
+  position: unset;
+}
+</style>

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor