Bladeren bron

调整日报的时间计算

Lijy 2 jaren geleden
bovenliggende
commit
87b394e32c

+ 25 - 14
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -417,6 +417,7 @@
                                 @change="iptChang()">
                             </el-time-picker>
                             </span>
+
                             <div class="overtime" v-if="user.timeType.fillOvertime || (isWeekend && user.timeType.lockWorktime != 1)">
                                 <el-checkbox :disabled="!domain.canEdit" v-model="domain.isOvertime">{{$t('other.IncludingOvertime')}}</el-checkbox>
                                 <el-input :disabled="!domain.canEdit || domain.isOvertime==null || domain.isOvertime==0 || !domain.isOvertime" v-model="domain.overtimeHours" @blur="triggerCalculateOT(index)" @input="domain.overtimeHours=domain.overtimeHours.replace(/[^\d.]/g,'')" style="width: 100px;"></el-input><span style="margin-left:5px">{{$t('time.hour')}}</span>
@@ -2601,32 +2602,43 @@
                 var sl = this.workForm.domains
                 var quanbu = 0 
                 var zhi = ''
+                let arrNum = []
                 for(var i in sl) {
                     if(sl[i].startTime && sl[i].endTime) {
-                        // var date2 = '2021/12/12 ' + sl[i].endTime +':00'
-                        // var date1 = '2021/12/12 ' + sl[i].startTime +':00'
-                        // var date3 = new Date(date2).getTime() - new Date(date1).getTime();
-                        // var leave1=date3%(24*3600*1000)
-                        // var hours=Math.floor(leave1/(3600*1000))
-                        // var leave2=leave1%(3600*1000)
-                        // var minutes=Math.floor(leave2/(60*1000))
-                        // var shi = hours+'.'+ minutes
-                        // var sll = +shi + 0
-                        // zhi = this.jsDay * sll
-                        // quanbu = +quanbu + zhi
                         let selectionTime = this.getHour(sl[i].startTime, sl[i].endTime)
                         let subtractedData = 0
                         let arr = JSON.parse(JSON.stringify(this.vacationTime))
                         arr.unshift({s: sl[i].startTime, e: sl[i].endTime})
-                        console.log(arr, '要看的数据')
                         for(var j in arr) {
                             subtractedData += +this.timeOverlap(j, arr)
                         }
                         zhi = (+selectionTime - +subtractedData) * this.jsDay
+                        arrNum.push(zhi)
                         quanbu += zhi
                     }
+                    
                 }
                 this.jsTime = quanbu
+
+                let flg = false
+                let zuiNum = 0
+                for(let j in arrNum) {
+                    zuiNum += arrNum[j]
+                    if(flg) {
+                        this.$set(this.workForm.domains[j],'isOvertime', true)
+                        this.$set(this.workForm.domains[j],'overtimeHours', arrNum[j])
+                    }
+                    if(zuiNum > this.user.timeType.allday && !flg) {
+                        flg = true
+                        this.$set(this.workForm.domains[j],'isOvertime', true)
+                        this.$set(this.workForm.domains[j],'overtimeHours', zuiNum - this.user.timeType.allday)
+                    }
+
+                    if(zuiNum < this.user.timeType.allday && !flg) {
+                        this.$set(this.workForm.domains[j],'isOvertime', false)
+                        this.$set(this.workForm.domains[j],'overtimeHours', '')
+                    }
+                }
             },
             iptChangs() {
                 var sl = this.workForm.domains
@@ -2650,7 +2662,6 @@
                     }
                 }
                 this.jsTime = quanbu
-
             },
             removeTimeItem(item, index) {
                 item.worktimeList.splice(index, 1);
@@ -4667,7 +4678,7 @@
                                     timeType:0,
                                     multiWorktime: this.reportTimeType.multiWorktime,
                                     worktimeList:[{}],
-                                    canEdit: true
+                                    canEdit: true,
                                 }],
                             }
                             if(this.user.timeType.type == 1) {

+ 25 - 0
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

@@ -987,6 +987,7 @@ import timetoolVue from '../timetool/timetool.vue';
             setTotalReportHours(){
                 let domains = this.form.domains
                 let hours = 0
+                let arrNum = [] //  用于时间段计算加班时间
                 for(let i in domains){
                     // if(domains[i].projectId){
                         // hours += parseFloat(domains[i].workingTime)
@@ -1009,6 +1010,7 @@ import timetoolVue from '../timetool/timetool.vue';
                                     console.log(selectionTime, subtractedData)
                                     hours += +selectionTime - +subtractedData
                                     console.log(hours)
+                                    arrNum.push(+selectionTime - +subtractedData)
                                 }
                             } else {
                                 hours += domains[i].workingTime ? parseFloat(domains[i].workingTime) : 0
@@ -1018,6 +1020,29 @@ import timetoolVue from '../timetool/timetool.vue';
                 }
                 // return hours.toFixed(2)
                 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', '')
+                        }
+                    }
+                }
             },
 
             filter(type, options) {