浏览代码

1. 公司端首页样式优化
2. 设备预警功能公司端排除
3. 添加带有风窗的风门设备

hongrunxia 3 月之前
父节点
当前提交
eb492e75c6

+ 1 - 1
.env.development

@@ -29,5 +29,5 @@ VITE_GLOB_API_URL_PREFIX=
 #微前端qiankun应用,命名必须以VITE_APP_SUB_开头,jeecg-app-1为子应用的项目名称,也是子应用的路由父路径
 #VITE_APP_SUB_APP = [["micro-need-air", "//10.10.150.72:8099/"], ["micro-vent-3dModal", "//localhost:8091/"], ["micro-fire-front", "//localhost:8090/"]]
 VITE_APP_SUB_APP = [["micro-vent-3dModal", "//192.168.183.154:8091/", "micro-vent-3dModal"], ["micro-need-air", "//localhost:8099/", "micro-need-air"], ["micro-fire-front", "//localhost:8097/", "fire-Micro"]]
-# VITE_APP_SUB_APP = [["micro-vent-3dModal", "//localhost:8091/", "micro-vent-3dModal"], ["micro-need-air", "//localhost:8099/", "micro-need-air"], ["micro-fire-front", "//localhost:8097/", "fire-Micro"]]
+# VITE_APP_SUB_APP = [["micro-vent-3dModal", "//182.92.126.35:8091/", "micro-vent-3dModal"], ["micro-need-air", "//182.92.126.35:8099/", "micro-need-air"], ["micro-fire-front", "//182.92.126.35:8097/", "fire-Micro"]]
 # VITE_APP_SUB_APP = [["micro-vent-3dModal", "//localhost:8091/"], ["micro-need-air", "//localhost:8099/"], ["micro-fire-front", "//localhost:8090/"]]

+ 1 - 1
src/hooks/system/useCamera.ts

@@ -107,7 +107,7 @@ export function useCamera() {
       const playCamrea = () => {
         if (cameraAddrs.length > 0) {
           const promiseList: Promise<any>[] = [];
-          debugger;
+          // debugger;
           cameraAddrs.forEach(async (cameraUrl: { name: string; addr: string; cameraRate: number; devicekind: string }, index) => {
             const promise = new Promise(async (childResolve) => {
               let cameraNameDom: null | HTMLElement = null;

+ 1 - 1
src/layouts/default/header/components/VoiceBroadcast.vue

@@ -62,7 +62,7 @@
     components: { Icon, Tooltip, Badge, SoundOutlined, BellOutlined, WarningOutlined },
 
     setup() {
-      debugger;
+      // debugger;
       let speakVoice;
       const userStore = useUserStore();
       const glob = useGlobSetting();

+ 1 - 1
src/layouts/default/header/index.vue

@@ -56,7 +56,7 @@
   <div :class="`${prefixCls}-action`" style="position: fixed; top: 30px; right: 20px; z-index: 999999">
     <div class="right-position">
       <!-- 公司端不显示语音播报功能 -->
-      <VoiceBroadcast v-if="sysOrgCode == 'sdmtjtgsd'" />
+      <VoiceBroadcast v-if="sysOrgCode != 'sdmtjtgsd'" />
       <UserDropDown v-if="showUserDropdown" :theme="getHeaderTheme" />
       <LoginSelect ref="loginSelectRef" @success="loginSelectOk" />
     </div>

+ 1 - 1
src/qiankun/index.ts

@@ -32,7 +32,7 @@ const mountMicroApp = (path, toPath?) => {
       activeApps[app['activeRule']] = null;
       delete activeApps[app['activeRule']];
     }
-    debugger;
+    // debugger;
     const instance = activeApps[app['activeRule']];
     console.log('子应用实例--------------->', instance);
     if (instance) {

+ 1 - 1
src/router/guard/index.ts

@@ -37,7 +37,7 @@ RootRoute.redirect = glob.homePath || PageEnum.BASE_HOME;
  */
 function createPageGuard(router: Router) {
   const loadedPageMap = new Map<string, boolean>();
-
+  // debugger;
   router.beforeEach(async (to, from) => {
     if (from.path.startsWith('/micro-') && !to.path.startsWith('/micro-')) {
       unmountMicroApps(['/' + from.path.split('/')[1]]);

+ 1 - 0
src/router/guard/paramMenuGuard.ts

@@ -8,6 +8,7 @@ import { usePermissionStoreWithOut } from '/@/store/modules/permission';
 
 export function createParamMenuGuard(router: Router) {
   const permissionStore = usePermissionStoreWithOut();
+  // debugger;
   router.beforeEach(async (to, _, next) => {
     // filter no name route
     if (!to.name) {

+ 1 - 0
src/router/guard/permissionGuard.ts

@@ -39,6 +39,7 @@ const whitePathList: PageEnum[] = [LOGIN_PATH, OAUTH2_LOGIN_PAGE_PATH, SYS_FILES
 const glob = useGlobSetting();
 
 export function createPermissionGuard(router: Router) {
+  // debugger;
   const userStore = useUserStoreWithOut();
   const permissionStore = usePermissionStoreWithOut();
   const { doAutoLogin, doTokenLogin, validateRoute, tokenValidateRoute } = useAutoLogin();

+ 255 - 250
src/views/vent/home/clique/index.vue

@@ -51,304 +51,309 @@
   </div>
 </template>
 <script lang="ts" setup>
-  import { ref, reactive, nextTick, onMounted, onUnmounted } from 'vue';
-  import mineWind from './components/mine-wind.vue';
-  import riskWarn from './components/risk-warn.vue';
-  // import fileShare from './components/file-share.vue';
-  import BillboardEntry from './components/billboard-entry.vue';
-  import windRoad from './components/wind-road-middle.vue';
-  import sceneKey from './components/scene-key.vue';
-  import iconLight from './components/icon-light.vue';
-  import dialogModal from './components/dialog-modal.vue';
-  import { getHomeData, getList } from './clique.api';
-  const dialogModalRef = ref();
-  let mainTitle = ref('国能神东一通三防管控平台');
-  // let mainTitle = ref('国家能源神东煤炭集团');
-  // let mainTitle = ref('XXXX集团');
-  const isShowDialog = ref(false);
-  const dialogTitle = ref('');
+import { ref, reactive, nextTick, onMounted, onUnmounted } from 'vue';
+import mineWind from './components/mine-wind.vue';
+import riskWarn from './components/risk-warn.vue';
+// import fileShare from './components/file-share.vue';
+import BillboardEntry from './components/billboard-entry.vue';
+import windRoad from './components/wind-road-middle.vue';
+import sceneKey from './components/scene-key.vue';
+import iconLight from './components/icon-light.vue';
+import dialogModal from './components/dialog-modal.vue';
+import { getHomeData, getList } from './clique.api';
+const dialogModalRef = ref();
+let mainTitle = ref('国能神东一通三防管控平台');
+// let mainTitle = ref('国家能源神东煤炭集团');
+// let mainTitle = ref('XXXX集团');
+const isShowDialog = ref(false);
+const dialogTitle = ref('');
 
-  //矿井通风状态数据
-  let airKjStatus = reactive<any[]>([]);
+//矿井通风状态数据
+let airKjStatus = reactive<any[]>([]);
 
-  //风险分析与预警数据
-  let earlyWarn = ref<any[]>([]);
+//风险分析与预警数据
+let earlyWarn = ref<any[]>([]);
 
-  //通防综合监测数据
-  let compositeData = ref<any[]>([]);
+//通防综合监测数据
+let compositeData = ref<any[]>([]);
 
-  //地图区域详情数据
-  let centerDetail = ref({});
+//地图区域详情数据
+let centerDetail = ref({});
 
-  //文件共享中心数据
-  let shareData = reactive<any[]>([]);
+//文件共享中心数据
+let shareData = reactive<any[]>([]);
 
-  let warningList = ref([]);
+let warningList = ref([]);
 
-  //通风巷道长度统计数据
-  let roadData = reactive({
-    totallength: 0,
-    data: [],
-    data1: [],
-  });
+//通风巷道长度统计数据
+let roadData = reactive({
+  totallength: 0,
+  data: [],
+  data1: [],
+});
 
-  let orgcode = ref('');
+let orgcode = ref('');
 
-  // https获取监测数据
-  let timer: null | NodeJS.Timeout = null;
-  function getMonitor() {
-    timer = setTimeout(async () => {
-      await getHomeDataList();
-      await getLists();
-      if (timer) {
-        timer = null;
-      }
-      getMonitor();
-    }, 10000);
-  }
+// https获取监测数据
+let timer: null | NodeJS.Timeout = null;
+function getMonitor() {
+  timer = setTimeout(async () => {
+    await getHomeDataList();
+    await getLists();
+    if (timer) {
+      timer = null;
+    }
+    getMonitor();
+  }, 10000);
+}
+
+//获取公司端首页数据
+async function getHomeDataList() {
+  let res = await getHomeData();
+  console.log(res, '公司端首页数据----------');
+  if (res && res.length > 0) {
+    earlyWarn.value = res;
+    roadData.totallength = res.reduce((len, r) => {
+      return r.sys_data ? len + r.sys_data.totallength : len;
+    }, 0);
+    roadData.data.length = 0;
+    roadData.data1.length = 0;
+    airKjStatus.length = 0;
+    const warningListTemp: { orgcode: string; isWarning: boolean }[] = [];
+    res.forEach((el) => {
+      airKjStatus.push({
+        deviceName: el.sys_data.deviceName,
+        jf: el.sys_data.zongjinfeng,
+        xf: el.sys_data.xufengliang,
+        hf: el.sys_data.zonghuifeng,
+        isWarning: el.sys_data.zongjinfeng < el.sys_data.xufengliang,
+      });
 
-  //获取公司端首页数据
-  async function getHomeDataList() {
-    let res = await getHomeData();
-    console.log(res, '公司端首页数据----------');
-    if (res && res.length > 0) {
-      earlyWarn.value = res;
-      roadData.totallength = res.reduce((len, r) => {
-        return r.sys_data ? len + r.sys_data.totallength : len;
-      }, 0);
-      roadData.data.length = 0;
-      roadData.data1.length = 0;
-      airKjStatus.length = 0;
-      const warningListTemp: { orgcode: string; isWarning: boolean }[] = [];
-      res.forEach((el) => {
-        airKjStatus.push({
-          deviceName: el.sys_data.deviceName,
-          jf: el.sys_data.zongjinfeng,
-          xf: el.sys_data.xufengliang,
-          hf: el.sys_data.zonghuifeng,
-          isWarning: el.sys_data.zongjinfeng < el.sys_data.xufengliang,
-        });
+      //临时添加,前端判断,后期后端加上预警再处理
+      if (el.sys_data.zongjinfeng < el.sys_data.xufengliang) {
+        warningListTemp.push({ orgcode: el.orgcode, isWarning: true });
+      } else {
+        warningListTemp.push({ orgcode: el.orgcode, isWarning: false });
+      }
 
-        //临时添加,前端判断,后期后端加上预警再处理
-        if (el.sys_data.zongjinfeng < el.sys_data.xufengliang) {
-          warningListTemp.push({ orgcode: el.orgcode, isWarning: true });
-        } else {
-          warningListTemp.push({ orgcode: el.orgcode, isWarning: false });
-        }
+      roadData.data.push(el.sys_data.flength);
+      // roadData.data.push(el.sys_data.totallength);
+      roadData.data1.push(el.sys_data.deviceName);
+    });
+    warningList.value = warningListTemp;
+    compositeData.value = res.reduce((arr, e) => {
+      return [...arr, ...e.majorpath_data];
+    }, []);
 
-        roadData.data.push(el.sys_data.flength);
-        // roadData.data.push(el.sys_data.totallength);
-        roadData.data1.push(el.sys_data.deviceName);
-      });
-      warningList.value = warningListTemp;
-      compositeData.value = res.reduce((arr, e) => {
-        return [...arr, ...e.majorpath_data];
-      }, []);
+    let centerDetail = res.filter((v) => v.orgcode == orgcode.value)[0];
+    if (centerDetail.majorpath_data.length != 0 || JSON.stringify(centerDetail.sys_data) != '{}') {
       centerDetail.value = res.filter((v) => v.orgcode == orgcode.value)[0];
     }
   }
-  //获取文件共享中心数据
-  async function getLists() {
-    let res = await getList();
-    if (res.length != 0) {
-      shareData.length = 0;
-      res.forEach((el) => {
-        shareData.push({ title: el.sysOrgName, value: el.tolalNum, value1: el.approveNum });
-      });
-    }
-  }
-
-  function showDetail(code, label, leftV, topV) {
-    if (code) {
-      orgcode.value = code;
-      dialogTitle.value = label;
-      isShowDialog.value = true;
-      getHomeDataList();
-    }
-    nextTick(() => {
-      const tooltipDom = document.getElementById('detailModal') as HTMLElement;
-      tooltipDom.style.left = leftV;
-      tooltipDom.style.top = topV;
+}
+//获取文件共享中心数据
+async function getLists() {
+  let res = await getList();
+  if (res.length != 0) {
+    shareData.length = 0;
+    res.forEach((el) => {
+      shareData.push({ title: el.sysOrgName, value: el.tolalNum, value1: el.approveNum });
     });
   }
-  function closeDialog() {
-    isShowDialog.value = false;
-  }
+}
 
-  onMounted(() => {
+function showDetail(code, label, leftV, topV) {
+  if (code) {
+    orgcode.value = code;
+    dialogTitle.value = label;
+    isShowDialog.value = true;
     getHomeDataList();
-    getLists();
-    getMonitor();
-  });
-  onUnmounted(() => {
-    if (timer) {
-      clearTimeout(timer);
-      timer = null;
-    }
+  }
+  nextTick(() => {
+    const tooltipDom = document.getElementById('detailModal') as HTMLElement;
+    tooltipDom.style.left = leftV;
+    tooltipDom.style.top = topV;
   });
+}
+function closeDialog() {
+  isShowDialog.value = false;
+}
+
+onMounted(() => {
+  getHomeDataList();
+  getLists();
+  getMonitor();
+});
+onUnmounted(() => {
+  if (timer) {
+    clearTimeout(timer);
+    timer = null;
+  }
+});
 </script>
 <style lang="less" scoped>
-  @font-face {
-    font-family: 'douyuFont';
-    src: url('../../../../assets/font/douyuFont.otf');
+@font-face {
+  font-family: 'douyuFont';
+  src: url('../../../../assets/font/douyuFont.otf');
+}
+
+// @font-face {
+//   font-family: 'yjsz';
+//   src: url('../../../../assets/font/yjsz.TTF');
+// }
+.company-home {
+  width: 100%;
+  height: 100%;
+  position: relative;
+  background: url('../../../../assets/images/company/home-pageBg.png') no-repeat center;
+  background-size: 100% 100%;
+
+  .top-bg {
+    width: 100%;
+    height: 97px;
+    background: url('../../../../assets/images/company/top-bg.png') no-repeat center;
+    position: absolute;
+    z-index: 1;
+
+    .main-title {
+      height: 96px;
+      color: #fff;
+      font-family: 'douyuFont';
+      font-size: 20px;
+      letter-spacing: 2px;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+    }
   }
 
-  // @font-face {
-  //   font-family: 'yjsz';
-  //   src: url('../../../../assets/font/yjsz.TTF');
-  // }
-  .company-home {
+  .company-content {
+    position: absolute;
+    left: 0;
+    top: 0;
     width: 100%;
     height: 100%;
-    position: relative;
-    background: url('../../../../assets/images/company/home-pageBg.png') no-repeat center;
+    background: url('../../../../assets/images/company/content-bg.png') no-repeat;
     background-size: 100% 100%;
 
-    .top-bg {
-      width: 100%;
-      height: 97px;
-      background: url('../../../../assets/images/company/top-bg.png') no-repeat center;
+    .area-content {
       position: absolute;
-      z-index: 1;
-
-      .main-title {
-        height: 96px;
-        color: #fff;
-        font-size: 28px;
-        background-image: linear-gradient(#ffffff 50%, #60f4ff);
-        -webkit-background-clip: text;
-        color: transparent;
-        font-weight: 600;
-        letter-spacing: 1px;
-        display: flex;
-        justify-content: center;
-        align-items: center;
-      }
-    }
-
-    .company-content {
-      position: absolute;
-      left: 0;
-      top: 0;
+      top: 45px;
       width: 100%;
-      height: 100%;
-      background: url('../../../../assets/images/company/content-bg.png') no-repeat;
-      background-size: 100% 100%;
+      height: calc(100% - 45px);
+      padding: 0px 20px 20px 20px;
+      box-sizing: border-box;
+      display: flex;
+      justify-content: space-between;
 
-      .area-content {
-        position: absolute;
-        top: 45px;
-        width: 100%;
-        height: calc(100% - 45px);
-        padding: 0px 20px 20px 20px;
-        box-sizing: border-box;
+      .left-area {
+        width: 23%;
+        height: 100%;
+        margin-right: 15px;
         display: flex;
+        flex-direction: column;
         justify-content: space-between;
+        align-items: center;
+        position: relative;
+        z-index: 1;
 
-        .left-area {
-          width: 23%;
-          height: 100%;
-          margin-right: 15px;
-          display: flex;
-          flex-direction: column;
-          justify-content: space-between;
-          align-items: center;
-          position: relative;
-          z-index: 1;
-          .area-card {
-            width: 100%;
-            height: calc(60% - 15px);
-            margin-bottom: 15px;
-            background: url('../../../../assets/images/company/area-card.png') no-repeat;
-            background-size: 100% 100%;
-          }
+        .area-card {
+          width: 100%;
+          height: calc(60% - 15px);
+          margin-bottom: 15px;
+          background: url('../../../../assets/images/company/area-card.png') no-repeat;
+          background-size: 100% 100%;
+        }
 
-          .area-card1 {
-            width: 100%;
-            height: 40%;
-            background: url('../../../../assets/images/company/area-card1.png') no-repeat;
-            background-size: 100% 100%;
-          }
+        .area-card1 {
+          width: 100%;
+          height: 40%;
+          background: url('../../../../assets/images/company/area-card1.png') no-repeat;
+          background-size: 100% 100%;
         }
+      }
+
+      .center-area {
+        width: 1000px;
+        height: 100%;
+        position: relative;
+        z-index: 0;
 
-        .center-area {
-          width: 1000px;
-          height: 100%;
-          position: relative;
+        .center-bg {
+          position: absolute;
+          bottom: 240px;
+          left: 50%;
+          transform: translate(-50%, 0);
+          width: 1128px;
+          height: 630px;
+          background: url('../../../../assets/images/company/home-dz.png') no-repeat center;
+          background-size: contain;
+          background-position: 50% 50px;
           z-index: 0;
-          .center-bg {
-            position: absolute;
-            bottom: 240px;
-            left: 50%;
-            transform: translate(-50%, 0);
-            width: 1128px;
-            height: 630px;
-            background: url('../../../../assets/images/company/home-dz.png') no-repeat center;
+
+          .bg-map {
+            width: 1086px;
+            height: 610px;
+            left: 30px;
+            top: 60px;
+            background: url('../../../../assets/images/company/home-map.png') no-repeat center;
             background-size: contain;
-            background-position: 50% 50px;
+            // background-position: 0px 70px;
+            position: relative;
             z-index: 0;
-            .bg-map {
-              width: 1086px;
-              height: 610px;
-              left: 30px;
-              top: 60px;
-              background: url('../../../../assets/images/company/home-map.png') no-repeat center;
-              background-size: contain;
-              // background-position: 0px 70px;
-              position: relative;
-              z-index: 0;
-            }
           }
+        }
 
-          .area-card2 {
-            position: absolute;
-            right: 0;
-            top: 62px;
-            width: 568px;
-            height: 437px;
-            background: url('../../../../assets/images/company/area-card2.png') no-repeat;
-            background-size: 100% 100%;
-            // pointer-events: auto;
-          }
+        .area-card2 {
+          position: absolute;
+          right: 0;
+          top: 62px;
+          width: 568px;
+          height: 437px;
+          background: url('../../../../assets/images/company/area-card2.png') no-repeat;
+          background-size: 100% 100%;
+          // pointer-events: auto;
+        }
 
-          .area-card3 {
-            position: absolute;
-            right: 0;
-            bottom: 0px;
-            width: 100%;
-            height: 269px;
-            background: url('../../../../assets/images/company/area-card3.png') no-repeat;
-            background-size: 100% 100%;
-          }
+        .area-card3 {
+          position: absolute;
+          right: 0;
+          bottom: 0px;
+          width: 100%;
+          height: 269px;
+          background: url('../../../../assets/images/company/area-card3.png') no-repeat;
+          background-size: 100% 100%;
         }
+      }
 
-        .right-area {
-          width: 23%;
-          height: 100%;
-          margin-left: 15px;
-          display: flex;
-          flex-direction: column;
-          justify-content: space-between;
-          align-items: center;
-          position: relative;
-          z-index: 1;
-          // pointer-events: auto;
-          .area-card {
-            width: 100%;
-            height: calc(60% - 15px);
-            margin-bottom: 15px;
-            background: url('../../../../assets/images/company/area-card.png') no-repeat;
-            background-size: 100% 100%;
-          }
+      .right-area {
+        width: 23%;
+        height: 100%;
+        margin-left: 15px;
+        display: flex;
+        flex-direction: column;
+        justify-content: space-between;
+        align-items: center;
+        position: relative;
+        z-index: 1;
 
-          .area-card1 {
-            width: 100%;
-            height: 40%;
-            background: url('../../../../assets/images/company/area-card1.png') no-repeat;
-            background-size: 100% 100%;
-          }
+        // pointer-events: auto;
+        .area-card {
+          width: 100%;
+          height: calc(60% - 15px);
+          margin-bottom: 15px;
+          background: url('../../../../assets/images/company/area-card.png') no-repeat;
+          background-size: 100% 100%;
+        }
+
+        .area-card1 {
+          width: 100%;
+          height: 40%;
+          background: url('../../../../assets/images/company/area-card1.png') no-repeat;
+          background-size: 100% 100%;
         }
       }
     }
   }
+}
 </style>

+ 460 - 454
src/views/vent/home/colliery/index.vue

@@ -7,8 +7,9 @@
           <span>{{ nowTimeWeek }}</span>
           <span>{{ nowTime }}</span>
         </div>
-        <div class="main-title"><img v-if="hasPermission('home:logo')" class="logo"
-            :src="`${baseUrl}/sys/common/static/${logoUrl}`" />{{ title }}</div>
+        <div class="main-title"
+          ><img v-if="hasPermission('home:logo')" class="logo" :src="`${baseUrl}/sys/common/static/${logoUrl}`" />{{ title }}</div
+        >
       </div>
       <div class="home-contents">
         <div class="left-content">
@@ -46,8 +47,10 @@
               <!-- <div class="btn-icon" @click="goModalDetail"></div> -->
               <!-- 展会不显示按钮 -->
               <div v-if="sysOrgCode !== 'mkyzhpt'" class="btn-icon" @click="goModalDetail"></div>
-              <VentModal ref="centerModalRef"
-                style="width: calc(100% - 30px); height: calc(100% - 30px); position: absolute; background-color: #fff" />
+              <VentModal
+                ref="centerModalRef"
+                style="width: calc(100% - 30px); height: calc(100% - 30px); position: absolute; background-color: #fff"
+              />
             </div>
           </div>
           <!-- 风量监测 -->
@@ -72,520 +75,523 @@
       </div>
     </div>
   </div>
-  <Network ref="NetworkRef" v-if="pageType == 'timesolution'" :pageResult="pageResult" @changePageType="changePageType"
-    style="position: absolute" />
-  <VentModal v-if="pageType == 'model3D' || pageType == 'timesolution'" ref="fullModalRef"
-    style="width: calc(100% - 30px); height: calc(100% - 30px); position: absolute" />
+  <Network ref="NetworkRef" v-if="pageType == 'timesolution'" :pageResult="pageResult" @changePageType="changePageType" style="position: absolute" />
+  <VentModal
+    v-if="pageType == 'model3D' || pageType == 'timesolution'"
+    ref="fullModalRef"
+    style="width: calc(100% - 30px); height: calc(100% - 30px); position: absolute"
+  />
 </template>
 <script lang="ts" setup>
-import { reactive, onMounted, ref, nextTick, computed, unref, inject, onBeforeUnmount, onUnmounted } from 'vue';
-import fanMonitor from './components/fan-monitor.vue';
-import mainMonitor from './components/main-monitor.vue';
-import windDevice from './components/wind-device.vue';
-import windMonitor from './components/wind-monitor.vue';
-import windLine from './components/wind-line.vue';
-import workMonitor from './components/work-monitor.vue';
-import deviceWarn from './components/device-warn.vue';
-import { useGlobSetting } from '/@/hooks/setting';
-import { list } from './clique.api';
-import Network from '../../monitorManager/deviceMonitor/components/network/index.vue';
-import { useRouter } from 'vue-router';
-import { router } from '/@/router';
-// import { Modal } from 'ant-design-vue';
-// import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
-import dayjs from 'dayjs';
-import { getActions } from '/@/qiankun/state';
-import { unmountMicroApps, mountMicroApp } from '/@/qiankun';
-import { getDate } from './clique.data';
-import VentModal from '/@/components/vent/micro/ventModal.vue';
-import { usePermission } from '/@/hooks/web/usePermission';
-
-const { currentRoute } = useRouter();
-const { hasPermission } = usePermission();
-
-const { title, logoUrl, sysOrgCode } = useGlobSetting();
-const baseUrl = VUE_APP_URL.baseUrl;
-const actions = getActions();
-let timer: NodeJS.Timeout | null = null;
-let fanLocalList = reactive<any[]>([]); //局部风机数据
-let mainList = ref<any[]>([]); //主通风机数据
-let centerList = reactive<any[]>([]); //中间区域数据
-let flList = ref<any[]>([]); //风量监测数据
-let lineList = ref<any>([]); //关键路线数据
-let workList = ref<any>([]); //工作面数据
-let warnData = ref<any>([]); //预警数据
-let deviceData = ref<any>({}); //设备监测数据
-let navList = reactive([
-  { name: '总回风量(m³/min)', isShow: true, valList: [] },
-  { name: '总进风量(m³/min)', isShow: true, valList: [] },
-  { name: '计划风量(m³/min)', isShow: true, valList: [] },
-  // { name: '有效风量(m³/min)', isShow: true, valList: [] },
-  // { name: '等积孔(m²)', isShow: true, valList: [] },
-  // { name: '外部漏风率', isShow: false, val: 0 },
-  { name: '有效风量率', isShow: false, val: '0%' },
-]);
-let nowTimeYear = ref('');
-let nowTimeWeek = ref('');
-let nowTime = ref('');
-
-const centerModalRef = ref();
-const fullModalRef = ref();
-
-const globSetting = useGlobSetting();
-const pageType = ref('');
-let router = useRouter();
-const pageResult = ref({});
-
-function goDetail(deviceType) {
-  //lxh
-  // pageType.value = deviceType;
-  if (deviceType == 'fanMain') {
-    router.push('/monitorChannel/monitor-fanmain');
-  } else if (deviceType == 'fanLocal') {
-    if (sysOrgCode !== 'ymdnymdn') {
-      router.push('/monitorChannel/monitor-fanlocal');
-    } else {
-      router.push('/fanlocal-page/home');
+  import { reactive, onMounted, ref, nextTick, computed, unref, inject, onBeforeUnmount, onUnmounted } from 'vue';
+  import fanMonitor from './components/fan-monitor.vue';
+  import mainMonitor from './components/main-monitor.vue';
+  import windDevice from './components/wind-device.vue';
+  import windMonitor from './components/wind-monitor.vue';
+  import windLine from './components/wind-line.vue';
+  import workMonitor from './components/work-monitor.vue';
+  import deviceWarn from './components/device-warn.vue';
+  import { useGlobSetting } from '/@/hooks/setting';
+  import { list } from './clique.api';
+  import Network from '../../monitorManager/deviceMonitor/components/network/index.vue';
+  import { useRouter } from 'vue-router';
+  import { router } from '/@/router';
+  // import { Modal } from 'ant-design-vue';
+  // import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
+  import dayjs from 'dayjs';
+  import { getActions } from '/@/qiankun/state';
+  import { unmountMicroApps, mountMicroApp } from '/@/qiankun';
+  import { getDate } from './clique.data';
+  import VentModal from '/@/components/vent/micro/ventModal.vue';
+  import { usePermission } from '/@/hooks/web/usePermission';
+
+  const { currentRoute } = useRouter();
+  const { hasPermission } = usePermission();
+
+  const { title, logoUrl, sysOrgCode } = useGlobSetting();
+  const baseUrl = VUE_APP_URL.baseUrl;
+  const actions = getActions();
+  let timer: NodeJS.Timeout | null = null;
+  let fanLocalList = reactive<any[]>([]); //局部风机数据
+  let mainList = ref<any[]>([]); //主通风机数据
+  let centerList = reactive<any[]>([]); //中间区域数据
+  let flList = ref<any[]>([]); //风量监测数据
+  let lineList = ref<any>([]); //关键路线数据
+  let workList = ref<any>([]); //工作面数据
+  let warnData = ref<any>([]); //预警数据
+  let deviceData = ref<any>({}); //设备监测数据
+  let navList = reactive([
+    { name: '总回风量(m³/min)', isShow: true, valList: [] },
+    { name: '总进风量(m³/min)', isShow: true, valList: [] },
+    { name: '计划风量(m³/min)', isShow: true, valList: [] },
+    // { name: '有效风量(m³/min)', isShow: true, valList: [] },
+    // { name: '等积孔(m²)', isShow: true, valList: [] },
+    // { name: '外部漏风率', isShow: false, val: 0 },
+    { name: '有效风量率', isShow: false, val: '0%' },
+  ]);
+  let nowTimeYear = ref('');
+  let nowTimeWeek = ref('');
+  let nowTime = ref('');
+
+  const centerModalRef = ref();
+  const fullModalRef = ref();
+
+  const globSetting = useGlobSetting();
+  const pageType = ref('');
+  let router = useRouter();
+  const pageResult = ref({});
+
+  function goDetail(deviceType) {
+    //lxh
+    // pageType.value = deviceType;
+    if (deviceType == 'fanMain') {
+      router.push('/monitorChannel/monitor-fanmain');
+    } else if (deviceType == 'fanLocal') {
+      if (sysOrgCode !== 'ymdnymdn') {
+        router.push('/monitorChannel/monitor-fanlocal');
+      } else {
+        router.push('/fanlocal-page/home');
+      }
+    } else if (deviceType == 'windrect') {
+      router.push('/monitorChannel/monitor-windrect');
+    } else if (deviceType == 'warning') {
+      router.push('/monitorChannel/monitor-alarm-home');
     }
-  } else if (deviceType == 'windrect') {
-    router.push('/monitorChannel/monitor-windrect');
-  } else if (deviceType == 'warning') {
-    router.push('/monitorChannel/monitor-alarm-home');
   }
-}
-function goHome() {
-  pageType.value = 'home';
-}
-
-function getList() {
-  list({}).then((res) => {
-    console.log(res, 'res-----------');
-    fanLocalList.length = 0;
-    fanLocalList.push(res.fanlocal);
-    mainList.value = res.fanmain;
-    centerList = res.midinfo[0].sysdata;
-    // 窝兔沟模拟风量
-    // centerList = {
-    //   zongfengliang: "8010", // 总风量
-    //   xufengliang: '7232', // 有效风量
-    //   zonghuifeng: '8188' // 总会风
-    // }
-    // 总回
-    navList[0].valList =
-      centerList && centerList.zonghuifeng
-        ? centerList.zonghuifeng.split('').map((el) => {
-          return { val: el };
-        })
-        : [];
-    // 总进
-    navList[1].valList =
-      centerList && centerList.zongjinfeng
-        ? centerList.zongjinfeng
-          .toString()
-          .split('')
-          .map((el) => {
-            return { val: el };
-          })
-        : [];
-    // 计划风量
-    navList[2].valList =
-      centerList && centerList.xufengliang
-        ? centerList.xufengliang
-          .toString()
-          .split('')
-          .map((el) => {
-            return { val: el };
-          })
-        : [];
-    // if (centerList && centerList.zongfengliang && centerList.zongjinfeng) {
-    //   // 外部漏风率  (zongfengliang-zongjinfeng)/zongfengliang
-    //   navList[3].val =
-    //     (((parseFloat(centerList.zongfengliang) - parseFloat(centerList.zongjinfeng)) / parseFloat(centerList.zongfengliang)) * 100).toFixed(2) +
-    //     '%';
-    // } else {
-    //   navList[3].val = '0%';
-    // }
-
-    // if (res.midinfo[0] && res.midinfo[0].sysinfo) {
-    //   navList[4].val = (res.midinfo[0].sysinfo.useM3Perent ? res.midinfo[0].sysinfo.useM3Perent : '0') + '%';
-    // }
-    navList[3].val = `${res.midinfo[0].sysinfo.useM3Perent}%` || '--'
-
-    flList.value = res.windrect || res.sys_wind;
-
-    if (res.sys_majorpath.length != 0) {
-      lineList.value = res.sys_majorpath;
-    } else {
-      let paramArr: any = [];
-      // paramArr.push({
-      //   deviceName: '关键路线1',
-      //   deviceType: 'sys_majorpath',
-      //   deviceID: Math.random() * 100,
-      //   majorpath: {
-      //     drag_1: 380,
-      //     drag_2: 167,
-      //     drag_3: 333,
-      //     drag_total: Math.abs(
-      //       Number(
-      //         res.fanmain && res.fanmain[0]
-      //           ? res.fanmain[0].readData.Fan1FanPre ||
-      //               res.fanmain[0].readData.Fan2FanPre ||
-      //               res.fanmain[0].readData.DataPa ||
-      //               680 + (Math.random() * 2 - 1 * 5)
-      //           : 680 + (Math.random() * 2 - 1 * 5)
-      //       )
-      //     ),
-      //     m3_total: Number(
-      //       res.fanmain && res.fanmain[0]
-      //         ? res.fanmain[0].readData.Fan1m3 ||
-      //             res.fanmain[0].readData.Fan2m3 ||
-      //             res.fanmain[0].readData.m3 ||
-      //             8138 + (Math.random() * 2 - 1 * 20)
-      //         : 8138 + (Math.random() * 2 - 1 * 20)
-      //     ),
-      //   },
-      // });
-      lineList.value = paramArr;
-    }
+  function goHome() {
+    pageType.value = 'home';
+  }
+
+  function getList() {
+    list({}).then((res) => {
+      console.log(res, 'res-----------');
+      fanLocalList.length = 0;
+      fanLocalList.push(res.fanlocal);
+      mainList.value = res.fanmain;
+      centerList = res.midinfo[0].sysdata;
+      // 窝兔沟模拟风量
+      // centerList = {
+      //   zongfengliang: "8010", // 总风量
+      //   xufengliang: '7232', // 有效风量
+      //   zonghuifeng: '8188' // 总会风
+      // }
+      // 总回
+      navList[0].valList =
+        centerList && centerList.zonghuifeng
+          ? centerList.zonghuifeng.split('').map((el) => {
+              return { val: el };
+            })
+          : [];
+      // 总进
+      navList[1].valList =
+        centerList && centerList.zongjinfeng
+          ? centerList.zongjinfeng
+              .toString()
+              .split('')
+              .map((el) => {
+                return { val: el };
+              })
+          : [];
+      // 计划风量
+      navList[2].valList =
+        centerList && centerList.xufengliang
+          ? centerList.xufengliang
+              .toString()
+              .split('')
+              .map((el) => {
+                return { val: el };
+              })
+          : [];
+      // if (centerList && centerList.zongfengliang && centerList.zongjinfeng) {
+      //   // 外部漏风率  (zongfengliang-zongjinfeng)/zongfengliang
+      //   navList[3].val =
+      //     (((parseFloat(centerList.zongfengliang) - parseFloat(centerList.zongjinfeng)) / parseFloat(centerList.zongfengliang)) * 100).toFixed(2) +
+      //     '%';
+      // } else {
+      //   navList[3].val = '0%';
+      // }
+
+      // if (res.midinfo[0] && res.midinfo[0].sysinfo) {
+      //   navList[4].val = (res.midinfo[0].sysinfo.useM3Perent ? res.midinfo[0].sysinfo.useM3Perent : '0') + '%';
+      // }
+      navList[3].val = `${res.midinfo[0].sysinfo.useM3Perent}%` || '--';
+
+      flList.value = res.windrect || res.sys_wind;
+
+      if (res.sys_majorpath.length != 0) {
+        lineList.value = res.sys_majorpath;
+      } else {
+        let paramArr: any = [];
+        // paramArr.push({
+        //   deviceName: '关键路线1',
+        //   deviceType: 'sys_majorpath',
+        //   deviceID: Math.random() * 100,
+        //   majorpath: {
+        //     drag_1: 380,
+        //     drag_2: 167,
+        //     drag_3: 333,
+        //     drag_total: Math.abs(
+        //       Number(
+        //         res.fanmain && res.fanmain[0]
+        //           ? res.fanmain[0].readData.Fan1FanPre ||
+        //               res.fanmain[0].readData.Fan2FanPre ||
+        //               res.fanmain[0].readData.DataPa ||
+        //               680 + (Math.random() * 2 - 1 * 5)
+        //           : 680 + (Math.random() * 2 - 1 * 5)
+        //       )
+        //     ),
+        //     m3_total: Number(
+        //       res.fanmain && res.fanmain[0]
+        //         ? res.fanmain[0].readData.Fan1m3 ||
+        //             res.fanmain[0].readData.Fan2m3 ||
+        //             res.fanmain[0].readData.m3 ||
+        //             8138 + (Math.random() * 2 - 1 * 20)
+        //         : 8138 + (Math.random() * 2 - 1 * 20)
+        //     ),
+        //   },
+        // });
+        lineList.value = paramArr;
+      }
+
+      if (res.sys_surface_caimei.length != 0) {
+        workList.value = res.sys_surface_caimei;
+      } else {
+        let paramArr: any = [];
+        // paramArr.push({
+        //   deviceName: '工作面',
+        //   deviceType: 'sys_surface_caimei',
+        //   deviceID: '11111',
+        //   history: [],
+        //   jin: 100,
+        //   hui: 200,
+        //   xufengliang: 300,
+        // });
+        workList.value = getDate(paramArr);
+      }
+      warnData.value = res.warn || [];
+      deviceData.value = res.device || {};
+    });
+  }
+
+  //获取当前时间年月日时分秒
+  function getNowTime() {
+    setInterval(() => {
+      nowTimeYear.value = dayjs().format('YYYY/MM/DD');
+      let week = dayjs(new Date().getTime()).day();
+      switch (week) {
+        case 0:
+          nowTimeWeek.value = '星期日';
+          break;
+        case 1:
+          nowTimeWeek.value = '星期一';
+          break;
+        case 2:
+          nowTimeWeek.value = '星期二';
+          break;
+        case 3:
+          nowTimeWeek.value = '星期三';
+          break;
+        case 4:
+          nowTimeWeek.value = '星期四';
+          break;
+        case 5:
+          nowTimeWeek.value = '星期五';
+          break;
+        case 6:
+          nowTimeWeek.value = '星期六';
+          break;
+      }
+      let date = new Date();
+      let hours = date.getHours();
+      let minutes = date.getMinutes();
+      let seconds = date.getSeconds();
+      if (minutes >= 0 && minutes <= 9) {
+        minutes = `0${minutes}`;
+      }
+      if (seconds >= 0 && seconds <= 9) {
+        seconds = `0${seconds}`;
+      }
+      nowTime.value = `${hours}:${minutes}:${seconds}`;
+    }, 1000);
+  }
+
+  function goModalDetail() {
+    router.push('/micro-vent-3dModal/dashboard/analysis?type=model3D');
+  }
+
+  const changePageType = (pageType) => {
+    actions.setGlobalState({ pageObj: { pageType: pageType } });
+  };
 
-    if (res.sys_surface_caimei.length != 0) {
-      workList.value = res.sys_surface_caimei;
+  onMounted(() => {
+    const currentRouteObj = unref(currentRoute);
+    if (currentRouteObj && currentRouteObj['query'] && currentRouteObj['query']['deviceType']) {
+      pageType.value = 'model3D';
     } else {
-      let paramArr: any = [];
-      // paramArr.push({
-      //   deviceName: '工作面',
-      //   deviceType: 'sys_surface_caimei',
-      //   deviceID: '11111',
-      //   history: [],
-      //   jin: 100,
-      //   hui: 200,
-      //   xufengliang: 300,
-      // });
-      workList.value = getDate(paramArr);
+      pageType.value = 'home';
     }
-    warnData.value = res.warn || [];
-    deviceData.value = res.device || {};
-  });
-}
-
-//获取当前时间年月日时分秒
-function getNowTime() {
-  setInterval(() => {
-    nowTimeYear.value = dayjs().format('YYYY/MM/DD');
-    let week = dayjs(new Date().getTime()).day();
-    switch (week) {
-      case 0:
-        nowTimeWeek.value = '星期日';
-        break;
-      case 1:
-        nowTimeWeek.value = '星期一';
-        break;
-      case 2:
-        nowTimeWeek.value = '星期二';
-        break;
-      case 3:
-        nowTimeWeek.value = '星期三';
-        break;
-      case 4:
-        nowTimeWeek.value = '星期四';
-        break;
-      case 5:
-        nowTimeWeek.value = '星期五';
-        break;
-      case 6:
-        nowTimeWeek.value = '星期六';
-        break;
-    }
-    let date = new Date();
-    let hours = date.getHours();
-    let minutes = date.getMinutes();
-    let seconds = date.getSeconds();
-    if (minutes >= 0 && minutes <= 9) {
-      minutes = `0${minutes}`;
-    }
-    if (seconds >= 0 && seconds <= 9) {
-      seconds = `0${seconds}`;
-    }
-    nowTime.value = `${hours}:${minutes}:${seconds}`;
-  }, 1000);
-}
-
-function goModalDetail() {
-  router.push('/micro-vent-3dModal/dashboard/analysis?type=model3D');
-}
-
-const changePageType = (pageType) => {
-  actions.setGlobalState({ pageObj: { pageType: pageType } });
-};
-
-onMounted(() => {
-  const currentRouteObj = unref(currentRoute);
-  if (currentRouteObj && currentRouteObj['query'] && currentRouteObj['query']['deviceType']) {
-    pageType.value = 'model3D';
-  } else {
-    pageType.value = 'home';
-  }
-  actions.onGlobalStateChange((newState) => {
-    for (const key in newState) {
-      if (key === 'pageObj') {
-        const pageObj = newState[key];
-        if (pageObj && pageObj.pageType) {
-          pageType.value = pageObj.pageType;
-          if (pageObj.timesolution) {
-            pageResult.value = pageObj.timesolution;
+    actions.onGlobalStateChange((newState) => {
+      for (const key in newState) {
+        if (key === 'pageObj') {
+          const pageObj = newState[key];
+          if (pageObj && pageObj.pageType) {
+            pageType.value = pageObj.pageType;
+            if (pageObj.timesolution) {
+              pageResult.value = pageObj.timesolution;
+            }
           }
         }
       }
-    }
+    });
+    getNowTime();
+    getList();
+    timer = Number(
+      setInterval(() => {
+        getList();
+      }, 10000)
+    );
+  });
+  onBeforeUnmount(() => {
+    clearInterval(timer);
+    timer = null;
+  });
+  onUnmounted(() => {
+    pageType.value = '';
   });
-  getNowTime();
-  getList();
-  timer = Number(
-    setInterval(() => {
-      getList();
-    }, 10000)
-  );
-});
-onBeforeUnmount(() => {
-  clearInterval(timer);
-  timer = null;
-});
-onUnmounted(() => {
-  pageType.value = '';
-});
 </script>
 
 <style lang="less" scoped>
-@font-face {
-  font-family: 'douyuFont';
-  src: url('../../../../assets/font/douyuFont.otf');
-}
-
-@font-face {
-  font-family: 'yjsz';
-  src: url('../../../../assets/font/yjsz.TTF');
-}
-
-.home-container {
-  width: 100%;
-  height: 100%;
-  position: relative;
-
-  .header {
+  @font-face {
+    font-family: 'douyuFont';
+    src: url('../../../../assets/font/douyuFont.otf');
+  }
+
+  @font-face {
+    font-family: 'yjsz';
+    src: url('../../../../assets/font/yjsz.TTF');
+  }
+
+  .home-container {
     width: 100%;
-    height: 76px;
+    height: 100%;
     position: relative;
-    background: url('../../../../assets//images//home-container/header-nav.png') no-repeat;
-
-    .head-time {
-      position: absolute;
-      top: 14px;
-      left: 15px;
-      color: #b5c9e9;
-      font-size: 14px;
-
-      span {
-        margin-right: 20px;
-        letter-spacing: 2px;
+
+    .header {
+      width: 100%;
+      height: 76px;
+      position: relative;
+      background: url('../../../../assets//images//home-container/header-nav.png') no-repeat;
+
+      .head-time {
+        position: absolute;
+        top: 14px;
+        left: 15px;
+        color: #b5c9e9;
+        font-size: 14px;
+
+        span {
+          margin-right: 20px;
+          letter-spacing: 2px;
+        }
       }
-    }
 
-    .main-title {
-      position: absolute;
-      left: 50%;
-      top: 50%;
-      transform: translate(-50%, -50%);
-      color: #fff;
-      font-size: 28px;
-      font-weight: 600;
-      display: flex;
-      align-items: center;
+      .main-title {
+        position: absolute;
+        left: 50%;
+        top: 50%;
+        transform: translate(-50%, -50%);
+        color: #fff;
+        font-size: 28px;
+        font-weight: 600;
+        display: flex;
+        align-items: center;
 
-      .logo {
-        width: 32px;
-        height: 32px;
-        margin-right: 5px;
+        .logo {
+          width: 32px;
+          height: 32px;
+          margin-right: 5px;
+        }
       }
     }
-  }
-
-  .home-contents {
-    display: flex;
-    justify-content: space-between;
-    height: calc(100% - 76px);
-    padding: 10px;
-    box-sizing: border-box;
 
-    .left-content {
+    .home-contents {
       display: flex;
-      flex-direction: column;
-      flex: 1;
       justify-content: space-between;
-      height: 100%;
+      height: calc(100% - 76px);
+      padding: 10px;
+      box-sizing: border-box;
 
-      .monitor-box {
+      .left-content {
         display: flex;
+        flex-direction: column;
         flex: 1;
-        width: 100%;
-        background: url('../../../../assets/images/home-container/dialog.png') no-repeat;
-        background-size: 100% 100%;
-      }
+        justify-content: space-between;
+        height: 100%;
 
-      .monitor-box1 {
-        margin: 10px 0px;
-      }
-    }
+        .monitor-box {
+          display: flex;
+          flex: 1;
+          width: 100%;
+          background: url('../../../../assets/images/home-container/dialog.png') no-repeat;
+          background-size: 100% 100%;
+        }
 
-    .center-content {
-      display: flex;
-      flex-direction: column;
-      justify-content: space-between;
-      flex: 2;
-      height: 100%;
-      margin: 0px 10px;
+        .monitor-box1 {
+          margin: 10px 0px;
+        }
+      }
 
-      .three-box {
-        position: relative;
+      .center-content {
         display: flex;
-        background-color: #fff;
+        flex-direction: column;
+        justify-content: space-between;
         flex: 2;
-        width: 100%;
-        margin-bottom: 15px;
-        background: url('../../../../assets/images/home-container/three-dialog.png') no-repeat;
-        background-size: 100% 100%;
-
-        .three-nav {
-          position: absolute;
-          z-index: 9999;
-          left: 50%;
-          top: 38px;
-          transform: translate(-50%, 0);
-          width: 812px;
-          height: 89px;
-          padding: 0px 20px;
-          box-sizing: border-box;
+        height: 100%;
+        margin: 0px 10px;
+
+        .three-box {
+          position: relative;
           display: flex;
-          justify-content: space-around;
-          align-items: center;
-          background: url('../../../../assets/images/home-container/three-nav.png') no-repeat;
+          background-color: #fff;
+          flex: 2;
+          width: 100%;
+          margin-bottom: 15px;
+          background: url('../../../../assets/images/home-container/three-dialog.png') no-repeat;
+          background-size: 100% 100%;
 
-          .nav-item {
+          .three-nav {
+            position: absolute;
+            z-index: 9999;
+            left: 50%;
+            top: 38px;
+            transform: translate(-50%, 0);
+            width: 812px;
+            height: 89px;
+            padding: 0px 20px;
+            box-sizing: border-box;
             display: flex;
-            flex: 1;
-            flex-direction: column;
             justify-content: space-around;
             align-items: center;
-            height: 80%;
-
-            .item-label {
-              color: #98f5ff;
-            }
+            background: url('../../../../assets/images/home-container/three-nav.png') no-repeat;
 
-            .item-value {
-              position: relative;
-              width: 125px;
-              height: 37px;
-              padding: 0px 5px;
-              box-sizing: border-box;
+            .nav-item {
               display: flex;
-              justify-content: space-between;
+              flex: 1;
+              flex-direction: column;
+              justify-content: space-around;
               align-items: center;
-              background: url('../../../../assets/images/home-container/item-value.png') no-repeat;
+              height: 80%;
+
+              .item-label {
+                color: #98f5ff;
+              }
 
-              .bg-box {
+              .item-value {
                 position: relative;
-                width: 20px;
-                height: 26px;
-                border-bottom: 2px solid #063493;
-                background: linear-gradient(to right, rgba(1, 194, 249), rgba(0, 125, 252));
-
-                .box-line {
-                  position: absolute;
-                  left: 0;
-                  top: 50%;
-                  transform: translate(0, -50%);
-                  height: 1px;
-                  width: 100%;
-                  background-color: rgba(6, 52, 147, 0.6);
+                width: 125px;
+                height: 37px;
+                padding: 0px 5px;
+                box-sizing: border-box;
+                display: flex;
+                justify-content: space-between;
+                align-items: center;
+                background: url('../../../../assets/images/home-container/item-value.png') no-repeat;
+
+                .bg-box {
+                  position: relative;
+                  width: 20px;
+                  height: 26px;
+                  border-bottom: 2px solid #063493;
+                  background: linear-gradient(to right, rgba(1, 194, 249), rgba(0, 125, 252));
+
+                  .box-line {
+                    position: absolute;
+                    left: 0;
+                    top: 50%;
+                    transform: translate(0, -50%);
+                    height: 1px;
+                    width: 100%;
+                    background-color: rgba(6, 52, 147, 0.6);
+                  }
+
+                  .value-text {
+                    position: absolute;
+                    left: 50%;
+                    top: 50%;
+                    transform: translate(-50%, -50%);
+                    color: #fff;
+                    font-size: 22px;
+                    font-family: 'yjsz';
+                    font-weight: 500;
+                  }
                 }
 
-                .value-text {
-                  position: absolute;
-                  left: 50%;
-                  top: 50%;
-                  transform: translate(-50%, -50%);
+                .value-text1 {
+                  width: 100%;
+                  text-align: center;
                   color: #fff;
                   font-size: 22px;
                   font-family: 'yjsz';
                   font-weight: 500;
                 }
               }
+            }
+          }
 
-              .value-text1 {
-                width: 100%;
-                text-align: center;
-                color: #fff;
-                font-size: 22px;
-                font-family: 'yjsz';
-                font-weight: 500;
-              }
+          .three-modal {
+            width: 100%;
+            height: 100%;
+            padding: 20px 17px 20px 15px;
+            box-sizing: border-box;
+            // position: absolute;
+            // background-color: var(--vent-base-color);
+
+            .btn-icon {
+              width: 40px;
+              height: 40px;
+              background: url('/@/assets/images/vent/home/tosmall.png') no-repeat center;
+              background-size: 100% 100%;
+              position: absolute;
+              z-index: 99999;
+              bottom: 30px;
+              right: 30px;
             }
           }
         }
 
-        .three-modal {
+        .wind-box {
+          display: flex;
+          flex: 1;
           width: 100%;
-          height: 100%;
-          padding: 20px 17px 20px 15px;
-          box-sizing: border-box;
-          // position: absolute;
-          // background-color: var(--vent-base-color);
-
-          .btn-icon {
-            width: 40px;
-            height: 40px;
-            background: url('/@/assets/images/vent/home/tosmall.png') no-repeat center;
-            background-size: 100% 100%;
-            position: absolute;
-            z-index: 99999;
-            bottom: 30px;
-            right: 30px;
-          }
+          background: url('../../../../assets/images/home-container/dialog1.png') no-repeat;
+          background-size: 100% 100%;
         }
       }
 
-      .wind-box {
+      .right-content {
         display: flex;
+        flex-direction: column;
+        justify-content: space-between;
         flex: 1;
-        width: 100%;
-        background: url('../../../../assets/images/home-container/dialog1.png') no-repeat;
-        background-size: 100% 100%;
-      }
-    }
+        height: 100%;
 
-    .right-content {
-      display: flex;
-      flex-direction: column;
-      justify-content: space-between;
-      flex: 1;
-      height: 100%;
-
-      .monitor-box {
-        display: flex;
-        flex: 1;
-        width: 100%;
-        background: url('../../../../assets/images/home-container/dialog.png') no-repeat;
-        background-size: 100% 100%;
-      }
+        .monitor-box {
+          display: flex;
+          flex: 1;
+          width: 100%;
+          background: url('../../../../assets/images/home-container/dialog.png') no-repeat;
+          background-size: 100% 100%;
+        }
 
-      .monitor-box1 {
-        margin: 10px 0px;
+        .monitor-box1 {
+          margin: 10px 0px;
+        }
       }
     }
   }
-}
 
-// #__qiankun_microapp_wrapper_for_micro_vent_3_d_modal__{
-//   width: 100% !important;
-//   height: 100% !important;
-// }</style>
+  // #__qiankun_microapp_wrapper_for_micro_vent_3_d_modal__{
+  //   width: 100% !important;
+  //   height: 100% !important;
+  // }
+</style>

+ 409 - 410
src/views/vent/monitorManager/alarmMonitor/common/fireWork.vue

@@ -37,8 +37,7 @@
         <div class="text">束管系统监测</div>
         <div class="select-box">
           <a-select v-model:value="selectData" style="width: 250px" @change="changeSelect">
-            <a-select-option v-for="file in selectList" :key="file.label" :value="file.value">{{ file.label
-              }}</a-select-option>
+            <a-select-option v-for="file in selectList" :key="file.label" :value="file.value">{{ file.label }}</a-select-option>
           </a-select>
         </div>
       </div>
@@ -68,487 +67,487 @@
 </template>
 
 <script lang="ts" setup>
-import { onMounted, ref, reactive, watch, defineProps } from 'vue';
-import imgUrl from '../../../../../assets/images/fire/pie.png';
-import echartLine from './echartLine.vue';
-import echartLine1 from './echartLine1.vue';
-import { topList, contentList } from '../common.data';
-
-let props = defineProps({
-  listData: Object,
-});
-let selectSj = ref<any[]>([]);
-let selectData = ref('');
-let selectList = reactive<any[]>([]);
-let maxY1 = ref<any>(0);
-let maxY = ref(100);
-let echartDw = ref('(­°C)');
-//光钎测温-图表数据
-let echartDataGq = reactive({
-  maxData: {
-    lengedData: '当前温度',
-    data: [],
-  },
-  xData: [],
-});
-//束管监测-图表数据
-let echartDataSg = reactive({
-  xData: [],
-  yData: [],
-  lengedData: 'O₂',
-  lengedDataName: '(%)',
-});
-let echartDataSgList = reactive<any[]>([]);
-
-function getmaxY() {
-  maxY1.value = echartDataSg.yData.reduce((acr, cur) => {
-    return acr > cur ? acr : cur;
+  import { onMounted, ref, reactive, watch, defineProps } from 'vue';
+  import imgUrl from '../../../../../assets/images/fire/pie.png';
+  import echartLine from './echartLine.vue';
+  import echartLine1 from './echartLine1.vue';
+  import { topList, contentList } from '../common.data';
+
+  let props = defineProps({
+    listData: Object,
   });
-  maxY1.value =
-    maxY1.value.toString().indexOf('.') == -1 ? maxY1.value.toString() : maxY1.value.toString().substring(0, maxY1.value.toString().indexOf('.'));
-  if (maxY1.value.length < 2 && Number(maxY1.value) < 1) {
-    maxY1.value = 1
-  } else if (maxY1.value.length < 2 && Number(maxY1.value) >= 1) {
-    maxY1.value = 10
-  } else if (maxY1.value.length < 3) {
-    maxY1.value = (Number(maxY1.value[0]) + 1) * 10
-  } else if (maxY1.value.length < 4) {
-    maxY1.value = (Number(maxY1.value[0]) + 1) * 100
-  } else if (maxY1.value.length < 5) {
-    maxY1.value = (Number(maxY1.value[0]) + 1) * 1000
-  } else if (maxY1.value.length < 6) {
-    maxY1.value = (Number(maxY1.value[0]) + 1) * 10000
-  }
-}
-//束管实时数据选项点击
-function getSgClick(items) {
-  echartDataSg.xData.length = 0;
-  echartDataSg.yData.length = 0;
-  echartDataSg.lengedData = items.title;
-  echartDataSg.lengedDataName = items.dw;
-
-  switch (items.title) {
-    case 'O₂':
-      echartDataSgList.forEach((el) => {
-        echartDataSg.xData.push(el.time);
-        echartDataSg.yData.push(el.o2val);
-      });
-      getmaxY();
-      break;
-    case 'C₂H₄':
-      echartDataSgList.forEach((el) => {
-        echartDataSg.xData.push(el.time);
-        echartDataSg.yData.push(el.ch2val);
-      });
-      getmaxY();
-      break;
-    case 'CO':
-      echartDataSgList.forEach((el) => {
-        echartDataSg.xData.push(el.time);
-        echartDataSg.yData.push(el.coval);
-      });
-      getmaxY();
-      break;
-    case 'CH₄':
-      echartDataSgList.forEach((el) => {
-        echartDataSg.xData.push(el.time);
-        echartDataSg.yData.push(el.chval);
-      });
-      getmaxY();
-      break;
-    case 'CO₂':
-      echartDataSgList.forEach((el) => {
-        echartDataSg.xData.push(el.time);
-        echartDataSg.yData.push(el.co2val);
-      });
-      getmaxY();
-      break;
-    case 'C₂H₂':
-      echartDataSgList.forEach((el) => {
-        echartDataSg.xData.push(el.time);
-        echartDataSg.yData.push(el.gasval);
-      });
-      getmaxY();
-      break;
-  }
-}
-function changeSelect(val) {
-  selectData.value = val;
-  let data = selectSj.value.filter((v) => v.strinstallpos == selectData.value)[0];
-  contentList[0].list[0].value = data.readData.o2val;
-  contentList[0].list[1].value = data.readData.ch2val;
-  contentList[1].list[0].value = data.readData.coval;
-  contentList[1].list[1].value = data.readData.chval;
-  contentList[2].list[0].value = data.readData.co2val;
-  contentList[2].list[1].value = data.readData.gasval;
-  contentList.forEach((el) => {
-    el.list.forEach((v) => {
-      v.time = data.readTime.substring(0, data.readTime.lastIndexOf(':'));
-    });
+  let selectSj = ref<any[]>([]);
+  let selectData = ref('');
+  let selectList = reactive<any[]>([]);
+  let maxY1 = ref<any>(0);
+  let maxY = ref(100);
+  let echartDw = ref('(­°C)');
+  //光钎测温-图表数据
+  let echartDataGq = reactive({
+    maxData: {
+      lengedData: '当前温度',
+      data: [],
+    },
+    xData: [],
   });
-}
-
-watch(
-  () => props.listData,
-  (val, val1) => {
-    echartDataGq.xData.length = 0;
-    echartDataGq.maxData.data.length = 0;
-    echartDataSgList.length = 0;
+  //束管监测-图表数据
+  let echartDataSg = reactive({
+    xData: [],
+    yData: [],
+    lengedData: 'O₂',
+    lengedDataName: '(%)',
+  });
+  let echartDataSgList = reactive<any[]>([]);
+
+  function getmaxY() {
+    maxY1.value = echartDataSg.yData.reduce((acr, cur) => {
+      return acr > cur ? acr : cur;
+    });
+    maxY1.value =
+      maxY1.value.toString().indexOf('.') == -1 ? maxY1.value.toString() : maxY1.value.toString().substring(0, maxY1.value.toString().indexOf('.'));
+    if (maxY1.value.length < 2 && Number(maxY1.value) < 1) {
+      maxY1.value = 1;
+    } else if (maxY1.value.length < 2 && Number(maxY1.value) >= 1) {
+      maxY1.value = 10;
+    } else if (maxY1.value.length < 3) {
+      maxY1.value = (Number(maxY1.value[0]) + 1) * 10;
+    } else if (maxY1.value.length < 4) {
+      maxY1.value = (Number(maxY1.value[0]) + 1) * 100;
+    } else if (maxY1.value.length < 5) {
+      maxY1.value = (Number(maxY1.value[0]) + 1) * 1000;
+    } else if (maxY1.value.length < 6) {
+      maxY1.value = (Number(maxY1.value[0]) + 1) * 10000;
+    }
+  }
+  //束管实时数据选项点击
+  function getSgClick(items) {
     echartDataSg.xData.length = 0;
     echartDataSg.yData.length = 0;
-    selectList.length = 0;
-    if (JSON.stringify(val) != '{}') {
-      if (val.fiber.length != 0) {
-        topList[0].value = val.fiber[0].readData.fmax;
-        topList[1].value = val.fiber[0].readData.fmin;
-        topList[2].value = val.fiber[0].readData.favg;
-        topList[3].text = val.fiber[0].warnFlag ? '报警' : '正常';
-        JSON.parse(val.fiber[0].readData.fibreTemperature).forEach((el) => {
-          echartDataGq.xData.push(el.pos);
-          echartDataGq.maxData.data.push(el.value);
-        });
-      } else {
-        topList[0].value = '--';
-        topList[1].value = '--';
-        topList[2].value = '--';
-        topList[3].text = '正常';
-      }
+    echartDataSg.lengedData = items.title;
+    echartDataSg.lengedDataName = items.dw;
 
-      if (val.bundletube.length != 0) {
-        selectSj.value = val.bundletube;
-        selectSj.value.forEach((el) => {
-          selectList.push({ label: el.strinstallpos, value: el.strinstallpos });
+    switch (items.title) {
+      case 'O₂':
+        echartDataSgList.forEach((el) => {
+          echartDataSg.xData.push(el.time);
+          echartDataSg.yData.push(el.o2val);
         });
-        selectData.value = selectData.value ? selectData.value : selectList[0].value;
-        let dataVal = selectData.value ? selectSj.value.filter((v) => v.strinstallpos == selectData.value)[0] : selectSj.value[0];
-        contentList[0].list[0].value = dataVal.readData.o2val;
-        contentList[0].list[1].value = dataVal.readData.ch2val;
-        contentList[1].list[0].value = dataVal.readData.coval;
-        contentList[1].list[1].value = dataVal.readData.chval;
-        contentList[2].list[0].value = dataVal.readData.co2val;
-        contentList[2].list[1].value = dataVal.readData.gasval;
-        contentList.forEach((el) => {
-          el.list.forEach((v) => {
-            v.time = dataVal.readTime.substring(0, dataVal.readTime.lastIndexOf(':'));
-          });
+        getmaxY();
+        break;
+      case 'C₂H₄':
+        echartDataSgList.forEach((el) => {
+          echartDataSg.xData.push(el.time);
+          echartDataSg.yData.push(el.ch2val);
         });
-
-        dataVal.history.forEach((el) => {
+        getmaxY();
+        break;
+      case 'CO':
+        echartDataSgList.forEach((el) => {
           echartDataSg.xData.push(el.time);
-          if (echartDataSg.lengedData == 'O₂') {
-            echartDataSg.yData.push(el.o2val);
-          } else if (echartDataSg.lengedData == 'C₂H₄') {
-            echartDataSg.yData.push(el.ch2val);
-          } else if (echartDataSg.lengedData == 'C₂H₂') {
-            echartDataSg.yData.push(el.gasval);
-          } else if (echartDataSg.lengedData == 'CH₄') {
-            echartDataSg.yData.push(el.chval);
-          } else if (echartDataSg.lengedData == 'CO') {
-            echartDataSg.yData.push(el.coval);
-          } else if (echartDataSg.lengedData == 'CO₂') {
-            echartDataSg.yData.push(el.co2val);
-          }
-          echartDataSgList.push(el);
+          echartDataSg.yData.push(el.coval);
         });
         getmaxY();
-      } else {
-        contentList[0].list[0].value = '--';
-        contentList[0].list[1].value = '--';
-        contentList[1].list[0].value = '--';
-        contentList[1].list[1].value = '--';
-        contentList[2].list[0].value = '--';
-        contentList[2].list[1].value = '--';
-        contentList.forEach((el) => {
-          el.list.forEach((v) => {
-            v.time = '--';
-          });
+        break;
+      case 'CH₄':
+        echartDataSgList.forEach((el) => {
+          echartDataSg.xData.push(el.time);
+          echartDataSg.yData.push(el.chval);
         });
-      }
+        getmaxY();
+        break;
+      case 'CO₂':
+        echartDataSgList.forEach((el) => {
+          echartDataSg.xData.push(el.time);
+          echartDataSg.yData.push(el.co2val);
+        });
+        getmaxY();
+        break;
+      case 'C₂H₂':
+        echartDataSgList.forEach((el) => {
+          echartDataSg.xData.push(el.time);
+          echartDataSg.yData.push(el.gasval);
+        });
+        getmaxY();
+        break;
     }
-  },
-  { deep: true }
-);
+  }
+  function changeSelect(val) {
+    selectData.value = val;
+    let data = selectSj.value.filter((v) => v.strinstallpos == selectData.value)[0];
+    contentList[0].list[0].value = data.readData.o2val;
+    contentList[0].list[1].value = data.readData.ch2val;
+    contentList[1].list[0].value = data.readData.coval;
+    contentList[1].list[1].value = data.readData.chval;
+    contentList[2].list[0].value = data.readData.co2val;
+    contentList[2].list[1].value = data.readData.gasval;
+    contentList.forEach((el) => {
+      el.list.forEach((v) => {
+        v.time = data.readTime.substring(0, data.readTime.lastIndexOf(':'));
+      });
+    });
+  }
+
+  watch(
+    () => props.listData,
+    (val, val1) => {
+      echartDataGq.xData.length = 0;
+      echartDataGq.maxData.data.length = 0;
+      echartDataSgList.length = 0;
+      echartDataSg.xData.length = 0;
+      echartDataSg.yData.length = 0;
+      selectList.length = 0;
+      if (JSON.stringify(val) != '{}') {
+        if (val.fiber.length != 0) {
+          topList[0].value = val.fiber[0].readData.fmax;
+          topList[1].value = val.fiber[0].readData.fmin;
+          topList[2].value = val.fiber[0].readData.favg;
+          topList[3].text = val.fiber[0].warnFlag ? '报警' : '正常';
+          JSON.parse(val.fiber[0].readData.fibreTemperature).forEach((el) => {
+            echartDataGq.xData.push(el.pos);
+            echartDataGq.maxData.data.push(el.value);
+          });
+        } else {
+          topList[0].value = '--';
+          topList[1].value = '--';
+          topList[2].value = '--';
+          topList[3].text = '正常';
+        }
+
+        if (val.bundletube.length != 0) {
+          selectSj.value = val.bundletube;
+          selectSj.value.forEach((el) => {
+            selectList.push({ label: el.strinstallpos, value: el.strinstallpos });
+          });
+          selectData.value = selectData.value ? selectData.value : selectList[0].value;
+          let dataVal = selectData.value ? selectSj.value.filter((v) => v.strinstallpos == selectData.value)[0] : selectSj.value[0];
+          contentList[0].list[0].value = dataVal.readData.o2val;
+          contentList[0].list[1].value = dataVal.readData.ch2val;
+          contentList[1].list[0].value = dataVal.readData.coval;
+          contentList[1].list[1].value = dataVal.readData.chval;
+          contentList[2].list[0].value = dataVal.readData.co2val;
+          contentList[2].list[1].value = dataVal.readData.gasval;
+          contentList.forEach((el) => {
+            el.list.forEach((v) => {
+              v.time = dataVal.readTime.substring(0, dataVal.readTime.lastIndexOf(':'));
+            });
+          });
+
+          dataVal.history.forEach((el) => {
+            echartDataSg.xData.push(el.time);
+            if (echartDataSg.lengedData == 'O₂') {
+              echartDataSg.yData.push(el.o2val);
+            } else if (echartDataSg.lengedData == 'C₂H₄') {
+              echartDataSg.yData.push(el.ch2val);
+            } else if (echartDataSg.lengedData == 'C₂H₂') {
+              echartDataSg.yData.push(el.gasval);
+            } else if (echartDataSg.lengedData == 'CH₄') {
+              echartDataSg.yData.push(el.chval);
+            } else if (echartDataSg.lengedData == 'CO') {
+              echartDataSg.yData.push(el.coval);
+            } else if (echartDataSg.lengedData == 'CO₂') {
+              echartDataSg.yData.push(el.co2val);
+            }
+            echartDataSgList.push(el);
+          });
+          getmaxY();
+        } else {
+          contentList[0].list[0].value = '--';
+          contentList[0].list[1].value = '--';
+          contentList[1].list[0].value = '--';
+          contentList[1].list[1].value = '--';
+          contentList[2].list[0].value = '--';
+          contentList[2].list[1].value = '--';
+          contentList.forEach((el) => {
+            el.list.forEach((v) => {
+              v.time = '--';
+            });
+          });
+        }
+      }
+    },
+    { deep: true }
+  );
 </script>
 
 <style lang="less" scoped>
-.fireWork {
-  width: 100%;
-  height: 100%;
-  padding: 20px;
-  box-sizing: border-box;
-
-  .work-nav {
-    height: 15%;
+  .fireWork {
     width: 100%;
-    margin-bottom: 20px;
-    background: url('../../../../../assets/images/fire/bj1.png') no-repeat center;
-    background-size: 100% 100%;
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-
-    .nav {
+    height: 100%;
+    padding: 20px;
+    box-sizing: border-box;
+
+    .work-nav {
+      height: 15%;
+      width: 100%;
+      margin-bottom: 20px;
+      background: url('../../../../../assets/images/fire/bj1.png') no-repeat center;
+      background-size: 100% 100%;
       display: flex;
-      justify-content: center;
+      justify-content: space-between;
       align-items: center;
 
-      &:nth-child(1) {
-        flex: 1;
-        height: 100%;
-        border-right: 2px solid;
-        border-image: linear-gradient(to bottom, transparent, rgba(2, 70, 136, 1), transparent) 1 1 1;
-      }
-
-      &:nth-child(2) {
-        flex: 1;
-        height: 100%;
-        border-right: 2px solid;
-        border-image: linear-gradient(to bottom, transparent, rgba(2, 70, 136, 1), transparent) 1 1 1;
-      }
+      .nav {
+        display: flex;
+        justify-content: center;
+        align-items: center;
 
-      &:nth-child(3) {
-        flex: 1;
-        height: 100%;
-        border-right: 2px solid;
-        border-image: linear-gradient(to bottom, transparent, rgba(2, 70, 136, 1), transparent) 1 1 1;
-      }
+        &:nth-child(1) {
+          flex: 1;
+          height: 100%;
+          border-right: 2px solid;
+          border-image: linear-gradient(to bottom, transparent, rgba(2, 70, 136, 1), transparent) 1 1 1;
+        }
 
-      &:nth-child(4) {
-        flex: 0.6;
-        color: #b3b8cc;
-        font-size: 16px;
-        height: 100%;
-        border-right: 2px solid;
-        border-image: linear-gradient(to bottom, transparent, rgba(2, 70, 136, 1), transparent) 1 1 1;
-      }
+        &:nth-child(2) {
+          flex: 1;
+          height: 100%;
+          border-right: 2px solid;
+          border-image: linear-gradient(to bottom, transparent, rgba(2, 70, 136, 1), transparent) 1 1 1;
+        }
 
-      &:nth-child(5) {
-        flex: 1.4;
-        height: 100%;
+        &:nth-child(3) {
+          flex: 1;
+          height: 100%;
+          border-right: 2px solid;
+          border-image: linear-gradient(to bottom, transparent, rgba(2, 70, 136, 1), transparent) 1 1 1;
+        }
 
-        .percent {
-          width: 100%;
-          height: 82%;
-          padding: 0px 20px;
-          box-sizing: border-box;
-          display: flex;
-          flex-direction: column;
-          justify-content: space-around;
+        &:nth-child(4) {
+          flex: 0.6;
+          color: #b3b8cc;
+          font-size: 16px;
+          height: 100%;
+          border-right: 2px solid;
+          border-image: linear-gradient(to bottom, transparent, rgba(2, 70, 136, 1), transparent) 1 1 1;
+        }
 
-          .title {
-            font-size: 14px;
-            padding: 5px 0px;
-            color: #b3b8cc;
-            text-align: center;
-          }
+        &:nth-child(5) {
+          flex: 1.4;
+          height: 100%;
 
-          .value {
+          .percent {
+            width: 100%;
+            height: 82%;
+            padding: 0px 20px;
+            box-sizing: border-box;
             display: flex;
-            justify-content: space-between;
+            flex-direction: column;
+            justify-content: space-around;
+
+            .title {
+              font-size: 14px;
+              padding: 5px 0px;
+              color: #b3b8cc;
+              text-align: center;
+            }
 
-            span {
-              font-family: 'douyuFont';
-              font-size: 18px;
+            .value {
+              display: flex;
+              justify-content: space-between;
+
+              span {
+                font-family: 'douyuFont';
+                font-size: 18px;
+              }
             }
           }
         }
-      }
 
-      .pic {
-        width: 30%;
-        height: 82%;
+        .pic {
+          width: 30%;
+          height: 82%;
 
-        img {
-          width: 100%;
-          height: 100%;
+          img {
+            width: 100%;
+            height: 100%;
+          }
         }
-      }
 
-      .content {
-        height: 82%;
-        margin-left: 15px;
-        color: #fff;
-        display: flex;
-        flex-direction: column;
-        justify-content: space-around;
+        .content {
+          height: 82%;
+          margin-left: 15px;
+          color: #fff;
+          display: flex;
+          flex-direction: column;
+          justify-content: space-around;
 
-        span {
-          font-size: 14px;
+          span {
+            font-size: 14px;
 
-          &:nth-child(1) {
-            padding: 5px 0px;
-            color: #b3b8cc;
-          }
+            &:nth-child(1) {
+              padding: 5px 0px;
+              color: #b3b8cc;
+            }
 
-          &:nth-child(2) {
-            font-family: 'douyuFont';
-            font-size: 16px;
-            color: #3df6ff;
+            &:nth-child(2) {
+              font-family: 'douyuFont';
+              font-size: 16px;
+              color: #3df6ff;
+            }
           }
         }
       }
-    }
 
-    .nav:nth-child(1) .pic {
-      background: url('../../../../../assets/images/fire/max.svg') no-repeat center;
-      background-size: 50% 50%;
-    }
+      .nav:nth-child(1) .pic {
+        background: url('../../../../../assets/images/fire/max.svg') no-repeat center;
+        background-size: 50% 50%;
+      }
 
-    .nav:nth-child(2) .pic {
-      background: url('../../../../../assets/images/fire/min.svg') no-repeat center;
-      background-size: 50% 50%;
-    }
+      .nav:nth-child(2) .pic {
+        background: url('../../../../../assets/images/fire/min.svg') no-repeat center;
+        background-size: 50% 50%;
+      }
 
-    .nav:nth-child(3) .pic {
-      background: url('../../../../../assets/images/fire/pj.svg') no-repeat center;
-      background-size: 50% 50%;
+      .nav:nth-child(3) .pic {
+        background: url('../../../../../assets/images/fire/pj.svg') no-repeat center;
+        background-size: 50% 50%;
+      }
     }
-  }
 
-  .center-echart {
-    width: 100%;
-    height: 32%;
-    padding: 10px;
-    margin-bottom: 20px;
-    box-sizing: border-box;
-    background: url('../../../../../assets/images/fire/bj1.png') no-repeat center;
-    background-size: 100% 100%;
+    .center-echart {
+      width: 100%;
+      height: 32%;
+      padding: 10px;
+      margin-bottom: 20px;
+      box-sizing: border-box;
+      background: url('../../../../../assets/images/fire/bj1.png') no-repeat center;
+      background-size: 100% 100%;
+
+      .nav-title {
+        height: 30px;
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
 
-    .nav-title {
-      height: 30px;
-      display: flex;
-      justify-content: space-between;
-      align-items: center;
+        .title {
+          font-family: 'douyuFont';
+          font-size: 14px;
+          color: #fff;
+          // color: #3df6ff;
+        }
+      }
 
-      .title {
-        font-family: 'douyuFont';
-        font-size: 14px;
-        color: #fff;
-        // color: #3df6ff;
+      .echart-box {
+        width: 100%;
+        height: calc(100% - 30px);
       }
     }
 
-    .echart-box {
+    .bot-content {
+      position: relative;
       width: 100%;
-      height: calc(100% - 30px);
-    }
-  }
+      height: calc(53% - 40px);
+      padding: 10px 10px 0px 10px;
+      box-sizing: border-box;
+      background: url('../../../../../assets/images/fire/bj1.png') no-repeat center;
+      background-size: 100% 100%;
 
-  .bot-content {
-    position: relative;
-    width: 100%;
-    height: calc(53% - 40px);
-    padding: 10px 10px 0px 10px;
-    box-sizing: border-box;
-    background: url('../../../../../assets/images/fire/bj1.png') no-repeat center;
-    background-size: 100% 100%;
+      .title {
+        height: 35px;
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        margin-bottom: 10px;
 
-    .title {
-      height: 35px;
-      display: flex;
-      justify-content: space-between;
-      align-items: center;
-      margin-bottom: 10px;
-
-      .text {
-        // height: 30px;
-        // line-height: 30px;
-        font-family: 'douyuFont';
-        font-size: 14px;
-        color: #fff;
+        .text {
+          // height: 30px;
+          // line-height: 30px;
+          font-family: 'douyuFont';
+          font-size: 14px;
+          color: #fff;
+        }
       }
-    }
 
-    .content {
-      height: calc(100% - 45px);
-      display: flex;
-      flex-direction: column;
-      justify-content: space-between;
-
-      .content-box {
-        width: 100%;
-        height: 29%;
+      .content {
+        height: calc(100% - 45px);
         display: flex;
+        flex-direction: column;
         justify-content: space-between;
-        margin-top: 0px !important;
-
-        .box-item {
-          position: relative;
-          width: 16%;
-          height: 100%;
-          background: url('../../../../../assets/images/fire/14174.png') no-repeat center;
-          background-size: 100% 100%;
-          cursor: pointer;
-
-          .content-title {
-            position: absolute;
-            left: 50%;
-            top: 0;
-            transform: translate(-50%);
-            color: #fff;
-            font-size: 14px;
-          }
 
-          .content-item {
-            position: absolute;
-            width: 93%;
-            height: 27%;
-            display: flex;
-            align-items: center;
-            padding: 0px 10px;
-            box-sizing: border-box;
-            background: url('../../../../../assets/images/fire/contetn.png') no-repeat center;
+        .content-box {
+          width: 100%;
+          height: 29%;
+          display: flex;
+          justify-content: space-between;
+          margin-top: 0px !important;
+
+          .box-item {
+            position: relative;
+            width: 16%;
+            height: 100%;
+            background: url('../../../../../assets/images/fire/14174.png') no-repeat center;
             background-size: 100% 100%;
-            color: #fff;
-            font-size: 14px;
+            cursor: pointer;
 
-            &:nth-child(2) {
+            .content-title {
+              position: absolute;
               left: 50%;
-              top: 28%;
+              top: 0;
               transform: translate(-50%);
-              display: flex;
-              justify-content: space-between;
+              color: #fff;
+              font-size: 14px;
             }
 
-            &:nth-child(3) {
-              left: 50%;
-              top: 62%;
-              transform: translate(-50%);
+            .content-item {
+              position: absolute;
+              width: 93%;
+              height: 27%;
               display: flex;
-              justify-content: space-between;
-            }
-
-            .bolds {
-              font-family: 'douyuFont';
-              color: #3df6ff;
-              font-size: 12px;
+              align-items: center;
+              padding: 0px 10px;
+              box-sizing: border-box;
+              background: url('../../../../../assets/images/fire/contetn.png') no-repeat center;
+              background-size: 100% 100%;
+              color: #fff;
+              font-size: 14px;
+
+              &:nth-child(2) {
+                left: 50%;
+                top: 28%;
+                transform: translate(-50%);
+                display: flex;
+                justify-content: space-between;
+              }
+
+              &:nth-child(3) {
+                left: 50%;
+                top: 62%;
+                transform: translate(-50%);
+                display: flex;
+                justify-content: space-between;
+              }
+
+              .bolds {
+                font-family: 'douyuFont';
+                color: #3df6ff;
+                font-size: 12px;
+              }
             }
           }
         }
       }
-    }
 
-    .echart-box {
-      position: absolute;
-      left: 50%;
-      top: 50px;
-      transform: translate(-50%, 0);
-      width: 66%;
-      height: calc(100% - 50px);
+      .echart-box {
+        position: absolute;
+        left: 50%;
+        top: 50px;
+        transform: translate(-50%, 0);
+        width: 66%;
+        height: calc(100% - 50px);
+      }
     }
   }
-}
 
-:deep(.zxm-select:not(.zxm-select-customize-input) .zxm-select-selector) {
-  border: 1px solid #3ad8ff77 !important;
-  background-color: #ffffff00 !important;
-}
+  :deep(.zxm-select:not(.zxm-select-customize-input) .zxm-select-selector) {
+    border: 1px solid #3ad8ff77 !important;
+    background-color: #ffffff00 !important;
+  }
 
-:deep(.zxm-select-selection-item) {
-  color: #fff !important;
-}
+  :deep(.zxm-select-selection-item) {
+    color: #fff !important;
+  }
 
-:deep(.zxm-select-arrow) {
-  color: #fff;
-}
+  :deep(.zxm-select-arrow) {
+    color: #fff;
+  }
 </style>

+ 5 - 5
src/views/vent/monitorManager/comment/DeviceEcharts.vue

@@ -1,12 +1,12 @@
 <template>
   <div class="charts-container">
     <a-select ref="select" v-model:value="chartsType" size="small" style="position: absolute; z-index: 99; top: 2px; left: 2px; width: 98px">
-      <a-select-option value="listMonitor">实时监测</a-select-option>
-      <a-select-option value="detail">详情监测</a-select-option>
+      <!-- <a-select-option value="listMonitor">实时监测</a-select-option> -->
       <a-select-option value="history">历史记录</a-select-option>
+      <a-select-option value="detail">详情监测</a-select-option>
     </a-select>
 
-    <div class="charts-box" v-if="chartsType === 'listMonitor'" style="position: absolute; top: 20px">
+    <!-- <div class="charts-box" v-if="chartsType === 'listMonitor'" style="position: absolute; top: 20px">
       <BarAndLine
         :chartsColumnsType="chartsColumnsType"
         :xAxisPropType="xAxisPropType"
@@ -16,8 +16,8 @@
         :option="echartsOption"
         :chartsColumns="chartsColumns"
       />
-    </div>
-    <div class="charts-box" v-else-if="chartsType === 'detail' && deviceListApi">
+    </div> -->
+    <div class="charts-box" v-if="chartsType === 'detail' && deviceListApi">
       <Select
         :options="options"
         :fieldNames="{ label: 'strname', value: 'deviceID' }"

+ 0 - 113
src/views/vent/monitorManager/gateMonitor/gate.threejs.qd.ts

@@ -55,32 +55,6 @@ class Fm3 {
     pointLight3.position.set(-0.5, -0.5, 0.75);
     pointLight3.shadow.bias = 0.05;
     this.group?.add(pointLight3);
-
-    // const pointLight4 = new THREE.PointLight(0xffeeee, 1, 150);
-    // pointLight4.position.set(4.3, 1, -0.9);
-    // pointLight4.shadow.bias = 0.05;
-    // this.group?.add(pointLight4);
-
-    // const pointLight5 = new THREE.PointLight(0xffeeee, 1, 150);
-    // pointLight5.position.set(4.3, 1, -0.9);
-    // pointLight5.shadow.bias = 0.05;
-    // this.group?.add(pointLight5);
-
-    // const pointLight6 = new THREE.PointLight(0xffeeee, 1, 150);
-    // pointLight6.position.set(-4.4, 1, -0.9);
-    // pointLight6.shadow.bias = 0.05;
-    // this.group?.add(pointLight6);
-
-    // const pointLightHelper2 = new THREE.PointLightHelper(pointLight2, 1);
-    // this.model.scene?.add(pointLightHelper2);
-
-    // gui.add(pointLight2.position, 'x', -300, 300);
-    // gui.add(pointLight2.position, 'y', -300, 300);
-    // gui.add(pointLight2.position, 'z', -300, 300);
-
-    // gui.add(pointLight3.position, 'x', -300, 300);
-    // gui.add(pointLight3.position, 'y', -300, 300);
-    // gui.add(pointLight3.position, 'z', -300, 300);
   }
   // 重置摄像头
   resetCamera() {
@@ -243,41 +217,6 @@ class Fm3 {
       clearTimeout(this.animationTimer);
       this.animationTimer = null;
     }
-
-    // 判断是否点击到视频
-    intersects.find((intersect) => {
-      const mesh = intersect.object;
-      // if (mesh.name === 'player1') {
-      //   if (new Date().getTime() - this.playerStartClickTime1 < 400) {
-      //     // 双击,视频放大
-      //     if (this.player1) {
-      //       this.player1.requestPictureInPicture();
-      //     }
-      //   }
-      //   this.playerStartClickTime1 = new Date().getTime();
-      //   return true;
-      // } else if (mesh.name === 'player2') {
-      //   if (new Date().getTime() - this.playerStartClickTime2 < 400) {
-      //     // 双击,视频放大
-      //     if (this.player2) {
-      //       this.player2.requestPictureInPicture();
-      //     }
-      //   }
-      //   this.playerStartClickTime2 = new Date().getTime();
-      //   return true;
-      // } else if (mesh.name.startsWith('hotPoint')) {
-      //   if (this.deviceDetailCSS3D) {
-      //     this.deviceDetailCSS3D.position.set(mesh.position.x + 0.035, mesh.position.y + 0.68, mesh.position.z + 0.02);
-      //     console.log('[ deviceDetailCSS3D.position ] >', this.deviceDetailCSS3D.position);
-      //     this.deviceDetailCSS3D.visible = true;
-      //     return true;
-      //   }
-      // } else {
-      //   if (this.deviceDetailCSS3D) this.deviceDetailCSS3D.visible = false;
-      //   console.log('[ 点击事件 ] >');
-      // }
-      return false;
-    });
   }
 
   mouseUpModel() {
@@ -395,60 +334,10 @@ class Fm3 {
             if (this.backDamperClosedMesh) this.backDamperClosedMesh.visible = true;
           };
           break;
-        // case 5: // 打开前后门
-        //   handler = () => {
-        //     this.clipActionArr.backDoor.paused = true;
-        //     this.clipActionArr.frontDoor.paused = true;
-
-        //     this.clipActionArr.frontDoor.reset();
-        //     this.clipActionArr.frontDoor.time = 0;
-        //     this.clipActionArr.frontDoor.timeScale = 0.01;
-        //     this.clipActionArr.frontDoor.clampWhenFinished = true;
-        //     this.clipActionArr.frontDoor.play();
-
-        //     this.clipActionArr.backDoor.reset();
-        //     this.clipActionArr.backDoor.time = 0;
-        //     this.clipActionArr.backDoor.timeScale = 0.01;
-        //     this.clipActionArr.backDoor.clampWhenFinished = true;
-        //     this.clipActionArr.backDoor.play();
-        //     this.frontClock.start();
-        //     this.backClock.start();
-        //   };
-        //   break;
-        // case 6: // 关闭前后门
-        //   handler = () => {
-        //     debugger;
-        //     this.clipActionArr.backDoor.paused = true;
-        //     this.clipActionArr.frontDoor.paused = true;
-
-        //     this.clipActionArr.frontDoor.reset();
-        //     this.clipActionArr.frontDoor.time = 4;
-        //     this.clipActionArr.frontDoor.timeScale = -0.01;
-        //     this.clipActionArr.frontDoor.clampWhenFinished = true;
-        //     this.clipActionArr.frontDoor.play();
-        //     this.clipActionArr.backDoor.reset();
-        //     this.clipActionArr.backDoor.time = 4;
-        //     this.clipActionArr.backDoor.timeScale = -0.01;
-        //     this.clipActionArr.backDoor.clampWhenFinished = true;
-        //     this.clipActionArr.backDoor.play();
-        //     this.frontClock.start();
-        //     this.backClock.start();
-        //   };
-        //   break;
         default:
       }
       handler();
     }
-    // model.clock.start();
-    // const honglvdeng = group.getObjectByName('honglvdeng');
-    // const material = honglvdeng.material;
-    // setTimeout(() => {
-    //   if (handlerState === 2 || handlerState === 4 || handlerState === 6) {
-    //     material.color = new THREE.Color(0x00ff00);
-    //   } else {
-    //     material.color = new THREE.Color(0xff0000);
-    //   }
-    // }, 1000);
   }
 
   async initCamera(dom1) {
@@ -563,8 +452,6 @@ class Fm3 {
       this.clipActionArr.frontDoor = undefined;
 
       this.mixers = undefined;
-
-      // document.getElementById('damper3D').parentElement.remove(document.getElementById('damper3D'))
     }
   }
 }

+ 41 - 4
src/views/vent/monitorManager/gateMonitor/gate.threejs.ts

@@ -17,7 +17,15 @@ let model,
   fmXr: FmXR, //行人风门
   fmTwoSs, //
   group: THREE.Object3D,
-  fmType = '';
+  fmType = '',
+  windowType = 'singleWindow';
+
+const rotationParam = {
+  frontDeg0: 0, // 前门初始
+  frontDeg1: 0, // 前门目标
+  backDeg0: 0, // 后门初始
+  backDeg1: 0, // 后门目标
+};
 
 const { mouseDownFn } = useEvent();
 
@@ -102,6 +110,31 @@ export const play = (handlerState, flag?) => {
   }
 };
 
+export const playWindow = (rotationParam, flag) => {
+  if (fmType === 'fm3' && fm3) {
+    return fm3.playWindow.call(fm3, rotationParam, flag);
+  }
+};
+
+export function computePlay(data, maxarea, isFirst = false) {
+  debugger;
+  if (data.OpenDegree1 || data.OpenDegree2) {
+    maxarea = 90;
+    rotationParam.frontDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.OpenDegree1);
+    rotationParam.backDeg0 = (90 / maxarea) * Number(isFirst ? 0 : data.OpenDegree2);
+    rotationParam.frontDeg1 = (90 / maxarea) * Number(data.OpenDegree1) || 0;
+    rotationParam.backDeg1 = (90 / maxarea) * Number(data.OpenDegree2) || 0;
+
+    // if (!rotationParam.frontDeg1 && !rotationParam.backDeg1) {
+    //   // 当返回值有误时默认关闭
+    //   fm3.playWindow.call(fm3, rotationParam, 1);
+    //   fm3.playWindow.call(fm3, rotationParam, 2);
+    // }
+    fm3.playWindow.call(fm3, rotationParam, 1);
+    fm3.playWindow.call(fm3, rotationParam, 2);
+  }
+}
+
 // 切换风门类型
 export const setModelType = (type) => {
   debugger;
@@ -289,11 +322,11 @@ export const initCameraCanvas = async (playerVal1) => {
 
 export const mountedThree = (playerDom) => {
   const { sysOrgCode } = useGlobSetting();
-  // const sysOrgCode = 'zmjthjg';
+  // const sysOrgCode = 'gsgszdek';
   return new Promise(async (resolve) => {
     model = new UseThree('#damper3D', '', '#deviceDetail');
     model.setEnvMap('test1');
-    model.renderer.toneMappingExposure = 1.0;
+    model.renderer.toneMappingExposure = 0.9;
     model.camera.position.set(100, 0, 1000);
     switch (sysOrgCode) {
       case 'yjmdsankuang': //窑街三矿
@@ -302,7 +335,6 @@ export const mountedThree = (playerDom) => {
         const FmYj = await import('./gate.threejs.yj');
         if (FmYj) fm3 = new FmYj.default(model);
         if (fm3) fm3.mountedThree(playerDom);
-
         const FmTwoYj = await import('./gate.threejs.two.yj');
         if (FmTwoYj) fmTwoSs = new FmTwoYj.default(model);
         fmTwoSs.mountedThree(playerDom);
@@ -312,6 +344,11 @@ export const mountedThree = (playerDom) => {
         if (FmNoSubStation) fm3 = new FmNoSubStation.default(model);
         if (fm3) fm3.mountedThree(playerDom);
         break;
+      case 'gsgszdek':
+        const FmDc = await import('./gate.threejs.window');
+        if (FmDc) fm3 = new FmDc.default(model);
+        if (fm3) fm3.mountedThree(playerDom);
+        break;
       default:
         fm3 = new Fm3(model);
         fm3.mountedThree(playerDom);

+ 0 - 56
src/views/vent/monitorManager/gateMonitor/gate.threejs.yy.ts

@@ -55,32 +55,6 @@ class Fm1 {
     pointLight3.position.set(-0.5, -0.5, 0.75);
     pointLight3.shadow.bias = 0.05;
     this.group?.add(pointLight3);
-
-    // const pointLight4 = new THREE.PointLight(0xffeeee, 1, 150);
-    // pointLight4.position.set(4.3, 1, -0.9);
-    // pointLight4.shadow.bias = 0.05;
-    // this.group?.add(pointLight4);
-
-    // const pointLight5 = new THREE.PointLight(0xffeeee, 1, 150);
-    // pointLight5.position.set(4.3, 1, -0.9);
-    // pointLight5.shadow.bias = 0.05;
-    // this.group?.add(pointLight5);
-
-    // const pointLight6 = new THREE.PointLight(0xffeeee, 1, 150);
-    // pointLight6.position.set(-4.4, 1, -0.9);
-    // pointLight6.shadow.bias = 0.05;
-    // this.group?.add(pointLight6);
-
-    // const pointLightHelper2 = new THREE.PointLightHelper(pointLight2, 1);
-    // this.model.scene?.add(pointLightHelper2);
-
-    // gui.add(pointLight2.position, 'x', -300, 300);
-    // gui.add(pointLight2.position, 'y', -300, 300);
-    // gui.add(pointLight2.position, 'z', -300, 300);
-
-    // gui.add(pointLight3.position, 'x', -300, 300);
-    // gui.add(pointLight3.position, 'y', -300, 300);
-    // gui.add(pointLight3.position, 'z', -300, 300);
   }
   // 重置摄像头
   resetCamera() {
@@ -246,36 +220,6 @@ class Fm1 {
 
     // 判断是否点击到视频
     intersects.find((intersect) => {
-      const mesh = intersect.object;
-      // if (mesh.name === 'player1') {
-      //   if (new Date().getTime() - this.playerStartClickTime1 < 400) {
-      //     // 双击,视频放大
-      //     if (this.player1) {
-      //       this.player1.requestPictureInPicture();
-      //     }
-      //   }
-      //   this.playerStartClickTime1 = new Date().getTime();
-      //   return true;
-      // } else if (mesh.name === 'player2') {
-      //   if (new Date().getTime() - this.playerStartClickTime2 < 400) {
-      //     // 双击,视频放大
-      //     if (this.player2) {
-      //       this.player2.requestPictureInPicture();
-      //     }
-      //   }
-      //   this.playerStartClickTime2 = new Date().getTime();
-      //   return true;
-      // } else if (mesh.name.startsWith('hotPoint')) {
-      //   if (this.deviceDetailCSS3D) {
-      //     this.deviceDetailCSS3D.position.set(mesh.position.x + 0.035, mesh.position.y + 0.68, mesh.position.z + 0.02);
-      //     console.log('[ deviceDetailCSS3D.position ] >', this.deviceDetailCSS3D.position);
-      //     this.deviceDetailCSS3D.visible = true;
-      //     return true;
-      //   }
-      // } else {
-      //   if (this.deviceDetailCSS3D) this.deviceDetailCSS3D.visible = false;
-      //   console.log('[ 点击事件 ] >');
-      // }
       return false;
     });
   }

+ 27 - 7
src/views/vent/monitorManager/gateMonitor/index.vue

@@ -29,9 +29,14 @@
         <div v-if="hasPermission('btn:control') && selectData.deviceType == 'gate_ss'" class="button-box" @click="playAnimation(9)">关闭中间门</div>
         <div v-if="hasPermission('btn:control')" class="button-box" @click="playAnimation(3)">打开后门</div>
         <div v-if="hasPermission('btn:control')" class="button-box" @click="playAnimation(4)">关闭后门</div>
-        <div v-if="hasPermission('btn:control') && selectData.deviceType != 'gate_ss'" class="button-box" @click="playAnimation(5)">同时打开</div>
-        <div v-if="hasPermission('btn:control') && selectData.deviceType != 'gate_ss'" class="button-box" @click="playAnimation(6)">同时关闭</div>
-        <div v-if="hasPermission('btn:controlWindow')" class="button-box" @click="playAnimation(10)">风窗控制</div>
+        <div v-if="!hasPermission('btn:controlWindow') && selectData.deviceType != 'gate_ss'" class="button-box" @click="playAnimation(5)"
+          >同时打开</div
+        >
+        <div v-if="!hasPermission('btn:controlWindow') && selectData.deviceType != 'gate_ss'" class="button-box" @click="playAnimation(6)"
+          >同时关闭</div
+        >
+        <div v-if="hasPermission('btn:controlWindow')" class="button-box" @click="playAnimation(10)">A风窗控制</div>
+        <div v-if="hasPermission('btn:controlWindow')" class="button-box" @click="playAnimation(11)">B风窗控制</div>
       </div>
       <!-- 控制模式 -->
       <div class="top-right row" v-if="hasPermission('btn:remote')">
@@ -300,7 +305,7 @@
   import HandlerHistoryTable from '../comment/HandlerHistoryTable.vue';
   import HandleModal from './modal.vue';
   import DeviceBaseInfo from '../comment/components/DeviceBaseInfo.vue';
-  import { mountedThree, addMonitorText, play, destroy, setModelType, initCameraCanvas } from './gate.threejs';
+  import { mountedThree, addMonitorText, play, destroy, setModelType, computePlay, playWindow } from './gate.threejs';
   import { deviceControlApi } from '/@/api/vent/index';
   import { message } from 'ant-design-vue';
   import { list, getTableList, cameraList, cameraAddrList } from './gate.api';
@@ -574,10 +579,16 @@
         break;
 
       case 10: // 风窗控制
-        modalTitle.value = '风窗控制';
+        modalTitle.value = '前门风窗控制';
         modalType.value = '10';
         modalIsShow.value = true;
         break;
+
+      case 11: // 风窗控制
+        modalTitle.value = '后门风窗控制';
+        modalType.value = '11';
+        modalIsShow.value = true;
+        break;
     }
 
     if (globalConfig?.simulatedPassword) {
@@ -784,10 +795,13 @@
           selectData.autoRoManual = null;
         }
         break;
-      case '10': // 风窗控制
+      case '10': // 前门风窗控制
         data.paramcode = 'frontSetValue';
         data.value = value;
-
+        break;
+      case '11': // 后门风窗控制
+        data.paramcode = 'rearSetValue';
+        data.value = value;
         break;
     }
 
@@ -821,6 +835,8 @@
   let midDeviceState = 0; //记录设备状态,为了与下一次监测数据做比较
   function monitorAnimation(selectData) {
     const timeScale = 0.005;
+    // 带风窗 风窗动画
+    playWindowAnimation(selectData);
 
     if (selectData.frontGateOpen == '1' && selectData.frontGateClose == '0' && !isFrontOpenRunning) {
       isFrontOpenRunning = true;
@@ -922,6 +938,10 @@
     }
   }
 
+  function playWindowAnimation(data, maxarea = 90, isFirst = false) {
+    computePlay(data, maxarea, isFirst);
+  }
+
   function handleCancel() {
     modalIsShow.value = false;
     modalTitle.value = '';

+ 35 - 4
src/views/vent/monitorManager/mainFanMonitor/components/conditionAssistance.vue

@@ -91,7 +91,8 @@
   import { message } from 'ant-design-vue';
   import { formatNum } from '/@/utils/ventutil';
   import { getTableHeaderColumns } from '/@/hooks/web/useWebColumns';
-  import { list } from '../main.api';
+  import { useGlobSetting } from '/@/hooks/setting';
+  const { sysOrgCode } = useGlobSetting();
   const props = defineProps({
     deviceType: {
       type: String,
@@ -182,7 +183,14 @@
         })
       ) - 10;
     // const xDataMax = Math.max.apply(Math, assistanceDataList.map(item => { return item.max }))
-    const xDataMax = 230;
+    let xDataMax;
+    if (sysOrgCode == 'sdmtjtdltmk') {
+      // 大柳塔井特殊处理
+      xDataMax = 260;
+    } else {
+      xDataMax = 230;
+      // xDataMax = 260;
+    }
     fanInfoData.flfw = `${xDataMin}~${xDataMax}`;
     const computeItem = (item: AssistanceItemType) => {
       const min = item.min;
@@ -208,6 +216,7 @@
         type: 'line',
         smooth: true,
         showSymbol: false,
+        symbol: 'none',
         emphasis: {
           focus: 'series',
         },
@@ -276,15 +285,37 @@
 
   function reSetLine() {
     let minIndex = -1;
+    // for (let i = 0; i < yDataList.length; i++) {
+    //   if (i !== lineNum && i != lineNum + 1) {
+    //     if (yDataList[i]['lineStyle']) yDataList[i]['lineStyle']['color'] = '#ffffff88';
+    //     if (yDataList[i]['lineStyle']) yDataList[i]['lineStyle']['width'] = 1;
+    //     if (yDataList[i]['endLabel'] && yDataList[i]['endLabel']['color']) yDataList[i]['endLabel']['color'] = '#39E9FE99';
+    //     if (yDataList[i]['endLabel'] && yDataList[i]['endLabel']['backgroundColor']) yDataList[i]['endLabel']['backgroundColor'] = 'transparent';
+    //     if (yDataList[i]['z']) yDataList[i]['z'] = 1;
+    //   }
+    //   if (`${resultObj.value.Hz}Hz` == yDataList[i]['name']) {
+    //     minIndex = i;
+    //   }
+    // }
+    // if (minIndex != -1) {
+    //   yDataList[minIndex]['lineStyle']['color'] = '#9A60B4';
+    //   yDataList[minIndex]['lineStyle']['width'] = 2;
+    //   yDataList[minIndex]['endLabel']['color'] = '#9A60B4';
+    //   yDataList[minIndex]['endLabel']['backgroundColor'] = '#111';
+    //   yDataList[minIndex]['z'] = 999;
+    // }
     for (let i = 0; i < yDataList.length; i++) {
       if (i !== lineNum && i != lineNum + 1) {
         if (yDataList[i]['lineStyle']) yDataList[i]['lineStyle']['color'] = '#ffffff88';
         if (yDataList[i]['lineStyle']) yDataList[i]['lineStyle']['width'] = 1;
-        if (yDataList[i]['endLabel'] && yDataList[i]['endLabel']['color']) yDataList[i]['endLabel']['color'] = '#39E9FE99';
+        if (yDataList[i]['endLabel'] && yDataList[i]['endLabel']['color']) {
+          yDataList[i]['endLabel']['color'] = '#39E9FE99';
+        }
         if (yDataList[i]['endLabel'] && yDataList[i]['endLabel']['backgroundColor']) yDataList[i]['endLabel']['backgroundColor'] = 'transparent';
         if (yDataList[i]['z']) yDataList[i]['z'] = 1;
       }
-      if (`${resultObj.value.Hz}Hz` == yDataList[i]['name']) {
+
+      if (resultObj.value && `${resultObj.value.Hz}Hz` == yDataList[i]['name']) {
         minIndex = i;
       }
     }

+ 18 - 3
src/views/vent/monitorManager/mainFanMonitor/main.data.ts

@@ -3,6 +3,7 @@ import { FormSchema } from '/@/components/Table';
 import { rules } from '/@/utils/helper/validator';
 import { reactive } from 'vue';
 import type { EChartsOption } from 'echarts';
+import { useGlobSetting } from '/@/hooks/setting';
 
 type CtrlLockOpenType = {
   CtrlLockOpen: boolean | undefined;
@@ -879,6 +880,7 @@ export const option = reactive<EChartsOption>({
 });
 
 export const initData = () => {
+  const { sysOrgCode } = useGlobSetting();
   const assistanceData = {
     '30': {
       angle: 0,
@@ -1071,7 +1073,7 @@ export const initData = () => {
     },
   };
   const num = 21;
-  const a = -0.17624,
+  const a = -0.17624, //-0.17624,
     m = 2770.6411125432646,
     n = -124.15442010894235;
   let i = 21;
@@ -1080,8 +1082,21 @@ export const initData = () => {
     i -= 1;
     const p = i;
     const item = assistanceData[key];
-    item['b'] = 2 * a * (n + p);
-    item['c'] = a * (n + p) * (n + p) + m - i * 50;
+    if (sysOrgCode == 'sdmtjtdltmk') {
+      // 大柳塔井整体向右下移动
+      item['min'] = item['min'] + 20;
+      item['max'] = item['max'] + 20;
+      item['b'] = 2 * a * (n + p) + 3;
+      item['c'] = a * (n + p) * (n + p) + m - i * 60;
+    } else {
+      item['b'] = 2 * a * (n + p);
+      item['c'] = a * (n + p) * (n + p) + m - i * 50;
+      // item['min'] = item['min'] + 20;
+      // item['max'] = item['max'] + 20;
+      // item['b'] = 2 * a * (n + p) + 3;
+      // item['c'] = a * (n + p) * (n + p) + m - i * 60;
+    }
+
     data.push(item);
   }
   console.log(data);

+ 292 - 7
src/views/vent/monitorManager/nitrogen/components/nitrogenHomeBLT.vue

@@ -62,13 +62,14 @@
   <div class="nitrogen-home">
     <div style="position: absolute; color: #fff; top: 30px; pointer-events: auto; display: flex">
       <div
-        v-for="(sysItem, sysIndex) in monitorDataGroupArr"
+        v-for="(sysItem, sysIndex) in ['北风井', '南风井']"
         :key="sysIndex"
         class="tab-button-box"
         :class="{ 'tab-button-box-active': monitorDataGroupFlag == sysIndex + 1 }"
         @click="setMonitorGroupNum(sysIndex + 1)"
-        >{{ monitorData['deviceType'] === 'forcFan_north' ? '北风井' : '南风井' }} (运行: <p style="padding: 0 5px"></p
-        ><span
+        >{{ sysItem }}
+        <!-- (运行: <p style="padding: 0 5px"></p>
+        <span
           :class="{
             'signal-round': true,
             'signal-round-run':
@@ -86,9 +87,9 @@
             'signal-round-gry':
               sysIndex + 1 == 1 ? sysStateList[sysIndex] && !sysStateList[sysIndex].fault : sysStateList1[sysIndex] && !sysStateList1[sysIndex].fault,
           }"
-        ></span
-        ><p style="padding: 0 5px"></p> )</div
-      >
+        ></span>
+        <p style="padding: 0 5px"></p> ) -->
+      </div>
     </div>
     <div class="total-data">
       <div class="vent-flex-row">
@@ -222,7 +223,291 @@
   }
 
   async function getDataSource() {
-    const res = await list({ devicetype: 'forcFan', pagetype: 'normal' });
+    // const res = await list({ devicetype: 'forcFan', pagetype: 'normal' });
+    const res = {
+      cmd: 'monitordata',
+      msgTxt: [
+        {
+          datalist: [
+            {
+              msgType: null,
+              deviceID: '1749326253834444802',
+              strname: '北风井压风',
+              strinstallpos: '北风井压风',
+              fsectarea: 'null',
+              stationname: '北风井压风',
+              stationtype: 'redis',
+              deviceType: 'forcFan_north',
+              typeName: '压风机北',
+              netStatus: 1,
+              warnFlag: 0,
+              warnLevel: 0,
+              warnLevel_str: '正常',
+              syswarnLevel: null,
+              syswarnLevel_str: null,
+              syswarnLevel_des: null,
+              warnTime: null,
+              readTime: '2024-12-02 18:40:56',
+              warnDes: '',
+              frontGateOpenCtrl: null,
+              rearGateOpenCtrl: null,
+              readData: {
+                PRE1_CPR_InletPre: '2.00',
+                PRE2_CPR_HeadTemp: '13.00',
+                PRE1_MOT_PhaseATemp: '56.40',
+                PRE2_MOT_PhaseAOverTemp: '0',
+                sign: '0',
+                PRE1_CPR_UnLoadPre: '6.20',
+                PRE1_CPR_LoadorUnload: '0',
+                PRE2_CPR_ExhaustTemp: '15.00',
+                PRE2_FaultSignal1: '0',
+                PRE2_CPR_LoadorUnload: '1',
+                PRE2_MOT_PhaseCOverTemp: '0',
+                PRE1_MOT_PhaseBOverTemp: '0',
+                PRE1_CPR_ExhaustPre: '6.40',
+                PRE1_MOT_FrontAxleTemp2: '35.80',
+                PRE1_MOT_FrontAxleTemp1: '0.00',
+                PRE2_CPR_CoolantTemp: '12.00',
+                PRE1_FaultSignal: '0',
+                PRE2_FaultSignal: '0',
+                PRE2_MOT_FrontAxleTemp: '0.00',
+                PRE1_MOT_TotalRunTime: '5477.00',
+                PRE1_CPR_LoadTime: '2405.00',
+                PRE2_CPR_LoadTime: '4464.00',
+                PRE1_CPR_HeadTemp: '86.00',
+                PRE1_MOT_PhaseAOverTemp: '0',
+                PRE2_MOT_PhaseBTemp: '18.50',
+                PRE2_HostorLoc: '0',
+                PRE2_MOT_TotalRunTime: '6534.00',
+                PRE2_MOT_BackAxleTemp: '0.00',
+                PRE2_MOT_RunReturn: '0',
+                TotalInPipeFlow: '869.00',
+                PRE2_CPR_InletPre: '0.00',
+                PRE1_FaultSignal1: '0',
+                PRE2_CPR_ExhaustPre: '5.90',
+                PRE2_MOT_Current: '0.00',
+                PRE1_MOT_BackAxleTemp: '0.00',
+                PRE1_MOT_Current: '24.50',
+                PRE2_MOT_PhaseATemp: '18.20',
+                PRE1_MOT_PhaseCOverTemp: '0',
+                PRE2_MOT_PhaseBOverTemp: '0',
+                PRE1_HostorLoc: '0',
+                PRE1_CPR_LoadPre: '7.00',
+                PRE1_CPR_SeparationCylinderPressure: '77.00',
+                PRE1_MOT_RunReturn: '1',
+                PRE2_MOT_CtrlMode: '1',
+                PRE1_MOT_CtrlMode: '0',
+                PRE2_CPR_LoadPre: '7.00',
+                PRE1_MOT_PhaseCTemp: '32.60',
+                TotalOutPipePre: '6.40',
+                PRE1_CPR_CoolantTemp: '64.00',
+                PRE1_MOT_PhaseBTemp: '59.30',
+                PRE2_MOT_PhaseCTemp: '18.20',
+                PRE2_CPR_UnLoadPre: '6.20',
+                PRE2_CPR_SeparationCylinderPressure: '5.90',
+                isRun: '-2',
+                PRE1_CPR_ExhaustTemp: '23.20',
+              },
+              readDataDes: null,
+              summaryHour: [],
+              summaryDay: [],
+              history: [],
+              dayhistory: [],
+              totalInfo: null,
+              sign: null,
+              cameras: [
+                {
+                  id: '1854452465886429185',
+                  addr: 'c70e0a6f7e0947368e4d9acd37bb3bac',
+                  name: '北压风机房',
+                  devicekind: 'toHKHLs',
+                  cameraRate: null,
+                },
+                {
+                  id: '1854452718454833154',
+                  addr: 'dfa82251816845a4a1c7957384bf2443',
+                  name: '北压风机房变电所',
+                  devicekind: 'toHKHLs',
+                  cameraRate: null,
+                },
+              ],
+              links: [],
+              other1: null,
+              other2: null,
+              other3: null,
+              remarkInfo: null,
+              linkInfo: null,
+              addrIndex: null,
+              warnLogNotOkCount: 0,
+              otherInfo: null,
+            },
+            {
+              msgType: null,
+              deviceID: '1749326210754748418',
+              strname: '南风井压风',
+              strinstallpos: '南风井压风',
+              fsectarea: 'null',
+              stationname: '南风井压风',
+              stationtype: 'redis',
+              deviceType: 'forcFan_south',
+              typeName: '压风机南',
+              netStatus: 1,
+              warnFlag: 0,
+              warnLevel: 0,
+              warnLevel_str: '正常',
+              syswarnLevel: null,
+              syswarnLevel_str: null,
+              syswarnLevel_des: null,
+              warnTime: null,
+              readTime: '2024-12-02 18:40:56',
+              warnDes: '',
+              frontGateOpenCtrl: null,
+              rearGateOpenCtrl: null,
+              readData: {
+                PRE1_MOT_FrontAxleOverTempAlam: '0',
+                PRE3_MOT_PhaseBTempStop: '0',
+                PRE3_CPR_CoolantTemp: '72.00',
+                PRE1_MOT_PhaseATemp: '83.40',
+                PRE2_MOT_PhaseCTempStop: '0',
+                PRE2_MOT_PhaseAOverTemp: '0',
+                PRE2_MOT_BackAxleOverTempAlam: '0',
+                PRE3_AlarmHistory: '0.00',
+                PRE1_MOT_BackAxleOverTempStop: '0',
+                PRE2_CPR_LoadorUnload: '1',
+                PRE3_MOT_PhaseBTemp: '74.80',
+                PRE1_MOT_PhaseBOverTemp: '0',
+                PRE1_CPR_ExhaustPre: '5.00',
+                PRE3_MOT_RunReturn: '1',
+                PRE1_ExitPressure: '26214.00',
+                PRE2_ExitPressure: '5130.00',
+                PRE1_CPR_LoadTime: '8272.00',
+                PRE2_CPR_LoadTime: '424.00',
+                PRE1_MOT_PhaseAOverTemp: '0',
+                PRE2_MOT_Power: '0.00',
+                PRE3_CPR_LoadTime: '244.00',
+                PRE2_MOT_PhaseBTempStop: '0',
+                PRE1_MOT_PhaseATempStop: '0',
+                PRE2_MOT_RunReturn: '1',
+                PRE2_AlarmHistory: '3.10',
+                PRE1_Status: '8454',
+                PRE3_MOT_PhaseATempStop: '0',
+                PRE2_CPR_ExhaustPre: '5.10',
+                PRE3_CPR_ExhaustTemp: '48.00',
+                PRE3_MOT_TotalRunTime: '244.00',
+                PRE1_MOT_BackAxleTemp: '0.00',
+                PRE3_MOT_PhaseAOverTemp: '0',
+                PRE2_MOT_PhaseATemp: '71.20',
+                PRE2_MOT_BackAxleOverTempStop: '0',
+                PRE3_MOT_FrontAxleOverTempAlam: '0',
+                PRE3_MOT_BackAxleOverTempStop: '0',
+                PRE1_HostorLoc: '0',
+                PRE1_CPR_LoadPre: '6.30',
+                PRE1_MOT_RunReturn: '1',
+                PRE3_CPR_LoadPre: '6.30',
+                PRE1_MOT_CtrlMode: '1',
+                PRE2_CPR_LoadPre: '6.30',
+                PRE3_MOT_CtrlMode: '1',
+                PRE3_CPR_LoadorUnload: '1',
+                PRE1_CPR_CoolantTemp: '71.00',
+                PRE1_MOT_PhaseBTemp: '83.10',
+                PRE2_MOT_FrontAxleOverTempAlam: '0',
+                PRE2_MOT_PhaseCTemp: '57.20',
+                PRE3_MOT_PhaseCTemp: '73.80',
+                PRE2_CPR_HeadTemp: '98.00',
+                sign: '0',
+                PRE1_CPR_UnLoadPre: '7.00',
+                PRE1_CPR_LoadorUnload: '1',
+                PRE3_CPR_ExhaustPre: '5.10',
+                PRE2_MOT_PhaseATempStop: '0',
+                PRE1_MOT_PhaseBTempStop: '0',
+                PRE2_CPR_ExhaustTemp: '62.00',
+                PRE2_MOT_PhaseCOverTemp: '0',
+                PRE3_MOT_PhaseBOverTemp: '0',
+                PRE3_FaultSignal: '0',
+                PRE3_MOT_Power: '1000.00',
+                PRE3_MOT_PhaseATemp: '82.20',
+                PRE2_CPR_CoolantTemp: '76.00',
+                PRE3_HostorLoc: '0',
+                PRE2_FaultSignal: '0',
+                PRE1_FaultSignal: '0',
+                PRE2_MOT_FrontAxleTemp: '0.00',
+                PRE3_MOT_BackAxleTemp: '20.50',
+                PRE1_MOT_TotalRunTime: '22.00',
+                PRE3_MOT_FrontAxleTemp: '43.10',
+                PRE1_CPR_HeadTemp: '92.00',
+                PRE1_MOT_PhaseCTempStop: '0',
+                PRE3_MOT_BackAxleOverTempAlam: '0',
+                PRE2_HostorLoc: '0',
+                PRE3_MOT_FrontAxleOverTempStop: '0',
+                PRE2_MOT_PhaseBTemp: '64.20',
+                PRE3_MOT_PhaseCTempStop: '0',
+                PRE3_CPR_HeadTemp: '95.00',
+                PRE2_MOT_TotalRunTime: '2802.00',
+                PRE1_MOT_BackAxleOverTempAlam: '0',
+                PRE2_MOT_BackAxleTemp: '0.00',
+                TotalInPipeFlow: '1005.80',
+                PRE3_CPR_UnLoadPre: '7.00',
+                PRE3_MOT_PhaseCOverTemp: '0',
+                PRE1_MOT_PhaseCOverTemp: '0',
+                PRE1_MOT_FrontAxleTemp: '0.00',
+                PRE2_MOT_PhaseBOverTemp: '0',
+                PRE1_MOT_Power: '0.00',
+                PRE1_MOT_FrontAxleOverTempStop: '0',
+                PRE2_MOT_CtrlMode: '1',
+                PRE1_MOT_PhaseCTemp: '82.90',
+                TotalOutPipePre: '5.60',
+                PRE1_AlarmHistory: '2.00',
+                PRE2_MOT_FrontAxleOverTempStop: '0',
+                PRE2_CPR_UnLoadPre: '7.00',
+                isRun: '-2',
+                PRE1_CPR_ExhaustTemp: '56.00',
+              },
+              readDataDes: null,
+              summaryHour: [],
+              summaryDay: [],
+              history: [],
+              dayhistory: [],
+              totalInfo: null,
+              sign: null,
+              cameras: [
+                {
+                  id: '1854452219160690689',
+                  addr: 'd37096a7d41244a1974bd99b4e2cfe35',
+                  name: '南压风机房配电室',
+                  devicekind: 'toHKHLs',
+                  cameraRate: null,
+                },
+                {
+                  id: '1854452329282142210',
+                  addr: '0f22a6377b084f8bb74435ef9eeff958',
+                  name: '南压风机',
+                  devicekind: 'toHKHLs',
+                  cameraRate: null,
+                },
+              ],
+              links: [],
+              other1: null,
+              other2: null,
+              other3: null,
+              remarkInfo: null,
+              linkInfo: null,
+              addrIndex: null,
+              warnLogNotOkCount: 0,
+              otherInfo: null,
+            },
+          ],
+          avginfo: {
+            warnFlag: {
+              value: 0,
+            },
+          },
+          typeName: '压风机',
+          type: 'forcFan',
+          locallist: [],
+        },
+      ],
+    };
+
     if (res.msgTxt[0] && res.msgTxt[0].datalist && res.msgTxt[0].datalist.length > 0) {
       let dataSource;
       let dataSourceNorth = res.msgTxt[0].datalist.find((item) => item.deviceType === 'forcFan_north');

+ 1 - 1
src/views/vent/monitorManager/windowMonitor/index.vue

@@ -344,7 +344,7 @@
   };
 
   // 判断前后窗的面积是否发生改变,如果改变则开启动画
-  const playAnimation = (data, maxarea, isFirst = false) => {
+  const playAnimation = (data, maxarea = 90, isFirst = false) => {
     computePlay(data, maxarea, isFirst);
   };
 

+ 1 - 1
src/views/vent/monitorManager/windowMonitor/window.threejs.ts

@@ -246,7 +246,7 @@ export const mountedThree = (playerDom) => {
       singleWindowObj = new singleWindow(model);
     }
 
-    if (sysOrgCode === 'sdmtjtswmk') {
+    if (sysOrgCode === 'sdmtjtswmk' || sysOrgCode === 'sdmtjtbltmk') {
       const doubleWindow = await import('./shuangdaoFcSw.threejs');
       if (doubleWindow) doubleWindowObj = new doubleWindow.default(model);
     } else {