Browse Source

2022.8.3 填报日报添加撤回

ggooalice 2 years ago
parent
commit
4d9ac5e74a
1 changed files with 50 additions and 29 deletions
  1. 50 29
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

+ 50 - 29
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -25,7 +25,7 @@
                 </div>
                 <div style="display:flex;">
                 <div class="grand flex">
-                    <div class="left-laowang" style="flex: 0 0 180px;overflow: hidden;">
+                    <div class="left-laowang" style="flex: 0 0 210px;overflow: hidden;">
                         <div v-if="permissions.reportsCompany || user.manageDeptId != 0 || permissions.reportsDept" :style="'overflow-x:hidden;overflow-y:auto;height:' + tableHeight + 'px;'">
                             <div style="width: 100%;box-sizing: border-box;padding-right: 10px;">
                                 <el-select v-model="selectState" size="small" @change="stateChange" style="100%">
@@ -318,8 +318,8 @@
                         </el-time-picker>
                         </span>
                         <div class="overtime" v-if="user.timeType.fillOvertime || isWeekend">
-                            <el-checkbox :disabled="!canEdit" v-model="domain.isOvertime">含加班</el-checkbox>
-                            <el-input :disabled="!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">小时</span>
+                            <el-checkbox :disabled="!domain.canEdit" v-model="domain.isOvertime">含加班</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">小时</span>
                         </div>
                     </el-form-item>
                     
@@ -346,7 +346,7 @@
                         </el-select>
                         </template>
                         
-                        <el-link v-if="index >= 1&&canEdit" type="primary" :underline="false" @click="delDomain(index)" style="float:right;margin-right:10px;"
+                        <el-link v-if="index >= 1&&domain.canEdit" type="primary" :underline="false" @click="delDomain(index)" style="float:right;margin-right:10px;"
                             :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)">
                             <i class="fa fa-trash" style="color: red;;font-size:18px;"></i>
                         </el-link>
@@ -358,7 +358,7 @@
                     </el-form-item>
                     <!--如果设置了工时成本预警的预算成本项-->
                     <el-form-item label="预算来源" v-if="user.company.packageProject==1&&timeBasecostList &&timeBasecostList.length>0">
-                        <el-select v-model="domain.basecostId" :disabled="!canEdit" @change="$forceUpdate()">
+                        <el-select v-model="domain.basecostId" :disabled="!domain.canEdit" @change="$forceUpdate()">
                             <el-option v-for="item in timeBasecostList" :label="item.name" :value="item.id" :key="item.id"></el-option>
                         </el-select>
                     </el-form-item>
@@ -379,33 +379,33 @@
                         </el-select>
                     </el-form-item>
                     <el-form-item :label="user.companyId==781?'审核人':'项目审核人'">
-                        <el-select v-model="domain.projectAuditorId" :disabled="!canEdit" @change="$forceUpdate()">
+                        <el-select v-model="domain.projectAuditorId" :disabled="!domain.canEdit" @change="$forceUpdate()">
                             <el-option v-for="item in domain.auditUserList" :label="item.auditorName" :value="item.auditorId" :key="item.id"></el-option>
                         </el-select>
                     </el-form-item>
                     <!-- 相关维度/自定义维度 -->
                     <el-form-item :label="yonghuUser.customDegreeName" v-if="domain.projectId && yonghuUser.customDegreeActive == 1" :rules="user.timeType.customDegreeStatus == 1 && domain.wuduList != undefined && domain.wuduList.length != 0 ? { required: true, message: '请选择' + yonghuUser.customDegreeName, trigger: ['change','blur'] } : null" :prop="'domains.' + index + '.degreeId'">
-                        <el-select v-model="domain.degreeId" clearable placeholder="请选择" :disabled="!canEdit">
+                        <el-select v-model="domain.degreeId" clearable placeholder="请选择" :disabled="!domain.canEdit">
                             <el-option v-for="item in domain.wuduList" :key="item.value" :label="item.name" :value="item.id">
                             </el-option>
                         </el-select>
                     </el-form-item>
                     <!-- 相关数值 -->
                     <el-form-item :label="yonghuUser.customDataName" v-if="yonghuUser.customDataActive == 1" :prop="'domains.' + index + '.customData'" :rules="user.timeType.customDataStatus == 1 ? { type: 'number', required: true, message: '请填写' + yonghuUser.customDataName, trigger: ['change','blur'] } : null">
-                        <el-input-number :id="'numberData_'+index" :disabled="!canEdit" v-model="domain.customData" style="width:200px;" @keyup.native="restrictNumber('numberData_'+index)" :max="user.timeType.customDataMaxStatus == 1 ? user.timeType.customDataMaxValue : 'infinity'"></el-input-number>
+                        <el-input-number :id="'numberData_'+index" :disabled="!domain.canEdit" v-model="domain.customData" style="width:200px;" @keyup.native="restrictNumber('numberData_'+index)" :max="user.timeType.customDataMaxStatus == 1 ? user.timeType.customDataMaxValue : 'infinity'"></el-input-number>
                     </el-form-item>
                     <!-- 自定义文本 -->
                     <el-form-item :label="yonghuUser.customTextName" v-if="yonghuUser.customTextActive == 1" :prop="'domains.' + index + '.customText'" :rules="user.timeType.customTextStatus == 1 ? { required: true, message: '请填写' + yonghuUser.customTextName, trigger: ['change','blur'] } : null">
-                        <el-input :disabled="!canEdit" v-model="domain.customText" type="textarea" :rows="1" style="width:75%;margin-right:7%" maxlength="1000" show-word-limit></el-input>
+                        <el-input :disabled="!domain.canEdit" v-model="domain.customText" type="textarea" :rows="1" style="width:75%;margin-right:7%" maxlength="1000" show-word-limit></el-input>
                     </el-form-item>
                     <el-form-item v-if="reportTimeType.type == 3" label="用时占比" :prop="'domains.' + index + '.'+timeFields[reportTimeType.type]"
                         :rules="{ required: true, message: '请设置用时占比', trigger: 'blur' }">
                         <div style="width:300px;">
-                            <el-col span="14"><el-slider :disabled="!canEdit" v-model="domain.progress" :min="5" :show-tooltip="false" :step="5" style="width:180px;" @input="domain.workingTime = (reportTimeType.allday*domain.progress/100).toFixed(1)" @change="seleChn(0)"></el-slider></el-col>
+                            <el-col span="14"><el-slider :disabled="!domain.canEdit" v-model="domain.progress" :min="5" :show-tooltip="false" :step="5" style="width:180px;" @input="domain.workingTime = (reportTimeType.allday*domain.progress/100).toFixed(1)" @change="seleChn(0)"></el-slider></el-col>
                             <el-col span="10"><span style="margin-left:10px;float:right;"><span style="margin-right:10px;">{{domain.progress}}%</span>{{domain.workingTime}}小时</span></el-col>
                         </div>
-                        <div class="overtime" v-if="user.timeType.fillOvertime || isWeekend"><el-checkbox :disabled="!canEdit" v-model="domain.isOvertime">加班</el-checkbox>
-                        <el-input :disabled="!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">小时</span>
+                        <div class="overtime" v-if="user.timeType.fillOvertime || isWeekend"><el-checkbox :disabled="!domain.canEdit" v-model="domain.isOvertime">加班</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">小时</span>
                         </div>
                     </el-form-item>
                     <!--工程专业版本模式下, 各个专业的进度填报 -->
@@ -454,13 +454,13 @@
                             </el-select>
                             </template>
 
-                            <el-link v-if="index >= 1&&canEdit" type="primary" :underline="false" @click="delDomain(index)" style="float:right;margin-right:10px;"
+                            <el-link v-if="index >= 1&&domain.canEdit" type="primary" :underline="false" @click="delDomain(index)" style="float:right;margin-right:10px;"
                                 :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)">
                                 <i class="fa fa-trash" style="color: red;;font-size:18px;"></i>
                             </el-link>
 
-                            <div class="overtime" v-if="user.timeType.fillOvertime || isWeekend"><el-checkbox :disabled="!canEdit" v-model="domain.isOvertime">含加班</el-checkbox>
-                            <el-input :disabled="!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">小时</span>
+                            <div class="overtime" v-if="user.timeType.fillOvertime || isWeekend"><el-checkbox :disabled="!domain.canEdit" v-model="domain.isOvertime">含加班</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">小时</span>
                             </div>
                             
                             <!-- <el-link type="primary" v-if="canEdit"
@@ -471,7 +471,7 @@
                         </el-form-item>
                         <!--如果设置了工时成本预警的预算成本项-->
                         <el-form-item label="预算来源" v-if="user.company.packageProject==1&&timeBasecostList &&timeBasecostList.length>0">
-                            <el-select v-model="domain.basecostId" :disabled="!canEdit" @change="$forceUpdate()">
+                            <el-select v-model="domain.basecostId" :disabled="!domain.canEdit" @change="$forceUpdate()">
                                 <el-option v-for="item in timeBasecostList" :label="item.name" :value="item.id" :key="item.id"></el-option>
                             </el-select>
                         </el-form-item>
@@ -492,7 +492,7 @@
                             </el-select>
                         </el-form-item>
                         <el-form-item label="项目审核人" >
-                            <el-select v-model="domain.projectAuditorId" :disabled="!canEdit" @change="$forceUpdate()">
+                            <el-select v-model="domain.projectAuditorId" :disabled="!domain.canEdit" @change="$forceUpdate()">
                                 <el-option v-for="item in domain.auditUserList" :label="item.auditorName" :value="item.auditorId" :key="item.id"></el-option>
                             </el-select>
                         </el-form-item>
@@ -507,18 +507,18 @@
                         </el-form-item>
                         <!-- 相关维度 -->
                         <el-form-item :label="yonghuUser.customDegreeName" v-if="domain.projectId && yonghuUser.customDegreeActive == 1" :rules="user.timeType.customDegreeStatus == 1 && domain.wuduList.length != 0 ? { required: true, message: '请选择' + yonghuUser.customDegreeName, trigger: ['change','blur'] } : null" :prop="'domains.' + index + '.degreeId'">
-                            <el-select v-model="domain.degreeId" :disabled="!canEdit" clearable placeholder="请选择">
+                            <el-select v-model="domain.degreeId" :disabled="!domain.canEdit" clearable placeholder="请选择">
                                 <el-option v-for="item in domain.wuduList" :key="item.value" :label="item.name" :value="item.id">
                                 </el-option>
                             </el-select>
                         </el-form-item>
                         <!-- 相关数值 -->
                         <el-form-item :label="yonghuUser.customDataName" v-if="domain.projectId && yonghuUser.customDataActive == 1" :prop="'domains.' + index + '.customData'" :rules="user.timeType.customDataStatus == 1 ? { type: 'number', required: true, message: '请填写' + yonghuUser.customDataName, trigger: ['change','blur'] } : null">
-                            <el-input-number :id="'numberData_'+index" :disabled="!canEdit" v-model="domain.customData" style="width:200px;" @keyup.native="restrictNumber('numberData_'+index)" :max="user.timeType.customDataMaxStatus == 1 ? user.timeType.customDataMaxValue : 'infinity'"></el-input-number>
+                            <el-input-number :id="'numberData_'+index" :disabled="!domain.canEdit" v-model="domain.customData" style="width:200px;" @keyup.native="restrictNumber('numberData_'+index)" :max="user.timeType.customDataMaxStatus == 1 ? user.timeType.customDataMaxValue : 'infinity'"></el-input-number>
                         </el-form-item>
                         <!-- 自定义文本 -->
                         <el-form-item :label="yonghuUser.customTextName" v-if="yonghuUser.customTextActive == 1" :prop="'domains.' + index + '.customText'" :rules="user.timeType.customTextStatus == 1 ? { required: true, message: '请填写' + yonghuUser.customTextName, trigger: ['change','blur'] } : null">
-                            <el-input :disabled="!canEdit" v-model="domain.customText" style="width:75%;margin-right:7%" type="textarea" :rows="1" maxlength="1000"></el-input>
+                            <el-input :disabled="!domain.canEdit" v-model="domain.customText" style="width:75%;margin-right:7%" type="textarea" :rows="1" maxlength="1000"></el-input>
                         </el-form-item>
                         <!--项目管理专业版模式下,项目下的近期执行的任务 -->
                         <el-form-item label="任务/里程碑" :prop="'domains.' + index + '.taskId'" v-if="user.company.packageProject==1" >
@@ -585,10 +585,10 @@
                     </p>
                     <el-divider v-if="workForm.domains.length>1" style="margin-bottom:10px;"></el-divider>
                 </div>
-                <el-link v-if="showAddMore"  :disabled="!canEdit" type="primary" :underline="false" @click="addDomain(reportTimeType.type)" style="margin-left:40px">添加更多</el-link>
+                <el-link v-if="showAddMore" type="primary" :underline="false" @click="addDomain(reportTimeType.type)" style="margin-left:40px">添加更多</el-link>
             </el-form>
             <span slot="footer" class="dialog-footer">
-                <!-- <el-button @click="cancelReport"  v-if="workForm.domains[0].id != null && workForm.domains[0].state == 0">撤回</el-button> -->
+                <el-button @click="cancel(workForm.domains,true)" v-if="canCancelInDialog" style="float:left;">撤回</el-button>
                 <el-button @click="deleteReport"  v-if="workForm.domains[0].id != null && canEdit">删除</el-button>
                 <el-button @click="dialogVisible = false">取消</el-button>
                 <el-button v-if="!isSubstitude" @click="submitReport(1)" :loading="submitingReport" :disabled="workForm.domains.length==0?true:(canEdit?false:true)">暂存</el-button>
@@ -729,12 +729,12 @@
                 <!-- 自定义数值 -->
                 <div class="zhoFel" v-if="user.timeType.customDataActive">
                     <p>{{user.timeType.customDataName}}</p>
-                    <el-input-number :id="'weekData_num'" :disabled="!canEdit" v-model="zhoBao.customData" style="width:200px;margin-right:155px;" @keyup.native="restrictNumber('weekData_num')" :max="user.timeType.customDataMaxStatus == 1 ? user.timeType.customDataMaxValue : 'infinity'"></el-input-number>
+                    <el-input-number :id="'weekData_num'" v-model="zhoBao.customData" style="width:200px;margin-right:155px;" @keyup.native="restrictNumber('weekData_num')" :max="user.timeType.customDataMaxStatus == 1 ? user.timeType.customDataMaxValue : 'infinity'"></el-input-number>
                 </div>
                 <!-- 自定义文本 -->
                 <div class="zhoFel" v-if="user.timeType.customTextActive == 1">
                     <p>{{user.timeType.customTextName}}</p>
-                    <el-input :disabled="!canEdit" v-model="zhoBao.customText" type="textarea" :rows="1" style="width:355px;" maxlength="1000" show-word-limit></el-input>
+                    <el-input v-model="zhoBao.customText" type="textarea" :rows="1" style="width:355px;" maxlength="1000" show-word-limit></el-input>
                 </div>
                 <div class="zhoFel" v-if="reportTimeType.type == 2">
                     <p>选择时间</p>
@@ -1551,7 +1551,9 @@
                 approvalProcessDialog: false,
                 approvalProcessData: [],
                 leaveTypeName: ['事假','病假','年假','产假','婚假','丧假','调休假','陪产假','其他',],
-                isWeekend: false
+                isWeekend: false,
+
+                canCancelInDialog: false
             };
         },
         watch: {
@@ -3767,6 +3769,7 @@
                         var list = res.data;
                         this.report = list;
                         
+                        this.canCancelInDialog = false
                         if(list.report.length != 0) {
                             var arr = [];
                             this.canEdit = false;
@@ -3807,10 +3810,14 @@
                                     overtimeHours: list.report[i].overtimeHours,
                                     customText: list.report[i].customText,
                                     basecostId: list.report[i].basecostId,
+                                    canEdit: list.report[i].state >= 2 ? true : false
                                 })
                                 if (list.report[i].state >= 2) {
                                     this.canEdit = true;
                                 }
+                                if (list.report[i].state == 0){
+                                    this.canCancelInDialog = true
+                                }
                             }
                             this.workForm = {
                                 createDate: this.workForm.createDate,
@@ -3832,6 +3839,7 @@
                                     timeType:0,
                                     multiWorktime: this.reportTimeType.multiWorktime,
                                     worktimeList:[{}],
+                                    canEdit: true
                                 }],
                                 userId:null,
                                 userNames:null,
@@ -3921,6 +3929,7 @@
                                     timeType:0,
                                     multiWorktime: this.reportTimeType.multiWorktime,
                                     worktimeList:[{}],
+                                    canEdit: true
                                 }],
                             }
                             if(this.user.timeType.type == 1) {
@@ -4757,6 +4766,7 @@
                         state:2,//2-表示待提交
                         multiWorktime: this.reportTimeType.multiWorktime,
                         worktimeList:[{}],
+                        canEdit: true
                         // degreeId: '',
                 };
                 if(this.isWeekend){
@@ -4770,7 +4780,7 @@
                     addItem.basecostId = this.timeBasecostList[0].id;
                 }
                 this.workForm.domains.push(addItem);
-                
+                this.canEdit = true
                 if (this.reportTimeType.type == 0) {
                     //全天上下午模式下,检测时间段数量,达到2个,不能再加了
                     var length = this.workForm.domains.length;
@@ -4786,6 +4796,13 @@
             // 移除模块
             delDomain(i) {
                 this.workForm.domains.splice(i,1)
+                let iscan = false
+                for(let i in this.workForm.domains){
+                    if(this.workForm.domains[i].canEdit){
+                        iscan = true
+                    }
+                }
+                this.canEdit = iscan
                 //检测当前剩下的一个,时间类型是否是全天
                 if (this.reportTimeType.type == 0) {
                     if (this.workForm.domains[0].timeType == 0) {
@@ -5276,13 +5293,16 @@
             },
 
             //撤回日报
-            cancel(item) {
+            cancel(item,e) {
+                console.log('can can need',item);
                 this.logining = true;
                 
                 var ids = '';
-                var data = item.data;
+                var data = e ? item : item.data;
                 data.forEach(element => {
-                    ids +=(element.id+',');
+                    if(element.id){
+                        ids +=(element.id+',');
+                    }
                 });
                 this.http.post(this.port.report.cancelReport, {userId: this.user.id, reportIds: ids},
                 res => {
@@ -5293,6 +5313,7 @@
                             type: "success"
                         });
                         this.getReportList();
+                        if(e){this.getReport()}
                         this.getDepartment();
                     } else {
                         this.$message({