Просмотр исходного кода

fix:解决会议室闪烁的问题

chenzhen2 2 лет назад
Родитель
Сommit
f5310fc42e

+ 2 - 2
src/apis/envmonitor.ts

@@ -170,7 +170,7 @@ export const querySpaceSceneConfig = (params: any) => {
  *  查询加班记录
  */
 export const queryCustomAndScence = (params: any) => {
-  //return https().request<any>(`${testApi}customScene/queryCustomAndScence?${params}`, Method.GET, undefined, ContentType.json)
+  // return https().request<any>(`${testApi}customScene/queryCustomAndScence?${params}`, Method.GET, undefined, ContentType.json)
   return https().request<any>(`${duoduoenvService}customScene/queryCustomAndScence?${params}`, Method.GET, undefined, ContentType.json)
 }
 
@@ -179,7 +179,7 @@ export const queryCustomAndScence = (params: any) => {
  * @param params
  */
 export const saveBatchCustomScene = (data: any) => {
-  //return post(`${testApi}customScene/saveBatchCustomScene`, data)
+  // return post(`${testApi}customScene/saveBatchCustomScene`, data)
   return post(`${duoduoenvService}customScene/saveBatchCustomScene`, data)
 }
 

+ 22 - 25
src/views/envmonitor/components/Light/index.vue

@@ -191,7 +191,7 @@ export default defineComponent({
         if (proxyData.userIsControl) {
           // debugger
           if (type === "allLamp") {
-            let isExeSpaceTime:Boolean = proxyData.checkDeviceIsExeSpaceTime(
+            let isExeSpaceTime: Boolean = proxyData.checkDeviceIsExeSpaceTime(
               proxyData.lampList
             );
             if (
@@ -214,7 +214,9 @@ export default defineComponent({
             proxyData.updateAllLampStatus(statusFlag);
             proxyData.setLamp(type, "", statusFlag, 0); // 调接口
           } else {
-            let isExeSpaceTime:Boolean= proxyData.checkDeviceIsExeSpaceTime([item]);
+            let isExeSpaceTime: Boolean = proxyData.checkDeviceIsExeSpaceTime([
+              item,
+            ]);
             if (proxyData.forceOverTimeFlag && item.switch && isExeSpaceTime) {
               // 强制加班开灯
               contx.emit("triggerWork", 3, item);
@@ -420,15 +422,17 @@ export default defineComponent({
           proxyData.getTimeLampStatus(checkData, type, id, value, index);
         });
       },
+      // 灯灯接口清除定时器
+      clearLightStatusTimer() {
+        clearTimeout(proxyData.lightsStatusTimer);
+        proxyData.lightsStatusTimer = null;
+      },
       // 定时刷新接口
-      startLightsStatusTimer() {
-        if (proxyData.lightsStatusTimer) {
-          window.clearTimeout(proxyData.lightsStatusTimer);
-          proxyData.lightsStatusTimer = null;
-        }
-        proxyData.lightsStatusTimer = window.setTimeout(() => {
+      startLightsStatusTimer(timerLen: any = 2000) {
+        proxyData.lightsStatusTimer = setTimeout(() => {
           proxyData.getLampList();
-        }, 2000);
+          proxyData.clearLightStatusTimer();
+        }, timerLen);
       },
     });
     const isShowChildLight = computed(() => {
@@ -437,16 +441,17 @@ export default defineComponent({
     watch(
       props,
       (newProps: any) => {
-        if (newProps.spaceId) {
-          // 空间id改变的重新获取值调用接口
-          console.log("spaceid变化了=======");
-          proxyData.startLightsStatusTimer();
-        }
         // 定时调空间信息
         proxyData.userIsControl = newProps.userIsControl;
         proxyData.controlMode = newProps.controlMode;
         proxyData.forceOverTimeFlag = newProps.forceOverTimeFlag;
-        proxyData.seviceEquipmentList = props.seviceEquipmentList;
+        proxyData.seviceEquipmentList = newProps.seviceEquipmentList;
+        if (newProps.spaceId) {
+          // 空间id改变的重新获取值调用接口
+          proxyData.clearLightStatusTimer();
+          proxyData.getLampList();
+          console.log("调用了====");
+        }
       },
       {
         deep: false,
@@ -454,17 +459,9 @@ export default defineComponent({
       }
     );
     onBeforeUnmount(() => {
-      if (proxyData.lightsStatusTimer) {
-        window.clearTimeout(proxyData.lightsStatusTimer);
-        proxyData.lightsStatusTimer = null;
-      }
-    });
-    onMounted(() => {
-      // console.log('空间切换====d')
-      // 获取空调信息
-      proxyData.getLampList();
-      // proxyData.startLightsStatusTimer()
+      proxyData.clearLightStatusTimer();
     });
+    onMounted(() => {});
     return {
       isShowChildLight,
       ...toRefs(proxyData),

+ 72 - 54
src/views/envmonitor/index.vue

@@ -1,4 +1,4 @@
-                                <template>
+<template>
   <div
     class="main"
     :style="{
@@ -208,7 +208,7 @@
       />
       <!--空调自动控制 end-->
       <Light
-        v-if="spaceExistenceDevice.light"
+        v-if="spaceExistenceDevice.light && spaceInfo.spaceId"
         :forceOverTimeFlag="forceOverTimeFlag"
         :controlMode="controlMode"
         :seviceEquipmentList="seviceEquipmentList"
@@ -580,8 +580,12 @@ export default defineComponent({
     let controlMode: number = 0;
     let deviceItem: any = null;
     let allDevice: any = [];
+    let spaceEquipList: any = [];
+    let equipTimer: any = null;
     const proxyData = reactive({
+      equipTimer: equipTimer,
       seviceEquipmentList: allDevice, // 所有的设备
+      spaceEquipList: spaceEquipList,
       seviceEquipmentListFlag: false,
       enterType: 1,
       deviceItem: deviceItem,
@@ -851,9 +855,12 @@ export default defineComponent({
       // 关于手动控制是否展示加班弹窗的问题处理
       checkDeviceShowWork() {
         proxyData.seviceEquipmentList = proxyData.workkArr[0].equipmentList;
-          proxyData.seviceEquipmentList.map((item: any) => {
-            item.isExeSpaceTime = 1;
+        proxyData.seviceEquipmentList.map((item: any) => {
+          proxyData.spaceEquipList.map((spaceEquipItem: any) => {
+            if (item.id == spaceEquipItem.equipmentId) {
+            }
           });
+        });
       },
       /**
        * 关闭加班
@@ -1347,40 +1354,21 @@ export default defineComponent({
           spaceId: proxyData.spaceInfo.spaceId,
           // projectId: proxyData.projectId,
         };
-        /**
-         *重新获取设备的时候,先初始化数据
-         */
-        proxyData.spaceExistenceDevice = {
-          curtain: false,
-          light: false,
-          airConditioner: false,
-          bodySensor: false,
-        };
         let queryParams: any = setQueryConfig(params);
         getSpaceEquipType(queryParams).then((res) => {
           let resData: any = res;
           if (resData.result === "success") {
             let data: any = resData?.data ?? [];
-            for (let i = 0; i < data.length; i++) {
-              proxyData.spaceExistenceDevice[data[i]] = true;
+            for (let key in proxyData.spaceExistenceDevice) {
+              let flag: any = false;
+              for (let i = 0; i < data.length; i++) {
+                if (key == data[i]) {
+                  flag = true;
+                }
+              }
+              proxyData.spaceExistenceDevice[key] = flag;
             }
-            // for (let key in proxyData.spaceExistenceDevice) {
-            //   let flag: any = false;
-            //   for (let i = 0; i < data.length; i++) {
-            //     // proxyData.spaceExistenceDevice[data[i]] = true;
-            //     if (data[i] === key) {
-            //       flag = true;
-            //       break;
-            //     }
-            //   }
-            //   proxyData.spaceExistenceDevice[key] = flag;
-            // }
-            // if (proxyData.spaceExistenceDevice.airConditioner) {
-            //   proxyData.navList[0].noShow = true
-            // } else {
-            //   proxyData.navList[0].noShow = false
-            // }
-            // debugger
+            // app端底部的导航判断
             if (proxyData.spaceExistenceDevice.light) {
               proxyData.navList[1].noShow = true;
             } else {
@@ -1489,7 +1477,7 @@ export default defineComponent({
        */
       scenarioArr: scenarioArr,
       // 定时获取场景的配置
-      querySpaceSceneConfigTimer(timer: any = 10000) {
+      querySpaceSceneConfigTimer(timer: any = 100000) {
         let timerOut: any = setTimeout(() => {
           proxyData.querySpaceSceneConfig();
           clearTimeout(timerOut);
@@ -1501,13 +1489,17 @@ export default defineComponent({
         };
         let str: any = setQueryConfig(params);
         // debugger;
-        querySpaceSceneConfig(str).then((res) => {
-          let resData: any = res;
-          let data: any = resData?.data ?? [];
-          proxyData.scenarioArr = data;
-          proxyData.checkIsSpaceScene();
-          proxyData.querySpaceSceneConfigTimer();
-        });
+        querySpaceSceneConfig(str)
+          .then((res) => {
+            let resData: any = res;
+            let data: any = resData?.data ?? [];
+            proxyData.scenarioArr = data;
+            proxyData.checkIsSpaceScene();
+            proxyData.querySpaceSceneConfigTimer();
+          })
+          .catch((error: any) => {
+            proxyData.querySpaceSceneConfigTimer();
+          });
       },
       /**
        *查询空间加班记录
@@ -1519,16 +1511,35 @@ export default defineComponent({
         clearTimeout(proxyData.secenTimer);
         proxyData.secenTimer = null;
       },
-      // 查询空间下面的设备
+      // 清除定时器
+      clearEquipTimer() {
+        clearTimeout(proxyData.equipTimer);
+        proxyData.equipTimer = null;
+      },
+      // 定时器
+      getSpaceEquipListTimer(timerLen: any = 30000) {
+        proxyData.clearEquipTimer();
+        proxyData.equipTimer = setTimeout(() => {
+          proxyData.getSpaceEquipList();
+          proxyData.clearEquipTimer();
+        }, timerLen);
+      },
+      // 查询空间下面受控的设备
       getSpaceEquipList() {
         let params: any = {
           spaceId: proxyData.spaceInfo.spaceId,
         };
         let str: any = setQueryConfig(params);
-        getSpaceEquipList(str).then((res: any) => {
-          let data: any = res.data || [];
-          // proxyData.checkDeviceShowWork(data); // 判断手动控制的设备是否要开启手动控制功能
-        });
+        getSpaceEquipList(str)
+          .then((res: any) => {
+            let data: any = res.data || [];
+            proxyData.spaceEquipList = data;
+            proxyData.checkDeviceShowWork(); // 判断手动控制的设备是否要开启手动控制功能
+            proxyData.getSpaceEquipListTimer();
+          })
+          .catch((error: any) => {
+            proxyData.getSpaceEquipListTimer();
+          });
       },
       // 定时查空间的加班记录
       queryCustomAndScenceTimer(timer: any = 10000) {
@@ -1556,9 +1567,7 @@ export default defineComponent({
             // 手动控制的情况下走新的服务定制
             if (proxyData.controlMode === 1) {
               proxyData.formateManualWorkTime();
-              proxyData.checkDeviceShowWork()
             }
-            proxyData.queryCustomAndScenceTimer();
           })
           .catch(() => {
             proxyData.queryCustomAndScenceTimer();
@@ -1640,13 +1649,13 @@ export default defineComponent({
         proxyData.padNumber = 0;
         // proxyData.roomType = "";
         // 获取场景配置
-        proxyData.timerSpaceInfo(0);
+        proxyData.getSpaceInfo();
         // 获取空间下受控设备
         proxyData.getSpaceEquipList();
         // 动态获取场景配置
-        proxyData.querySpaceSceneConfigTimer(0);
+        proxyData.querySpaceSceneConfig();
         // 查询加班记录
-        proxyData.queryCustomAndScenceTimer(0);
+        proxyData.queryCustomAndScence();
         // 获取空间下的设备信息
         proxyData.getEquipments();
       },
@@ -1711,6 +1720,15 @@ export default defineComponent({
       // 重置空间状态
       resetSpaceStatus() {
         proxyData.seviceEquipmentListFlag = false;
+        /**
+         *重新获取设备的时候,先初始化数据
+         */
+        proxyData.spaceExistenceDevice = {
+          curtain: false,
+          light: false,
+          airConditioner: false,
+          bodySensor: false,
+        };
         proxyData.spaceData.map((item: any) => {
           item.active = false;
         });
@@ -1747,22 +1765,21 @@ export default defineComponent({
           proxyData.spaceData[index1] = proxyData.spaceData[index2];
           proxyData.spaceData[index2] = temp;
         }
-        console.log(proxyData.spaceData);
       },
       // 切换空间
       changeSpace(item: any, type: any = 0) {
-        //
+        //清除空间下所有的定时器
         proxyData.clearAll();
         // 重置当前选中空间的状态
         proxyData.resetSpaceStatus();
         proxyData.spaceInfo = item;
-        proxyData.init();
         if (type === 1) {
-          // proxyData.isShowMap = false;
           proxyData.defaultSpace = item;
           proxyData.elChangeExForArray(item);
         }
         item.active = true;
+        console.log("proxyData.spaceInfo===", proxyData.spaceInfo);
+        proxyData.init();
       },
       timeOutEvent: timeOutEvent,
       touchNumber: 0,
@@ -1811,6 +1828,7 @@ export default defineComponent({
       clearAll() {
         proxyData.clearTimerSpaceInfo();
         proxyData.clearSecenTimer();
+        proxyData.clearEquipTimer();
       },
     });
     onBeforeUnmount(() => {

+ 2 - 2
vue.config.js

@@ -117,8 +117,8 @@ module.exports = {
       '/sgipad/test/': {
         // target: 'https://duoduoenv.sagacloud.cn',
         // target: 'http://192.168.0.13:52009',
-        // target: 'http://192.168.4.54:52009',
-        target: 'http://192.168.16.168:52015',
+        target: 'http://192.168.4.54:52009',
+        // target: 'http://192.168.16.168:52015',
         changeOrigin: true,
         pathRewrite: {
           '^/sgipad/test': ''