|
@@ -484,7 +484,8 @@ import timetoolVue from '../timetool/timetool.vue';
|
|
|
item: {},
|
|
|
list: [],
|
|
|
searchList: []
|
|
|
- }
|
|
|
+ },
|
|
|
+ vacationTime: {}
|
|
|
};
|
|
|
},
|
|
|
|
|
@@ -505,15 +506,61 @@ import timetoolVue from '../timetool/timetool.vue';
|
|
|
}
|
|
|
}
|
|
|
}else{
|
|
|
- hours += domains[i].workingTime ? parseFloat(domains[i].workingTime) : 0
|
|
|
+ if(this.user.timeType.type == 2){
|
|
|
+ if(domains[i].startTime && domains[i].endTime){
|
|
|
+ let selectionTime = this.getHour(domains[i].startTime, domains[i].endTime)
|
|
|
+ let subtractedData = 0
|
|
|
+ let arr = JSON.parse(JSON.stringify(this.vacationTime))
|
|
|
+ arr.unshift({s: domains[i].startTime, e: domains[i].endTime})
|
|
|
+ for(var j in arr) {
|
|
|
+ subtractedData += +this.timeOverlap(j, arr)
|
|
|
+ }
|
|
|
+ console.log(selectionTime, subtractedData)
|
|
|
+ hours += +selectionTime - +subtractedData
|
|
|
+ console.log(hours)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ hours += domains[i].workingTime ? parseFloat(domains[i].workingTime) : 0
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- return hours.toFixed(1)
|
|
|
+ return hours.toFixed(2)
|
|
|
},
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
+ // 判断两个时间段是否重叠
|
|
|
+ timeOverlap(idx, dateAr) {
|
|
|
+ let zhi = 0
|
|
|
+ for (let k in dateAr) {
|
|
|
+ if (idx !== k) {
|
|
|
+ if (((dateAr[k].s <= dateAr[idx].s && dateAr[k].e >= dateAr[idx].s) || (dateAr[k].s <= dateAr[idx].s && dateAr[k].e <= dateAr[idx].e))) {
|
|
|
+ // 选择的时间包含设置的休息时间段 (选择的开始时间和结束时间大于设置的休息时间段)
|
|
|
+ if(dateAr[idx].s > dateAr[k].s && dateAr[idx].e < dateAr[k].e) {
|
|
|
+ // zhi += 2
|
|
|
+ zhi += +this.getHour(dateAr[idx].s, dateAr[idx].e)
|
|
|
+ }
|
|
|
+ // 选择的时间包含在设置的休息时间 (选择的开始时间和结束时间都处于在设置的休息时间段内)
|
|
|
+ if(dateAr[idx].s > dateAr[k].s && dateAr[idx].e > dateAr[k].e) {
|
|
|
+ zhi += +this.getHour(dateAr[idx].s, dateAr[k].e)
|
|
|
+ } else if(dateAr[idx].s < dateAr[k].s && dateAr[idx].e > dateAr[k].e) {
|
|
|
+ zhi += +this.getHour(dateAr[k].e, dateAr[idx].s)
|
|
|
+ } else {
|
|
|
+ // 选择的结束时间处于设置的休息时间段内 (选择的结束时间处于的休息时间段)
|
|
|
+ if(dateAr[k].e < dateAr[idx].e && dateAr[k].e > dateAr[idx].s) {
|
|
|
+ zhi += +this.getHour(dateAr[k].e, dateAr[idx].e)
|
|
|
+ }
|
|
|
+ // 选择的开始时间处于设置的休息时间段内 (选择的开始时间处于的休息时间段)
|
|
|
+ if(dateAr[idx].s > dateAr[k].s && dateAr[idx].s < dateAr[k].e) {
|
|
|
+ zhi += +this.getHour(dateAr[k].e, dateAr[idx].s)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return zhi
|
|
|
+ },
|
|
|
getHour(s1, s2) {
|
|
|
var reDate = /\d{4}-\d{1,2}-\d{1,2} /;
|
|
|
s1 = new Date((reDate.test(s1) ? s1 : '2018-1-1 ' + s1).replace(/-/g, '/'));
|
|
@@ -1002,6 +1049,16 @@ import timetoolVue from '../timetool/timetool.vue';
|
|
|
if (t.pm != null) {
|
|
|
this.timeType.push({value:2, label:'下午 - '+t.pm+'小时', hours: t.pm});
|
|
|
}
|
|
|
+
|
|
|
+ let arr = []
|
|
|
+ for(var i in res.data.excludeTimeList) {
|
|
|
+ let obj = {
|
|
|
+ s: res.data.excludeTimeList[i].startTime,
|
|
|
+ e: res.data.excludeTimeList[i].endTime,
|
|
|
+ }
|
|
|
+ arr.push(obj)
|
|
|
+ }
|
|
|
+ this.vacationTime = arr
|
|
|
} else {
|
|
|
this.$toast.clear();
|
|
|
this.$toast.fail(res.msg);
|