Min 1 year ago
parent
commit
0e385c5c05

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -262,8 +262,8 @@ public class ProjectController {
      * 导出查询者所在公司每个项目的工时成本
      */
     @RequestMapping("/exportTimeCost")
-    public HttpRespMsg exportTimeCost(@RequestParam(required = false, defaultValue = "0") Integer withMainProject, String exportContent,String startDate, String endDate, Integer projectId, String userIds, Boolean projectSum,Integer type,Integer deptId,@RequestParam(defaultValue = "1") Integer stateKey, @RequestParam(required = false, defaultValue = "0") Integer withPercent) {
-        return projectService.exportTimeCost(withMainProject, exportContent,startDate, endDate, projectId, userIds, projectSum,type,deptId,stateKey, withPercent, request);
+    public HttpRespMsg exportTimeCost(@RequestParam(required = false, defaultValue = "0") Integer withMainProject, String exportContent,String startDate, String endDate, Integer projectId, String userIds, Boolean projectSum,Integer type,Integer deptId,@RequestParam(defaultValue = "1") Integer stateKey, @RequestParam(required = false, defaultValue = "0") Integer withPercent,Integer projectCategoryId) {
+        return projectService.exportTimeCost(withMainProject, exportContent,startDate, endDate, projectId, userIds, projectSum,type,deptId,stateKey, withPercent,projectCategoryId, request);
     }
 
     /**

+ 10 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -2394,5 +2394,15 @@ public class ReportController {
         }
         return checkDate;
     }
+
+    @RequestMapping("getUserWorkTimeByCategory")
+    public HttpRespMsg getUserWorkTimeByCategory(@RequestParam(required = true) Integer categoryId,Integer deptId,String userId,String startDate,String endDate,Integer pageIndex,Integer pageSize){
+        return reportService.getUserWorkTimeByCategory(categoryId,deptId,userId,startDate,endDate,pageIndex,pageSize);
+    }
+
+    @RequestMapping("exportUserWorkTimeByCategory")
+    public HttpRespMsg exportUserWorkTimeByCategory(@RequestParam(required = true) Integer categoryId,Integer deptId,String userId,String startDate,String endDate){
+        return reportService.exportUserWorkTimeByCategory(categoryId,deptId,userId,startDate,endDate);
+    }
 }
 

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java

@@ -31,7 +31,7 @@ public interface ProjectMapper extends BaseMapper<Project> {
     List<Map<String, Object>> getTimeCost(@Param("companyId") Integer companyId, @Param("startDate") String startDate, @Param("endDate") String endDate,
                                           @Param("projectId") Integer projectId, @Param("userIdList") List<String> userIdList,
                                           @Param("deptIds")List<Integer> deptIds,@Param("filterDeptIds")List<Integer> filterDeptIds, @Param("deptRelatedProjectIds") List<Integer> deptRelatedProjectIds,
-                                          @Param("projectIds") List<Integer> projectIds, @Param("inchargeUserIds") List<String> inchargeUserIds);
+                                          @Param("projectIds") List<Integer> projectIds, @Param("inchargeUserIds") List<String> inchargeUserIds,@Param("categoryId") Integer categoryId);
 
     List<Map<String, Object>> getCustomDataSum(@Param("companyId") Integer companyId, @Param("startDate") String startDate, @Param("endDate") String endDate,
                                           @Param("projectId") Integer projectId, @Param("userId") String userId);

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportMapper.java

@@ -197,4 +197,7 @@ public interface ReportMapper extends BaseMapper<Report> {
     List<Map<String, Object>> getProjectMainTimeCost(Integer companyId,String requestProjectMainCode);
 
     List<Map<String, Object>> getTaskGroupPlanTime(@Param("list") List<Integer> projectIds);
+
+    List<Map<String, Object>> getUserWorkTimeByCategory(Integer categoryId, String userId,Integer companyId,@Param("list")List<Integer> deptIds, Integer deptId, String startDate, String endDate);
+
 }

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java

@@ -70,7 +70,7 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg getAllMembCost(String startDate, String endDate, Integer projectId, HttpServletRequest request);
 
-    HttpRespMsg exportTimeCost(Integer withMainProject, String exportContent,String startDate, String endDate, Integer projectId,String userIds, Boolean projectSum,Integer type,Integer deptId,Integer stateKey, Integer withPercent, HttpServletRequest request);
+    HttpRespMsg exportTimeCost(Integer withMainProject, String exportContent,String startDate, String endDate, Integer projectId,String userIds, Boolean projectSum,Integer type,Integer deptId,Integer stateKey, Integer withPercent,Integer projectCategoryId, HttpServletRequest request);
 
     HttpRespMsg updateProgress(Integer id, Integer progress, HttpServletRequest request);
 

+ 4 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java

@@ -139,4 +139,8 @@ public interface ReportService extends IService<Report> {
     HttpRespMsg geProjectTimeCostByThird(String json);
 
     HttpRespMsg getUserTimeCostByThird(String json);
+
+    HttpRespMsg getUserWorkTimeByCategory(Integer categoryId, Integer deptId, String userId, String startDate, String endDate, Integer pageIndex, Integer pageSize);
+
+    HttpRespMsg exportUserWorkTimeByCategory(Integer categoryId, Integer deptId, String userId, String startDate, String endDate);
 }

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

@@ -1436,7 +1436,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 String[] split = userIds.split(",");
                 userIdList = Arrays.asList(split);
             }
-            List<Map<String, Object>> list = projectMapper.getTimeCost(companyId, startDate, endDate, projectId, userIdList,deptIds,null, deptRelatedProjectIds, projectIds, inchargeUserIds);
+            List<Map<String, Object>> list = projectMapper.getTimeCost(companyId, startDate, endDate, projectId, userIdList,deptIds,null, deptRelatedProjectIds, projectIds, inchargeUserIds,null);
             BigDecimal totalMoneyCost = BigDecimal.valueOf(0);
             for (Map<String, Object> map : list) {
                 if (!map.containsKey("cost")) {
@@ -1619,7 +1619,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     //导出查询者所在公司每个项目的工时成本,包括项目人员明细统计
     @Override
     public HttpRespMsg exportTimeCost(Integer withMainProject, String exportContent,String startDate, String endDate,Integer projectId, String userIds,
-                                        Boolean projectSum,Integer type,Integer deptId, Integer stateKey, Integer withPercent, HttpServletRequest request) {
+                                        Boolean projectSum,Integer type,Integer deptId, Integer stateKey, Integer withPercent,Integer projectCategoryId, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
             User targetUser = userMapper.selectById(request.getHeader("Token"));
@@ -1698,7 +1698,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 String[] split = userIds.split(",");
                 userIdList = Arrays.asList(split);
             }
-            List<Map<String, Object>> list = projectMapper.getTimeCost(companyId, startDate, endDate, projectId, userIdList,deptIds,filterDeptIds,deptRelatedProjectIds, manProjectIds, inchargeUserIds);
+            List<Map<String, Object>> list = projectMapper.getTimeCost(companyId, startDate, endDate, projectId, userIdList,deptIds,filterDeptIds,deptRelatedProjectIds, manProjectIds, inchargeUserIds,projectCategoryId);
             BigDecimal totalMoneyCost = BigDecimal.valueOf(0);
             List<List<String>> allList=null ;
             List<String> sumRow = null;

+ 233 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -22,6 +22,7 @@ import org.apache.commons.io.FileUtils;
 import org.apache.poi.EncryptedDocumentException;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.ss.usermodel.*;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.*;
@@ -36,6 +37,7 @@ import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import javax.print.DocFlavor;
 import javax.servlet.http.HttpServletRequest;
 import java.io.*;
 import java.math.BigDecimal;
@@ -8013,4 +8015,235 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         httpRespMsg.setData(responseData);
         return httpRespMsg;
     }
+
+    @Override
+    public HttpRespMsg getUserWorkTimeByCategory(Integer categoryId, Integer deptId, String userId, String startDate, String endDate, Integer pageIndex, Integer pageSize) {
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("token"));
+        List<UserCustom> userCustomList = userCustomMapper.selectList(new LambdaQueryWrapper<UserCustom>().eq(UserCustom::getCompanyId, user.getCompanyId()));
+        DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        List<LocalDate> dates = getDays(LocalDate.parse(startDate, dtf), LocalDate.parse(endDate, dtf));
+        List<Map<String,Object>> headerStringList=new ArrayList<>();
+        List<Map<String,Object>> customStringList=new ArrayList<>();
+//        Map<String,Object> map1=new HashMap();
+//        Map<String,Object> map2=new HashMap();
+//        Map<String,Object> map3=new HashMap();
+//        Map<String,Object> map4=new HashMap();
+//        Map<String,Object> map5=new HashMap();
+//        map1.put("titleIndex","");
+//        map1.put("titleName","生产项目号");
+//        map2.put("titleIndex","");
+//        map2.put("titleName","姓名");
+//        map3.put("titleIndex","");
+//        map3.put("titleName","部门");
+//        headerStringList.add(map1);
+//        headerStringList.add(map2);
+//        headerStringList.add(map3);
+        for (int i = 0; i < userCustomList.size(); i++) {
+            Map<String,Object> map=new HashMap();
+            switch (i){
+                case 0: map.put("titleIndex","plate1");
+                    break;
+                case 1: map.put("titleIndex","plate2");
+                    break;
+                case 2: map.put("titleIndex","plate3");
+                    break;
+                case 3: map.put("titleIndex","plate4");
+                    break;
+                case 4: map.put("titleIndex","plate5");
+                    break;
+            }
+            map.put("titleName", userCustomList.get(i).getName());
+            customStringList.add(map);
+        }
+//        map4.put("titleIndex","allWorkingTime");
+//        map4.put("titleName","总工时");
+//        map5.put("titleIndex","targetWorkingTime");
+//        map5.put("titleName","生产工时");
+//        headerStringList.add(map4);
+//        headerStringList.add(map5);
+        for (LocalDate localDate : dates) {
+            Map<String,Object> map=new HashMap();
+            map.put("titleIndex",localDate.format(dtf));
+            map.put("titleName",localDate.format(dtf));
+            headerStringList.add(map);
+        }
+        List<Department> allDeptList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getCompanyId, user.getCompanyId()));
+        Integer size=null;
+        Integer start=null;
+        if(pageIndex!=null&&pageSize!=null){
+            size=pageSize;
+            start=(pageIndex-1)*size;
+        }
+        boolean viewAll = sysFunctionService.hasPriviledge(user.getRoleId(), "分类全部工时明细表");
+        boolean viewIncharge = sysFunctionService.hasPriviledge(user.getRoleId(), "分类负责部门工时明细表");
+        //判断是否有查看全部的权限
+        List<Map<String,Object>> resultList;
+        if(!viewAll){
+            //判断是否有查看负责部门的权限
+            if(!viewIncharge){
+                //只能查看与本人有关的数据
+                resultList=reportMapper.getUserWorkTimeByCategory(categoryId,user.getId(),user.getCompanyId(),null,deptId,startDate,endDate);
+            }else {
+                List<Department> departmentList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().select(Department::getDepartmentId).eq(Department::getManagerId, user.getId()));
+                List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", user.getId()));
+                List<Integer> deptIds=new ArrayList<>();
+                List<Integer> theCollect = departmentList.stream().map(dm -> dm.getDepartmentId()).distinct().collect(Collectors.toList());
+                theCollect.add(-1);
+                List<Integer> otherCollect = departmentOtherManagerList.stream().map(dom -> dom.getDepartmentId()).distinct().collect(Collectors.toList());
+                otherCollect.add(-1);
+                theCollect.addAll(otherCollect);
+                for (Integer integer : theCollect) {
+                    List<Integer> branchDepartment = getBranchDepartment(integer, allDeptList);
+                    deptIds.addAll(branchDepartment);
+                }
+                resultList=reportMapper.getUserWorkTimeByCategory(categoryId,userId,user.getCompanyId(),deptIds,deptId,startDate,endDate);
+            }
+        }else {
+            //查看全部
+            resultList=reportMapper.getUserWorkTimeByCategory(categoryId,userId,user.getCompanyId(),null,deptId,startDate,endDate);
+        }
+        List<String> userIdList = resultList.stream().map(m -> String.valueOf(m.get("userId"))).distinct().collect(Collectors.toList());
+        Map<String, List<Map<String, Object>>> listMap = resultList.stream().collect(Collectors.groupingBy(r -> String.valueOf(r.get("userId"))));
+        List<Map<String,Object>> lastList=new ArrayList<>();
+        for (String targetUserId : userIdList) {
+            Optional<Map<String, Object>> first = resultList.stream().filter(r -> String.valueOf(r.get("userId")).equals(targetUserId)).findFirst();
+            if(first.isPresent()){
+                Map<String, Object> map = first.get();
+                Map<String,Object> item=new HashMap<>();
+                item.put("userId",String.valueOf(map.get("userId")));
+                item.put("categoryName",String.valueOf(map.get("categoryName")));
+                item.put("deptName",String.valueOf(map.get("deptName")));
+                item.put("userName",String.valueOf(map.get("userName")));
+                item.put("deptId",String.valueOf(map.get("deptId")));
+                item.put("targetWorkingTime",String.valueOf(map.get("targetWorkingTime")));
+                item.put("allWorkingTime",String.valueOf(map.get("allWorkingTime")));
+                item.put("plate1",map.get("plate1")==null?"":String.valueOf(map.get("plate1")));
+                item.put("plate2",map.get("plate2")==null?"":String.valueOf(map.get("plate2")));
+                item.put("plate3",map.get("plate3")==null?"":String.valueOf(map.get("plate3")));
+                item.put("plate4",map.get("plate4")==null?"":String.valueOf(map.get("plate4")));
+                item.put("plate5",map.get("plate5")==null?"":String.valueOf(map.get("plate5")));
+                if(map.get("corpWxUserId")!=null){
+                    item.put("corpWxUserId",String.valueOf(map.get("corpWxUserId")));
+                }
+                if(map.get("corpWxDeptId")!=null){
+                    item.put("corpWxDeptId",String.valueOf(map.get("corpWxDeptId")));
+                }
+                List<Map<String, Object>> mapList = listMap.get(targetUserId);
+                item.put("dataList",mapList);
+                lastList.add(item);
+            }
+        }
+        if(start!=null&&size!=null){
+            if(lastList.size()<size){
+                size=lastList.size();
+            }
+            if(lastList.size()<start){
+                start=0;
+            }
+            lastList=lastList.subList(start,size);
+        }
+        Map<String,Object> resultMap=new HashMap<>();
+        resultMap.put("record",lastList);
+        resultMap.put("total",lastList.size());
+        resultMap.put("header",headerStringList);
+        resultMap.put("custom",customStringList);
+        httpRespMsg.setData(resultMap);
+        return httpRespMsg;
+    }
+
+    @Override
+    public HttpRespMsg exportUserWorkTimeByCategory(Integer categoryId, Integer deptId, String userId, String startDate, String endDate) {
+        HttpRespMsg msg = getUserWorkTimeByCategory(categoryId, deptId, userId, startDate, endDate, null, null);
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
+        DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        List<LocalDate> dates = getDays(LocalDate.parse(startDate, dtf), LocalDate.parse(endDate, dtf));
+        List<UserCustom> userCustomList = userCustomMapper.selectList(new LambdaQueryWrapper<UserCustom>().eq(UserCustom::getCompanyId, companyId));
+        Map<String,Object> data = (Map<String, Object>) msg.getData();
+        List<List<String>> dataList=new ArrayList<>();
+        List<String> titleList=new ArrayList<>();
+        titleList.add("生产项目号");
+        titleList.add("姓名");
+        titleList.add("部门");
+        List<Map<String,Object>> headerList= (List<Map<String, Object>>) data.get("header");
+        List<Map<String,Object>> customList= (List<Map<String, Object>>) data.get("custom");
+        for (Map<String, Object> custom : customList) {
+            titleList.add(String.valueOf(custom.get("titleName")));
+        }
+        titleList.add("总工时");
+        titleList.add("生产工时");
+        for (Map<String, Object> header : headerList) {
+            titleList.add(String.valueOf(header.get("titleName")));
+        }
+        dataList.add(titleList);
+        List<Map<String,Object>> records = (List<Map<String, Object>>) data.get("record");
+        for (Map<String, Object> record : records) {
+            List<String> item=new ArrayList<>();
+            item.add(String.valueOf(record.get("categoryName")));
+            if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                item.add("$userName="+String.valueOf(record.get("corpWxUserId"))+"$");
+                item.add("$departmentName="+String.valueOf(record.get("corpWxDeptId"))+"$");
+            }else {
+                item.add(String.valueOf(record.get("userName")));
+                item.add(String.valueOf(record.get("deptName")));
+            }
+            for (int i = 0; i < userCustomList.size(); i++) {
+                switch (i){
+                    case 0:item.add(record.get("plate1")==null?"":String.valueOf(record.get("plate1")));
+                        break;
+                    case 1:item.add(record.get("plate2")==null?"":String.valueOf(record.get("plate2")));
+                        break;
+                    case 2:item.add(record.get("plate3")==null?"":String.valueOf(record.get("plate3")));
+                        break;
+                    case 3:item.add(record.get("plate4")==null?"":String.valueOf(record.get("plate4")));
+                        break;
+                    case 4:item.add(record.get("plate5")==null?"":String.valueOf(record.get("plate5")));
+                        break;
+                }
+            }
+            item.add(String.valueOf(record.get("allWorkingTime")));
+            item.add(String.valueOf(record.get("targetWorkingTime")));
+            List<Map<String,Object>> details = (List<Map<String, Object>>) record.get("dataList");
+            for (LocalDate localDate : dates) {
+                String date = dtf.format(localDate);
+                Optional<Map<String, Object>> first = details.stream().filter(d -> String.valueOf(d.get("createDate")).equals(date)).findFirst();
+                if(first.isPresent()){
+                    item.add(String.valueOf(first.get().get("workingTime")));
+                }else {
+                    item.add("");
+                }
+            }
+            dataList.add(item);
+        }
+        String fileName = "分类工时明细表"+"_"+System.currentTimeMillis();
+        try {
+            return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo, fileName, dataList, path);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return msg;
+    }
+
+    private List<Integer> getBranchDepartment(Integer departmentId, List<Department> departmentList) {
+        List<Integer> list = new ArrayList<>();
+        list.add(departmentId);
+        //搜到子部门进行添加
+        for (Department department : departmentList) {
+            if (departmentId.equals(department.getSuperiorId())) {
+                list.addAll(getBranchDepartment(department.getDepartmentId(), departmentList));
+            }
+        }
+        return list;
+    }
+
+    private  List<LocalDate> getDays(LocalDate start, LocalDate end) {
+        List<LocalDate> result = new ArrayList();
+        while (start.isBefore(end)) {
+            result.add(start);
+            start=start.plusDays(1);
+        }
+        result.add(start);
+        return result;
+    }
 }

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -153,6 +153,9 @@
         <if test="projectId != null">
             AND a.id = #{projectId}
         </if>
+        <if test="categoryId != null">
+            AND a.category = #{categoryId}
+        </if>
         <if test="projectIds != null">
             and a.id in
             <foreach collection="projectIds" open="(" close=")" separator="," item="item">

+ 38 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -1082,4 +1082,42 @@
             </foreach>
         </where>
     </select>
+
+    <select id="getUserWorkTimeByCategory" resultType="java.util.Map">
+        select pc.id as categoryId, IFNULL(pc.name,'未分配') as categoryName,date_format(r.create_date,'%Y-%m-%d') as createDate,u.id as userId,u.name as userName,u.corpwx_userid as corpWxUserId,d.department_name as deptName,d.department_id as deptId
+        ,d.corpwx_deptid as corpWxDeptId,u.plate1,u.plate2,u.plate3,u.plate4,u.plate5,SUM(r.working_time) as workingTime
+        <if test="startDate!=null and startDate!='' and endDate!=null and endDate!=''">
+            ,IFNULL((select SUM(working_time) from report where company_id=#{companyId} and create_date between  #{startDate} and #{endDate} and creator_id=u.id),0) as allWorkingTime
+            ,IFNULL((select SUM(working_time) from report where company_id=#{companyId} and create_date between  #{startDate} and #{endDate} and creator_id=u.id and project_id in (select id from project where category=pc.id)),0) as targetWorkingTime
+        </if>
+        from
+        report r
+        left join project p on r.project_id=p.id
+        left join project_category pc on pc.id=p.category
+        left join user u on u.id=r.creator_id
+        left join department d on d.department_id=u.department_id
+        where r.company_id=#{companyId}
+        <if test="startDate!=null and startDate!='' and endDate!=null and endDate!=''">
+            and r.create_date between #{startDate} and #{endDate}
+        </if>
+        <if test="categoryId!=null">
+            and pc.id=#{categoryId}
+        </if>
+        <if test="categoryId==null">
+            and p.category is null
+        </if>
+        <if test="list!=null and list.size()>0">
+            and d.department_id in
+            <foreach collection="list" open="(" close=")" item="item" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="deptId!=null">
+            and d.department_id=#{deptId}
+        </if>
+        <if test="userId!=null and userId!=''">
+            and u.id=#{userId}
+        </if>
+        group by r.create_date
+    </select>
 </mapper>

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/statistic/index.vue

@@ -242,7 +242,7 @@
                                     width="200"
                                     trigger="click"
                                     :content="hasMoreUserResult">
-                                    <i slot="reference" type="primary" class="el-icon-warning-outline" @click="getUserCommon(items)"></i>
+                                    <i slot="reference" type="primary" style="color:#E6A23C" class="el-icon-warning-outline" @click="getUserCommon(items)"></i>
                                   </el-popover></div>
                                   <div v-if="!isViewUser">进度:{{items.progress}}</div>
                                   <div v-if="isViewUser">进度:{{ comSchedule(items.nowHour, items.planHour) }}</div>

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

@@ -93,6 +93,12 @@
         <!--导出报表条件选择 -->
         <el-dialog :title="$t('timeReportExport')" v-if="exportDialog" :visible.sync="exportDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
             <el-form ref="form3" :model="exportParam" >
+                <el-form-item prop="projectCategoryId" :label="$t('projectclassification')" v-if="radio == $t('projectclassification')||radio==$t('other.project')">
+                    <el-select v-model="exportParam.projectCategoryId" :placeholder="$t('classificationitems')"  clearable style="width:350px;" filterable="true">
+                        <el-option v-for="item in categoryList"  :key="item.id" :label="item.name" :value="item.id">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
                 <el-form-item prop="projectId" :label="$t('defaultText.selectProject')" v-if="radio != $t('ren-yuan') && radio != $t('projectclassification') && radio != $t('lable.department') && radio != $t('zhu-xiang-mu')">
                     <el-select v-model="exportParam.projectId" :placeholder="$t('other.allProject')"  clearable style="width:350px;" filterable="true" popper-class="projectSelectPopperClass">
                         <el-option v-for="item in projectList"  :key="item.id" :label="item.projectName + item.projectCode" :value="item.id">
@@ -100,7 +106,6 @@
                             <span style="float: right;font-size: 13px;">{{ item.projectName }}</span>
                         </el-option>
                     </el-select>
-
                 </el-form-item>
                 <el-form-item prop="exportContent" label="导出内容" v-if="permissions.countCost && permissions.countHours && (radio == $t('other.project') || radio == $t('projectclassification'))">
                     <el-select v-model="exportParam.exportContent" style="width:350px;" filterable="true" popper-class="projectSelectPopperClass">
@@ -117,12 +122,7 @@
                     <vueCascader :size="'medium'" :widthStr="'350'" :clearable="true" :subject="departmentList" :radios="true" :distinction="'1'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1"></vueCascader>
                 </el-form-item>
 
-                <el-form-item prop="projectCategoryId" :label="$t('projectclassification')" v-if="radio == $t('projectclassification')">
-                    <el-select v-model="exportParam.projectCategoryId" :placeholder="$t('classificationitems')"  clearable style="width:350px;" filterable="true">
-                        <el-option v-for="item in categoryList"  :key="item.id" :label="item.name" :value="item.id">
-                        </el-option>
-                    </el-select>
-                </el-form-item>
+
                 <el-form-item prop="userIds" :label="$t('screening.selectPeople')" v-if="radio == $t('ren-yuan')">
                     <el-select v-if="user.userNameNeedTranslate != '1'" v-model="exportParam.userIds" :placeholder="$t('lable.allStaff')" multiple="true"  clearable style="width:350px;" filterable="true">
                         <el-option v-for="item in hasReportUserList"  :key="item.id" :label="item.name" :value="item.id"></el-option>
@@ -374,6 +374,9 @@
                         })
                         param.userIds = ids.substring(0,ids.length-1);
                      }
+                     if(this.exportParam.projectCategoryId){
+                        param.projectCategoryId = this.exportParam.projectCategoryId
+                    }
                      //是否含工时占比显示
                      if (this.exportParam.withPercent) {
                         param.withPercent = 1;
@@ -1476,6 +1479,7 @@
             });
             // this.getDepartment();
             this.getMyProjectList();
+            this.getCategoryList();
             this.getUsers()
             this.jutishez()
             this.scrollFunction()