Min 1 년 전
부모
커밋
cebe5bec62

+ 20 - 6
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -12998,8 +12998,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         resultList.forEach(r->{
             List<Participation> targetParticipationList = participationList.stream().filter(p -> p.getProjectId().equals(Integer.valueOf(String.valueOf(r.get("projectId"))))).collect(Collectors.toList());
             List<String> targetUserIds = targetParticipationList.stream().map(m -> String.valueOf(m.getUserId())).collect(Collectors.toList());
-            String targetUserString = userList.stream().filter(u -> targetUserIds.contains(u.getId()) && u.getRoleId().equals(30770)).map(User::getName).collect(Collectors.joining(","));
-            r.put("teamLeader",targetUserString);
+            List<User> users = userList.stream().filter(u -> targetUserIds.contains(u.getId()) && u.getRoleId().equals(30770)).collect(Collectors.toList());
+            r.put("teamLeader",users);
         });
         Map<String,Object> resultMap=new HashMap<>();
         resultMap.put("record",resultList);
@@ -13043,11 +13043,25 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             item.add(String.valueOf(map.get("realHour")));
             item.add(String.valueOf(map.get("realCost")));
             item.add(String.valueOf(map.get("residueHour")));
-            if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-                item.add("$userName="+String.valueOf(map.get("teamLeader"))+"$");
-            }else {
-                item.add(String.valueOf(map.get("teamLeader")));
+            StringBuilder sb1=new StringBuilder();
+            List<User> teamLeaders = (List<User>) map.get("teamLeader");
+            for (int i = 0; i < teamLeaders.size(); i++) {
+                if(i==teamLeaders.size()-1){
+                    if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                        sb1.append("$userName="+String.valueOf(teamLeaders.get(i).getName())+"$");
+                    }else {
+                        sb1.append(String.valueOf(teamLeaders.get(i).getName()));
+                    }
+
+                }else {
+                    if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                        sb1.append("$userName="+String.valueOf(teamLeaders.get(i).getName())+"$"+",");
+                    }else {
+                        sb1.append(String.valueOf(teamLeaders.get(i).getName())+",");
+                    }
+                }
             }
+            item.add(sb1.toString());
             List<Map<String, Object>> userProgress = (List<Map<String, Object>>) map.get("userProgress");
             StringBuilder sb=new StringBuilder();
             for (int i = 0; i < userProgress.size(); i++) {

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/permissions.js

@@ -260,7 +260,7 @@ const StringUtil = {
         arr[i] == '全部员工项目进度表' || arr[i] == '负责部门员工项目进度表' ? obj.reportStaffProject = true : ''
         arr[i] == '全部分组耗用进度表' || arr[i] == '负责部门分组耗用进度表' ? obj.reportProjectConsumptionFirst = true : ''
         arr[i] == '全部项目耗用进度表' || arr[i] == '负责部门项目耗用进度表' ? obj.reportProjectConsumptionTwo = true : ''
-        arr[i] == '全部员工任务完成表' || arr[i] == '负责部门员工任务完成表' ? obj.reportStaffTaskAccomplished = true : ''
+        arr[i] == '全部员工任务进度表' || arr[i] == '负责部门员工任务进度表' ? obj.reportStaffTaskAccomplished = true : ''
     }
     return obj
   }

+ 27 - 7
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -46,7 +46,7 @@
                   <el-menu-item index="1-24" v-if="permissions.reportStaffProject" @click="ssl(23)"><p>员工项目进度表</p></el-menu-item>
                   <el-menu-item index="1-25" v-if="permissions.reportProjectConsumptionFirst" @click="ssl(24)"><p>分组耗用进度表</p></el-menu-item>
                   <el-menu-item index="1-26" v-if="permissions.reportProjectConsumptionTwo" @click="ssl(25)"><p>项目耗用进度表</p></el-menu-item>
-                  <el-menu-item index="1-27" v-if="permissions.reportStaffTaskAccomplished" @click="ssl(26)"><p>员工任务完成表</p></el-menu-item>
+                  <el-menu-item index="1-27" v-if="permissions.reportStaffTaskAccomplished" @click="ssl(26)"><p>员工任务进度表</p></el-menu-item>
                   <el-menu-item index="1-28" v-if="permissions.reportProjectEstimated" @click="ssl(27)"><p>项目预估工时表</p></el-menu-item>
                 </el-submenu>
               </el-menu>
@@ -1134,10 +1134,27 @@
               <el-table-column align="center" prop="projectName" label="项目名称" min-width="220"></el-table-column>
               <el-table-column align="center" prop="categoryName" label="项目分类" min-width="150"></el-table-column>
               <el-table-column align="center" prop="projectCode" label="项目编号" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="planStartDate" label="开始时间" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="planEndDate" label="截止时间" min-width="150"></el-table-column>
               <el-table-column align="center" prop="planHour" label="分配工时(h)" width="100"></el-table-column>
               <el-table-column align="center" prop="realHour" label="已消耗工时(h)" width="120"></el-table-column>
               <el-table-column align="center" prop="realCost" label="已消耗工时成本(¥)" width="150"></el-table-column>
               <el-table-column align="center" prop="residueHour" label="剩余工时(h)" width="100"></el-table-column>
+              <el-table-column align="center"  label="负责组长" width="100">
+                <template slot-scope="scope">
+                  <div class="participatingEmployee">
+                    <div v-for="(item,index) in scope.row.teamLeader" :key="index">
+                      <span v-if="user.userNameNeedTranslate == '1'">
+                        <ww-open-data type='userName' :openid='item.name'></ww-open-data> 
+                      </span>
+                      <span v-if="user.userNameNeedTranslate != '1'">
+                        {{item.name}}
+                      </span>
+                      <span v-if="index < scope.row.teamLeader.length - 1">,</span>
+                    </div>
+                  </div>
+                </template>
+              </el-table-column>
               <el-table-column align="center" label="参与员工" min-width="150">
                 <template slot-scope="scope">
                   <div class="participatingEmployee">
@@ -1157,7 +1174,7 @@
               </el-table-column>
             </el-table>
 
-            <!-- 员工任务完成表 -->
+            <!-- 员工任务进度表 -->
             <el-table  v-if="ins == 26" :key="26" border :data="isbeCustomReport.taskCompletionSheet" highlight-current-row v-loading="listLoading" :height="(+tableHeight) - 1" style="width: 100%;" :span-method="objectSpanMethod">
               <el-table-column align="center" prop="departmentName" label="部门" min-width="150">
                 <template slot-scope="scope">
@@ -1190,6 +1207,9 @@
               <el-table-column align="center" prop="taskName" label="项目任务" min-width="150"></el-table-column>
               <el-table-column align="center" prop="planHour" label="计划工时(h)" min-width="150"></el-table-column>
               <el-table-column align="center" prop="consumeTime" label="消耗工时(h)" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="residue" label="剩余工时(h)" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="planStartDate" label="项目开始时间" min-width="150"></el-table-column>
+              <el-table-column align="center" prop="planEndDate" label="项目截止时间" min-width="150"></el-table-column>
             </el-table>
 
              <!-- 项目预估工时表 -->
@@ -1524,14 +1544,14 @@ export default {
       this.$t('statisticsofovertimework'),this.$t('timecostearlywarningtable'),this.$t('personneltimeallocationtable'),
       this.$t('statisticsofstafffillingintimerate'),this.$t('dailyreporttobereviewedstatistics'),this.$t('statisticsofpersonnelhours'),this.$t('taskgrouptimesheet'),this.$t('projectcostbaselinetable'),
       this.$t('ren-yuan-yue-du-gong-shi-biao'), this.$t('bumenchanyuqingkuang'), this.$t('ge-fen-zu-yu-jie-duan-gong-shi-biao'), '子项目工时成本表', '任务重启表', 'FTE报表', '有效工时率表', '项目分类工时占比表', '分类工时明细表',
-      '员工项目进度表', '分组耗用进度表', '项目耗用进度表', '员工任务完成表', '项目预估工时表'],
+      '员工项目进度表', '分组耗用进度表', '项目耗用进度表', '员工任务进度表', '项目预估工时表'],
 
       shuzArr: [this.$t('projectreport'),this.$t('projectTaskReport'),this.$t('projectcoststatement'),
       this.$t('projectbalancesheet'),this.$t('customerprojectincomestatement'),this.$t('projectphasetimesheet'),
       this.$t('statisticsofovertimework'),this.$t('timecostearlywarningtable'),this.$t('personneltimeallocationtable'),
       this.$t('employeereporttimelinessrate'),this.$t('dailyreporttobereviewedstatistics'),this.$t('statisticsofpersonnelhours'),this.$t('taskgrouptimesheet'),this.$t('projectcostbaselinetable'),
       this.$t('ren-yuan-yue-du-gong-shi-biao'), this.$t('bumenchanyuqingkuang'), this.$t('ge-fen-zu-yu-jie-duan-gong-shi-biao'), '子项目工时成本表', '任务重启表', 'FTE报表','有效工时率表', '项目分类工时占比表', '分类工时明细表',
-      '员工项目进度表', '分组耗用进度表', '项目耗用进度表', '员工任务完成表', '项目预估工时表'],
+      '员工项目进度表', '分组耗用进度表', '项目耗用进度表', '员工任务进度表', '项目预估工时表'],
 
       ins: 10000,
       user: JSON.parse(sessionStorage.user),
@@ -1659,7 +1679,7 @@ export default {
         projectSchedule: [], // 员工项目进度表
         consumptionSchedule: [], // 分组耗用进度表
         consumptionScheduleTwo: [], // 项目耗用进度表
-        taskCompletionSheet: [], // 员工任务完成
+        taskCompletionSheet: [], // 员工任务进度
       },
       projectEstimatedWorkData: [], // 项目预估工时表
     };
@@ -2274,7 +2294,7 @@ export default {
           this.userId ? sl.userId = this.userId : ''
           this.projectSortIdTwo ? sl.categoryId = this.projectSortIdTwo : ''
         } else if(this.ins == 26) {
-          fName = '员工任务完成表' + '.xlsx'
+          fName = '员工任务进度表' + '.xlsx'
           url = "/project/exportUserTaskProcessList"
           let dept = this.departmentIdArray[this.departmentIdArray.length - 1]
           this.proJuctId ? sl.projectId = this.proJuctId : ''
@@ -3787,7 +3807,7 @@ export default {
       this.total = data.total
       this.listLoading = false
     },
-    // 员工任务完成
+    // 员工任务进度
     async getTaskCompletionSheet() {
       let parameter = {
         pageIndex: this.page,