Преглед на файлове

[Mod 0000] 解决二三维定位失败问题

hongrunxia преди 2 седмици
родител
ревизия
4c46f0c21c

+ 3 - 3
.env.development

@@ -6,7 +6,7 @@ VITE_PUBLIC_PATH = /
 
 # 跨域代理,您可以配置多个 ,请注意,没有换行符
 #VITE_PROXY = [["/jeecgboot","http://localhost:8080/jeecg-boot"],["/upload","http://localhost:3300/upload"]]
-VITE_PROXY = [["/sw","http://182.92.126.35:6008"],["/jeecgsystem","http://182.92.126.35:9999"],["/upload","http://182.92.126.35:9999/upload"],["/documents", "http://182.92.126.35:9050"],["/modelreq", "http://182.92.126.35:9999"],["/webRtc", "http://182.92.126.35:8051"], ["/python", "http://127.0.0.1:8008"], ["/tun2D", "http://127.0.0.1:8088/micro-vent-2dModal/tun2D"],["/dataCenter", "http://39.97.59.228:10999"],["/ventAI", "http://39.97.59.228:8070"]]
+VITE_PROXY = [["/sw","http://182.92.126.35:6008"],["/jeecgsystem","http://182.92.126.35:9999"],["/upload","http://182.92.126.35:9999/upload"],["/documents", "http://182.92.126.35:9050"],["/modelreq", "http://182.92.126.35:9999"],["/webRtc", "http://182.92.126.35:8051"], ["/python", "http://127.0.0.1:8008"], ["/res", "http://182.92.126.35:9999/"],["/dataCenter", "http://39.97.59.228:10999"],["/ventAI", "http://39.97.59.228:8070"]]
 # VITE_PROXY = [["/jeecgsystem","http://192.168.183.88:9999"],["/upload","http://192.168.183.88:9999/upload"],["/documents", "http://192.168.183.88:9050"],["/modelreq", "http://192.168.183.88:9999"],["/webRtc", "http://192.168.183.88:8051"]]
 # VITE_PROXY = [["/jeecgsystem","http://10.10.150.72:9999"],["/upload","http://localhost:3300/upload"],["/documents", "http://10.10.150.72:9050"],["/modelreq", "http://10.10.150.72:9999"],["/webRtc", "http://192.168.183.216:8051"]]
 # VITE_PROXY = [["/jeecgsystem","http://192.168.1.8:9999"],["/upload","http://localhost:3300/upload"]]
@@ -31,6 +31,6 @@ VITE_GLOB_API_URL_PREFIX=
 #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", "//192.168.183.88:8093/", "micro-need-air"], ["micro-fire-front", "//localhost:8097/", "fire-Micro"]]
 # VITE_APP_SUB_APP = [["micro-vent-3dModal", "//192.168.1.16:8091/", "micro-vent-3dModal"], ["micro-need-air", "//192.168.183.88:8093/", "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-vent-2dModal", "//localhost:8088", "micro-vent-2dModal"],["micro-vent-doc", "//localhost:5173", "micro-vent-doc"],["micro-need-air", "//182.92.126.35:8093", "micro-need-air"], ["micro-fire-front", "//182.92.126.35:8097", "fire-Micro"]]
-VITE_APP_SUB_APP = [["micro-vent-3dModal", "//192.168.1.23:8091", "micro-vent-3dModal"],["micro-vent-2dModal", "//localhost:8088", "micro-vent-2dModal"],["micro-vent-doc", "//localhost:5173", "micro-vent-doc"],["micro-need-air", "//192.168.1.21:8099", "micro-need-air"], ["micro-fire-front", "//182.92.126.35:8097", "fire-Micro"]]
+VITE_APP_SUB_APP = [["micro-vent-3dModal", "//182.92.126.35:8091", "micro-vent-3dModal"],["micro-vent-2dModal", "//localhost:8088", "micro-vent-2dModal"],["micro-vent-doc", "//localhost:5173", "micro-vent-doc"],["micro-need-air", "//182.92.126.35:8093", "micro-need-air"], ["micro-fire-front", "//182.92.126.35:8097", "fire-Micro"]]
+# VITE_APP_SUB_APP = [["micro-vent-3dModal", "//192.168.1.11:8091/", "micro-vent-3dModal"],["micro-vent-2dModal", "//localhost:8088", "micro-vent-2dModal"],["micro-vent-doc", "//localhost:5173", "micro-vent-doc"],["micro-need-air", "//192.168.1.21: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/"]]

+ 2 - 2
src/components/Container/src/Adaptive.vue

@@ -88,7 +88,7 @@
         const heightScale = currentHeight / realHeight;
         appStore.setWidthScale(widthScale);
         appStore.setHeightScale(heightScale);
-        actions.setGlobalState({ widthScale, heightScale });
+        actions.setGlobalState({ widthScale, heightScale, currentRouter: null, locationId: '', locationObj: null, pageObj: null });
 
         //如果dom存在,就按照比例缩放
         dom && (dom.style.transform = `scale(${widthScale}, ${heightScale})`);
@@ -168,8 +168,8 @@
     position: relative;
     top: 0;
     left: 0;
+    z-index: 0;
     overflow: hidden;
     transform-origin: left top;
-    z-index: 0;
   }
 </style>

+ 1 - 2
src/components/vent/micro/createSubApp.vue

@@ -42,7 +42,6 @@
   watch(
     () => [route.query, route.path],
     async ([newQuery, newPath], [oldQuery, oldPath]) => {
-      debugger;
       // 这里判断
       if (newPath !== oldPath) {
         await resetComponent();
@@ -60,7 +59,7 @@
         }
         if (isRefresh) {
           const actions = getActions();
-          actions.setGlobalState({ currentRouter: route });
+          actions.setGlobalState({ currentRouter: route, locationId: '', locationObj: null, pageObj: null });
         }
       }
     }

+ 3 - 1
src/components/vent/micro/ventModal.vue

@@ -33,6 +33,7 @@
   .modal-bg {
     background: url('/@/assets/images/beltFire/baseMap.png') no-repeat center;
   }
+
   .loading-box {
     position: fixed;
     display: flex;
@@ -41,10 +42,11 @@
     width: 100%;
     height: 100%;
   }
+
   #micro-vent-3dModal {
     position: absolute;
-    left: 0;
     top: 0;
+    left: 0;
     width: 100%;
     height: 100%;
     pointer-events: auto;

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

@@ -56,7 +56,7 @@ export function createPermissionGuard(router: Router) {
         }
       } else {
         for (const key in to) {
-          if (typeof to[key] == 'string' && to[key].includes('micro-vent-2dModal')) {
+          if (typeof to[key] == 'string' && !to[key].includes('/ltauto-view') && to[key].includes('micro-vent-2dModal')) {
             to[key] = to[key].replace('micro-vent-2dModal', 'micro-vent-3dModal');
           }
         }

+ 125 - 122
src/views/vent/monitorManager/deviceMonitor/components/device/index.vue

@@ -144,7 +144,7 @@
         <div
           v-if="(deviceType.startsWith('location') || deviceType.startsWith('vehicle')) && activeKey == 'monitor'"
           class="location-form"
-          style="position: absolute; z-index: 9999; top: 50px"
+          style="position: absolute; top: 50px; z-index: 9999"
         >
           <div class="location-form-item">
             <span class="location-form-label">{{ deviceType.startsWith('location') ? '人员名称:' : '车辆名称' }}</span>
@@ -173,13 +173,13 @@
               deviceType.startsWith('gasDay_normal')
                 ? '当日巡检监测'
                 : deviceType.startsWith('dustDayReport') ||
-                  deviceType.startsWith('bundleDayReport') ||
-                  deviceType.startsWith('bundleSpyDayReport') ||
-                  deviceType.startsWith('bundleReport') ||
-                  deviceType.startsWith('bundleSpyReport') ||
-                  deviceType.startsWith('dustReport')
-                ? '最新监测报表'
-                : '实时监测'
+                    deviceType.startsWith('bundleDayReport') ||
+                    deviceType.startsWith('bundleSpyDayReport') ||
+                    deviceType.startsWith('bundleReport') ||
+                    deviceType.startsWith('bundleSpyReport') ||
+                    deviceType.startsWith('dustReport')
+                  ? '最新监测报表'
+                  : '实时监测'
             "
           >
             <template v-if="(deviceType.startsWith('fanlocal') || deviceType.startsWith('fanmain')) && activeKey == 'monitor'">
@@ -633,7 +633,7 @@
     <mainPath
       v-if="deviceType == 'majorpath'"
       :dataSource="majorPathEchartsData"
-      style="width: 300px; height: 300px; position: absolute; left: 250px; top: 40px"
+      style="position: absolute; top: 40px; left: 250px; width: 300px; height: 300px"
     />
     <component v-if="modalVisible" :is="currentModal" v-model:visible="modalVisible" :dataSource="dataSource" :activeID="activeID" />
   </div>
@@ -684,8 +684,6 @@
   import { formConfig } from '../../../safetyMonitor/safety.data';
   import { getDictItemsByCode } from '/@/utils/dict';
   import BarAndLine from '/@/components/chart/BarAndLine.vue';
-  import MTreeSelect from '/@/components/Form/src/jeecg/components/MTreeSelect.vue';
-  // import ApiSelect from '/@/components/Form/src/components/ApiSelect.vue';
   import { nextTick } from 'vue';
   import { useMethods } from '/@/hooks/system/useMethods';
   import { useGo } from '/@/hooks/web/usePage';
@@ -1136,12 +1134,15 @@
       } else if (deviceType.value.startsWith('vehicle')) {
         actions.setGlobalState({ locationId: record.deviceID, locationObj: record, pageObj: null, type: 'car' });
       } else {
-        actions.setGlobalState({ locationId: record.deviceID, locationObj: record, pageObj: null });
+        actions.setGlobalState({ locationId: record.deviceID, locationObj: record, pageObj: null, type: deviceType.value });
       }
     }
   }
   function getSearch(param) {
-    (gasSearch.address = param.address), (gasSearch.userName = param.userName), (gasSearch.insType = param.insType), (gasSearch.class = param.class);
+    ((gasSearch.address = param.address),
+      (gasSearch.userName = param.userName),
+      (gasSearch.insType = param.insType),
+      (gasSearch.class = param.class));
   }
   // 详情跳转
   function goDetail(record?) {
@@ -1472,8 +1473,8 @@
 </script>
 
 <style lang="less" scoped>
-  @import '/@/design/theme.less';
-  @import '/@/design/vent/modal.less';
+  @import url('/@/design/theme.less');
+  @import url('/@/design/vent/modal.less');
   @ventSpace: zxm;
 
   @{theme-deepblue} {
@@ -1518,21 +1519,21 @@
     --location-bottom-bg: #00709955;
     --location-bottom-border: #aef3ff4d;
   }
+
   .scene-box {
     pointer-events: none;
   }
 
   .top-header {
     position: fixed;
+    z-index: 1;
     width: 100%;
     height: 56px;
     background: var(--image-modal-top);
+    color: #fffd;
     text-align: center;
     line-height: 56px;
-    font-size: 28px;
-    color: #ffffffdd;
     font-weight: 600;
-    z-index: 1;
     letter-spacing: 2px;
     font-size: 30px;
   }
@@ -1541,9 +1542,9 @@
     position: fixed;
     top: 100px;
     left: 10px;
-    color: var(--vent-font-color);
     display: flex;
     justify-content: center;
+    color: var(--vent-font-color);
     font-size: 22px;
 
     .title {
@@ -1552,11 +1553,11 @@
   }
 
   .expansion-icon {
-    background: var(--image-tree-icon-bg) no-repeat;
-    background-size: contain;
     position: absolute;
-    left: 190px;
     top: 25px;
+    left: 190px;
+    background: var(--image-tree-icon-bg) no-repeat;
+    background-size: contain;
 
     &:hover {
       background: var(--image-tree-icon-hover-bg) no-repeat;
@@ -1565,15 +1566,15 @@
   }
 
   .device-select {
-    width: 250px;
-    height: 500px;
-    background: var(--image-tree-bg) no-repeat;
     position: fixed;
     top: 100px;
     left: 10px;
+    width: 250px;
+    height: 500px;
+    padding: 20px 10px 30px;
+    background: var(--image-tree-bg) no-repeat;
     background-size: contain;
     pointer-events: auto;
-    padding: 20px 10px 30px 10px;
   }
 
   .inspect-info-xj {
@@ -1589,9 +1590,9 @@
   }
 
   .is-expansion-icon {
+    z-index: 999;
     padding: 5px;
     pointer-events: auto;
-    z-index: 999;
   }
 
   .device-select-show {
@@ -1611,18 +1612,18 @@
   }
 
   .node-select-show {
+    left: 10px;
+    display: flex;
+    align-items: center;
+    justify-content: flex-start;
     width: 276px;
     height: 44px;
     background: var(--image-tree-expansion-bg) no-repeat;
-    left: 10px;
+    transition: all 1s cubic-bezier(0.165, 0.84, 0.44, 1) 0.5s;
     animation-name: treeShow;
     /* 持续时间 */
     animation-duration: 1s;
-    transition: all 1s cubic-bezier(0.165, 0.84, 0.44, 1) 0.5s;
-    display: flex;
-    align-items: center;
     margin-left: 0;
-    justify-content: flex-start;
     pointer-events: auto;
 
     &:hover {
@@ -1631,8 +1632,8 @@
 
     .put-away-icon {
       position: relative;
-      display: inline-block;
       left: 4px;
+      display: inline-block;
     }
   }
 
@@ -1667,36 +1668,36 @@
       }
 
       input {
-        height: 0px !important;
+        height: 0 !important;
       }
     }
 
     &::-webkit-scrollbar-track {
-      -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
-      border-radius: 10px;
-      background: #ededed22;
       height: 100px;
+      background: #ededed22;
+      box-shadow: inset 0 0 5px rgb(0 0 0 / 20%);
+      border-radius: 10px;
     }
 
     &::-webkit-scrollbar-thumb {
-      -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+      box-shadow: inset 0 0 5px rgb(0 0 0 / 20%);
       background: #4288a444;
     }
   }
 
   .location-icon {
-    width: 46px;
-    height: 178px;
     position: absolute;
     top: 100px;
+    width: 46px;
+    height: 178px;
     background: var(--image-location-bg) no-repeat;
+    color: var(--vent-font-color);
+    cursor: pointer;
     background-size: contain;
     writing-mode: vertical-lr;
     line-height: 46px;
-    color: var(--vent-font-color);
     padding-top: 10px;
     pointer-events: auto;
-    cursor: pointer;
 
     &:hover {
       background: var(--image-location-hover-bg) no-repeat;
@@ -1715,36 +1716,36 @@
     pointer-events: auto;
 
     .location-select-box {
+      position: relative;
       width: 100%;
       height: 100%;
-      position: relative;
 
       &::before {
-        content: '';
         position: absolute;
-        width: 230px;
-        height: 500px;
         top: 0;
         left: 0;
+        z-index: -1;
+        width: 230px;
+        height: 500px;
         background: var(--image-tree-bg) no-repeat;
-        background-size: contain;
         transform: rotateY(180deg);
-        z-index: -1;
+        content: '';
+        background-size: contain;
       }
 
       .location-top-title {
-        color: var(--vent-font-color);
         position: absolute;
-        width: 225px;
-        height: 68px;
-        background: var(--image-turn-location-top-bg) no-repeat;
-        background-size: contain;
         top: 5px;
         left: 5px;
         display: flex;
         flex-direction: row;
-        justify-content: space-between;
         align-items: flex-end;
+        justify-content: space-between;
+        width: 225px;
+        height: 68px;
+        background: var(--image-turn-location-top-bg) no-repeat;
+        color: var(--vent-font-color);
+        background-size: contain;
 
         .title {
           font-size: 18px;
@@ -1755,12 +1756,12 @@
       }
 
       .location-expansion-icon {
-        background: var(--image-tree-icon-cover-bg) no-repeat;
-        background-size: contain;
         position: relative;
-        left: 10px;
         top: -15px;
+        left: 10px;
         padding: 5px;
+        background: var(--image-tree-icon-cover-bg) no-repeat;
+        background-size: contain;
 
         &:hover {
           background: var(--image-tree-icon-cover-hover-bg) no-repeat;
@@ -1770,47 +1771,47 @@
     }
 
     .location-container {
-      width: 200px;
-      height: 390px;
       position: absolute;
-      display: flex;
-      flex-direction: column;
       top: 80px;
       left: 18px;
+      display: flex;
+      flex-direction: column;
+      width: 200px;
+      height: 390px;
       overflow-y: auto;
 
       .location-item {
-        color: var(--vent-font-color);
-        line-height: 30px;
         display: flex;
         justify-content: space-between;
+        margin: 3px 0;
+        color: var(--vent-font-color);
+        line-height: 30px;
         // background-image: var(--vent-gas-list-item-bg-img);
         background-image: linear-gradient(to left, #39f5ff05, #39f5ff10);
-        margin: 3px 0;
 
         .item-title {
           width: 80px;
-          text-align: right;
           color: var(--vent-table-action-link);
+          text-align: right;
         }
       }
 
       .location-bottom-btn {
-        width: 100%;
-        color: var(--vent-font-color);
         display: flex;
         justify-content: flex-end;
+        width: 100%;
+        color: var(--vent-font-color);
         margin-top: 20px;
 
         span {
           display: inline-block;
           width: 100%;
-          background: var(--location-bottom-bg);
-          border-radius: 3px;
+          padding: 2px 0;
           border: 1px solid var(--location-bottom-border);
+          background: var(--location-bottom-bg);
           text-align: center;
-          padding: 2px 0;
           cursor: pointer;
+          border-radius: 3px;
 
           &:hover {
             background: #00557422;
@@ -1837,7 +1838,7 @@
   }
 
   .location-btn-show {
-    right: -0px;
+    right: -0;
     animation-name: locationBtnShow;
     /* 持续时间 */
     animation-duration: 1s;
@@ -1860,7 +1861,7 @@
     position: relative;
     background-color: var(--vent-configurable-module-border-bd);
     backdrop-filter: blur(18px);
-    border: 1px solid #ffffff55;
+    border: 1px solid #fff5;
     border-radius: 8px;
     // .tabs-box {
     //   width: calc(100% - 12px) !important;
@@ -1881,70 +1882,77 @@
         border-radius: 15%;
         padding: 8px;
         backdrop-filter: blur(10px);
-        background-color: rgba(30, 58, 117, 0.418);
+        background-color: rgb(30 58 117 / 41.8%);
         margin-right: 10px;
         cursor: pointer;
+
         &::after {
-          width: 34px;
-          height: 34px;
-          content: '';
           position: absolute;
           top: 8px;
           left: 8px;
+          width: 34px;
+          height: 34px;
           background: var(--image-tohome) no-repeat center;
+          content: '';
           background-repeat: no-repeat;
           background-size: 100% 100%;
         }
+
         &:hover {
-          background-color: rgba(79, 104, 134, 0.418);
+          background-color: rgb(79 104 134 / 41.8%);
         }
       }
+
       .to-2D {
         width: 50px;
         height: 50px;
         border-radius: 15%;
         padding: 8px;
         backdrop-filter: blur(10px);
-        background-color: rgba(30, 58, 117, 0.418);
-
+        background-color: rgb(30 58 117 / 41.8%);
         cursor: pointer;
+
         &::after {
-          width: 34px;
-          height: 34px;
-          content: '';
           position: absolute;
           top: 8px;
           left: 8px;
+          width: 34px;
+          height: 34px;
           background: var(--image-to2D) no-repeat center;
+          content: '';
           background-repeat: no-repeat;
           background-size: 100% 100%;
         }
+
         &:hover {
-          background-color: rgba(79, 104, 134, 0.418);
+          background-color: rgb(79 104 134 / 41.8%);
         }
       }
+
       .to-3D {
         width: 50px;
         height: 50px;
         border-radius: 15%;
         padding: 8px;
         backdrop-filter: blur(10px);
-        background-color: rgba(30, 58, 117, 0.418);
+        background-color: rgb(30 58 117 / 41.8%);
         margin-right: 10px;
         cursor: pointer;
+
         &::after {
-          width: 34px;
-          height: 34px;
-          content: '';
           position: absolute;
           top: 8px;
           left: 8px;
+          width: 34px;
+          height: 34px;
           background: var(--image-to3D) no-repeat center;
+          content: '';
           background-repeat: no-repeat;
           background-size: 100% 100%;
         }
+
         &:hover {
-          background-color: rgba(79, 104, 134, 0.418);
+          background-color: rgb(79 104 134 / 41.8%);
         }
       }
 
@@ -1974,57 +1982,52 @@
     }
 
     .table-hide-icon {
-      color: var(--vent-font-color);
-      cursor: pointer;
       position: absolute;
-      right: 20px;
       top: 10px;
+      right: 20px;
       z-index: 9999;
+      color: var(--vent-font-color);
+      cursor: pointer;
     }
 
     .enter-detail {
-      color: var(--vent-font-color);
-      cursor: pointer;
       position: absolute;
-      right: 35px;
       top: 35px;
-      padding: 5px;
-      border-radius: 5px;
-      margin-left: 8px;
-      margin-right: 8px;
-      width: auto;
-      height: 33px !important;
+      right: 35px;
+      z-index: 999;
       display: flex;
       align-items: center;
       justify-content: center;
+      width: auto;
+      height: 33px !important;
+      padding: 5px;
+      padding: 5px 15px;
       color: var(--vent-font-color);
-      padding: 5px 15px 5px 15px;
-      z-index: 999;
       cursor: pointer;
+      border-radius: 5px;
+      margin-left: 8px;
+      margin-right: 8px;
 
       &:hover {
         background: var(--vent-device-manager-control-btn-hover);
       }
 
       &::before {
+        position: absolute;
+        inset: 3px 0 0 3px;
+        z-index: -1;
         width: calc(100% - 6px);
         height: 27px;
+        /* important */
+        background: var(--vent-device-manager-control-btn);
         content: '';
-        position: absolute;
-        top: 3px;
-        right: 0;
-        left: 3px;
-        bottom: 0;
-        z-index: -1;
         border-radius: inherit;
-        /*important*/
-        background: var(--vent-device-manager-control-btn);
       }
     }
   }
 
   .table-hide {
-    height: 0px;
+    height: 0;
     animation-name: tableHide;
     /* 持续时间 */
     animation-duration: 1s;
@@ -2047,15 +2050,15 @@
       width: 400px;
 
       .location-form-label {
-        width: 100px;
         display: inline-block;
+        width: 100px;
         color: var(--vent-font-color);
       }
 
       input {
+        border: 1px solid var(--vent-form-item-border) !important;
         background: transparent !important;
         color: var(--vent-font-color);
-        border: 1px solid var(--vent-form-item-border) !important;
       }
     }
 
@@ -2066,7 +2069,7 @@
 
   @keyframes tableShow {
     0% {
-      height: 0px;
+      height: 0;
       opacity: 0;
     }
 
@@ -2082,7 +2085,7 @@
     }
 
     100% {
-      height: 0px;
+      height: 0;
       opacity: 0;
     }
   }
@@ -2113,7 +2116,7 @@
 
   @keyframes locationShow {
     0% {
-      right: 0px;
+      right: 0;
       opacity: 0;
     }
 
@@ -2171,7 +2174,7 @@
 
   :deep(.zxm-select-dropdown) {
     left: 0 !important;
-    color: #000000 !important;
+    color: #000 !important;
   }
 
   :deep(.zxm-select-selector) {
@@ -2189,15 +2192,15 @@
   }
 
   .device-button {
-    height: 26px;
+    position: relative;
     display: flex;
-    justify-content: center;
     align-items: center;
-    color: var(--vent-font-color);
-    position: relative;
-    cursor: pointer;
+    justify-content: center;
+    height: 26px;
     padding: 0 20px;
     background: linear-gradient(45deg, #04e6fb55, #0c5cab55);
+    color: var(--vent-font-color);
+    cursor: pointer;
     clip-path: polygon(10px 0, 0 50%, 10px 100%, 100% 100%, calc(100% - 10px) 50%, 100% 0);
 
     &:nth-child(1) {

+ 83 - 94
src/views/vent/monitorManager/deviceMonitor/index1.vue

@@ -2,7 +2,7 @@
   <div class="scene-box">
     <DeviceVue ref="DeviceRef" :pageData="pageData" />
   </div>
-  <VentModal style="width: 100%; height: 100%; position: absolute" />
+  <VentModal style="position: absolute; width: 100%; height: 100%" />
 </template>
 
 <script setup lang="ts">
@@ -27,12 +27,6 @@
 
   // actions.setGlobalState({ url: { path: '/micro-vent-3dModal/dashboard/analysis', query: { type, deviceType } } });
 
-  const changePageType = (pageType) => {
-    console.log('页面类型', pageType);
-    routerParam.value = pageType;
-    actions.setGlobalState({ pageObj: { pageType: pageType } });
-  };
-
   watch(
     () => route.fullPath,
     (fullPath) => {
@@ -79,29 +73,29 @@
 </script>
 
 <style lang="less" scoped>
-  @import '/@/design/vent/modal.less';
+  @import url('/@/design/vent/modal.less');
   @ventSpace: zxm;
 
   .device-header {
     position: fixed;
+    z-index: -1;
     width: 100%;
     height: 56px;
     background: url('/@/assets/images/vent/home/modal-top.png');
+    color: #fffd;
     text-align: center;
     line-height: 56px;
     font-size: 28px;
-    color: #ffffffdd;
     font-weight: 600;
-    z-index: -1;
   }
 
   .select-node {
     position: fixed;
     top: 60px;
     left: 10px;
-    color: #fff;
     display: flex;
     justify-content: center;
+    color: #fff;
     font-size: 22px;
 
     .title {
@@ -110,11 +104,11 @@
   }
 
   .expansion-icon {
-    background: url('/@/assets/images/vent/home/tree-icon-bg.png') no-repeat;
-    background-size: contain;
     position: absolute;
-    left: 190px;
     top: 25px;
+    left: 190px;
+    background: url('/@/assets/images/vent/home/tree-icon-bg.png') no-repeat;
+    background-size: contain;
 
     &:hover {
       background: url('/@/assets/images/vent/home/tree-icon-hover-bg.png') no-repeat;
@@ -123,21 +117,21 @@
   }
 
   .device-select {
-    width: 250px;
-    height: 500px;
-    background: url('/@/assets/images/vent/home/tree-bg.png') no-repeat;
     position: fixed;
     top: 60px;
     left: 10px;
+    width: 250px;
+    height: 500px;
+    padding: 20px 10px 30px;
+    background: url('/@/assets/images/vent/home/tree-bg.png') no-repeat;
     background-size: contain;
     pointer-events: auto;
-    padding: 20px 10px 30px 10px;
   }
 
   .is-expansion-icon {
+    z-index: 999;
     padding: 5px;
     pointer-events: auto;
-    z-index: 999;
   }
 
   .device-select-show {
@@ -157,18 +151,18 @@
   }
 
   .node-select-show {
+    left: 10px;
+    display: flex;
+    align-items: center;
+    justify-content: flex-start;
     width: 276px;
     height: 44px;
     background: url('/@/assets/images/vent/home/tree-expansion-bg.png') no-repeat;
-    left: 10px;
+    transition: all 1s cubic-bezier(0.165, 0.84, 0.44, 1) 0.5s;
     animation-name: treeShow;
     /* 持续时间 */
     animation-duration: 1s;
-    transition: all 1s cubic-bezier(0.165, 0.84, 0.44, 1) 0.5s;
-    display: flex;
-    align-items: center;
     margin-left: 0;
-    justify-content: flex-start;
     pointer-events: auto;
 
     &:hover {
@@ -177,8 +171,8 @@
 
     .put-away-icon {
       position: relative;
-      display: inline-block;
       left: 4px;
+      display: inline-block;
     }
   }
 
@@ -213,37 +207,37 @@
       }
 
       input {
-        height: 0px !important;
+        height: 0 !important;
       }
     }
 
     &::-webkit-scrollbar-track {
-      -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
-      border-radius: 10px;
-      background: #ededed22;
       height: 100px;
+      background: #ededed22;
+      box-shadow: inset 0 0 5px rgb(0 0 0 / 20%);
+      border-radius: 10px;
     }
 
     &::-webkit-scrollbar-thumb {
-      -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+      box-shadow: inset 0 0 5px rgb(0 0 0 / 20%);
       background: #4288a444;
     }
   }
 
   .location-icon {
-    width: 46px;
-    height: 178px;
     position: absolute;
     top: 60px;
+    width: 46px;
+    height: 178px;
     // right: 0;
     background: url('/@/assets/images/vent/home/location-bg.png') no-repeat;
+    color: #fff;
+    cursor: pointer;
     background-size: contain;
     writing-mode: vertical-lr;
     line-height: 46px;
-    color: #fff;
     padding-top: 10px;
     pointer-events: auto;
-    cursor: pointer;
 
     &:hover {
       background: url('/@/assets/images/vent/home/location-hover-bg.png') no-repeat;
@@ -263,21 +257,21 @@
     pointer-events: auto;
 
     .location-select-box {
+      position: relative;
       width: 100%;
       height: 100%;
-      position: relative;
 
       &::before {
-        content: '';
         position: absolute;
-        width: 230px;
-        height: 500px;
         top: 0;
         left: 0;
+        z-index: -1;
+        width: 230px;
+        height: 500px;
         background: url('/@/assets/images/vent/home/tree-bg.png') no-repeat;
-        background-size: contain;
         transform: rotateY(180deg);
-        z-index: -1;
+        content: '';
+        background-size: contain;
         // &:hover {
         //   background: url('/@/assets/images/vent/home/tree-icon-hover-bg.png') no-repeat;
         //   background-size: contain;
@@ -285,18 +279,18 @@
       }
 
       .location-top-title {
-        color: #fff;
         position: absolute;
-        width: 225px;
-        height: 68px;
-        background: url('/@/assets/images/vent/home/turn-location-top-bg.png') no-repeat;
-        background-size: contain;
         top: 5px;
         left: 5px;
         display: flex;
         flex-direction: row;
-        justify-content: space-between;
         align-items: flex-end;
+        justify-content: space-between;
+        width: 225px;
+        height: 68px;
+        background: url('/@/assets/images/vent/home/turn-location-top-bg.png') no-repeat;
+        color: #fff;
+        background-size: contain;
 
         .title {
           font-size: 18px;
@@ -307,12 +301,12 @@
       }
 
       .location-expansion-icon {
-        background: url('/@/assets/images/vent/home/tree-icon-cover-bg.png') no-repeat;
-        background-size: contain;
         position: relative;
-        left: 10px;
         top: -15px;
+        left: 10px;
         padding: 5px;
+        background: url('/@/assets/images/vent/home/tree-icon-cover-bg.png') no-repeat;
+        background-size: contain;
 
         &:hover {
           background: url('/@/assets/images/vent/home/tree-icon-cover-hover-bg.png') no-repeat;
@@ -322,46 +316,46 @@
     }
 
     .location-container {
-      width: 200px;
-      height: 390px;
       position: absolute;
-      display: flex;
-      flex-direction: column;
       top: 80px;
       left: 18px;
+      display: flex;
+      flex-direction: column;
+      width: 200px;
+      height: 390px;
       overflow-y: auto;
 
       .location-item {
-        color: #fff;
-        line-height: 30px;
         display: flex;
         justify-content: space-between;
-        background-image: linear-gradient(to left, #39f5ff05, #39f5ff10);
         margin: 3px 0;
+        color: #fff;
+        line-height: 30px;
+        background-image: linear-gradient(to left, #39f5ff05, #39f5ff10);
 
         .item-title {
           width: 80px;
-          text-align: right;
           color: #87f1ff;
+          text-align: right;
         }
       }
 
       .location-bottom-btn {
-        width: 100%;
-        color: #fff;
         display: flex;
         justify-content: flex-end;
+        width: 100%;
+        color: #fff;
         margin-top: 20px;
 
         span {
           display: inline-block;
           width: 100%;
+          padding: 2px 0;
+          border: 1px solid rgb(174 243 255 / 30%);
           background: #00709955;
-          border-radius: 3px;
-          border: 1px solid rgba(174, 243, 255, 0.3);
           text-align: center;
-          padding: 2px 0;
           cursor: pointer;
+          border-radius: 3px;
 
           &:hover {
             background: #00557422;
@@ -388,7 +382,7 @@
   }
 
   .location-btn-show {
-    right: -0px;
+    right: -0;
     animation-name: locationBtnShow;
     /* 持续时间 */
     animation-duration: 1s;
@@ -407,20 +401,20 @@
     position: relative;
 
     .to-small {
+      position: absolute;
+      top: -65px;
+      right: 36px;
       width: 60px;
       height: 60px;
+      padding: 8px;
       background: url('/@/assets/images/vent/home/tosmall.png') no-repeat center;
       background-size: auto;
-      position: absolute;
-      top: -65px;
-      right: 36px;
       border-radius: 10px;
-      padding: 8px;
       backdrop-filter: blur(10px);
-      background-color: rgba(45, 86, 137, 0.418);
+      background-color: rgb(45 86 137 / 41.8%);
 
       &:hover {
-        background-color: rgba(79, 104, 134, 0.418);
+        background-color: rgb(79 104 134 / 41.8%);
       }
     }
 
@@ -431,16 +425,16 @@
       width: 100%;
 
       .device-button {
+        position: relative;
+        display: flex;
+        align-items: center;
+        justify-content: center;
         height: 26px;
         padding: 0 20px;
         background: linear-gradient(45deg, #04e6fb55, #0c5cab55);
-        clip-path: polygon(10px 0, 0 50%, 10px 100%, 100% 100%, calc(100% - 10px) 50%, 100% 0);
-        display: flex;
-        justify-content: center;
-        align-items: center;
         color: #fff;
-        position: relative;
         cursor: pointer;
+        clip-path: polygon(10px 0, 0 50%, 10px 100%, 100% 100%, calc(100% - 10px) 50%, 100% 0);
 
         &:nth-child(1) {
           left: calc(-6px * 1);
@@ -518,41 +512,36 @@
     }
 
     .enter-detail {
-      color: #fff;
-      cursor: pointer;
       position: absolute;
-      right: 120px;
       top: -6px;
-      padding: 5px;
-      border-radius: 5px;
-      margin-left: 8px;
-      margin-right: 8px;
-      width: auto;
-      height: 33px !important;
+      right: 120px;
       display: flex;
       align-items: center;
       justify-content: center;
+      width: auto;
+      height: 33px !important;
+      padding: 5px;
+      padding: 5px 15px;
       color: #fff;
-      padding: 5px 15px 5px 15px;
       cursor: pointer;
+      border-radius: 5px;
+      margin-left: 8px;
+      margin-right: 8px;
 
       &:hover {
         background: linear-gradient(#2cd1ff55, #1eb0ff55);
       }
 
       &::before {
+        position: absolute;
+        inset: 3px 0 0 3px;
+        z-index: -1;
         width: calc(100% - 6px);
         height: 27px;
+        /* important */
+        background: linear-gradient(#1fa6cb, #127cb5);
         content: '';
-        position: absolute;
-        top: 3px;
-        right: 0;
-        left: 3px;
-        bottom: 0;
-        z-index: -1;
         border-radius: inherit;
-        /*important*/
-        background: linear-gradient(#1fa6cb, #127cb5);
       }
     }
   }
@@ -583,7 +572,7 @@
 
   @keyframes locationShow {
     0% {
-      right: 0px;
+      right: 0;
       opacity: 0;
     }
 
@@ -636,6 +625,6 @@
 
   :deep(.zxm-select-dropdown) {
     left: 0 !important;
-    color: #000000 !important;
+    color: #000 !important;
   }
 </style>

+ 5 - 0
src/views/vent/monitorManager/mainFanMonitor/main.data.ts

@@ -398,6 +398,11 @@ export const modalTypeArr = {
       value: '不停风倒机',
       permission: 'fan:changeSmoke1',
     },
+    {
+      key: 'changeSmoke2',
+      value: '不停风倒机',
+      permission: 'fan:changeSmoke2',
+    },
     {
       key: 'changeDirection',
       value: '一键反风',

+ 42 - 43
src/views/ventAI/manageAssistent/components/chatModal/FilePreviewPanel.vue

@@ -273,28 +273,28 @@
 
 <style scoped lang="less">
   .file-preview-panel {
-    height: 100%;
     display: flex;
     flex-direction: column;
+    height: 100%;
   }
 
   .panel-header {
-    padding: 10px 10px 5px 10px;
     display: flex;
-    justify-content: space-between;
     align-items: center;
+    justify-content: space-between;
+    padding: 10px 10px 5px;
     flex-shrink: 0;
-    border-bottom: 1px solid rgba(63, 80, 106, 0.25);
+    border-bottom: 1px solid rgb(63 80 106 / 25%);
 
     .panel-title {
+      flex: 1;
+      color: #e0e6ed;
+      overflow: hidden;
       font-size: 15px;
       font-weight: 600;
       line-height: 1.4;
-      color: #e0e6ed;
-      overflow: hidden;
       text-overflow: ellipsis;
       white-space: nowrap;
-      flex: 1;
       margin-right: 10px;
     }
 
@@ -374,14 +374,14 @@
     }
 
     .close-btn {
-      cursor: pointer;
-      width: 36px;
-      height: 36px;
       display: flex;
       align-items: center;
       justify-content: center;
-      flex-shrink: 0;
+      width: 36px;
+      height: 36px;
+      cursor: pointer;
       transition: all 0.3s;
+      flex-shrink: 0;
       margin-bottom: auto;
 
       .btn-close-icon {
@@ -404,11 +404,11 @@
     height: 100%;
 
     .image-preview {
-      width: 100%;
-      height: 100%;
       display: flex;
       align-items: center;
       justify-content: center;
+      width: 100%;
+      height: 100%;
 
       img {
         width: 100%;
@@ -433,29 +433,28 @@
       width: calc(100% + 32px);
       height: calc(100% + 32px);
       margin: -16px;
-      overflow-x: auto;
-      overflow-y: auto;
+      overflow: auto auto;
 
       :deep(.docx-wrapper) {
+        display: inline-block;
         padding: 0;
         background: transparent;
-        display: inline-block;
         min-width: 100%;
       }
     }
 
     .excel-preview {
+      display: flex;
+      flex-direction: column;
       width: calc(100% + 32px);
       height: calc(100% + 32px);
       margin: -16px;
-      display: flex;
-      flex-direction: column;
       overflow: hidden;
 
       .excel-tabs {
         display: flex;
         gap: 0;
-        border-bottom: 1px solid rgba(255, 255, 255, 0.1);
+        border-bottom: 1px solid rgb(255 255 255 / 10%);
         flex-shrink: 0;
         padding: 0 16px;
 
@@ -480,8 +479,8 @@
 
       .excel-table-wrapper {
         flex: 1;
-        overflow: auto;
         padding: 0 16px;
+        overflow: auto;
 
         .excel-table {
           border-collapse: collapse;
@@ -491,18 +490,18 @@
 
           th,
           td {
-            border: 1px solid rgba(255, 255, 255, 0.15);
             padding: 6px 10px;
+            border: 1px solid rgb(255 255 255 / 15%);
             text-align: left;
             white-space: nowrap;
           }
 
           th {
-            background: rgba(10, 132, 255, 0.15);
-            color: #e0e6ed;
-            font-weight: 600;
             position: sticky;
             top: 0;
+            background: rgb(10 132 255 / 15%);
+            color: #e0e6ed;
+            font-weight: 600;
           }
 
           td {
@@ -510,7 +509,7 @@
           }
 
           tr:hover td {
-            background: rgba(10, 132, 255, 0.08);
+            background: rgb(10 132 255 / 8%);
           }
         }
       }
@@ -528,18 +527,18 @@
 
         th,
         td {
-          border: 1px solid rgba(255, 255, 255, 0.15);
           padding: 6px 10px;
+          border: 1px solid rgb(255 255 255 / 15%);
           text-align: left;
           white-space: nowrap;
         }
 
         th {
-          background: rgba(10, 132, 255, 0.15);
-          color: #e0e6ed;
-          font-weight: 600;
           position: sticky;
           top: 0;
+          background: rgb(10 132 255 / 15%);
+          color: #e0e6ed;
+          font-weight: 600;
         }
 
         td {
@@ -547,7 +546,7 @@
         }
 
         tr:hover td {
-          background: rgba(10, 132, 255, 0.08);
+          background: rgb(10 132 255 / 8%);
         }
       }
     }
@@ -569,13 +568,13 @@
 
           th,
           td {
-            border: 1px solid rgba(255, 255, 255, 0.15);
             padding: 8px 12px;
+            border: 1px solid rgb(255 255 255 / 15%);
             text-align: left;
           }
 
           th {
-            background: rgba(10, 132, 255, 0.1);
+            background: rgb(10 132 255 / 10%);
             font-weight: 600;
           }
         }
@@ -611,13 +610,13 @@
         :deep(h1) {
           font-size: 24px;
           padding-bottom: 8px;
-          border-bottom: 1px solid rgba(255, 255, 255, 0.1);
+          border-bottom: 1px solid rgb(255 255 255 / 10%);
         }
 
         :deep(h2) {
           font-size: 20px;
           padding-bottom: 6px;
-          border-bottom: 1px solid rgba(255, 255, 255, 0.1);
+          border-bottom: 1px solid rgb(255 255 255 / 10%);
         }
 
         :deep(h3) {
@@ -629,24 +628,24 @@
         }
 
         :deep(code) {
-          background: rgba(10, 132, 255, 0.15);
           padding: 2px 6px;
+          background: rgb(10 132 255 / 15%);
+          color: #79c0ff;
           border-radius: 4px;
           font-family: monospace;
           font-size: 13px;
-          color: #79c0ff;
         }
 
         :deep(pre) {
-          background: rgba(0, 0, 0, 0.3);
           padding: 12px 16px;
+          background: rgb(0 0 0 / 30%);
           border-radius: 6px;
           overflow-x: auto;
           margin-bottom: 12px;
 
           code {
-            background: none;
             padding: 0;
+            background: none;
             color: #e0e6ed;
           }
         }
@@ -675,18 +674,18 @@
 
           th,
           td {
-            border: 1px solid rgba(255, 255, 255, 0.15);
             padding: 8px 12px;
+            border: 1px solid rgb(255 255 255 / 15%);
             text-align: left;
           }
 
           th {
-            background: rgba(10, 132, 255, 0.1);
+            background: rgb(10 132 255 / 10%);
             font-weight: 600;
           }
 
           tr:hover td {
-            background: rgba(10, 132, 255, 0.05);
+            background: rgb(10 132 255 / 5%);
           }
         }
 
@@ -705,9 +704,9 @@
         }
 
         :deep(hr) {
-          border: none;
-          border-top: 1px solid rgba(255, 255, 255, 0.1);
           margin: 16px 0;
+          border: none;
+          border-top: 1px solid rgb(255 255 255 / 10%);
         }
       }
     }