Преглед изворни кода

1. 公司端首页添加活鸡兔井
2. 行人风门关门动画速度调整
3. 实时网络解算样式调整,关键阻力路线顺序调整

hongrunxia пре 9 месеци
родитељ
комит
78a202bf63

+ 2 - 2
src/views/vent/home/clique/components/icon-light.vue

@@ -130,8 +130,8 @@
             textColor: 'rgba(255, 231, 83,.9)',
             align: 'left',
           },
-          // { code: 'huoJiTuTa', imgSrc: warningLevel1, label: '活鸡兔井', leftV: '398px', topV: '265px', textColor: '#fff', align: 'left' },
-          { code: 'sdmtjtdltmk', imgSrc: warningLevel1, label: '大柳塔', leftV: '588px', topV: '338px', textColor: '#fff', align: 'right' },
+          { code: 'huoJiTuTa', imgSrc: warningLevel1, label: '活鸡兔井', leftV: '518px', topV: '358px', textColor: '#fff', align: 'left' },
+          { code: 'sdmtjtdltmk', imgSrc: warningLevel1, label: '大柳塔', leftV: '588px', topV: '338px', textColor: '#fff', align: 'right' },
           {
             code: 'sdmtjtjjmk',
             imgSrc: warningLevel1,

+ 19 - 68
src/views/vent/monitorManager/compressor/components/nitrogenHome_bd.vue

@@ -280,18 +280,17 @@
                 </div>
                 <!-- 右边控制状态 -->
                 <div class="lr-box right-box">
-
                     <ventBox1 class="vent-margin-t-10">
                         <template #title>
                             <div>设备实时监测曲线</div>
                         </template>
                         <template #container>
                             <BarAndLine v-if="chartsColumns.length > 0" xAxisPropType="readTime" :dataSource="echartData"
-                                height="340px" :chartsColumns="chartsColumns" chartsType="listMonitor"
+                                height="240px" :chartsColumns="chartsColumns" chartsType="listMonitor"
                                 :option="echatsOption" />
-                            <!-- :option="zhudanOption" -->
                         </template>
                     </ventBox1>
+                    <div ref="playerRef" class="player-box vent-margin-t-10"></div>
                 </div>
             </div>
         </div>
@@ -300,16 +299,17 @@
         @handle-cancel="handleCancel" />
 </template>
 <script lang="ts" setup name="nitrogenHome">
-import { onMounted, onUnmounted, ref, watch, reactive, defineProps, nextTick, inject, computed } from 'vue';
+import { onMounted, onUnmounted, ref, watch, reactive, defineProps, nextTick, inject, onBeforeUnmount } from 'vue';
 import ventBox1 from '/@/components/vent/ventBox1.vue';
 import fourBorderBg from '../../../comment/components/fourBorderBg.vue';
-import { mountedThree, destroy, setModelType, addText } from '../nitrogen.threejs';
+import { mountedThree, destroy, setModelType } from '../nitrogen.threejs';
 import { getDevice } from '../nitrogen.api';
 import { SvgIcon } from '/@/components/Icon';
 import BarAndLine from '/@/components/chart/BarAndLine.vue';
 import HandleModal from './modal.vue';
 import { deviceControlApi } from '/@/api/vent/index';
 import { message } from 'ant-design-vue';
+import { useCamera } from '/@/hooks/system/useCamera';
 import lodash from 'lodash';
 const globalConfig = inject('globalConfig');
 
@@ -323,6 +323,7 @@ const props = defineProps({
         require: true,
     },
 });
+const { getCamera, removeCamera } = useCamera();
 const refresh = ref(false)
 const modalTitle = ref(''); // 模态框标题显示内容,根据设备操作类型决定
 const modalType = ref(''); // 模态框内容显示类型,设备操作类型
@@ -332,11 +333,8 @@ let kzParam = reactive<any>({
     data: {},
     isFw: '',
 });
+const playerRef = ref();
 
-const flvURL1 = () => {
-    // return `https://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/flv/xgplayer-demo-360p.flv`;
-    return '';
-};
 const colors = ['#FDB146', '#EE6666', '#9BCB75', '#03C2EC', '#DA3914', '#9C83D9']
 const echatsOption = {
     grid: {
@@ -744,8 +742,6 @@ watch(monitorDataGroupNum, () => {
 
 })
 
-
-
 const monitorData = ref(
     new Array(3).fill({
         // strName: '空压机',
@@ -924,6 +920,7 @@ function handleOK(passWord, handlerState) {
         }
     });
 }
+
 function handleCancel() {
     modalIsShow.value = false;
     modalTitle.value = '';
@@ -938,16 +935,27 @@ watch([monitorDataGroupNum, loading], ([newMonitorDataGroupNum, newLoading]) =>
     });
 });
 
+watch(() => props.deviceId, async(deviceId) => {
+  if(deviceId){
+    await getCamera(deviceId, playerRef.value);
+  }
+})
+
+onBeforeUnmount(() => {
+  removeCamera();
+});
 
 onMounted(async () => {
     await getMonitor(true);
     await mountedThree().then(() => {
         loading.value = false;
     });
+    await getCamera(props.deviceId, playerRef.value);
 });
 
 onUnmounted(() => {
     destroy();
+    removeCamera()
     if (timer) {
         clearTimeout(timer);
         timer = undefined;
@@ -1329,63 +1337,6 @@ onUnmounted(() => {
                 width: 330px;
                 margin-top: 50px;
 
-                .control-group {
-                    display: flex;
-                    // justify-content: space-around;
-                    flex-wrap: wrap;
-                    height: 262px;
-                    overflow-y: auto;
-                    overflow-x: hidden;
-
-                    .control-item {
-                        width: 50%; //lxh
-                        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;
-                            width: 162px;
-                            // height: 47px;
-                            height: 36px;
-                            background: url('/@/assets/images/vent/control-switch-bg.png');
-                            background-size: 100% 100%;
-                            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 {

+ 12 - 4
src/views/vent/monitorManager/deviceMonitor/components/device/index.vue

@@ -47,7 +47,7 @@
       </div>
     </div>
 
-    <div class="bottom-tabs-box" @mousedown="setDivHeight($event, 230, scroll, 125)" id="monitorBox">
+    <div class="tabs-box bottom-tabs-box " style="height: 290px;" @mousedown="setDivHeight($event, 230, scroll, 0)" id="monitorBox">
       <!-- <dv-border-box8 :dur="5"  :style="`padding: 5px; height: ${scroll.y + 100}px`" > -->
       <div :style="`padding: 5px; height: ${scroll.y + 100}px`">
         <div class="to-small" @click="toHome"></div>
@@ -283,6 +283,12 @@
                     <div v-if="!record.lowRange && column.dataIndex === 'lowRange'">-</div>
                     <div v-if="!record.dataTypeName && column.dataIndex === 'dataTypeName'">-</div>
                   </template>
+                  <template v-else-if="deviceType.startsWith('atomizing')">
+                    <a-tag
+                        v-if="column.dataIndex === 'stateConn' && record.stateConn == '1'" color="green">连接</a-tag>
+                    <a-tag
+                        v-if="column.dataIndex === 'stateConn' && record.stateConn == '0'" color="red">断开</a-tag>
+                  </template>
                   <a-tag v-if="column.dataIndex === 'warnFlag'"
                     :color="record.warnFlag == 0 ? 'green' : record.warnFlag == 1 ? '#FF5812' : 'gray'"> {{
                       record.warnFlag == 0 ? '正常' : record.warnFlag == 1 ? '报警' : record.warnFlag == 2 ? '断开' : '未监测'
@@ -331,7 +337,7 @@
       </div>
     </div>
     <mainPath v-if="deviceType == 'majorpath'" :dataSource="majorPathEchartsData"
-      style="width: 300px; height: 300px; position: absolute; left: 250px;" />
+      style="width: 300px; height: 300px; position: absolute; left: 250px; top: 40px;" />
     <component v-if="modalVisible" :is="currentModal" v-model:visible="modalVisible" :dataSource="dataSource"
       :activeID="activeID" />
   </div>
@@ -1260,10 +1266,11 @@ onUnmounted(() => {
   animation-duration: 1s;
   transition: all 1s cubic-bezier(0.165, 0.84, 0.44, 1) .5s;
 }
-
+.tabs-box{
+  height: 290px;
+}
 .bottom-tabs-box {
   position: relative;
-  height: 290px !important; 
   .tabs-box {
     width: calc(100% - 12px) !important;
     bottom: 3px !important;
@@ -1447,6 +1454,7 @@ onUnmounted(() => {
     }
   }
 }
+
 .location-form{
   display: flex;
   margin: 8px;

+ 70 - 58
src/views/vent/monitorManager/deviceMonitor/components/network/index.vue

@@ -81,7 +81,7 @@
                   </div>
                 </div> -->
                 <div class="time-list" style="overflow-y: auto;">
-                  <dv-scroll-board ref="scrollBoardRef" :config="solveTimesData" style="width: 100%; height: 100px; font-weight: 500;" />
+                  <dv-scroll-board ref="scrollBoardRef" :config="solveTimesData" style="width: 100%; height: 80px; font-weight: 500;" />
                 </div>
               </BorderBox1>
             </div>
@@ -96,7 +96,7 @@
             <div class="item-top-title">传感器实时数据</div>
             <BorderBox1 class="table-box border-bg" backgroundColor="#00bfff15">
               <div class="table-container">
-                <a-table :columns="sensorColumns" :data-source="pageData.sensorDataList" :pagination="false" size="small" >
+                <a-table :columns="sensorColumns" :data-source="pageData.sensorDataList" :pagination="false" size="small" :scroll="{y: 180}">
                   <template #bodyCell="{ column, record }">
                     <div v-if="column.dataIndex == 'action'">
                        <a @click="goLocation('device', record.deviceID, record)">定位</a>
@@ -110,7 +110,7 @@
             <div class="item-top-title">预警报警信息</div>
             <BorderBox1 class="table-box border-bg" backgroundColor="#00bfff15">
               <div class="table-container">
-                <a-table :columns="warningColumns" :data-source="pageData.warningDataList" :pagination="false" size="small">
+                <a-table :columns="warningColumns" :data-source="pageData.warningDataList" :pagination="false" size="small" :scroll="{y: 180}">
                   <template #bodyCell="{ column, record }">
                     <div v-if="column.dataIndex == 'level'">
                       <span class="signal-round"
@@ -156,8 +156,22 @@
                   <span v-for="(device, index) in deviceTab " :key="index" class="btn" :class="{'active': device.code == deviceActiveCode }" @click="setTable(device.code)">{{ device.title }}</span>
                 </div>
               </div>
-              <div class="table-container">
-                <a-table :columns="columns" :data-source="tableDate" :pagination="false" size="small" >
+              <div class="table-container"  style="position: absolute;">
+                <a-table v-if="deviceActiveCode == 'tun'"  :columns="networkColumns" :data-source="tableDate" :pagination="false" size="small" :scroll="{ y: 155 }" >
+                  <template #bodyCell="{ column, record }">
+                    <div v-if="column.dataIndex == 'action'">
+                      <a @click="goLocation(record['nTunID'] ? 'tunnel': 'device',record.deviceID, record)">定位</a>
+                    </div>
+                  </template>
+                </a-table>
+                <a-table v-if="deviceActiveCode == 'gate'"  :columns="gateColumns" :data-source="tableDate" :pagination="false" size="small" :scroll="{ y: 155 }" >
+                  <template #bodyCell="{ column, record }">
+                    <div v-if="column.dataIndex == 'action'">
+                      <a @click="goLocation(record['nTunID'] ? 'tunnel': 'device',record.deviceID, record)">定位</a>
+                    </div>
+                  </template>
+                </a-table>
+                <a-table v-if="deviceActiveCode == 'window'" :columns="windowColumns" :data-source="tableDate" :pagination="false" size="small" :scroll="{ y: 155 }" >
                   <template #bodyCell="{ column, record }">
                     <div v-if="column.dataIndex == 'action'">
                       <a @click="goLocation(record['nTunID'] ? 'tunnel': 'device',record.deviceID, record)">定位</a>
@@ -168,7 +182,7 @@
             </BorderBox11>
           </div>
           <div class="bottom-right bottom-lr-box">
-            <BorderBox11 class="border-bg" title="最大阻力路线" backgroundColor="#00bfff15">
+            <BorderBox11 class="border-bg" title="最大阻力路线" :color="['#00FFFF']" backgroundColor="#00bfff15">
               <div class="zl-top">
                 <div v-if="maxPaths.length > 0">
                   <template v-for="index in maxPaths.length" :key="index">
@@ -219,6 +233,9 @@
                 </div>
                 <div class="zl-path-item position10">
                   <div class="title">1盘曲回风斜井</div>
+                </div>
+                <div class="zl-path-item position11">
+                  <div class="title">2盘曲回风斜井</div>
                 </div> -->
               </div>
             </BorderBox11>
@@ -383,6 +400,7 @@ function analyzePageResult(resultData){
     
 
     if(solutionresult['MaxHPaths']){
+      console.log('最大阻力路线', solutionresult['MaxHPaths'])
       maxPaths.value = solutionresult['MaxHPaths']
     }
   }
@@ -422,11 +440,13 @@ function analyzePageResult(resultData){
   pageData.gateDataList = gateDataList
   pageData.windowDataList = windowDataList
   setTable(deviceActiveCode.value)
-
-  solveTimes = [[dayjs().format('YYYY-MM-DD HH:mm:ss'), '解算用时'+ (Math.random() * 0.1 + 3).toFixed(2) + 's'] , ...solveTimes]
+  if(solveTimes.length >= 4){
+    solveTimes.shift()
+  }
+  solveTimes = [ ...solveTimes, [dayjs().format('YYYY-MM-DD HH:mm:ss'), '解算用时'+ (Math.random() * 0.1 + 3).toFixed(2) + 's']]
   const tempSolveTimes = [...solveTimes]
-  tempSolveTimes[0] = [`<span style="color:#00F5FE;" >${tempSolveTimes[0][0]}</span>`, `<span style="color:#00F5FE;" >${tempSolveTimes[0][1]}</span>`]
-  scrollBoardRef.value.updateRows(tempSolveTimes, 0)
+  tempSolveTimes[tempSolveTimes.length - 1] = [`<span style="color:#00F5FE;" >${tempSolveTimes[tempSolveTimes.length - 1][0]}</span>`, `<span style="color:#00F5FE;" >${tempSolveTimes[tempSolveTimes.length - 1][1]}</span>`]
+  scrollBoardRef.value.updateRows(tempSolveTimes)
 }
 
 function setTable(code) {
@@ -444,7 +464,6 @@ function setTable(code) {
 }
 
 function goLocation(type:string ,id: string, record:any) {
-  console.log(id, record)
   actions.setGlobalState({ locationObj: { pageType: type, deviceid: id }, pageObj: null });
 }
 
@@ -463,33 +482,10 @@ onUnmounted(() => {
 <style scoped lang="less">
 @ventSpace: zxm;
 
-.vent-home-header {
-  width: 100%;
-  height: 100px;
-  position: fixed;
-  top: 0;
-  background: url('/@/assets/images/vent/new-home/header-bg.png') no-repeat;
-  background-size: contain;
-  display: flex;
-  justify-content: center;
-  z-index: 99;
-
-  .header-icon {
-    margin-top: 45px;
-  }
-
-  .header-text {
-    position: fixed;
-    top: 18px;
-    color: #fff;
-    font-size: 26px;
-  }
-}
-
 .zl-box {
   width: 100%;
-  height: calc(100%);
-  top: 50px;
+  height: calc(100% - 30px);
+  top: 80px;
   position: relative;
   overflow: hidden;
   color: #fff;
@@ -516,9 +512,9 @@ onUnmounted(() => {
   .top-box {
     display: flex;
     justify-content: space-between;
-    height: calc(60%);
+    height: calc(60% - 10px);
     position: relative;
-    
+    z-index: 99;
     .lr-box {
       width: 374px;
       margin-top: 10px;
@@ -526,13 +522,13 @@ onUnmounted(() => {
 
     .left-box {
       .network-time{
-        height: 50PX;
+        height: 50px;
         padding-left: 10px;
         font-size: 18px;
         position: relative;
         top: -5px;
         .time{
-          font-size: 26px;
+          font-size: 24px;
           color: #00f5fe;
           font-family: 'electronicFont';
         }
@@ -712,7 +708,7 @@ onUnmounted(() => {
           }
         }
         .time-list{
-          height: 142px;
+          height: 122px;
           margin: 30px 15px 0px 30px;
           padding-bottom: 10px;
           pointer-events: auto;
@@ -741,12 +737,12 @@ onUnmounted(() => {
           .table-container {
             width: calc(100% - 40px);
             margin: 25px 20px 20px;
-            height: 250px;
+            // height: 250px;
             position: absolute;
           }
         }
       }
-
+      
       .sensor-box {
         .item-top-title {
           &::after {
@@ -757,11 +753,21 @@ onUnmounted(() => {
             left: 265px;
           }
         }
+        // .table-container {
+        //   // height: 280px !important;
+        // }
       }
-
       .warning-box {
         margin-top: 10px;
       }
+      :deep.zxm-table-content{
+        max-height: none !important;
+      }
+      :deep(.zxm-table) {
+        table{
+          width:max-content;
+        }
+      }
     }
   }
 
@@ -769,13 +775,14 @@ onUnmounted(() => {
 
   .bottom-box {
     width: 100%;
-    height: calc(40% - 80px);
+    height: calc(40%);
     display: flex;
     justify-content: space-between;
     margin-top: 0px;
     position: relative;
-    top: 20px;
+    top: 30px;
     pointer-events: auto;
+    overflow-y: hidden;
     .to-small {
       width: 60px;
       height: 60px;
@@ -808,7 +815,7 @@ onUnmounted(() => {
       top: 45px;
       right: 0;
       padding: 0 10px 0 30px;
-      z-index: 999;
+      z-index: 99;
 
       .network-top-left {
         display: flex;
@@ -841,11 +848,16 @@ onUnmounted(() => {
       position: relative;
 
       .table-container {
-        height: 210px;
+        // height: 180px;
         margin-top: 40px;
         margin-left: 10px;
         margin-right: 8px;
       }
+      :deep(.zxm-table) {
+        table{
+          width: 100%;
+        }
+      }
     }
 
     .bottom-right {
@@ -888,32 +900,32 @@ onUnmounted(() => {
           backdrop-filter: blur(5px);
         }
       }
-      .position1 {
+      .position10 {
         top: 128px;
         left: 120px;
       }
 
-      .position2 {
+      .position11 {
         top: 130px;
         left: 0px;
       }
 
-      .position3 {
+      .position1 {
         top: 52px;
         left: 100px;
       }
 
-      .position4 {
+      .position9 {
         top: 132px;
         left: 270px;
       }
 
-      .position5 {
+      .position8 {
         top: 128px;
         left: 420px;
       }
 
-      .position6 {
+      .position2 {
         top: 60px;
         left: 320px;
       }
@@ -923,22 +935,22 @@ onUnmounted(() => {
         left: 580px;
       }
 
-      .position8 {
+      .position6 {
         top: 123px;
         left: 690px;
       }
 
-      .position9 {
+      .position5 {
         top: 103px;
         left: 830px;
       }
 
-      .position10 {
+      .position4 {
         top: 90px;
         left: 740px;
       }
 
-      .position11 {
+      .position3 {
         top: 80px;
         left: 535px;
       }

+ 13 - 43
src/views/vent/monitorManager/deviceMonitor/components/network/network.data.ts

@@ -51,19 +51,19 @@ export const sensorColumns: BasicColumn[] = [
   {
     title: '位置',
     dataIndex: 'strinstallpos',
-    width: 200,
+    width: 80,
     align: 'center',
   },
   {
     title: '风速(m/s)',
     dataIndex: 'va',
-    width: 100,
+    width: 80,
     align: 'center',
   },
   {
     title: '风量(m³/min)',
     dataIndex: 'm3',
-    width: 100,
+    width: 80,
     align: 'center',
   },
   {
@@ -113,19 +113,19 @@ export const networkColumns: BasicColumn[] = [
   {
     title: 'ID',
     dataIndex: 'nTunID',
-    width: 120,
+    width: 50,
     align: 'center',
   },
   {
     title: '巷道名称',
     dataIndex: 'strName',
-    width: 120,
+    width: 100,
     align: 'center',
   },
   {
     title: '实时风量(m³/min)',
     dataIndex: 'fRealQ',
-    width: 120,
+    width: 80,
     align: 'center',
     customRender: function ({ text }) {
       return (text * 60).toFixed(2);
@@ -134,70 +134,40 @@ export const networkColumns: BasicColumn[] = [
   {
     title: '实时风速(m/s)',
     dataIndex: 'fRealV',
-    width: 120,
+    width: 60,
     align: 'center',
   },
   {
     title: '总阻力(Pa)',
     dataIndex: 'dHTotal',
-    width: 120,
+    width: 60,
     align: 'center',
   },
   {
     title: '摩擦阻力(Pa)',
     dataIndex: 'dHFric',
-    width: 120,
+    width: 60,
     align: 'center',
   },
   {
     title: '操作',
     dataIndex: 'action',
-    width: 120,
+    width: 60,
     align: 'center',
   },
-  // {
-  //   title: '局部阻力(Pa)',
-  //   dataIndex: 'dHLocal',
-  //   width: 120,
-  //   align: 'center',
-  // },
-  // {
-  //   title: '自然风压(Pa)',
-  //   dataIndex: 'dHNature',
-  //   width: 120,
-  //   align: 'center',
-  // },
-  // {
-  //   title: '面积(㎡)',
-  //   dataIndex: 'fArea',
-  //   width: 120,
-  //   align: 'center',
-  // },
-  // {
-  //   title: '阻力系数',
-  //   dataIndex: 'fcoff',
-  //   width: 120,
-  //   align: 'center',
-  // },
-  // {
-  //   title: '灵敏度',
-  //   dataIndex: 'lmd',
-  //   width: 120,
-  //   align: 'center',
-  // },
 ];
 
 export const gateColumns: BasicColumn[] = [
   {
     title: '风门ID',
     dataIndex: 'nGateID',
-    width: 180,
+    width: 100,
     align: 'center',
   },
   {
     title: '风门名称',
     dataIndex: 'strName',
-    width: 180,
+    width: 100,
     align: 'center',
   },
   {
@@ -230,7 +200,7 @@ export const windowColumns: BasicColumn[] = [
   {
     title: '风窗ID',
     dataIndex: 'nWindowID',
-    width: 180,
+    width: 100,
     align: 'center',
   },
   {

+ 32 - 19
src/views/vent/monitorManager/deviceMonitor/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="scene-box">
-    <template v-if="routerParam !== 'timesolution' && routerParam !== 'home' && routerParam !== 'model3D'">
+    <template v-if="isShow && routerParam !== 'timesolution' && routerParam !== 'home' && routerParam !== 'model3D'">
       <!-- <Emergency ref="NetworkRef" v-if="deviceKind === 'emergency'" :pageResult="pageResult" @changePageType="changePageType" />
       <DeviceVue ref="DeviceRef" v-else :pageData="pageData" /> -->
       <DeviceVue ref="DeviceRef" :pageData="pageData" />
@@ -25,7 +25,7 @@
 
   const DeviceRef = ref(null);
   const NetworkRef = ref(null);
-
+  const isShow = ref(true);
   const routerParam = ref('home');
   const deviceKind = ref('');
   const pageData = ref({});
@@ -42,6 +42,7 @@
   watch(
     () => route.fullPath,
     (fullPath) => {
+      debugger;
       // const { type, deviceType } = routeVal.query
       // if (type === 'tunMonitor') {
       //   pageData.value = { pageType: deviceType }
@@ -52,24 +53,31 @@
   );
 
   onMounted(() => {
-    const { type, deviceType } = route.query;
+    debugger;
+    const { type, deviceType, topage } = route.query;
     deviceKind.value = deviceType as string;
-    if (type === 'network') {
-      routerParam.value = 'network';
-      actions.setGlobalState({ pageObj: { pageType: 'network' } });
-    } else if (type === 'tunMonitor') {
-      if (deviceType) {
-        pageData.value = { pageType: deviceType };
-        actions.setGlobalState({ pageObj: { pageType: deviceType } });
-      } //  else if (type === 'emergency') {
-      //   if (deviceType) {
-      //     pageData.value = { pageType: deviceType };
-      //     actions.setGlobalState({ pageObj: { pageType: 'emergency' } });
-      //   }
-      // }
+    if (!topage) {
+      isShow.value = true;
+      if (type === 'network') {
+        routerParam.value = 'network';
+        actions.setGlobalState({ pageObj: { pageType: 'network' } });
+      } else if (type === 'tunMonitor') {
+        routerParam.value = 'tunMonitor';
+        if (deviceType) {
+          pageData.value = { pageType: deviceType };
+          actions.setGlobalState({ pageObj: { pageType: deviceType } });
+        } //  else if (type === 'emergency') {
+        //   if (deviceType) {
+        //     pageData.value = { pageType: deviceType };
+        //     actions.setGlobalState({ pageObj: { pageType: 'emergency' } });
+        //   }
+        // }
+      } else {
+        routerParam.value = 'home';
+        actions.setGlobalState({ pageObj: { pageType: 'home' } });
+      }
     } else {
-      routerParam.value = 'home';
-      actions.setGlobalState({ pageObj: { pageType: 'home' } });
+      isShow.value = false;
     }
     actions.onGlobalStateChange((newState) => {
       for (const key in newState) {
@@ -82,13 +90,18 @@
             if (pageObj.timesolution) {
               pageResult.value = pageObj.timesolution;
             }
+            if (pageObj.pageType != 'netcal') {
+              isShow.value = true;
+            }
           }
         }
       }
     });
   });
 
-  onBeforeUnmount(async () => {});
+  onBeforeUnmount(async () => {
+    //
+  });
 </script>
 
 <style lang="less" scoped>

+ 7 - 0
src/views/vent/monitorManager/fanLocalMonitor/index.vue

@@ -343,6 +343,7 @@
   </div>
   <div
     ref="playerRef"
+    :class="{ 'to-right': rightColumns.length < 1 || leftColumns.length < 1, 'to-no-right': rightColumns.length > 0 && leftColumns.length > 0 }"
     style="z-index: 999; position: absolute; top: 100px; right: 15px; width: 100%; height: 100%; margin: auto; pointer-events: none"
   >
   </div>
@@ -1526,6 +1527,12 @@
       pointer-events: auto !important;
     }
   }
+  .to-right {
+    :deep(#LivePlayerBox) {
+      padding-right: 0px;
+    }
+  }
+
   :deep(.button-box) {
     position: relative;
     padding: 5px;

+ 11 - 3
src/views/vent/monitorManager/gateMonitor/gate.threejs.xr.ts

@@ -350,7 +350,7 @@ class FmXR {
           handler = () => {
             this.clipActionArr.frontDoor.paused = true;
             this.clipActionArr.frontDoor.reset(); //
-            this.clipActionArr.frontDoor.time = 3;
+            this.clipActionArr.frontDoor.time = 2;
             this.clipActionArr.frontDoor.timeScale = -timeScale;
             // this.clipActionArr.frontDoor.clampWhenFinished = true;
             this.clipActionArr.frontDoor.play();
@@ -378,7 +378,7 @@ class FmXR {
           handler = () => {
             this.clipActionArr.backDoor.paused = true;
             this.clipActionArr.backDoor.reset();
-            this.clipActionArr.backDoor.time = 3;
+            this.clipActionArr.backDoor.time = 2;
             this.clipActionArr.backDoor.timeScale = -timeScale;
             // this.clipActionArr.backDoor.clampWhenFinished = true;
             this.clipActionArr.backDoor.play();
@@ -513,6 +513,14 @@ class FmXR {
     }
   }
 
+  setMeshHide() {
+    const wire = this.group.getObjectByName('fmXr-wire');
+    if (wire) {
+      if (wire.getObjectByName('对象192')) wire.getObjectByName('对象192').visible = false;
+      if (wire.getObjectByName('Box595')) wire.getObjectByName('Box595').visible = false;
+    }
+  }
+
   mountedThree(playerDom) {
     this.group = new THREE.Object3D();
     this.group.name = this.modelName;
@@ -525,7 +533,7 @@ class FmXR {
         this.addLight();
         // this.deviceDetailCard();
         this.model.animate();
-
+        this.setMeshHide();
         resolve(this.model);
       });
     });

+ 59 - 2
src/views/vent/monitorManager/gateMonitor/index.vue

@@ -460,8 +460,7 @@
   }
 
   // 播放动画
-  function playAnimation(handlerState, data: any = null) {
-    debugger;
+  function playAnimation1(handlerState, data: any = null) {
     const value = data;
     switch (handlerState) {
       case 1: // 打开前门
@@ -559,6 +558,64 @@
     }
     contrlValue = value;
   }
+  // 保德缺打开状态
+
+  function playAnimation(handlerState, data: any = null) {
+    const value = data;
+    switch (handlerState) {
+      case 1: // 打开前门
+        modalTitle.value = '打开前门';
+        modalType.value = '1';
+        modalIsShow.value = true;
+        break;
+      case 2: // 关闭前门
+        modalTitle.value = '关闭前门';
+        modalType.value = '2';
+        modalIsShow.value = true;
+        break;
+      case 3: // 打开后门
+        modalTitle.value = '打开后门';
+        modalType.value = '3';
+        modalIsShow.value = true;
+        break;
+      case 4: // 关闭后门
+        modalTitle.value = '关闭后门';
+        modalType.value = '4';
+        modalIsShow.value = true;
+        break;
+      case 8: // 打开中间门
+        modalTitle.value = '打开中间门';
+        modalType.value = '8';
+        modalIsShow.value = true;
+        break;
+      case 9: // 关闭中间门
+        modalTitle.value = '关闭中间门';
+        modalType.value = '9';
+        modalIsShow.value = true;
+        break;
+      case 5: // 打开前后门
+        modalTitle.value = '打开前后门';
+        modalType.value = '5';
+        modalIsShow.value = true;
+        break;
+      case 6: // 关闭前后门
+        modalTitle.value = '关闭前后门';
+        modalType.value = '6';
+        modalIsShow.value = true;
+        break;
+
+      case 7: // 控制模式切换
+        modalTitle.value = '控制模式切换';
+        modalType.value = '7';
+        modalIsShow.value = true;
+        break;
+    }
+
+    if (globalConfig?.simulatedPassword) {
+      handleOK('', handlerState + '');
+    }
+    contrlValue = value;
+  }
 
   function handleOK(passWord, handlerState) {
     if (passWord == '') {

+ 5 - 1
src/views/vent/monitorManager/mainFanMonitor/index.vue

@@ -1051,7 +1051,11 @@
   function goOutLink(type: string) {
     if (type === '1') {
       // 视频
-      window.open('http://10.248.210.154/', '_blank');
+      if (deviceType.value == 'fanmain_zl') {
+        window.open('http://10.248.204.121', '_blank');
+      } else if (deviceType.value == 'fanmain_ljy') {
+        window.open('http://10.248.204.234', '_blank');
+      }
     } else {
       window.open('http://10.248.210.154/', '_blank');
     }