瀏覽代碼

[Mod 0000] 添加注氮新文件

hongrunxia 5 天之前
父節點
當前提交
3814d9b6b8

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

@@ -279,6 +279,5 @@ export function createPermissionGuard(router: Router) {
 
   router.afterEach(async (to, from) => {
     await addBrowseLog(to, from);
-    // await addBrowseOuterLog(from);
   });
 }

+ 420 - 414
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">
@@ -48,8 +49,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>
           <!-- 风量监测 -->
@@ -74,482 +77,485 @@
       </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 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 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.deviceType == 'majorpath') {
+      router.push(`/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=sys_majorpath&deviceid=${deviceType.id}`);
     }
-  } else if (deviceType == 'windrect') {
-    router.push('/monitorChannel/monitor-windrect');
-  } else if (deviceType == 'warning') {
-    router.push('/monitorChannel/monitor-alarm-home');
-  } else if (deviceType.deviceType == 'majorpath') {
-    router.push(`/micro-vent-3dModal/dashboard/analysis?type=tunMonitor&deviceType=sys_majorpath&deviceid=${deviceType.id}`);
   }
-}
-function goHome() {
-  pageType.value = 'home';
-}
-
-function getList() {
-  list({}).then((res) => {
-    fanLocalList.length = 0;
-    fanLocalList.push(res.fanlocal);
-    mainList.value = res.fanmain || [];
-    if (res.midinfo[0].sysdata) {
-      centerList = res.midinfo[0].sysdata;
-      // 总回
-      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 };
-            })
-          : [];
-      // 有效风量率
-      navList[3].val = `${res.midinfo[0].sysinfo.useM3Perent}%` || '--';
-
-      // 外部漏风率
-      navList[4].val =
-        res.midinfo[0].sysinfo.externalRate ||
-        (
-          ((Number(res.midinfo[0].sysdata.zongfengliang) - Number(res.midinfo[0].sysdata.zongjinfeng)) /
-            Number(res.midinfo[0].sysdata.zongfengliang)) *
-          100
-        ).toFixed(1) + '%';
-    }
-    flList.value = res.windrect || res.sys_wind;
+  function goHome() {
+    pageType.value = 'home';
+  }
 
-    if (res.sys_majorpath.length != 0) {
-      lineList.value = res.sys_majorpath;
-    } else {
-      let paramArr: any = [];
-      lineList.value = paramArr;
-    }
+  function getList() {
+    list({}).then((res) => {
+      fanLocalList.length = 0;
+      fanLocalList.push(res.fanlocal);
+      mainList.value = res.fanmain || [];
+      if (res.midinfo[0].sysdata) {
+        centerList = res.midinfo[0].sysdata;
+        // 总回
+        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 };
+                })
+            : [];
+        // 有效风量率
+        navList[3].val = `${res.midinfo[0].sysinfo.useM3Perent}%` || '--';
+
+        // 外部漏风率
+        navList[4].val =
+          res.midinfo[0].sysinfo.externalRate ||
+          (
+            ((Number(res.midinfo[0].sysdata.zongfengliang) - Number(res.midinfo[0].sysdata.zongjinfeng)) /
+              Number(res.midinfo[0].sysdata.zongfengliang)) *
+            100
+          ).toFixed(1) + '%';
+      }
+      flList.value = res.windrect || res.sys_wind;
 
-    if (res.sys_surface_caimei.length != 0) {
-      workList.value = res.sys_surface_caimei;
-    } else {
-      let paramArr: any = [];
-      workList.value = getDate(paramArr);
-    }
+      if (res.sys_majorpath.length != 0) {
+        lineList.value = res.sys_majorpath;
+      } else {
+        let paramArr: any = [];
+        lineList.value = paramArr;
+      }
 
-    warnData.value = res.warn || [];
-    deviceData.value = res.device || {};
+      if (res.sys_surface_caimei.length != 0) {
+        workList.value = res.sys_surface_caimei;
+      } else {
+        let paramArr: any = [];
+        workList.value = getDate(paramArr);
+      }
 
-    // 大海则、红柳林不需要漏风率
-    if (sysOrgCode === 'sdtljtdhzmk' || sysOrgCode === 'smjthllmk') {
-      navList[4].val = 0;
-    }
-  });
-}
-
-//获取当前时间年月日时分秒
-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';
+      warnData.value = res.warn || [];
+      deviceData.value = res.device || {};
+
+      // 大海则、红柳林不需要漏风率
+      if (sysOrgCode === 'sdtljtdhzmk' || sysOrgCode === 'smjthllmk') {
+        navList[4].val = 0;
+      }
+    });
   }
-  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;
+
+  //获取当前时间年月日时分秒
+  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;
+            }
           }
         }
       }
-    }
+    });
+    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%;
+            background: url('../../../../assets/images/home-container/three-nav.png') no-repeat;
 
-            .item-label {
-              color: #98f5ff;
-            }
-
-            .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%;
 
-              .bg-box {
+              .item-label {
+                color: #98f5ff;
+              }
+
+              .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>

+ 2 - 1
src/views/vent/monitorManager/compressor/components/nitrogenHome.vue

@@ -261,7 +261,7 @@
   ];
 
   const monitorData = ref(
-    new Array(3).fill({
+    new Array(4).fill({
       strName: '空压机',
       cumulativeFlow: '-',
       centerTemperature: '-',
@@ -336,6 +336,7 @@
   function handlerControlModel(data) {}
 
   watch([monitorDataGroupNum, loading], ([newMonitorDataGroupNum, newLoading]) => {
+    debugger;
     nextTick(() => {
       if (newMonitorDataGroupNum && !newLoading) {
         setModelType(props.modalType, newMonitorDataGroupNum);

+ 747 - 0
src/views/vent/monitorManager/compressor/components/nitrogenHome_dtyj.vue

@@ -0,0 +1,747 @@
+<template>
+  <!-- <div
+    id="nitrogenCss3D"
+    class="threejs-Object-CSS"
+    style="width: 100%; height: 100%; position: absolute; pointer-events: none; overflow: hidden; z-index: 2; top: 0px; left: 0px"
+  >
+    <a-spin :spinning="loading" />
+    <template>
+      <div v-for="groupNum in monitorDataGroupNum" :key="groupNum" class="modal-monitor">
+        <fourBorderBg :class="`kyj${groupNum}`" :id="`nitrogenMonitor${groupNum}`">
+          <div class="title">{{ monitorData[groupNum - 1]['strname'] }} </div>
+          <div class="monitor-item">
+            <span class="monitor-title">注氮压力:</span>
+            <span class="monitor-val"
+              ><span class="val">{{ monitorData[groupNum - 1]['nitrogenPressure'] ? monitorData[groupNum - 1]['nitrogenPressure'] : '-' }}</span
+              ><span class="unit">Mpa</span></span
+            >
+          </div>
+          <div class="monitor-item">
+            <span class="monitor-title">氮气实时流量:</span>
+            <span class="monitor-val"
+              ><span class="val">{{ monitorData[groupNum - 1]['instantaneousFlow'] ? monitorData[groupNum - 1]['instantaneousFlow'] : '-' }}</span
+              ><span class="unit">m³/h</span></span
+            >
+          </div>
+          <div class="monitor-item">
+            <span class="monitor-title">氮气浓度:</span>
+            <span class="monitor-val"
+              ><span class="val">{{ monitorData[groupNum - 1]['nitrogenContent'] ? monitorData[groupNum - 1]['nitrogenContent'] : '-' }}</span
+              ><span class="unit">%</span></span
+            >
+          </div>
+          <div class="signal-item">
+            <div class="signal"
+              ><span class="monitor-title">运行信号</span
+              ><span
+                :class="{
+                  'signal-round': true,
+                  'signal-round-run': monitorData[groupNum - 1]['compressRunSigF1'],
+                  'signal-round-gry': !monitorData[groupNum - 1]['compressRunSigF1'],
+                }"
+              ></span>
+            </div>
+            <div class="signal"
+              ><span class="monitor-title">加载信号</span
+              ><span
+                :class="{
+                  'signal-round': true,
+                  'signal-round-run': monitorData[groupNum - 1]['compressLoadSigF1'],
+                  'signal-round-gry': !monitorData[groupNum - 1]['compressLoadSigF1'],
+                }"
+              ></span>
+            </div>
+          </div>
+        </fourBorderBg>
+      </div>
+    </template>
+  </div> -->
+  <div id="nitrogen3D" style="width: 100%; height: 100%; position: absolute; overflow: hidden"></div>
+  <div class="nitrogen-home">
+    <div class="nitrogen-container">
+      <div v-if="monitorNetStatus == 0" class="device-state">网络断开</div>
+      <div class="top-box">
+        <!-- 左边监测数据 -->
+        <div class="lr-box left-box">
+          <div class="item item-l" v-for="groupNum in monitorDataGroupNum" :key="groupNum">
+            <ventBox1>
+              <template #title>
+                <div>{{ monitorData[groupNum - 1]['strname'] }}</div>
+              </template>
+              <template #container>
+                <div class="monitor-box">
+                  <div class="parameter-title group-parameter-title"
+                    ><SvgIcon class="icon" size="38" name="device-group-paramer" /><span>机组参数</span></div
+                  >
+                  <div class="state-item" v-for="(data, index) in groupParameterData" :key="index">
+                    <div class="item-col">
+                      <span class="state-title">{{ Object.values(data)[0] }} :</span>
+                      <span class="state-val">{{
+                        (monitorData.length > 0 && monitorData[groupNum - 1][Object.keys(data)[0]]) >= 0
+                          ? monitorData[groupNum - 1][Object.keys(data)[0]]
+                          : '-'
+                      }}</span>
+                    </div>
+                    <div class="item-col" v-if="Object.keys(data)[1]">
+                      <span class="state-title">{{ Object.values(data)[1] }} :</span>
+                      <span class="state-val">{{
+                        (monitorData.length > 0 && monitorData[groupNum - 1][Object.keys(data)[1]]) >= 0
+                          ? monitorData[groupNum - 1][Object.keys(data)[1]]
+                          : '-'
+                      }}</span>
+                    </div>
+                  </div>
+                </div>
+                <div class="monitor-box">
+                  <div class="parameter-title device-parameter-title"
+                    ><SvgIcon class="icon" size="32" name="device-paramer" /><span>电机数据</span></div
+                  >
+                  <div class="state-item" v-for="(data, index) in deviceParameterData" :key="index">
+                    <div class="item-col">
+                      <span class="state-title">{{ Object.values(data)[0] }} :</span>
+                      <span class="state-val">{{
+                        (monitorData.length > 0 && monitorData[groupNum - 1][Object.keys(data)[0]]) >= 0
+                          ? monitorData[groupNum - 1][Object.keys(data)[0]]
+                          : '-'
+                      }}</span>
+                    </div>
+                    <div class="item-col" v-if="Object.keys(data)[1]">
+                      <span class="state-title">{{ Object.values(data)[1] }} :</span>
+                      <span class="state-val">{{
+                        (monitorData.length > 0 && monitorData[groupNum - 1][Object.keys(data)[1]]) >= 0
+                          ? monitorData[groupNum - 1][Object.keys(data)[1]]
+                          : '-'
+                      }}</span>
+                    </div>
+                  </div>
+                </div>
+              </template>
+            </ventBox1>
+          </div>
+        </div>
+        <!-- 右边控制状态 -->
+        <div class="lr-box right-box">
+          <ventBox1>
+            <template #title>
+              <div>远程控制</div>
+            </template>
+            <template #container>
+              <div class="control-group">
+                <div class="control-item" v-for="groupNum in monitorDataGroupNum" :key="groupNum">
+                  <div class="control-item-title">{{ monitorData[groupNum - 1]['strname'] }}</div>
+                  <div class="control-item-state">
+                    <a-switch
+                      v-model="airCompressorState[groupNum - 1][`compressRunSigF1`]"
+                      size="small"
+                      checked-children="开启"
+                      un-checked-children="关闭"
+                      :disabled="airCompressorState[groupNum - 1][`controlModel`]"
+                      @change="handlerDevice(airCompressorState[groupNum - 1])"
+                    />
+                  </div>
+                </div>
+                <div class="control-item" v-for="groupNum in monitorDataGroupNum" :key="groupNum">
+                  <div class="control-item-title">{{ kyjs[groupNum - 1] }}</div>
+                  <div class="control-item-state">
+                    <a-switch
+                      v-model="airCompressorState[groupNum - 1][`compressRunSigF1`]"
+                      size="small"
+                      checked-children="开启"
+                      un-checked-children="关闭"
+                      :disabled="airCompressorState[groupNum - 1][`controlModel`]"
+                      @change="handlerDevice(airCompressorState[groupNum - 1])"
+                    />
+                  </div>
+                </div>
+                <div class="control-item">
+                  <div class="control-item-title">是否开启联动</div>
+                  <div class="control-item-state">
+                    <a-radio v-model:checked="isLink">开启</a-radio>
+                  </div>
+                </div>
+              </div>
+            </template>
+          </ventBox1>
+          <ventBox1 class="vent-margin-t-10">
+            <template #title>
+              <div>设备实时监测曲线</div>
+            </template>
+            <template #container>
+              <BarAndLineCustom xAxisPropType="readTime" :chartData="monitorData" height="240px" :propTypeArr="['flowRate']" :option="zhudanOption" />
+            </template>
+          </ventBox1>
+          <div class="vent-margin-t-10">
+            <!-- <LivePlayer id="fm-player1" style="height: 250px;" ref="player1" :videoUrl="flvURL1()" muted live loading controls /> -->
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script lang="ts" setup name="nitrogenHome">
+  import { onMounted, onUnmounted, ref, watch, reactive, defineProps, nextTick } from 'vue';
+  import ventBox1 from '/@/components/vent/ventBox1.vue';
+  import fourBorderBg from '../../../comment/components/fourBorderBg.vue';
+  import { mountedThree, destroy, setModelType } from '../nitrogen.threejs';
+  import { list } from '../nitrogen.api';
+  import { SvgIcon } from '/@/components/Icon';
+  import LivePlayer from '@liveqing/liveplayer-v3';
+  import BarAndLineCustom from '/@/components/chart/BarAndLineCustom.vue';
+  import { zhudanOption } from '../nitrogen.data.ts';
+
+  const props = defineProps({
+    deviceId: {
+      type: String,
+      require: true,
+    },
+    modalType: {
+      type: String,
+      require: true,
+    },
+  });
+  const loading = ref(true);
+  const isLink = ref(true);
+  const isRefresh = ref(true);
+
+  const zdjs = ['1号制氮机', '2号制氮机', '3号制氮机', '4号制氮机'];
+  const kyjs = ['1号空压机', '1号空压机', '1号空压机', '1号空压机'];
+
+  const flvURL1 = () => {
+    return `https://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/flv/xgplayer-demo-360p.flv`;
+    // return ''
+  };
+  const monitorNetStatus = ref(0);
+  const monitorDataGroupNum = ref(0);
+
+  const airCompressorState = reactive([
+    {
+      id: '',
+      compressRunSigF1: false,
+      controlModel: false,
+    },
+    {
+      id: '',
+      compressRunSigF1: false,
+      controlModel: false,
+    },
+    {
+      id: '',
+      compressRunSigF1: false,
+      controlModel: false,
+    },
+    {
+      id: '',
+      compressRunSigF1: false,
+      controlModel: false,
+    },
+  ]);
+
+  const groupParameterData = [
+    {
+      cumulativeFlow: '累计流量(m³)',
+      centerTemperature: '加热器中心温度',
+    },
+    {
+      outletTemperature: '加热器出口温度',
+    },
+  ];
+  const deviceParameterData = [
+    {
+      Ia: 'A项电流(A)',
+      Ib: 'B项电流(A)',
+    },
+    {
+      Ic: 'c项电流(A)',
+      Vab: 'AB项间电压(V)',
+    },
+    {
+      Vac: 'AC项间电压(V)',
+      Vbc: 'BC项间电压(V)',
+    },
+  ];
+
+  const monitorData = ref(
+    new Array(4).fill({
+      strName: '空压机',
+      cumulativeFlow: '-',
+      centerTemperature: '-',
+      outletTemperature: '-',
+      Ia: '-',
+      Ib: '-',
+      Ic: '-',
+      Vab: '-',
+      Vac: '-',
+      Vbc: '-',
+      compressGroupName: '',
+      compressExhaustPressF1: '-',
+      compressSeparatePressF1: '-',
+      compressHostTempF1: '-',
+      compressCrewTempF1: '-',
+      compressRunTimeF1: '-',
+      controlModel: 'LOC',
+    })
+  );
+
+  // https获取监测数据
+  let timer: null | NodeJS.Timeout = null;
+  async function getMonitor(flag?) {
+    if (Object.prototype.toString.call(timer) === '[object Null]') {
+      timer = await setTimeout(
+        async () => {
+          if (props.deviceId) {
+            await getDataSource(props.deviceId);
+          }
+          if (timer) {
+            timer = null;
+          }
+          await getMonitor();
+        },
+        flag ? 0 : 1000
+      );
+    }
+  }
+
+  async function getDataSource(systemID) {
+    const res = await list({ devicetype: 'sys', systemID, type: 'all' });
+    const result = res.msgTxt;
+    if (!result || result.length < 1) return;
+    result.forEach((item) => {
+      if (item.type === 'nitrogen_auto') {
+        let netStatus = 0;
+        monitorData.value = item['datalist'].filter((data) => {
+          if (data['netStatus'] == 1) {
+            netStatus = 1;
+          }
+          const item = data.readData;
+          return Object.assign(data, item);
+        });
+        monitorNetStatus.value = netStatus;
+      }
+    });
+    monitorDataGroupNum.value = monitorData.value.length;
+  }
+
+  function handlerDevice(data) {
+    // if (data.length < 1) return
+    // handleAirCompressor({ id: data.id, compressRunF1: data.compressRunSigF1 }).then(res => {
+    //   if (res.success) {
+    //     message.success('操作成功')
+    //   } else {
+    //     message.warning(data.msg)
+    //   }
+    // })
+  }
+  function resetDevice(data) {}
+
+  function handlerControlModel(data) {}
+
+  watch([monitorDataGroupNum, loading], ([newMonitorDataGroupNum, newLoading]) => {
+    debugger;
+    nextTick(() => {
+      if (newMonitorDataGroupNum && !newLoading) {
+        setModelType(props.modalType, newMonitorDataGroupNum);
+      }
+    });
+  });
+
+  onMounted(async () => {
+    await getMonitor(true);
+    await mountedThree().then(() => {
+      loading.value = false;
+    });
+  });
+
+  onUnmounted(() => {
+    destroy();
+    if (timer) {
+      clearTimeout(timer);
+      timer = undefined;
+    }
+  });
+</script>
+
+<style lang="less" scoped>
+  @ventSpace: zxm;
+
+  .nitrogen-box {
+    width: 100%;
+    height: 100%;
+    display: flex;
+    justify-content: center;
+  }
+  #nitrogenCss3D {
+    .modal-monitor {
+      width: 200px;
+      position: absolute;
+      left: 0px;
+      top: 0px;
+    }
+    &:deep(.win) {
+      margin: 0 !important;
+      background: #00000044;
+    }
+  }
+  .nitrogen-home {
+    width: 100%;
+    height: 100%;
+    position: fixed;
+    z-index: 9999;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    pointer-events: none;
+    top: 60px;
+    .nitrogen-container {
+      width: 100%;
+      height: calc(100% - 100px);
+      display: flex;
+      justify-content: space-between;
+      margin-bottom: 100px;
+      .device-state {
+        width: 100%;
+        position: absolute;
+        top: 70px;
+        color: #e90000;
+        display: flex;
+        justify-content: center;
+        font-size: 20px;
+      }
+      .top-box {
+        width: 100%;
+        padding: 10px;
+        overflow: hidden;
+        display: flex;
+        justify-content: space-between;
+
+        .lr-box {
+          height: fit-content;
+          display: flex;
+          flex-direction: column;
+          position: relative;
+          overflow: hidden;
+          z-index: 9999;
+          pointer-events: auto;
+        }
+
+        .item {
+          width: 335px;
+          height: auto;
+          position: relative;
+          border-radius: 5px;
+          margin-top: 10px;
+          margin-bottom: 0px;
+          pointer-events: auto;
+          color: #fff;
+          overflow: hidden;
+          &:first-child {
+            margin-top: 0px;
+          }
+
+          .base-title {
+            color: #fff;
+            margin-bottom: 8px;
+            padding-left: 10px;
+            position: relative;
+            font-size: 16px;
+            &::after {
+              content: '';
+              position: absolute;
+              display: block;
+              width: 4px;
+              height: 12px;
+              top: 7px;
+              left: 0px;
+              background: #45d3fd;
+              border-radius: 4px;
+            }
+          }
+
+          .state-item {
+            display: flex;
+            flex-direction: row;
+            padding: 5px;
+
+            .item-col {
+              width: calc(50% - 5px);
+              display: flex;
+              justify-content: center;
+              align-items: center;
+              padding-right: 4px;
+              background-image: linear-gradient(to right, #39a3ff00, #39a3ff10);
+              &:first-child {
+                margin-right: 10px;
+              }
+
+              .state-title {
+                color: #ffffffcc;
+                flex: 9;
+                font-size: 14px;
+              }
+
+              .state-val {
+                flex: 1;
+                color: #00eefffe;
+                margin-right: 5px;
+                text-align: right;
+                font-size: 14px;
+              }
+            }
+          }
+
+          .signal-box {
+            margin: 5px 0;
+            display: flex;
+            align-items: center;
+
+            .signal-title {
+              color: #7af5ff;
+              margin: 0 5px;
+            }
+
+            &:last-child {
+              margin-right: 0px;
+            }
+          }
+
+          .list-item {
+            padding: 0 10px;
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+
+            .item-data-key {
+              color: #ffffff99;
+            }
+          }
+
+          .item-data-box {
+            color: #fff;
+
+            .state-icon {
+              display: inline-block;
+              width: 12px;
+              height: 12px;
+              border-radius: 12px;
+            }
+
+            .open {
+              border: 5px solid #133a56;
+              background: #4ecb73;
+            }
+
+            .close {
+              border: 5px solid #192961;
+              background: #6d7898;
+            }
+          }
+        }
+
+        .item-l {
+          width: 100%;
+          .monitor-box {
+            width: 100%;
+            .parameter-title {
+              position: relative;
+              width: 100%;
+              height: 14px;
+              margin-top: 10px;
+              .icon,
+              span {
+                position: absolute;
+                top: -10px;
+              }
+            }
+            .group-parameter-title {
+              background-image: linear-gradient(to right, #39a3ff50, #39a3ff00);
+
+              .icon {
+                left: -12px;
+                top: -17px;
+              }
+              span {
+                left: 18px;
+              }
+              .item-col {
+                background-image: linear-gradient(to right, #39a3ff00, #39a3ff10);
+              }
+            }
+            .device-parameter-title {
+              background-image: linear-gradient(to right, #3df6ff40, #3df6ff00);
+              .icon {
+                left: -10px;
+                top: -14px;
+              }
+              span {
+                left: 18px;
+              }
+              .item-col {
+                background-image: linear-gradient(to right, #3df6ff10, #3df6ff00);
+              }
+            }
+          }
+        }
+
+        .right-box {
+          width: 330px;
+          margin-top: 50px;
+          .control-group {
+            display: flex;
+            // justify-content: space-around;
+            flex-wrap: wrap;
+            .control-item {
+              display: flex;
+              flex-direction: column;
+              justify-content: center;
+              align-items: center;
+              padding: 0 4px;
+              .control-item-title {
+                color: #a6dce9;
+                position: relative;
+                top: 5px;
+              }
+              .control-item-state {
+                width: 94px;
+                height: 47px;
+                background: url('/@/assets/images/vent/control-switch-bg.png');
+                display: flex;
+                justify-content: center;
+                align-items: center;
+                color: #fff;
+              }
+
+              .button-box {
+                position: relative;
+                padding: 5px;
+                border: 1px transparent solid;
+                background-clip: border-box;
+                border-radius: 5px;
+                margin-left: 8px;
+              }
+
+              .a-button {
+                pointer-events: auto;
+              }
+
+              &::v-deep .a-button--mini {
+                padding: 6px 10px;
+              }
+
+              &::v-deep .a-button--mini.is-round {
+                padding: 6px 10px;
+              }
+            }
+          }
+        }
+
+        .left-box {
+          width: 365px;
+          margin-top: 80px;
+        }
+      }
+      &:deep(.win) {
+        width: 100%;
+        margin: 0 !important;
+      }
+    }
+  }
+
+  &:deep(.main) {
+    .title {
+      height: 34px;
+      text-align: center;
+      font-weight: 600;
+      color: #7af5ff;
+      // background-image: url('../../../assets/img/yfj/light.png');
+      background-repeat: no-repeat;
+      background-position-x: center;
+      background-position-y: 100%;
+      background-size: 80%;
+      font-size: 16px;
+    }
+    .monitor-item {
+      width: 200px;
+      display: flex;
+      flex-direction: row;
+      width: auto;
+      margin-bottom: 3px;
+
+      .monitor-val {
+        color: #ffb700;
+        display: flex;
+        width: auto;
+
+        .val {
+          width: 80px;
+          font-size: 14px;
+        }
+
+        .unit {
+          color: #ffffffbb;
+          font-size: 14px;
+        }
+      }
+    }
+    .monitor-title {
+      width: 100px;
+      color: #7af5ff;
+      font-weight: 400;
+      font-size: 14px;
+    }
+    .signal-item {
+      display: flex;
+      justify-content: space-between;
+
+      // margin-bottom: 5px;
+      .signal-round {
+        display: inline-block;
+        width: 8px;
+        height: 8px;
+        border-radius: 50%;
+        margin: 0 10px;
+        position: relative;
+
+        &::after {
+          display: block;
+          content: '';
+          position: absolute;
+          width: 12px;
+          height: 12px;
+          top: -2px;
+          left: -2px;
+          border-radius: 50%;
+        }
+      }
+
+      .signal-round-gry {
+        background-color: #858585;
+
+        &::after {
+          background-color: #85858544;
+          box-shadow: 0 0 1px 1px #85858599;
+        }
+      }
+
+      .signal-round-run {
+        background-color: #67fc00;
+
+        &::after {
+          background-color: #67fc0044;
+          box-shadow: 0 0 1px 1px #c6ff77;
+        }
+      }
+
+      .signal-round-warning {
+        background-color: #e9170b;
+
+        &::after {
+          background-color: #e9170b44;
+          box-shadow: 0 0 1px 1px #e9170b;
+        }
+      }
+    }
+  }
+  :deep(.zxm-radio-wrapper) {
+    color: #fff !important;
+  }
+</style>

+ 2 - 1
src/views/vent/monitorManager/compressor/index.vue

@@ -108,10 +108,11 @@
 
   // 获取模型类型
   function changeModalType(currentData) {
+    debugger;
     optionType.value = currentData['strtype'];
     if (currentData['strsystype'] === '1') {
       // 地上
-      modalType.value = 'nitrogenUnderground';
+      modalType.value = 'nitrogen';
     } else if (currentData['strsystype'] === '2') {
       // 地下
       modalType.value = 'nitrogenUnderground';

+ 5 - 2
src/views/vent/monitorManager/compressor/nitrogen.data.ts

@@ -214,7 +214,7 @@ export const zhudanOption = reactive({
 
 export function getMonitorComponent() {
   // const { sysOrgCode } = useGlobSetting();
-  const sysOrgCode = 'sdmtjtbdmk';
+  const sysOrgCode = 'xxxx';
   let nitrogenHome;
   switch (sysOrgCode) {
     case 'sdmtjtdltmk': //dltj sdmtjtdltmk
@@ -248,10 +248,13 @@ export function getMonitorComponent() {
     case 'sdmtjthlgmk': // 哈拉沟
       nitrogenHome = defineAsyncComponent(() => import('./components/nitrogenHome_hlg.vue'));
       return nitrogenHome;
+    case 'xxxx': // 东泰永聚
+      nitrogenHome = defineAsyncComponent(() => import('./components/nitrogenHome_dtyj.vue'));
+      return nitrogenHome;
     default:
       // nitrogenHome = defineAsyncComponent(() => import('./components/nitrogenHome_blt.vue'));
       // nitrogenHome = defineAsyncComponent(() => import('./components/nitrogenHome_bet.vue'));
-      nitrogenHome = defineAsyncComponent(() => import('./components/nitrogenHome_bet.vue'));
+      nitrogenHome = defineAsyncComponent(() => import('./components/nitrogenHome.vue'));
       return nitrogenHome;
   }
 }

+ 5 - 1
src/views/vent/monitorManager/compressor/nitrogen.threejs.ts

@@ -90,6 +90,7 @@ export const setModelType = (type, nitrogenNum?) => {
       model?.scene?.add(nitrogenObj.group);
       let newCameraPosition = { x: 0, y: 0, z: 0 },
         newControlsPosition = { x: 0, y: 0, z: 0 };
+      debugger;
       if (group.children.length == 5) {
         newCameraPosition = { x: 3.4434042980363104, y: 34.06459454762187, z: 106.31900957493957 };
         newControlsPosition = { x: 3.060603700582905, y: -10.818677071155214, z: 6.036159227572685 };
@@ -99,6 +100,9 @@ export const setModelType = (type, nitrogenNum?) => {
       } else if (group.children.length == 3) {
         newCameraPosition = { x: 4.033864762820565, y: 46.68282110004381, z: 82.43762902763777 };
         newControlsPosition = { x: 3.7177327628205648, y: 1.7978121000437965, z: -0.37996697236224625 };
+      } else if (group.children.length == 6) {
+        newCameraPosition = { x: -112.9018092843876, y: 27.56046920110982, z: 1.512031119343565 };
+        newControlsPosition = { x: -3.4116337023356875, y: -25.657219350386075, z: 1.0940848922982402 };
       }
       setTimeout(async () => {
         model?.scene?.add(group);
@@ -139,7 +143,7 @@ export const mountedThree = () => {
 
     nitrogenUndergroundObj = new NitrogenUnderground(model);
     await nitrogenUndergroundObj.mountedThree();
-    // setModelType('nitrogen');
+    setModelType('nitrogenUnderground');
     resolve(null);
     model.animate();
   });

+ 33 - 2
src/views/vent/monitorManager/mainFanMonitor/main.data.ts

@@ -1157,8 +1157,8 @@ export const initData1 = () => {
 
 // 大柳塔武当沟
 export const initData = (deviceType?) => {
-  const { sysOrgCode } = useGlobSetting();
-  // const sysOrgCode = 'sdmtjtltmk';
+  // const { sysOrgCode } = useGlobSetting();
+  const sysOrgCode = 'sdtljtdhzmk';
   if (sysOrgCode == 'sdmtjtdltmk') {
     return initDataDlt(deviceType);
   } else if (sysOrgCode == 'sdmtjtswmk') {
@@ -1183,6 +1183,8 @@ export const initData = (deviceType?) => {
     return initDataWlml();
   } else if (sysOrgCode == 'sdmtjtltmk') {
     return initDataLt();
+  } else if (sysOrgCode == 'sdtljtdhzmk') {
+    return initDataDhz();
   } else {
     return initData1();
   }
@@ -1685,6 +1687,35 @@ const initDataJj = () => {
   return data;
 };
 
+const initDataDhz = () => {
+  const data: any[] = [];
+  data.push({
+    Hz: 30,
+    a: -0.1686,
+    b: 74.953,
+    c: 4655.7,
+    min: 130,
+    max: 370,
+  });
+  data.push({
+    Hz: 40,
+    a: -0.1568,
+    b: 58.594,
+    c: 1986.9,
+    min: 140,
+    max: 400,
+  });
+  data.push({
+    Hz: 50,
+    a: -0.1607,
+    b: 68.39,
+    c: 4642.5,
+    min: 150,
+    max: 430,
+  });
+  return data;
+};
+
 export const fanInfoData = reactive({
   fj: '一号回风井',
   xh: 'FBCDZ No.29',