Browse Source

fix: 加班展示处理

chenzhen2 2 years ago
parent
commit
e42baa4ab4

+ 29 - 3
src/utils/index.ts

@@ -593,9 +593,35 @@ export const formateTimeContinuous: any = function (index: any = 1,
     }
   } else {
     // 预约时候后找最近的一段预约时间
-    let cusStartTime: any = data[index].cusStartTime;
-    let cusEndTime: any = data[index].cusEndTime;
-    if (cusStartTime && cusEndTime) {
+    // let cusStartTime: any = data[index].cusStartTime;
+    // let cusEndTime: any = data[index].cusEndTime;
+    let customSceneList: any = data[index]?.customSceneList ?? [];
+    // debugger
+    customSceneList.map((item: any) => {
+      if (!startTime || !endTime) {
+        startTime = item.startTime
+        endTime = item.endTime
+        text = data[index].week
+        that.text = text
+      }
+    })
+    if (startTime && endTime) {
+      return {
+        text: that.text,
+        startTime: startTime,
+        endTime: endTime,
+      };
+    } else {
+      let nowIndex: any = index + 1
+      if (nowIndex < data.length - 1) {
+        return formateTimeContinuous(nowIndex, startTime, endTime, 2, data, that);
+      } else {
+        return {
+          text: that.text,
+          startTime: startTime,
+          endTime: endTime,
+        };
+      }
     }
   }
 }

+ 75 - 17
src/views/envmonitor/components/workOvertime/WorkConfig.vue

@@ -111,7 +111,14 @@ export default defineComponent({
         type: any = 1
       ) {
         let data: any = proxyData.workkArr;
-        return formateTimeContinuous(index, startTime, endTime, type, data,proxyData);
+        return formateTimeContinuous(
+          index,
+          startTime,
+          endTime,
+          type,
+          data,
+          proxyData
+        );
       },
       // 判断当前时间在不在加班时间里面
       beforeWorkTime(data: any, nowTime: any) {
@@ -200,8 +207,23 @@ export default defineComponent({
             let startTime: any = "";
             let endTime: any = "";
             if ((!cusStartTime || !cusEndTime) && !customSceneList.length) {
-              proxyData.timerText.text = "请选择工作时间段";
-              proxyData.timerText.timer = "将自动开启办公服务";
+              // 查找最近的一段预约数据
+              let btnObj: any = proxyData.formateTimeContinuous(
+                1,
+                startTime,
+                endTime,
+                2
+              );
+              if (btnObj && btnObj.text) {
+                proxyData.timerText.text = `已预约~(${btnObj.text})`;
+                proxyData.timerText.timer =
+                  formatTimerStr(btnObj.startTime) +
+                  "~" +
+                  formatTimerStr(btnObj.endTime);
+              } else {
+                proxyData.timerText.text = "请选择工作时间段";
+                proxyData.timerText.timer = "将自动开启办公服务";
+              }
               proxyData.timerText.classColor = "grey";
               proxyData.timerText.btnText = "预约时间";
               proxyData.timerText.showDel = false;
@@ -218,8 +240,22 @@ export default defineComponent({
                 proxyData.timerText.showDel = false;
                 proxyData.forcedOverTimeFlag = false;
               } else {
-                proxyData.timerText.text = "请选择工作时间段";
-                proxyData.timerText.timer = "将自动开启办公服务";
+                let btnObj: any = proxyData.formateTimeContinuous(
+                  1,
+                  startTime,
+                  endTime,
+                  2
+                );
+                if (btnObj && btnObj.text) {
+                  proxyData.timerText.text = `已预约~(${btnObj.text})`;
+                  proxyData.timerText.timer =
+                    formatTimerStr(btnObj.startTime) +
+                    "~" +
+                    formatTimerStr(btnObj.endTime);
+                } else {
+                  proxyData.timerText.text = "请选择工作时间段";
+                  proxyData.timerText.timer = "将自动开启办公服务";
+                }
                 proxyData.timerText.classColor = "grey";
                 proxyData.timerText.btnText = "预约时间";
                 proxyData.timerText.showDel = false;
@@ -243,17 +279,22 @@ export default defineComponent({
                 /**
                  * 需要补加上和未来时间连续的问题
                  */
-                let obj: any = proxyData.formateTimeContinuous(
-                  0,
+                let btnObj: any = proxyData.formateTimeContinuous(
+                  1,
                   startTime,
                   endTime,
                   1
                 );
-                console.log("工作时间=====");
-                console.log(obj);
-                proxyData.timerText.text = "工作时间";
+                proxyData.timerText.text = `工作时间`;
                 proxyData.timerText.timer =
                   formatTimerStr(startTime) + "~" + formatTimerStr(endTime);
+                if (btnObj && btnObj.text) {
+                  proxyData.timerText.text = `工作时间(今日~${btnObj.text})`;
+                  proxyData.timerText.timer =
+                    formatTimerStr(btnObj.startTime) +
+                    "~" +
+                    formatTimerStr(btnObj.endTime);
+                }
                 proxyData.timerText.classColor = "yellow";
                 proxyData.timerText.btnText = "预约延时";
                 proxyData.timerText.showDel = false;
@@ -301,10 +342,6 @@ export default defineComponent({
                     endTime,
                     1
                   );
-                  console.log("预约加班的记录---");
-                  // debugger
-                  console.log(btnObj);
-
                   proxyData.timerText.text = `工作时间`;
                   proxyData.timerText.timer =
                     formatTimerStr(startTime) + "~" + formatTimerStr(endTime);
@@ -337,7 +374,7 @@ export default defineComponent({
                    *需要补加上和未来时间连续的问题
                    */
                   if (startTime && endTime) {
-                    proxyData.timerText.text = "已预约~(今日)";
+                    proxyData.timerText.text = "已预约~今日";
                     proxyData.timerText.timer =
                       formatTimerStr(startTime) + "~" + formatTimerStr(endTime);
                     proxyData.timerText.classColor = "grey";
@@ -345,8 +382,29 @@ export default defineComponent({
                     proxyData.timerText.showDel = false;
                     proxyData.forcedOverTimeFlag = true;
                   } else {
-                    proxyData.timerText.text = "请选择工作时间段";
-                    proxyData.timerText.timer = "将自动开启办公服务";
+                    // 查找最近的一段预约数据
+                    // debuggers
+                    let btnObj: any = proxyData.formateTimeContinuous(
+                      1,
+                      startTime,
+                      endTime,
+                      2
+                    );
+                    if (
+                      btnObj &&
+                      btnObj.text &&
+                      btnObj.startTime &&
+                      btnObj.endTime
+                    ) {
+                      proxyData.timerText.text = `已预约~${btnObj.text}`;
+                      proxyData.timerText.timer =
+                        formatTimerStr(btnObj.startTime) +
+                        "~" +
+                        formatTimerStr(btnObj.endTime);
+                    } else {
+                      proxyData.timerText.text = "请选择工作时间段";
+                      proxyData.timerText.timer = "将自动开启办公服务";
+                    }
                     proxyData.timerText.classColor = "grey";
                     proxyData.timerText.btnText = "预约时间";
                     proxyData.timerText.showDel = false;

+ 10 - 7
src/views/envmonitor/components/workOvertime/index.vue

@@ -120,6 +120,7 @@ export default defineComponent({
     const userInfo: any = getUserInfo();
     const proxyData = reactive({
       userInfo: userInfo,
+      isEvent: false,
       screenInfo: screenInfo,
       projectId: props.projectId,
       workkArr: props.workkArr,
@@ -323,6 +324,7 @@ export default defineComponent({
           sliderBoxWidth = sliderBoxEl.offsetWidth;
         });
         endBox.addEventListener("touchend", function (e: any) {
+          console.log(e);
           if (isMove) {
             sliderBtnWidth = sliderBtnEl.offsetWidth;
             let index: any = Math.ceil(
@@ -333,7 +335,7 @@ export default defineComponent({
             }
             sliderBtnEl.style.width = sliderBoxEl.offsetWidth * index + "px";
             sliderBtnEl.style.background = `rgba(0,0,0,0.2)`;
-
+            // debugger;
             proxyData.setOptionnalPerstion(proxyData.startIndex, index);
             isMove = false;
             // 判断按钮是否可以点击(如果选择的时候包含服务定制时间,则不可点击)
@@ -446,6 +448,7 @@ export default defineComponent({
        * 设置可选日期的位置
        */
       setOptionnalPerstion(index: any, len: any = 1) {
+        // debugger
         let sliderList: any = document.querySelector("#sliderListId");
         proxyData.startIndex = index;
         proxyData.startLen = len;
@@ -744,8 +747,10 @@ export default defineComponent({
           proxyData.setCheckTimeStyle();
           // // 固定服务时间
           proxyData.setServiceTimerStyle();
-          // dom元素宽高调整
-          proxyData.changeEl();
+          if (!proxyData.isEvent) {
+            proxyData.changeEl();
+            proxyData.isEvent = true;
+          }
         });
       },
       /**
@@ -753,6 +758,8 @@ export default defineComponent({
        */
       flag: false,
       changeEl() {
+        // 事件解绑定
+        // proxyData.cancelRemoveListener();
         proxyData.setScreennWidth();
         proxyData.sliderSwiper();
         proxyData.endBoxSwiper();
@@ -1064,14 +1071,10 @@ export default defineComponent({
         }
       },
     });
-    nextTick(() => {
-      // proxyData.setScreennWidth()
-    });
     watch(props, (newProps: any) => {
       proxyData.workkArr = newProps.workkArr;
       proxyData.projectId = newProps.projectId;
       if (proxyData.isUpdate) {
-        console.log("数据更新了");
         proxyData.setWorkTimeList();
       }
       // proxyData.getWorkTimeList();