|
@@ -1263,33 +1263,36 @@ export default {
|
|
|
// this.totalReportHours = hours.toFixed(2)
|
|
|
console.log('timeArr', timeArr)
|
|
|
if (this.reportTimeType.multiWorktime == 1 || this.user.timeType.type == 2) {
|
|
|
- this.getTimeHours(timeArr)
|
|
|
+ const { timeCanOverlap } = this.reportTimeType // timeCanOverlap 为零时校验不允许重叠
|
|
|
+ if(timeCanOverlap == 0) {
|
|
|
+ this.getTimeHours(timeArr)
|
|
|
+ } else {
|
|
|
+ const newTimeArr = this.mergeTimeIntervals(timeArr)
|
|
|
+ this.getTimeHours(newTimeArr)
|
|
|
+ }
|
|
|
} else {
|
|
|
this.totalReportHours = hours.toFixed(2)
|
|
|
}
|
|
|
-
|
|
|
- // if(this.user.timeType.type == 2 && this.reportTimeType.multiWorktime != 1) {
|
|
|
- // let flg = false
|
|
|
- // let zuiNum = 0
|
|
|
- // for(let j in arrNum) {
|
|
|
- // zuiNum += arrNum[j]
|
|
|
- // console.log(zuiNum, arrNum[j], flg)
|
|
|
- // if(flg) {
|
|
|
- // this.$set(this.form.domains[j],'isOvertime', true)
|
|
|
- // this.$set(this.form.domains[j],'overtimeHours', arrNum[j])
|
|
|
- // }
|
|
|
- // if(zuiNum > this.user.timeType.allday && !flg) {
|
|
|
- // flg = true
|
|
|
- // this.$set(this.form.domains[j],'isOvertime', true)
|
|
|
- // this.$set(this.form.domains[j],'overtimeHours', zuiNum - this.user.timeType.allday)
|
|
|
- // }
|
|
|
-
|
|
|
- // if(zuiNum < this.user.timeType.allday && !flg) {
|
|
|
- // this.$set(this.form.domains[j],'isOvertime', false)
|
|
|
- // this.$set(this.form.domains[j],'overtimeHours', '')
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
+ },
|
|
|
+ // 处理重叠时间段
|
|
|
+ mergeTimeIntervals(timeIntervals) {
|
|
|
+ // 按照开始时间排序
|
|
|
+ timeIntervals.sort((a, b) => a.startTime.localeCompare(b.startTime));
|
|
|
+
|
|
|
+ const mergedIntervals = [];
|
|
|
+ for (const interval of timeIntervals) {
|
|
|
+ if (
|
|
|
+ mergedIntervals.length === 0 ||
|
|
|
+ interval.startTime > mergedIntervals[mergedIntervals.length - 1].endTime
|
|
|
+ ) {
|
|
|
+ // 当前时间段与存储数组中的时间段没有重叠,直接加入存储数组
|
|
|
+ mergedIntervals.push(interval);
|
|
|
+ } else if (interval.endTime > mergedIntervals[mergedIntervals.length - 1].endTime) {
|
|
|
+ // 当前时间段与存储数组中的时间段有重叠,但是未完全包含,需要合并时间段
|
|
|
+ mergedIntervals[mergedIntervals.length - 1].endTime = interval.endTime;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return mergedIntervals;
|
|
|
},
|
|
|
getTimeHours(arr) {
|
|
|
this.$axios.post("/report/getHoursByTimeRange", { timeJsonStr: JSON.stringify(arr) })
|
|
@@ -2075,13 +2078,17 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
this.dateAr = alp
|
|
|
- if (this.dateAr.length > 0) {
|
|
|
+ console.log(this.reportTimeType, this.dateAr, '<=== this.reportTimeType')
|
|
|
+
|
|
|
+ const { timeCanOverlap } = this.reportTimeType // timeCanOverlap 为零时校验不允许重叠
|
|
|
+ if (this.dateAr.length > 0 && timeCanOverlap == 0) {
|
|
|
let trus = this.fns()
|
|
|
if (!trus) {
|
|
|
this.$toast('填写的时间段重叠')
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
//检查子项目
|
|
|
if (this.user.timeType.subProMustFill == 1) {
|
|
|
for (var p in this.form.domains) {
|