Parcourir la source

请假申请功能完善

wuhongbo il y a 1 an
Parent
commit
54e4376dd1

+ 44 - 22
zjugis-business/src/main/resources/templates/Leave/js/index.js

@@ -1,5 +1,7 @@
 (function () {
   let attendanceIndex = ''
+  let isTimes = []
+
   window.onload = function (ex) {
     let timeObject = document.querySelector('#timeObject')
     let arrays = JSON.parse(timeObject.value)
@@ -46,6 +48,8 @@
             var element = document.getElementById("qjsj_" + index);
             element.remove();
             buildQjsjSeq();
+            isTimes.splice(index, 1)
+            whereIsTimes()
           },
           onCancel: function () {
 
@@ -56,13 +60,8 @@
 
       buildQjsjSeq();
       lists.push(dataObj)
+      qjsjChange(lists, arrays)
 
-      if (arrays.length > 0) {
-        lists.push({})
-        qjsjChange(lists)
-      } else {
-        qjsjChange(lists)
-      }
 
 
     })
@@ -115,7 +114,6 @@
           + '</td></tr>';
       }
       tbodyQjsq.innerHTML = html
-
       for (let i = 0; i < arrays.length; i++) {
         timeSelector({
           ele: ".startTimeRange" + (i),
@@ -138,6 +136,8 @@
               var element = document.getElementById("qjsj_" + i);
               element.remove();
               buildQjsjSeq();
+              isTimes.splice(i, 1)
+              whereIsTimes()
             },
             onCancel: function () {
 
@@ -145,6 +145,16 @@
           })
 
         })
+        let startDate = moment(arrays[i].startTime).format('YYYY-MM-DD')
+        let endDate = moment(arrays[i].endTime).format('YYYY-MM-DD')
+        let obj = {
+          index: i + 1,
+          startTime: startDate,
+          endTime: endDate,
+          startHM: moment(arrays[i].startTime).format('HH:mm'),
+          endHM: moment(arrays[i].endTime).format('HH:mm'),
+        }
+        isTimes.push(obj)
       }
 
       let sTbody = document.querySelectorAll('.qjsjClass')
@@ -166,9 +176,13 @@
     let setEndTime = moment(times).add(1, 'years').format('YYYY-MM-DD');
     z.ui.laydate("[name='LeaveTimeDO[0]$endTime']").setValue(setEndTime);
   }
-  let isTimes = []
-  function qjsjChange(infoList) {
-    console.log(infoList.length);
+  function qjsjChange(infoList, arraysList) {
+    let lengthNum = 0
+    if (arraysList.length > 0) {
+      lengthNum = infoList.length + arraysList.length
+    } else {
+      lengthNum = infoList.length
+    }
     let timeObj = {
       index: "",
       startTime: "",
@@ -177,22 +191,22 @@
       endHM: "",
     }
     timeSelector({
-      ele: ".startTimeRange" + (infoList.length - 1),
-      name: "LeaveTimeDO[" + (infoList.length - 1) + "]$startTimeRange",
+      ele: ".startTimeRange" + (lengthNum - 1),
+      name: "LeaveTimeDO[" + (lengthNum - 1) + "]$startTimeRange",
       callback: function (val) {
         timeObj.startHM = val
         whereIsTimes()
       }
     })
     timeSelector({
-      ele: ".endTimeRange" + (infoList.length - 1),
-      name: "LeaveTimeDO[" + (infoList.length - 1) + "]$endTimeRange",
+      ele: ".endTimeRange" + (lengthNum - 1),
+      name: "LeaveTimeDO[" + (lengthNum - 1) + "]$endTimeRange",
       callback: function (val) {
         timeObj.endHM = val
         whereIsTimes()
       }
     })
-    for (let i = 0; i < infoList.length; i++) {
+    for (let i = arraysList.length; i < lengthNum; i++) {
       timeObj.index = i + 1
       z.ui.laydate("[name='LeaveTimeDO[" + i + "]$startTime']").init({
         type: 'date',
@@ -222,7 +236,6 @@
   }
   function whereIsTimes() {
     let timesCopy = JSON.parse(JSON.stringify(isTimes))
-
     //拼接时间
     timesCopy.forEach((item, index) => {
       item.startAll = item.startTime + ' ' + item.startHM
@@ -238,25 +251,33 @@
       }
     }
     let sum = 0 //总小时
+    let sTbody = document.querySelectorAll('.qjsjClass')
     for (let i = 0; i < timesCopy.length; i++) {
       let startTime = moment(timesCopy[i].startAll).unix();
       let endTime = moment(timesCopy[i].endAll).unix();
-      if (startTime && endTime) {
+      let startHM = timesCopy[i].startHM
+      let endHM = timesCopy[i].endHM
+      if (startTime && endTime && endHM && startHM) {
         sum += leaveTimes(timesCopy[i].startAll, timesCopy[i].endAll) //leaveTimes 计算天数的方法
       }
-      if (startTime > endTime) {
-        z.ui.alertWarning("起始时间大于截止时间!请重新选择")
+      if (startTime >= endTime && startHM && endHM) {
+        z.ui.alertWarning("起始时间大于等于截止时间!请重新选择")
+        z.ui.laydate("[name='LeaveTimeDO[" + i + "]$endTime']").setValue('')
+        sTbody[i].children[2].children[0].children[1].children[0].children[0].value = ''
       }
 
       for (let j = i + 1; j < timesCopy.length; j++) {
         let startJTime = moment(timesCopy[j].startAll).unix();
+        let startHm = timesCopy[j].startHM
         let endJTime = moment(timesCopy[j].endAll).unix();
-
-        if (endTime > startJTime) {
-          z.ui.alertWarning(`序号为${i + 1}的截止时间小于序号为${j + 1}的起始时间,请重新输入`)
+        if (endTime > startJTime && startHm) {
+          z.ui.alertWarning(`序号为${i + 1}的截止时间小于等于序号为${j + 1}的起始时间,请重新输入`)
+          z.ui.laydate("[name='LeaveTimeDO[" + j + "]$startTime']").setValue('')
+          sTbody[j].children[1].children[0].children[1].children[0].children[0].value = ''
         }
       }
     }
+    let timeObject = document.querySelector('#timeObject')
     let days = sum / 7.5;
     let leaveDaysText = ''
     let parseIntNum = parseInt(days)  //小数点前面数字
@@ -343,6 +364,7 @@
     var trDom = document.createElement("tr");
     trDom.style.backgroundColor = "#fff";
     trDom.id = "qjsj_" + index;
+    trDom.className = 'qjsjClass'
     trDom.innerHTML = '<td name="qjsj_seq">' + (index + 1) + '</td>'
       + '<td>'
       + '<div class="form-flex">'

+ 3 - 1
zjugis-business/src/main/resources/templates/Leave/js/leaveTimeAuth.js

@@ -4,7 +4,6 @@
  ** endTime 请假结束时间
  **/
 function leaveTimes(startTime, endTime) {
-
   let returnNum = 0 //返回的天数
   let time1 = moment(startTime).format('YYYY-MM-DD'); //起始时间
   let time2 = moment(endTime).format('YYYY-MM-DD'); //截止时间
@@ -14,6 +13,9 @@ function leaveTimes(startTime, endTime) {
 
   let isTime = new Date(time1 + ' 12:00') //超过这个时间要减去午休的一个小时
 
+  if (!(time1 && time2 && time3 && time4)) {
+    return
+  }
   if (time1 == time2) {
     //同一天内
     let hours = moment