Browse Source

fix:手动控制功能

chenzhen2 2 years ago
parent
commit
8b045091ce

+ 66 - 2
src/views/envmonitor/components/ManualWork/WorkConfig.vue

@@ -473,7 +473,7 @@ export default defineComponent({
           customSceneList.map((item: any) => {
             let oldTimeEnd: any = endTime;
             if (startTime === item.startTime && endTime === item.endTime) {
-              item.type = 3;  // 3=我要离开
+              item.type = 3; // 3=我要离开
               proxyData.delTimeArr.push(item);
             } // 点击我要离开的时候需要删除的数据
             if (oldTimeEnd === item.startTime) {
@@ -489,7 +489,7 @@ export default defineComponent({
         // 格式化当前时间
         proxyData.formatDataDel();
         // 设置真实的离开时间
-        proxyData.setLeavingTime();  // // 3=我要离开
+        proxyData.setLeavingTime(); // // 3=我要离开
         console.log("离开了=====");
         console.log(proxyData.delTimeArr);
         proxyData.leaveBtnFlag = true;
@@ -533,6 +533,69 @@ export default defineComponent({
       closeLeavDailog() {
         proxyData.isShowLeaveDailog = false;
       },
+      // 数组排序
+      compare(obj1: any, obj2: any) {
+        var val1 = obj1.startTime;
+        var val2 = obj2.startTime;
+        if (val1 < val2) {
+          return -1;
+        } else if (val1 > val2) {
+          return 1;
+        } else {
+          return 0;
+        }
+      },
+      // 手动控制加班处理时间段拼接的逻辑
+      formateManualWorkTime() {
+        // debugger
+        let data: any = proxyData.workkArr;
+        for (let i = 0; i < data.length; i++) {
+          let item: any = data[i];
+          let spaceCustomContentList: any =
+            data[i].spaceCustomContentList || [];
+          spaceCustomContentList = spaceCustomContentList.sort(
+            proxyData.compare
+          );
+          item.spaceCustomContentList = spaceCustomContentList;
+          let nowTime: any = getRelNowTime();
+          let nowDate: any = formatDate("YYYY-MM-DD");
+          let date: any = formatDateStr(data[i].date);
+          item.cusStartTime = spaceCustomContentList[0]
+            ? spaceCustomContentList[0].startTime
+            : "";
+          item.cusEndTime = spaceCustomContentList[0]
+            ? spaceCustomContentList[0].endTime
+            : "";
+          if (nowDate == date) {
+            // 当前时间
+            item.cusStartTime = "";
+            item.cusEndTime = "";
+          }
+          for (let j = 0; j < spaceCustomContentList.length; j++) {
+            if (item.cusStartTime && item.cusEndTime) {
+              if (item.cusEndTime + 1 === spaceCustomContentList[j].startTime) {
+                item.cusEndTime = spaceCustomContentList[j].endTime;
+              }
+            } else {
+              if (
+                nowTime >= spaceCustomContentList[j].startTime &&
+                nowTime <= spaceCustomContentList[j].endTime
+              ) {
+                item.cusStartTime = spaceCustomContentList[j].startTime;
+                item.cusEndTime = spaceCustomContentList[j].endTime;
+              }
+            }
+          }
+          if (!item.cusStartTime) {
+            item.cusStartTime = spaceCustomContentList[0]
+              ? spaceCustomContentList[0].startTime
+              : "";
+            item.cusEndTime = spaceCustomContentList[0]
+              ? spaceCustomContentList[0].endTime
+              : "";
+          }
+        }
+      },
     });
     watch(
       props,
@@ -540,6 +603,7 @@ export default defineComponent({
         proxyData.scenarioArr = newProps.scenarioArr;
         proxyData.workkArr = newProps.workkArr;
         if (proxyData.workkArr && proxyData.workkArr.length) {
+          proxyData.formateManualWorkTime();
           proxyData.formateWorkTime();
         }
       },

+ 105 - 14
src/views/envmonitor/components/ManualWork/index.vue

@@ -214,6 +214,11 @@ export default defineComponent({
       type: Object,
       default: () => null,
     },
+    seviceEquipmentList: {
+      // 是否走服务定制的设备
+      type: Array,
+      default: () => [],
+    },
   },
   setup(props, context) {
     const proxyGlobal: any = getCurrentInstance();
@@ -232,6 +237,7 @@ export default defineComponent({
     const userInfo: any = getUserInfo();
     const proxyData = reactive({
       userInfo: userInfo,
+      seviceEquipmentList: props.seviceEquipmentList,
       parseImgUrl: parseImgUrl,
       isEvent: false,
       screenInfo: screenInfo,
@@ -1379,6 +1385,32 @@ export default defineComponent({
       checkEquipment(item: any) {
         item.isCheck = !item.isCheck;
       },
+      // 我来了删除不受服务定制控制的设备的开关灯
+      delSpaceNoCtrDevice(formTimerArr: any) {
+        formTimerArr.map((item: any) => {
+          let sceneEquipList: any = item.sceneEquipList || [];
+          let seviceEquipmentList: any = proxyData.seviceEquipmentList;
+          if (item.type == "2" && sceneEquipList.length) {
+            sceneEquipList.map((scene: any, index: any) => {
+              let flag: any = false;
+              for (let i = 0; i < seviceEquipmentList.length; i++) {
+                if (
+                  scene.objectId == seviceEquipmentList[i].id &&
+                  seviceEquipmentList[i].isExeSpaceTime
+                ) {
+                  flag = true;
+                }
+                if (flag) {
+                  break;
+                }
+              }
+              if (!flag) {
+                item.sceneEquipList.splice(index, 1);
+              }
+            });
+          }
+        });
+      },
       // 提交申请
       addWorkTimer() {
         let formTimerArr: any = proxyData.formateAddTimer();
@@ -1422,10 +1454,12 @@ export default defineComponent({
             item.sceneEquipList = sceneEquipList;
           }
         });
+        // 我来了过滤设备
+        proxyData.delSpaceNoCtrDevice(formTimerArr);
         // 保存加班记录
         proxyData.saveBatchCustomScene(formTimerArr);
-        //  如果在当前时间,需要手动开启设备
-        proxyData.openDeviceAll(formTimerArr);
+        //  如果在当前时间,需要手动开启设备(暂时不需要手动开启设备,后台已经把此逻辑合并)
+        // proxyData.openDeviceAll(formTimerArr);
       },
       // 手动控制开启设备
       openDeviceAll(formTimerArr: any) {
@@ -1477,15 +1511,6 @@ export default defineComponent({
         proxyData.formBtn = true;
         saveBatchCustomScene(formTimerArr)
           .then((res) => {
-            // debugger;
-            if (type === 1) {
-              // 添加
-            } else if (type === 2) {
-              // 删除
-              proxyData.isUpdate = true;
-              // context.emit("closeWork");
-              // proxyData.showLoading = false;
-            }
             context.emit("closeWork");
             proxyData.showLoading = false;
             proxyData.formBtn = false;
@@ -1540,18 +1565,84 @@ export default defineComponent({
             });
         }
       },
+      // 数组排序
+      compare(obj1: any, obj2: any) {
+        var val1 = obj1.startTime;
+        var val2 = obj2.startTime;
+        if (val1 < val2) {
+          return -1;
+        } else if (val1 > val2) {
+          return 1;
+        } else {
+          return 0;
+        }
+      },
+      // 手动控制加班处理时间段拼接的逻辑
+      formateManualWorkTime() {
+        // debugger
+        let data: any = proxyData.workkArr;
+        for (let i = 0; i < data.length; i++) {
+          let item: any = data[i];
+          let spaceCustomContentList: any =
+            data[i].spaceCustomContentList || [];
+          spaceCustomContentList = spaceCustomContentList.sort(
+            proxyData.compare
+          );
+          item.spaceCustomContentList = spaceCustomContentList;
+          let nowTime: any = getRelNowTime();
+          let nowDate: any = formatDate("YYYY-MM-DD");
+          let date: any = formatDateStr(data[i].date);
+          item.cusStartTime = spaceCustomContentList[0]
+            ? spaceCustomContentList[0].startTime
+            : "";
+          item.cusEndTime = spaceCustomContentList[0]
+            ? spaceCustomContentList[0].endTime
+            : "";
+          if (nowDate == date) {
+            // 当前时间
+            item.cusStartTime = "";
+            item.cusEndTime = "";
+          }
+          for (let j = 0; j < spaceCustomContentList.length; j++) {
+            if (item.cusStartTime && item.cusEndTime) {
+              if (item.cusEndTime + 1 === spaceCustomContentList[j].startTime) {
+                item.cusEndTime = spaceCustomContentList[j].endTime;
+              }
+            } else {
+              if (
+                nowTime >= spaceCustomContentList[j].startTime &&
+                nowTime <= spaceCustomContentList[j].endTime
+              ) {
+                item.cusStartTime = spaceCustomContentList[j].startTime;
+                item.cusEndTime = spaceCustomContentList[j].endTime;
+              }
+            }
+          }
+          if (!item.cusStartTime) {
+            item.cusStartTime = spaceCustomContentList[0]
+              ? spaceCustomContentList[0].startTime
+              : "";
+            item.cusEndTime = spaceCustomContentList[0]
+              ? spaceCustomContentList[0].endTime
+              : "";
+          }
+        }
+      },
     });
     watch(props, (newProps: any) => {
       proxyData.workkArr = newProps.workkArr;
       proxyData.projectId = newProps.projectId;
       proxyData.enterType = newProps.enterType;
       proxyData.deviceItem = newProps.deviceItem;
-      if (proxyData.isUpdate) {
-        proxyData.setWorkTimeList();
-      }
+      proxyData.seviceEquipmentList = newProps.seviceEquipmentList;
+      // if (proxyData.isUpdate) {
+      //   proxyData.setWorkTimeList();
+      // }
     });
     onMounted(() => {
       // 设置dom最外层的宽
+      console.log("弹窗变化了-----==");
+      proxyData.formateManualWorkTime();
       proxyData.setWorkTimeList();
     });
     return {

+ 14 - 73
src/views/envmonitor/index.vue

@@ -246,6 +246,7 @@
       <!--加班手动控制 start-->
       <manual-overtime
         v-if="isShowWork && controlMode === 1"
+        :seviceEquipmentList="seviceEquipmentList"
         :enterType="enterType"
         :deviceItem="deviceItem"
         :spaceInfo="spaceInfo"
@@ -586,7 +587,6 @@ export default defineComponent({
       equipTimer: equipTimer,
       seviceEquipmentList: allDevice, // 所有的设备
       spaceEquipList: spaceEquipList,
-      seviceEquipmentListFlag: false,
       enterType: 1,
       deviceItem: deviceItem,
       parseImgUrl: parseImgUrl,
@@ -854,15 +854,10 @@ export default defineComponent({
       },
       // 关于手动控制是否展示加班弹窗的问题处理
       checkDeviceShowWork() {
-        proxyData.seviceEquipmentList = proxyData.workkArr[0].equipmentList;
-        proxyData.seviceEquipmentList.map((item: any) => {
-          let flag: any = false;
-          proxyData.spaceEquipList.map((spaceEquipItem: any) => {
-            if (item.id == spaceEquipItem.equipmentId) {
-              item.isExeSpaceTime = spaceEquipItem.isExeSpaceTime;
-            }
-          });
+        proxyData.spaceEquipList.map((item: any) => {
+          item.id = item.equipmentId;
         });
+        proxyData.seviceEquipmentList = proxyData.spaceEquipList;
       },
       /**
        * 关闭加班
@@ -1560,75 +1555,22 @@ export default defineComponent({
         queryCustomAndScence(str)
           .then((res) => {
             let resData: any = res?.data ?? [];
-            proxyData.workkArr = resData;
-            for (let i = 0; i < proxyData.workkArr.length; i++) {
-              let customSceneList: any =
-                proxyData.workkArr[i]?.customSceneList ?? [];
+
+            for (let i = 0; i < resData.length; i++) {
+              let customSceneList: any = resData[i]?.customSceneList ?? [];
               customSceneList = customSceneList.sort(proxyData.compare);
             }
             // 手动控制的情况下走新的服务定制
-            if (proxyData.controlMode === 1) {
-              proxyData.formateManualWorkTime();
-              proxyData.checkDeviceShowWork();
-            }
+            proxyData.workkArr = resData;
+            // if (proxyData.controlMode === 1) {
+            //   proxyData.checkDeviceShowWork();
+            // }
             proxyData.queryCustomAndScenceTimer();
           })
           .catch(() => {
             proxyData.queryCustomAndScenceTimer();
           });
       },
-
-      // 手动控制加班处理时间段拼接的逻辑
-      formateManualWorkTime() {
-        // debugger
-        let data: any = proxyData.workkArr;
-        for (let i = 0; i < proxyData.workkArr.length; i++) {
-          let item: any = proxyData.workkArr[i];
-          let spaceCustomContentList: any =
-            proxyData.workkArr[i].spaceCustomContentList || [];
-          spaceCustomContentList = spaceCustomContentList.sort(
-            proxyData.compare
-          );
-          item.spaceCustomContentList = spaceCustomContentList;
-          let nowTime: any = getRelNowTime();
-          let nowDate: any = formatDate("YYYY-MM-DD");
-          let date: any = formatDateStr(data[i].date);
-          item.cusStartTime = spaceCustomContentList[0]
-            ? spaceCustomContentList[0].startTime
-            : "";
-          item.cusEndTime = spaceCustomContentList[0]
-            ? spaceCustomContentList[0].endTime
-            : "";
-          if (nowDate == date) {
-            // 当前时间
-            item.cusStartTime = "";
-            item.cusEndTime = "";
-          }
-          for (let j = 0; j < spaceCustomContentList.length; j++) {
-            if (item.cusStartTime && item.cusEndTime) {
-              if (item.cusEndTime + 1 === spaceCustomContentList[j].startTime) {
-                item.cusEndTime = spaceCustomContentList[j].endTime;
-              }
-            } else {
-              if (
-                nowTime >= spaceCustomContentList[j].startTime &&
-                nowTime <= spaceCustomContentList[j].endTime
-              ) {
-                item.cusStartTime = spaceCustomContentList[j].startTime;
-                item.cusEndTime = spaceCustomContentList[j].endTime;
-              }
-            }
-          }
-          if (!item.cusStartTime) {
-            item.cusStartTime = spaceCustomContentList[0]
-              ? spaceCustomContentList[0].startTime
-              : "";
-            item.cusEndTime = spaceCustomContentList[0]
-              ? spaceCustomContentList[0].endTime
-              : "";
-          }
-        }
-      },
       // 数组排序
       compare(obj1: any, obj2: any) {
         var val1 = obj1.startTime;
@@ -1651,14 +1593,14 @@ export default defineComponent({
         // proxyData.roomType = "";
         // 获取场景配置
         proxyData.getSpaceInfo();
-        // 动态获取场景配置
-        proxyData.querySpaceSceneConfig();
         // 获取空间下的设备信息
         proxyData.getEquipments();
         // 获取空间下受控设备
         proxyData.getSpaceEquipList();
+        // 动态获取场景配置
+        proxyData.querySpaceSceneConfig();
         // 查询加班记录
-        proxyData.queryCustomAndScenceTimer(500);
+        proxyData.queryCustomAndScence();
       },
       /**
        *删除参数
@@ -1720,7 +1662,6 @@ export default defineComponent({
       },
       // 重置空间状态
       resetSpaceStatus() {
-        proxyData.seviceEquipmentListFlag = false;
         /**
          *重新获取设备的时候,先初始化数据
          */