Browse Source

fix:手动控制加班的逻辑处理

chenzhen2 2 years ago
parent
commit
900f9a0c9b

+ 35 - 3
src/views/envmonitor/components/Air/manualIndex.vue

@@ -356,6 +356,11 @@ export default defineComponent({
       type: Boolean,
       default: () => false,
     },
+    seviceEquipmentList: {
+      // 是否走服务定制的设备
+      type: Array,
+      default: () => [],
+    },
   },
   components: {
     Switch,
@@ -388,6 +393,7 @@ export default defineComponent({
     let valueHeight: any = null;
     let spaceId: any = "";
     const proxyData = reactive({
+      seviceEquipmentList: props.seviceEquipmentList,
       valueDom: valueDom,
       spaceId: spaceId,
       valueHeight: valueHeight,
@@ -635,7 +641,10 @@ export default defineComponent({
       // 子设备降低温度
       changeChildItemAir(btnType: any, childItem: any, symbol: any) {
         const domAirOpen = !childItem.isOpen;
-        if (proxyData.forceOverTimeFlag && domAirOpen) {
+        let isExeSpaceTime: Boolean = proxyData.checkDeviceIsExeSpaceTime([
+          childItem,
+        ]);
+        if (proxyData.forceOverTimeFlag && domAirOpen && isExeSpaceTime) {
           //需要强制加班
           contx.emit("triggerWork", 2, childItem);
           return;
@@ -763,12 +772,35 @@ export default defineComponent({
           proxyData.setSpaceCondtioners(data);
         }
       },
+      // 检查设备是否执行空间服务时间
+      checkDeviceIsExeSpaceTime(deviceAll: any = []) {
+        let seviceEquipmentList: any = proxyData.seviceEquipmentList;
+        let flag: any = false;
+        for (let i = 0; i < seviceEquipmentList.length; i++) {
+          for (let j = 0; j < deviceAll.length; j++) {
+            if (
+              seviceEquipmentList[i].id == deviceAll[j].id &&
+              seviceEquipmentList[i].isExeSpaceTime
+            ) {
+              flag = true;
+              break;
+            }
+          }
+          if (flag) {
+            break;
+          }
+        }
+        return flag;
+      },
       // 总控制改变空调状态
       airChange() {
         // 先不更新状态等确认框弹出后再更新状
         // 操作空调
         const domAirOpen = !proxyData.airData.isOpen;
-        if (proxyData.forceOverTimeFlag && domAirOpen) {
+        let isExeSpaceTime: Boolean = proxyData.checkDeviceIsExeSpaceTime(
+          proxyData.equipList
+        );
+        if (proxyData.forceOverTimeFlag && domAirOpen && isExeSpaceTime) {
           //需要强制加班
           contx.emit("triggerWork", 2);
           return;
@@ -929,6 +961,7 @@ export default defineComponent({
         proxyData.temperature = props.temperature;
         proxyData.userIsControl = newProps.userIsControl;
         proxyData.forceOverTimeFlag = newProps.forceOverTimeFlag;
+        proxyData.seviceEquipmentList = props.seviceEquipmentList;
       }
     });
     onBeforeUnmount(() => {
@@ -940,7 +973,6 @@ export default defineComponent({
     onMounted(() => {
       proxyData.spaceId = props.spaceId;
       proxyData.getAirInfoToTimer(0);
-      console.log("切换空间===");
       // 获取空调信息
     });
     return {

+ 46 - 2
src/views/envmonitor/components/Light/index.vue

@@ -71,6 +71,10 @@ export default defineComponent({
       type: String,
       default: () => "",
     },
+    controlMode: {
+      type: Number,
+      default: () => 0,
+    },
     spaceId: {
       type: String,
       default: () => "",
@@ -83,6 +87,11 @@ export default defineComponent({
       type: Boolean,
       default: () => false,
     },
+    seviceEquipmentList: {
+      // 是否走服务定制的设备
+      type: Array,
+      default: () => [],
+    },
   },
   components: { Switch },
   setup(props, contx) {
@@ -92,6 +101,8 @@ export default defineComponent({
     const initData: any = [];
     let lightParams: any = [];
     const proxyData = reactive({
+      seviceEquipmentList: props.seviceEquipmentList,
+      controlMode: props.controlMode,
       userIsControl: props.userIsControl,
       forceOverTimeFlag: props.forceOverTimeFlag,
       setStatus: false,
@@ -112,6 +123,29 @@ export default defineComponent({
         proxyData.showFlag = !proxyData.showFlag;
         proxyData.lightIcon = "arrow-down";
       },
+      // 检查设备是否执行空间服务时间
+      checkDeviceIsExeSpaceTime(deviceAll: any = []) {
+        if (proxyData.controlMode !== 1) {
+          return true;
+        }
+        let seviceEquipmentList: any = proxyData.seviceEquipmentList;
+        let flag: any = false;
+        for (let i = 0; i < seviceEquipmentList.length; i++) {
+          for (let j = 0; j < deviceAll.length; j++) {
+            if (
+              seviceEquipmentList[i].id == deviceAll[j].id &&
+              seviceEquipmentList[i].isExeSpaceTime
+            ) {
+              flag = true;
+              break;
+            }
+          }
+          if (flag) {
+            break;
+          }
+        }
+        return flag;
+      },
       // 获取灯的状态
       getLampList() {
         getLampHttp({ spaceId: props.spaceId })
@@ -157,7 +191,14 @@ export default defineComponent({
         if (proxyData.userIsControl) {
           // debugger
           if (type === "allLamp") {
-            if (proxyData.forceOverTimeFlag && proxyData.lampSw) {
+            let isExeSpaceTime:Boolean = proxyData.checkDeviceIsExeSpaceTime(
+              proxyData.lampList
+            );
+            if (
+              proxyData.forceOverTimeFlag &&
+              proxyData.lampSw &&
+              isExeSpaceTime
+            ) {
               // 强制加班开灯
               contx.emit("triggerWork", 3);
               return;
@@ -173,7 +214,8 @@ export default defineComponent({
             proxyData.updateAllLampStatus(statusFlag);
             proxyData.setLamp(type, "", statusFlag, 0); // 调接口
           } else {
-            if (proxyData.forceOverTimeFlag && item.switch) {
+            let isExeSpaceTime:Boolean= proxyData.checkDeviceIsExeSpaceTime([item]);
+            if (proxyData.forceOverTimeFlag && item.switch && isExeSpaceTime) {
               // 强制加班开灯
               contx.emit("triggerWork", 3, item);
               return;
@@ -402,7 +444,9 @@ export default defineComponent({
         }
         // 定时调空间信息
         proxyData.userIsControl = newProps.userIsControl;
+        proxyData.controlMode = newProps.controlMode;
         proxyData.forceOverTimeFlag = newProps.forceOverTimeFlag;
+        proxyData.seviceEquipmentList = props.seviceEquipmentList;
       },
       {
         deep: false,

+ 9 - 10
src/views/envmonitor/components/ManualWork/index.vue

@@ -1242,8 +1242,9 @@ export default defineComponent({
 
           // 删除的时间为当时时间的时候
           let delStartTime: any = 0;
-          addTimeArr.map((item: any) => {
-            let realTime: any = getRelNowTime();
+          let formTimeArr: any = addTimeArr.concat(delTimerArr);
+          let realTime: any = getRelNowTime();
+          formTimeArr.map((item: any, index: any) => {
             if (item.type == "1") {
               // 删除当前时间段
               if (realTime >= item.startTime && realTime <= item.endTime) {
@@ -1253,16 +1254,14 @@ export default defineComponent({
               }
             }
           });
-          addTimeArr.map((item: any, index: any) => {
-            if (
-              item.type == "0" &&
-              delStartTime &&
-              item.endTime == delStartTime
-            ) {
-              addTimeArr.splice(index, 1);
+          formTimeArr.map((item: any, index: any) => {
+            if (item.type == "0" && delStartTime) {
+              if (item.startTime == delStartTime) {
+                formTimeArr.splice(index, 1);
+              }
             }
           });
-          let formTimeArr: any = addTimeArr.concat(delTimerArr);
+
           return formTimeArr;
         } else {
           return [];

+ 17 - 2
src/views/envmonitor/index.vue

@@ -173,6 +173,7 @@
       <manual-index
         v-if="controlMode === 1"
         @triggerWork="triggerWork"
+        :seviceEquipmentList="seviceEquipmentList"
         :forceOverTimeFlag="forceOverTimeFlag"
         @updateAirTemp="updateAirTemp"
         :hasAir="spaceExistenceDevice.airConditioner"
@@ -207,6 +208,8 @@
       <Light
         v-if="spaceExistenceDevice.light"
         :forceOverTimeFlag="forceOverTimeFlag"
+        :controlMode="controlMode"
+        :seviceEquipmentList="seviceEquipmentList"
         @triggerWork="triggerWork"
         id="lightId"
         key="lightId"
@@ -573,7 +576,10 @@ export default defineComponent({
     let padImgData: any = [];
     let controlMode: number = 0;
     let deviceItem: any = null;
+    let allDevice: any = [];
     const proxyData = reactive({
+      seviceEquipmentList: allDevice, // 所有的设备
+      seviceEquipmentListFlag: false,
       enterType: 1,
       deviceItem: deviceItem,
       parseImgUrl: parseImgUrl,
@@ -837,10 +843,17 @@ export default defineComponent({
         // console.log(type);
         proxyData.enterType = type;
         proxyData.deviceItem = deviceItem || null;
-        console.log("proxyData.enterType===");
-        console.log(proxyData.enterType);
         proxyData.isShowWork = true;
       },
+      // 关于手动控制是否展示加班弹窗的问题处理
+      checkDeviceShowWork() {
+        if (!proxyData.seviceEquipmentListFlag) {
+          proxyData.seviceEquipmentList = proxyData.workkArr[0].equipmentList;
+          proxyData.seviceEquipmentList.map((item: any) => {
+            item.isExeSpaceTime = 1;
+          });
+        }
+      },
       /**
        * 关闭加班
        */
@@ -1531,6 +1544,7 @@ export default defineComponent({
             // 手动控制的情况下走新的服务定制
             if (proxyData.controlMode === 1) {
               proxyData.formateManualWorkTime();
+              proxyData.checkDeviceShowWork(); // 判断手动控制的设备是否要开启手动控制功能
             }
             proxyData.queryCustomAndScenceTimer();
           })
@@ -1682,6 +1696,7 @@ export default defineComponent({
       },
       // 重置空间状态
       resetSpaceStatus() {
+        proxyData.seviceEquipmentListFlag = false;
         proxyData.spaceData.map((item: any) => {
           item.active = false;
         });