Ver código fonte

2022.6.29 17:35

ggooalice 2 anos atrás
pai
commit
06adc3bd46

+ 14 - 7
fhKeeper/formulahousekeeper/timesheet/src/permissions.js

@@ -45,12 +45,15 @@ const StringUtil = {
         reportBalance : false, // 项目收支平衡表 // 
         reportProfits : false, // 客户项目利润表 // 
         reportPhase : false, // 项目阶段工时表 // 
-        reportOvertime : false, // 加班情况统计表 //
+        reportAllOvertime : false, // 全公司加班情况 //
+        reportOvertime : false, // 负责部门加班情况 //
         reportCost: false, // 查看加班成本 //
         reportCostWarning: false, // 工时成本预警表 //
         reportPhaseCost: false, // 查看阶段成本 //
-        reportTimeDivide: false, // 人员工时分配表 //
-        reportTimely: false, // 查看人员填报及时率 //
+        reportAllTimeDivide: false, // 全公司工时分配 //
+        reportTimeDivide: false, // 负责部门工时分配 //
+        reportAllTimely: false, // 全公司填报及时率 //
+        reportTimely: false, // 负责部门填报及时率 //
         reportAuditRate: false, // 查看日报待审核统计 // 
 
         // 请假模块
@@ -84,6 +87,7 @@ const StringUtil = {
         importAudit: false, // 查看导审记录 //
         
     }
+    console.log(arr);
     for(var i in arr) {
         arr[i] == '导入工时' ? obj.importReport = true : ''
         arr[i] == '查看导审记录' ? obj.importAudit = true : ''
@@ -117,7 +121,8 @@ const StringUtil = {
         arr[i] == '项目收支平衡表' ? obj.reportBalance = true : ''
         arr[i] == '客户项目利润表' ? obj.reportProfits = true : ''
         arr[i] == '项目阶段工时表' ? obj.reportPhase = true : ''
-        arr[i] == '加班情况统计表' ? obj.reportOvertime = true : ''
+        arr[i] == '全公司加班情况' ? obj.reportAllOvertime = true : ''
+        arr[i] == '负责部门加班情况' ? obj.reportOvertime = true : ''
         arr[i] == '请假填报' ? obj.leaveFil = true : ''
         arr[i] == '请假审核' ? obj.leaveAudit = true : ''
         arr[i] == '查看全部请假单' ? obj.leaveAll = true : ''
@@ -139,10 +144,12 @@ const StringUtil = {
         arr[i] == '下拨成本预算' ? obj.projectAllocate = true : ''
         arr[i] == '工时成本预警表' ? obj.reportCostWarning = true : ''
         arr[i] == '查看阶段成本' ? obj.reportPhaseCost = true : ''
-        arr[i] == '查看人员工时分配' ? obj.reportTimeDivide = true : ''
+        arr[i] == '全公司工时分配' ? obj.reportAllTimeDivide = true : ''
+        arr[i] == '负责部门工时分配' ? obj.reportTimeDivide = true : ''
         arr[i] == '自定义配置' ? obj.structureCustomConfig = true : ''
-        arr[i] == '查看人员填报及时率' ? obj.reportTimely = true : ''
-        arr[i] == '查看日报待审核统计' ? obj.reportAuditRate = true : ''
+        arr[i] == '全公司填报及时率' ? obj.reportAllTimely = true : ''
+        arr[i] == '负责部门填报及时率' ? obj.reportTimely = true : ''
+        arr[i] == '日报待审核统计' ? obj.reportAuditRate = true : ''
         arr[i] == '查看工时统计' ? obj.countHours = true : ''
         arr[i] == '查看成本统计' ? obj.countCost = true : ''
     }

+ 8 - 11
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -20,14 +20,14 @@
                 <el-menu-item index="1-1" ><p @click="ssl(0)">项目报表</p></el-menu-item>
                 <el-menu-item index="1-2" v-if="permissions.reportTask"><p @click="ssl(1)">项目任务报表</p></el-menu-item>
                 <el-menu-item index="1-3" v-if="permissions.reportCostOf"><p @click="ssl(2)">项目成本报表</p></el-menu-item>
-                <el-menu-item index="1-9" v-if="permissions.reportTimeDivide"><p @click="ssl(8)">人员工时分配表</p></el-menu-item>
+                <el-menu-item index="1-9" v-if="permissions.reportAllTimeDivide || permissions.reportTimeDivide"><p @click="ssl(8)">人员工时分配表</p></el-menu-item>
                 <el-menu-item index="1-4" v-if="permissions.reportCostWarning"><p @click="ssl(7)">工时成本预警表</p></el-menu-item>
                 <el-menu-item index="1-5" v-if="permissions.reportBalance"><p @click="ssl(3)">项目收支平衡表</p></el-menu-item>
                 <el-menu-item index="1-6" v-if="user.company.packageCustomer == 1 && permissions.reportProfits"><p @click="ssl(4)">客户项目利润表</p></el-menu-item>
                 <el-menu-item index="1-7" v-if="permissions.reportPhase"><p @click="ssl(5)">项目阶段工时表</p></el-menu-item>
-                <el-menu-item index="1-8" v-if="permissions.reportOvertime"><p @click="ssl(6)">加班情况统计表</p></el-menu-item>
+                <el-menu-item index="1-8" v-if="permissions.reportAllOvertime || permissions.reportOvertime"><p @click="ssl(6)">加班情况统计表</p></el-menu-item>
 
-                <el-menu-item index="1-10" v-if="permissions.reportTimely"><p @click="ssl(9)">员工填报及时率</p></el-menu-item>
+                <el-menu-item index="1-10" v-if="permissions.reportAllTimely || permissions.reportTimely"><p @click="ssl(9)">员工填报及时率</p></el-menu-item>
                 <el-menu-item index="1-11" v-if="permissions.reportAuditRate"><p @click="ssl(10)">日报待审核统计</p></el-menu-item>
               </el-submenu>
             </el-menu>
@@ -71,7 +71,7 @@
           <el-option label="查看部门审核人" :value="0"></el-option>
         </el-select> -->
         <!-- 项目筛选 -->
-        <el-select v-if="(ins != 4 && ins != 8 && ins != 9 && ins != 10) || ins == 10" v-model="proJuctId" placeholder="请选择项目" clearable filterable size="small" @change="selcts()" style="margin-left:10px">
+        <el-select v-if="ins != 4 && ins != 8 && ins != 9 && ins != 10" v-model="proJuctId" placeholder="请选择项目" clearable filterable size="small" @change="selcts()" style="margin-left:10px">
           <el-option v-for="(item) in proListOvertime" :key="item.id" :label="item.projectName + (item.projectCode ? item.projectCode : '')" :value="item.id">
             <span style="float: left;color: #8492a6;">{{ item.projectCode }}</span>
             <span style="float: right;font-size: 13px;margin-left: 20px">{{ item.projectName }}</span>
@@ -79,7 +79,7 @@
         </el-select>
           
           <!-- 部门筛选 -->
-          <el-cascader v-if="ins == 9 || ins == 8 || ins == 6" v-model="departmentIdArray" :options="departmentList" placeholder="请选择部门"
+          <el-cascader v-if="(ins == 9 && permissions.reportAllTimely) || (ins == 8 && permissions.reportAllTimeDivide) || (ins == 6 && permissions.reportAllOvertime) || ins == 10" v-model="departmentIdArray" :options="departmentList" placeholder="请选择部门"
             :props="{ checkStrictly: false,expandTrigger: 'hover' }" :show-all-levels="false" clearable
             @change="selcts(9)" size="small" style="margin-left:10px"
           ></el-cascader>
@@ -439,7 +439,6 @@
             <!-- 日报待审核统计 -->
             <el-table v-if="ins == 10" key="10" border :data="auditRateList" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
                 <el-table-column prop="userName" label="审核人" min-width="200" align="center"></el-table-column>
-                <el-table-column :prop="departmentOrProject == 0 ? 'departmentName' : 'projectName'" :label="departmentOrProject == 0 ? '所属部门' : '负责项目'" min-width="200" align="center"></el-table-column>
                 <el-table-column prop="num" label="待审核条数" min-width="200" align="center"></el-table-column>
             </el-table>
             
@@ -1059,9 +1058,7 @@ export default {
         endDate: this.rangeDatas[1],
       }
       // console.log(this.userId == false)
-      if(this.userId == '' || this.userId == null) {
-        
-      } else {
+      if(this.userId) {
         obj.userId = this.userId
       }
       if(this.departmentIdArray.length != 0){
@@ -1291,8 +1288,8 @@ export default {
       if(this.userId){
         parameter.userId = this.userId
       }
-      if(this.proJuctId){
-        parameter.projectId = this.proJuctId
+      if(this.departmentIdArray.length){
+        parameter.departmentId = this.departmentIdArray[this.departmentIdArray.length - 1]
       }
       this.listLoading = true
       this.http.post('/project/getWaitingReviewList',parameter,

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/project/cost.vue

@@ -887,7 +887,7 @@
                                     formatter: function (params,ticket,callback) {
                                         // var res = params[0].name + "<br/>工作成本"+" : " + params[0].data.money 
                                         // + "元 <br/>工作时长"+" : " + params[0].data.cost + "小时";
-                                        // _this.params = params;
+                                        _this.params = params;
                                         var res = params[0].name + "<br/>" + 
                                         ((_this.permissions.countCost) ? "工作成本"+" : " + params[0].data.money 
                                         + "元 <br/>" : '') + 

+ 4 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -1038,6 +1038,7 @@ a {
                             message: '添加成功',
                             type: 'success'
                         })
+                        this.getList()
                     }else {
                         this.$message({
                             message: res.msg,
@@ -1072,7 +1073,9 @@ a {
                 let proArr = []
                 for(let i=0;i<this.checkedProjectArr.length;i++){
                     proArr.push(this.checkedProjectArr[i].id)
+                    // proArr += this.checkedProjectArr[i].id + ','
                 }
+                // proArr = proArr.substring(0,proArr.length - 1)
                 this.http.post('/project/batchSetParticipation',{
                     userIds: JSON.stringify(this.addGroupPersonData.person),
                     projectIdArray: JSON.stringify(proArr)
@@ -1085,6 +1088,7 @@ a {
                             message: '添加成功',
                             type: 'success'
                         })
+                        this.getList()
                     }else {
                         this.$message({
                             message: res.msg,

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/settings/timetype.vue

@@ -217,7 +217,7 @@
                     <span style="color:#666;margin-left:10px;">(说明:系统管理员为员工代填日报时不受补填时间的限制)</span>
                     <span class="lockworktime"><el-checkbox v-model="timeType.fillAhead" label="可提前填报" /></span>
                 </el-form-item>
-                <el-form-item label="员工填报及时日" prop="timeliness">
+                <el-form-item label="员工填报及时日" prop="timeliness" v-if="user.company.packageProject">
                     <el-select v-model="timeType.timeliness">
                         <el-option label="当天" :value="0"></el-option>
                         <el-option label="第二天" :value="1"></el-option>

+ 30 - 7
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -322,11 +322,11 @@
                     
                     <el-form-item :label="user.companyId==781?'工作任务':'投入项目'" :prop="'domains.' + index + '.projectId'"
                         :rules="{ required: true, message: user.companyId==781?'请选择工作任务':'请选择投入项目', trigger: ['change','blur'] }">
-                        <el-select v-model="domain.projectId" :placeholder="user.companyId==781?'请选择工作任务':'请选择项目'" style="width:200px;" clearable="true"  filterable="true"
+                        <el-select v-model="domain.projectItem" :placeholder="user.companyId==781?'请选择工作任务':'请选择项目'" style="width:200px;" clearable="true"  filterable="true" value-key="id"
                         @change="selectProject(domain, index)"
                         :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)">
                             <!-- <el-option v-for="item in projectList" :disabled="item.status>=2" :key="item.id" :label="item.projectName" :value="item.id"></el-option> -->
-                            <el-option v-for="item in fillProjectList" :disabled="item.status>=2" :key="item.id" :label="item.projectName + '\u3000' + item.projectCode" :value="item.id">
+                            <el-option v-for="item in fillProjectList" :disabled="item.status>=2" :key="item.id" :label="item.projectName + '\u3000' + item.projectCode" :value="item">
                                 <span style="float: left; color: #8492a6; font-size: 13px;">{{ item.projectCode }}</span>
                                 <span style="float: right;margin-left: 20px">{{ item.projectName }}</span>
                             </el-option>
@@ -379,7 +379,7 @@
                         </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 != [] ? { required: true, message: '请选择' + yonghuUser.customDegreeName, trigger: ['change','blur'] } : null" :prop="'domains.' + index + '.degreeId'">
+                    <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-option v-for="item in domain.wuduList" :key="item.value" :label="item.name" :value="item.id">
                             </el-option>
@@ -430,10 +430,10 @@
                     <div v-if="reportTimeType.multiWorktime==1">
                         <el-form-item label="投入项目" :prop="'domains.' + index + '.projectId'"
                             :rules="{ required: true, message: '请选择投入项目', trigger: ['change','blur'] }">
-                            <el-select v-model="domain.projectId" placeholder="请选择项目" style="width:200px;" clearable="true"  filterable="true"
+                            <el-select v-model="domain.projectItem" placeholder="请选择项目" style="width:200px;" clearable="true"  filterable="true" value-key="id"
                             @change="selectProject(domain, index)"
                             :disabled="workForm.domains.length==0?true:(workForm.domains[index].state>=2?false:true)">
-                                <el-option v-for="item in fillProjectList" :disabled="item.status>=2" :key="item.id" :label="item.projectName + '\u3000' + item.projectCode" :value="item.id">
+                                <el-option v-for="item in fillProjectList" :disabled="item.status>=2" :key="item.id" :label="item.projectName + '\u3000' + item.projectCode" :value="item">
                                     <span style="float: left; color: #8492a6; font-size: 13px;">{{ item.projectCode }}</span>
                                     <span style="float: right;margin-left: 20px">{{ item.projectName }}</span>
                                 </el-option>
@@ -2606,8 +2606,14 @@
             },
             //项目选中了, 加载子项目
             selectProject(domain, index) {
-                if(domain.projectId == ""){
+                console.log(domain.projectItem);
+                
+                if(!domain.projectItem){
+                    
                     return
+                }else {
+                    domain.projectId = domain.projectItem.id
+                    domain.projectName = domain.projectItem.projectName
                 }
                 this.http.post('/sub-project/list',{
                     projectId: domain.projectId
@@ -2740,6 +2746,17 @@
             },
 
             getGroupStages(domain, index) {
+                console.log(domain);
+                if(!domain.groupId){
+                    domain.projectAuditorId = ''
+                    domain.stages = []
+                    let curProject = this.projectList.filter(p=>p.id == domain.projectId)[0];
+                    if(curProject.taskGpIncharge == 1){
+                        domain.auditUserList = []
+                    }
+                    this.$forceUpdate();
+                    return
+                }
                 this.http.post("/stages/getProjectStagesByGroup", {groupId: domain.groupId},
                     res => {
                         if (res.code == "ok") {
@@ -4923,7 +4940,13 @@
                                         message: "您在["+this.workForm.domains[i].projectName+"]项目上尚无参与的任务分组",
                                         type: "error"
                                     });
-                                } 
+                                } else if (this.workForm.domains[i].taskGroups.length > 0 && !this.workForm.domains[i].groupId) {
+                                    console.log(this.workForm.domains[i]);
+                                    this.$message({
+                                        message: "请选择["+this.workForm.domains[i].projectName+"]项目的任务分组",
+                                        type: "error"
+                                    });
+                                }
                                 
                                 return;
                             }