Sfoglia il codice sorgente

fix:手动控制的审批功能

chenzhen2 2 anni fa
parent
commit
2354574304

+ 110 - 1
src/views/envmonitor/components/ManualWork/index.vue

@@ -4,6 +4,7 @@
       <div class="space-title">{{ spaceInfo.spaceName }} 申请延时</div>
       <!-- <div class="tip">延时期间,空间相关设备会开启</div> -->
     </div>
+    <!--加班的按钮-->
     <div class="add-time" id="addTimeId">
       <div class="date_box" v-if="dateArr && dateArr.length">
         <div
@@ -33,6 +34,25 @@
           </div>
         </template>
 
+        <!--审批状态-->
+        <!-- <div class="approval-box" v-if="dateArr && dateArr.length">
+          
+        </div> -->
+        <template v-if="approvalData && approvalData.length">
+          <div
+            class="approval-status"
+            :key="'approval' + index"
+            @click="checkApprovalStatus(item, $event)"
+            :style="{
+              left: item.left + 'px',
+              background: item.bg,
+            }"
+            v-for="(item, index) in approvalData"
+          >
+            {{ item.text }}
+          </div>
+        </template>
+
         <div class="slider-btn" id="sliderBtnId" @click="triggerDelTime">
           <div class="start" id="startId"></div>
           <div class="end-box" id="endBoxId">
@@ -42,6 +62,7 @@
         </div>
       </div>
     </div>
+
     <div class="add-time-btn">
       <div class="cancel-btn" @click="closeWorkTimer">取消</div>
       <div
@@ -205,6 +226,7 @@ export default defineComponent({
     let timerArr: any = getTimers();
     let nowTimerArr: any = [];
     let nowData: any = {};
+    let approvalData: any = [];
     let redUrl: any = `${parseImgUrl("ipdImages", "time-check.svg")}`;
     let bgRed: any = `linear-gradient(0deg, rgba(255, 0, 0, 0.2), rgba(255, 0, 0, 0.2)), url(${redUrl})`;
     const userInfo: any = getUserInfo();
@@ -913,7 +935,6 @@ export default defineComponent({
               });
             }
           });
-          console.log("t==", timerArr);
 
           proxyData.dateArr.push({
             date: date,
@@ -954,6 +975,76 @@ export default defineComponent({
        * 切换日期
        */
       activeIndex: 0,
+      // 点击审批的时候触发接口
+      checkApprovalStatus(item: any, e: any) {
+        if (e.target) {
+          let targetWidth: any = e.target.offsetWidth * 0.7;
+          let left: any = item.left - targetWidth * 1.5 + e.offsetX;
+          let sliderBoxEl: any = document.querySelectorAll(".slider-box")[0];
+          let sliderWidth: any = sliderBoxEl.offsetWidth;
+          let index: any = Math.ceil(left / sliderWidth);
+          proxyData.checkSlider({}, index);
+        }
+      },
+      approvalData: approvalData,
+      // 格式化审批状态的数据位置
+      formateApproveStatusPerstion() {
+        if (proxyData.nowData) {
+          let spaceCustomContentList: any =
+            proxyData.nowData.customSceneList || [];
+          let sliderBoxArr: any = document.querySelectorAll(".slider-box");
+          proxyData.approvalData = [];
+          for (let i = 0; i < spaceCustomContentList.length; i++) {
+            let item: any = spaceCustomContentList[i];
+            //  加班数据
+            console.log("加班审批数据数据--", item);
+            console.log(item);
+            let obj: any = {
+              left: 0,
+              bg: "",
+              index: 0,
+              approvalStatus: item.approvalStatus,
+              text: "",
+            };
+            if (item.approvalStatus == 0) {
+              obj.text = "待审批";
+              obj.bg = "rgba(65, 107, 255, 0.6)";
+            } else if (item.approvalStatus == 1) {
+              obj.text = "已通过";
+              obj.bg = "rgba(24, 196, 93, 0.6)";
+            } else if (item.approvalStatus == 2) {
+              obj.text = "已拒绝";
+              obj.bg = "rgba(255, 54, 54, 0.6)";
+            } else if (item.approvalStatus == 3) {
+              obj.text = "已失效";
+              obj.bg = "rgba(255, 54, 54, 0.6)";
+            }
+            if (obj.text) {
+              let startTime: any = proxyData.parseCusStartTime(item.startTime);
+              let endTime: any = proxyData.parseCusStartTime(item.endTime);
+              let timerArr: any = proxyData.nowTimerArr;
+              let leftStart: any = 0;
+              let leftEnd: any = 0;
+              timerArr.map((timer: any, index: any) => {
+                if (timer.formatTimer == startTime) {
+                  let sliderBoxItem: any = sliderBoxArr[index];
+                  if (sliderBoxItem) {
+                    leftStart = sliderBoxItem.offsetWidth * index;
+                  }
+                }
+                if (timer.formatTimer == endTime) {
+                  let sliderBoxItem: any = sliderBoxArr[index];
+                  if (sliderBoxItem) {
+                    leftEnd = sliderBoxItem.offsetWidth * index;
+                  }
+                }
+              });
+              obj.left = leftStart + (leftEnd - leftStart) / 2;
+              proxyData.approvalData.push(obj);
+            }
+          }
+        }
+      },
       checkDate(item: any, index: any) {
         proxyData.clearTimerBoxStyle();
         item.isActive = true;
@@ -971,6 +1062,8 @@ export default defineComponent({
           proxyData.setCheckTimeStyle();
           // // 固定服务时间
           proxyData.setServiceTimerStyle();
+          // 设置审批状态
+          proxyData.formateApproveStatusPerstion();
           if (!proxyData.isEvent) {
             proxyData.changeEl();
             proxyData.isEvent = true;
@@ -1562,6 +1655,22 @@ export default defineComponent({
     white-space: nowrap;
     overflow-x: auto;
     overflow-y: hidden;
+    .approval-status {
+      position: absolute;
+      font-family: "Montserrat";
+      top: 64px;
+      z-index: 444;
+      width: 78px;
+      height: 30px;
+      line-height: 30px;
+      border-radius: 10px;
+      font-size: 12px;
+      transform: scale(0.7) translateX(-50%);
+      // translateX(-50%)
+      font-weight: 500;
+      text-align: center;
+      color: #ffffff;
+    }
 
     &::-webkit-scrollbar {
       display: none;

+ 1 - 0
src/views/envmonitor/index.vue

@@ -1571,6 +1571,7 @@ export default defineComponent({
               proxyData.formateManualWorkTime();
               proxyData.checkDeviceShowWork();
             }
+            proxyData.queryCustomAndScenceTimer();
           })
           .catch(() => {
             proxyData.queryCustomAndScenceTimer();