Просмотр исходного кода

2022.9.15 移动端工作事项必填bug

ggooalice 2 лет назад
Родитель
Сommit
7108a2750e
1 измененных файлов с 251 добавлено и 245 удалено
  1. 251 245
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

+ 251 - 245
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

@@ -2,7 +2,7 @@
     <div>
         <van-nav-bar title="填写日报" left-text="返回" @click-left="back" fixed left-arrow/>
 
-        <van-form class="login_form">
+        <van-form class="login_form" ref="loginForm">
             <div>
             <van-field readonly clickable name="datetimePicker" :value="form.createDate" label="时间选择" placeholder="点击选择时间" 
             @click="showPicker = true" :rules="rules.createDate" />
@@ -1322,276 +1322,282 @@ import timetoolVue from '../timetool/timetool.vue';
             },
             // 提交日报
             submitReport() {
-                this.dateAr = []
-                let alp = []
-                if(this.user.timeType.multiWorktime == 1) {
-                    for(var p in this.form.domains) {
-                        var slll = this.form.domains[p]
-                        for(var o in slll.worktimeList) {
-                            if(slll.worktimeList[o].startTime || slll.worktimeList[o].endTime) {
-                                let objs = {}
-                                objs.s = slll.worktimeList[o].startTime
-                                objs.e = slll.worktimeList[o].endTime
-                                alp.push(objs)
+                this.$refs.loginForm.validate().then(
+                ()=>{
+                // 验证通过
+                    this.dateAr = []
+                    let alp = []
+                    if(this.user.timeType.multiWorktime == 1) {
+                        for(var p in this.form.domains) {
+                            var slll = this.form.domains[p]
+                            for(var o in slll.worktimeList) {
+                                if(slll.worktimeList[o].startTime || slll.worktimeList[o].endTime) {
+                                    let objs = {}
+                                    objs.s = slll.worktimeList[o].startTime
+                                    objs.e = slll.worktimeList[o].endTime
+                                    alp.push(objs)
+                                }
                             }
                         }
-                    }
-                }else{
-                    for(let i in this.form.domains){
-                        let objs = {}
-                        objs.s = this.form.domains[i].startTime
-                        objs.e = this.form.domains[i].endTime
-                        alp.push(objs)
-                    }
-                }
-                this.dateAr = alp
-                    if(this.dateAr.length > 0) {
-                        let trus = this.fns()
-                        if(!trus) {
-                            this.$toast('填写的时间段重叠')
-                            return
-                        }
-                    }
-                
-                
-                // return
-                const toast = this.$toast.loading({
-                    forbidClick: true,
-                    duration: 0
-                });
-                // let formData = new FormData();
-                let formData = new URLSearchParams()
-                formData.append("draft", this.isDraft);
-                if (this.reportTimeType.type == 0) {
-                    var alldayNum = 0;
-                    var amNum = 0;
-                    var pmNum = 0;
-                    for(var i in this.form.domains) {
-                        if (this.form.domains[i].timeType == 0) {
-                            alldayNum ++;
-                        } else if (this.form.domains[i].timeType == 1) {
-                            amNum++;
-                        } else if (this.form.domains[i].timeType == 2) {
-                            pmNum++;
+                    }else{
+                        for(let i in this.form.domains){
+                            let objs = {}
+                            objs.s = this.form.domains[i].startTime
+                            objs.e = this.form.domains[i].endTime
+                            alp.push(objs)
                         }
                     }
-                    if (alldayNum > 1) {
-                        this.$toast.fail("工作时间-全天,只能选择一次");
-                        return;
-                    }
-                    if (amNum > 1) {
-                        this.$toast.fail("工作时间-上午,只能选择一次");
-                        
-                        return;
-                    }
-                    if (pmNum > 1) {
-                        this.$toast.fail("工作时间-下午,只能选择一次");
-                        return;
-                    }
-                    if (alldayNum == 1 && (amNum > 0 || pmNum > 0)) {
-                        this.$toast.fail("工作时间-全天,不能和上下午同时存在");
-                        return;
-                    }
-                } else if (this.reportTimeType.type == 3) {
-                    //总百分比不能超过100%
-                    let total = 0;
-                    this.form.domains.forEach(w=>{total += w.progress});
-                    if (total > 100) {
-                        this.$toast.fail("用时比例之和不能超过100%");
-                        return;
-                    } else if (total < 100) {
-                        this.$toast.fail("工时尚未完全分配,无法提交");
-                        return;
-                    }
-                }
-                if (this.reportTimeType.type == 1 && this.report.time) {
-                            var totalTime = 0;
-                            for (var t=0;t<this.form.domains.length; t++) {
-                                totalTime += parseFloat(this.form.domains[t].workingTime);
-                            }
-                            if (this.report.time.workHours && totalTime > parseFloat(this.report.time.workHours)) {
-                                this.$toast.fail("填报工时之和"+(totalTime)+"h不能超过考勤总工时("+this.report.time.workHours.toFixed(1)+"h)");
-                                return;
+                    this.dateAr = alp
+                        if(this.dateAr.length > 0) {
+                            let trus = this.fns()
+                            if(!trus) {
+                                this.$toast('填写的时间段重叠')
+                                return
                             }
                         }
-                
-                //填字段
-                for(var i in this.form.domains) {
-                    if (this.user.timeType.customDegreeActive == 1) {
-                        if(this.form.domains[i].degreeId) {
-                            formData.append("degreeId", this.form.domains[i].degreeId);
-                        } else {
-                            if(this.user.timeType.customDegreeStatus && this.form.domains[i].wuduList.length){
-                                this.$toast.fail('请选择' + this.user.timeType.customDegreeName)
-                                return
-                            }else{
-                                formData.append("degreeId", -1);
+                    // return
+                    const toast = this.$toast.loading({
+                        forbidClick: true,
+                        duration: 0
+                    });
+                    // let formData = new FormData();
+                    let formData = new URLSearchParams()
+                    formData.append("draft", this.isDraft);
+                    if (this.reportTimeType.type == 0) {
+                        var alldayNum = 0;
+                        var amNum = 0;
+                        var pmNum = 0;
+                        for(var i in this.form.domains) {
+                            if (this.form.domains[i].timeType == 0) {
+                                alldayNum ++;
+                            } else if (this.form.domains[i].timeType == 1) {
+                                amNum++;
+                            } else if (this.form.domains[i].timeType == 2) {
+                                pmNum++;
                             }
+                        }
+                        if (alldayNum > 1) {
+                            this.$toast.fail("工作时间-全天,只能选择一次");
+                            return;
+                        }
+                        if (amNum > 1) {
+                            this.$toast.fail("工作时间-上午,只能选择一次");
                             
+                            return;
+                        }
+                        if (pmNum > 1) {
+                            this.$toast.fail("工作时间-下午,只能选择一次");
+                            return;
+                        }
+                        if (alldayNum == 1 && (amNum > 0 || pmNum > 0)) {
+                            this.$toast.fail("工作时间-全天,不能和上下午同时存在");
+                            return;
                         }
-                    } else {
-                        formData.append("degreeId", -1);
-                    }
-                    if(this.form.domains[i].customData) {
-                        formData.append("customData", this.form.domains[i].customData);
-                    } else {
-                        formData.append("customData", "0");
-                    }
-                    if(this.form.domains[i].customText) {
-                        formData.append("customText", this.form.domains[i].customText);
-                    } else {
-                        formData.append("customText", "-");
-                    }
-                    
-                    if (this.form.domains[i].id) {
-                        formData.append("id", this.form.domains[i].id);
-                    } else {
-                        formData.append("id", -1);
-                    }
-                    formData.append("projectId", parseFloat(this.form.domains[i].projectId));
-                    if (this.form.domains[i].subProjectId) {
-                        formData.append("subProjectId", this.form.domains[i].subProjectId);
-                    } else {
-                        formData.append("subProjectId", 0);
-                    }
-                    if (this.form.domains[i].groupId) {
-                        formData.append("groupId", this.form.domains[i].groupId);
-                    } else {
-                        formData.append("groupId", 0);
-                    }
-                    if (this.form.domains[i].stage) {
-                        formData.append("stage", this.form.domains[i].stage);
-                    } else {
-                        formData.append("stage", '-');
-                    }
-                    formData.append("reportTimeType", this.reportTimeType.type);
-                    formData.append("multiWorktime", this.reportTimeType.multiWorktime);
-                    if (this.reportTimeType.type == 0) {
-                        formData.append("timeType", this.form.domains[i].timeType);
-                        formData.append("workingTime", parseFloat(this.form.domains[i].workingTime));
-                    } else if (this.reportTimeType.type == 1) {
-                        formData.append("workingTime", parseFloat(this.form.domains[i].workingTime));
-                    } else if (this.reportTimeType.type == 2) {
-                        formData.append("startTime", this.form.domains[i].startTime);
-                        formData.append("endTime",this.form.domains[i].endTime);
                     } else if (this.reportTimeType.type == 3) {
-                        formData.append("progress", this.form.domains[i].progress);
-                        formData.append("workingTime",this.form.domains[i].workingTime);
-                    }
-                    
-                    if (this.form.domains[i].taskId) {
-                        formData.append("taskId", this.form.domains[i].taskId);
-                    } else {
-                        formData.append("taskId", 0);
-                    }
-                    if (this.form.domains[i].taskFinish == true) {
-                        formData.append("taskFinish", 1);
-                    } else {
-                        formData.append("taskFinish", 0);
-                    }
-                    formData.append("createDate", this.form.createDate);
-                    formData.append("isOvertime", this.form.domains[i].isOvertime?1:0);
-                    if (this.form.domains[i].overtimeHours && this.form.domains[i].isOvertime == 1) {
-                        formData.append("overtimeHours", this.form.domains[i].overtimeHours);
-                    } else {
-                        formData.append("overtimeHours", 0);
-                    }
-                    if(this.form.domains[i].basecostId){
-                        formData.append("basecostId", this.form.domains[i].basecostId);
-                    }
-                    
-
-
-                    //项目专业进度
-                    if (this.form.domains[i].professionProgress) {
-                        let m = JSON.stringify(this.form.domains[i].professionProgress);
-                        m = m.replace(/,/g,"@");//replaceAll(',','@');企业微信不兼容replaceAll
-                        formData.append("professionProgress", m);
-                    } else {
-                        formData.append("professionProgress", "[]");
-                    }
-                    //图片的处理,serverPic是当前所有的照片
-                    if (this.form.domains[i].serverPics) {
-                        let m = JSON.stringify(this.form.domains[i].serverPics);
-                        m = m.replace(/,/g,"@");//replaceAll(',','@');企业微信不兼容replaceAll
-                        formData.append("pics", m);
-                    } else {
-                        formData.append("pics", "@");
+                        //总百分比不能超过100%
+                        let total = 0;
+                        this.form.domains.forEach(w=>{total += w.progress});
+                        if (total > 100) {
+                            this.$toast.fail("用时比例之和不能超过100%");
+                            return;
+                        } else if (total < 100) {
+                            this.$toast.fail("工时尚未完全分配,无法提交");
+                            return;
+                        }
                     }
-                    
-                    //处理多个时间事项
-                    if (this.reportTimeType.multiWorktime == 1) {
-                        //检查时间是否有重叠
-                        var workList = this.form.domains[i].worktimeList;
-                        for (var j=0;j<workList.length; j++) {
-                            var curItem = workList[j];
-                            if (curItem.startTime == null || curItem.endTime == null) {
-                                this.$toast.fail("请设置工作时间");
-                                return;
+                    if (this.reportTimeType.type == 1 && this.report.time) {
+                                var totalTime = 0;
+                                for (var t=0;t<this.form.domains.length; t++) {
+                                    totalTime += parseFloat(this.form.domains[t].workingTime);
+                                }
+                                if (this.report.time.workHours && totalTime > parseFloat(this.report.time.workHours)) {
+                                    this.$toast.fail("填报工时之和"+(totalTime)+"h不能超过考勤总工时("+this.report.time.workHours.toFixed(1)+"h)");
+                                    return;
+                                }
                             }
-                            //检查开始时间是否大于结束时间
-                            if (curItem.startTime >= curItem.endTime) {
-                                this.$toast.fail("时间段"+curItem.startTime+'-'+curItem.endTime+"有误:"+ 
-                                        "结束时间必须大于开始时间");
-                                return;
+                    //填字段
+                    for(var i in this.form.domains) {
+                        if (this.user.timeType.customDegreeActive == 1) {
+                            if(this.form.domains[i].degreeId) {
+                                formData.append("degreeId", this.form.domains[i].degreeId);
+                            } else {
+                                if(this.user.timeType.customDegreeStatus && this.form.domains[i].wuduList.length){
+                                    this.$toast.fail('请选择' + this.user.timeType.customDegreeName)
+                                    return
+                                }else{
+                                    formData.append("degreeId", -1);
+                                }
+                                
                             }
-                            for (var p = j+1;p<workList.length; p++) {
-                                var jItem = workList[p];
-                                if ((jItem.startTime>=curItem.startTime&&jItem.startTime < curItem.endTime)
-                                        || (jItem.endTime>curItem.startTime&&jItem.endTime <= curItem.endTime)) {
-                                    
-                                    this.$toast.fail("时间段"+curItem.startTime+'-'+curItem.endTime+"与"+ 
-                                            jItem.startTime+'-'+jItem.endTime+ "存在重叠,请修改。");
+                        } else {
+                            formData.append("degreeId", -1);
+                        }
+                        if(this.form.domains[i].customData) {
+                            formData.append("customData", this.form.domains[i].customData);
+                        } else {
+                            formData.append("customData", "0");
+                        }
+                        if(this.form.domains[i].customText) {
+                            formData.append("customText", this.form.domains[i].customText);
+                        } else {
+                            formData.append("customText", "-");
+                        }
+                        
+                        if (this.form.domains[i].id) {
+                            formData.append("id", this.form.domains[i].id);
+                        } else {
+                            formData.append("id", -1);
+                        }
+                        formData.append("projectId", parseFloat(this.form.domains[i].projectId));
+                        if (this.form.domains[i].subProjectId) {
+                            formData.append("subProjectId", this.form.domains[i].subProjectId);
+                        } else {
+                            formData.append("subProjectId", 0);
+                        }
+                        if (this.form.domains[i].groupId) {
+                            formData.append("groupId", this.form.domains[i].groupId);
+                        } else {
+                            formData.append("groupId", 0);
+                        }
+                        if (this.form.domains[i].stage) {
+                            formData.append("stage", this.form.domains[i].stage);
+                        } else {
+                            formData.append("stage", '-');
+                        }
+                        formData.append("reportTimeType", this.reportTimeType.type);
+                        formData.append("multiWorktime", this.reportTimeType.multiWorktime);
+                        if (this.reportTimeType.type == 0) {
+                            formData.append("timeType", this.form.domains[i].timeType);
+                            formData.append("workingTime", parseFloat(this.form.domains[i].workingTime));
+                        } else if (this.reportTimeType.type == 1) {
+                            formData.append("workingTime", parseFloat(this.form.domains[i].workingTime));
+                        } else if (this.reportTimeType.type == 2) {
+                            formData.append("startTime", this.form.domains[i].startTime);
+                            formData.append("endTime",this.form.domains[i].endTime);
+                        } else if (this.reportTimeType.type == 3) {
+                            formData.append("progress", this.form.domains[i].progress);
+                            formData.append("workingTime",this.form.domains[i].workingTime);
+                        }
+                        
+                        if (this.form.domains[i].taskId) {
+                            formData.append("taskId", this.form.domains[i].taskId);
+                        } else {
+                            formData.append("taskId", 0);
+                        }
+                        if (this.form.domains[i].taskFinish == true) {
+                            formData.append("taskFinish", 1);
+                        } else {
+                            formData.append("taskFinish", 0);
+                        }
+                        formData.append("createDate", this.form.createDate);
+                        formData.append("isOvertime", this.form.domains[i].isOvertime?1:0);
+                        if (this.form.domains[i].overtimeHours && this.form.domains[i].isOvertime == 1) {
+                            formData.append("overtimeHours", this.form.domains[i].overtimeHours);
+                        } else {
+                            formData.append("overtimeHours", 0);
+                        }
+                        if(this.form.domains[i].basecostId){
+                            formData.append("basecostId", this.form.domains[i].basecostId);
+                        }
+                        
+
+
+                        //项目专业进度
+                        if (this.form.domains[i].professionProgress) {
+                            let m = JSON.stringify(this.form.domains[i].professionProgress);
+                            m = m.replace(/,/g,"@");//replaceAll(',','@');企业微信不兼容replaceAll
+                            formData.append("professionProgress", m);
+                        } else {
+                            formData.append("professionProgress", "[]");
+                        }
+                        //图片的处理,serverPic是当前所有的照片
+                        if (this.form.domains[i].serverPics) {
+                            let m = JSON.stringify(this.form.domains[i].serverPics);
+                            m = m.replace(/,/g,"@");//replaceAll(',','@');企业微信不兼容replaceAll
+                            formData.append("pics", m);
+                        } else {
+                            formData.append("pics", "@");
+                        }
+                        
+                        //处理多个时间事项
+                        if (this.reportTimeType.multiWorktime == 1) {
+                            //检查时间是否有重叠
+                            var workList = this.form.domains[i].worktimeList;
+                            for (var j=0;j<workList.length; j++) {
+                                var curItem = workList[j];
+                                if (curItem.startTime == null || curItem.endTime == null) {
+                                    this.$toast.fail("请设置工作时间");
+                                    return;
+                                }
+                                //检查开始时间是否大于结束时间
+                                if (curItem.startTime >= curItem.endTime) {
+                                    this.$toast.fail("时间段"+curItem.startTime+'-'+curItem.endTime+"有误:"+ 
+                                            "结束时间必须大于开始时间");
                                     return;
                                 }
+                                for (var p = j+1;p<workList.length; p++) {
+                                    var jItem = workList[p];
+                                    if ((jItem.startTime>=curItem.startTime&&jItem.startTime < curItem.endTime)
+                                            || (jItem.endTime>curItem.startTime&&jItem.endTime <= curItem.endTime)) {
+                                        
+                                        this.$toast.fail("时间段"+curItem.startTime+'-'+curItem.endTime+"与"+ 
+                                                jItem.startTime+'-'+jItem.endTime+ "存在重叠,请修改。");
+                                        return;
+                                    }
+                                }
                             }
-                        }
 
-                        let m = JSON.stringify(this.form.domains[i].worktimeList);
-                        m = m.replace(/,/g,"@");//replaceAll(',','@');企业微信不兼容replaceAll
-                        formData.append("content", m);
-                    } else {
-                        if (this.form.domains[i].content) {
-                            formData.append("content", this.form.domains[i].content);
+                            let m = JSON.stringify(this.form.domains[i].worktimeList);
+                            m = m.replace(/,/g,"@");//replaceAll(',','@');企业微信不兼容replaceAll
+                            formData.append("content", m);
                         } else {
-                            formData.append("content", '-');
+                            if (this.form.domains[i].content) {
+                                formData.append("content", this.form.domains[i].content);
+                            } else {
+                                formData.append("content", '-');
+                            }
                         }
-                    }
 
-                    //审核人
-                    if (this.form.domains[i].projectAuditorId) {
-                        formData.append("projectAuditorId", this.form.domains[i].projectAuditorId);
-                    } else {
-                        if (this.user.timeType.reportAuditType == 0) {
-                            this.$toast.fail("请指定["+this.form.domains[i].projectName+']项目的审核人');
+                        //审核人
+                        if (this.form.domains[i].projectAuditorId) {
+                            formData.append("projectAuditorId", this.form.domains[i].projectAuditorId);
                         } else {
-                            if (this.form.domains[i].taskGroups.length == 0) {
-                                this.$toast.fail("您在["+this.form.domains[i].projectName+"]项目上尚无参与的任务分组");
-                            } else if (!this.form.domains[i].groupId) {
-                                this.$toast.fail("请选择["+this.form.domains[i].projectName+"]项目的任务分组");
+                            if (this.user.timeType.reportAuditType == 0) {
+                                this.$toast.fail("请指定["+this.form.domains[i].projectName+']项目的审核人');
                             } else {
-                                this.$toast.fail("请先设置["+this.form.domains[i].projectName+']-['+this.form.domains[i].groupName+']的分组负责人');
+                                if (this.form.domains[i].taskGroups.length == 0) {
+                                    this.$toast.fail("您在["+this.form.domains[i].projectName+"]项目上尚无参与的任务分组");
+                                } else if (!this.form.domains[i].groupId) {
+                                    this.$toast.fail("请选择["+this.form.domains[i].projectName+"]项目的任务分组");
+                                } else {
+                                    this.$toast.fail("请先设置["+this.form.domains[i].projectName+']-['+this.form.domains[i].groupName+']的分组负责人');
+                                }
                             }
+                            return;
                         }
-                        return;
                     }
-                }
-                if(!this.flgLg) {
-                    return
-                }
-                this.flgLg = false
-                this.$axios.post("/report/editReport", formData)
-                .then(res => {
-                    this.flgLg = true
-                    if(res.code == "ok") {
-                        this.$toast.clear();
-                        this.$toast.success(this.isDraft==0?'提交成功':'暂存成功');
-                        this.$router.push("/index");
-                    } else {
-                        this.$toast.clear();
-                        this.$toast.fail((this.isDraft==0?'提交失败':'暂存失败')+':'+res.msg);
+                    if(!this.flgLg) {
+                        return
                     }
-                }).catch(err=> {this.$toast.clear(); this.flgLg = true});
+                    this.flgLg = false
+                    this.$axios.post("/report/editReport", formData)
+                    .then(res => {
+                        this.flgLg = true
+                        if(res.code == "ok") {
+                            this.$toast.clear();
+                            this.$toast.success(this.isDraft==0?'提交成功':'暂存成功');
+                            this.$router.push("/index");
+                        } else {
+                            this.$toast.clear();
+                            this.$toast.fail((this.isDraft==0?'提交失败':'暂存失败')+':'+res.msg);
+                        }
+                    }).catch(err=> {this.$toast.clear(); this.flgLg = true});
+                }).catch(()=>{
+                //验证失败
+                console.log('验证失败');
+                    return
+                })
+                
             },
             //初始化参数
             initWxConfig() {