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

上传薪资检测不存在人员
额外工时表优化,支持一线和非一线筛选

QuYueTing 2 дней назад
Родитель
Сommit
dd86d2101c

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

@@ -3685,13 +3685,13 @@ public class ReportController {
     }
     }
 
 
     @RequestMapping("/exportExtraWorkHoursList")
     @RequestMapping("/exportExtraWorkHoursList")
-    public HttpRespMsg exportExtraWorkHoursList(String year, Integer departmentId, String userId, HttpServletRequest request) {
-        return reportService.exportExtraWorkHoursList(year,departmentId, userId, request);
+    public HttpRespMsg exportExtraWorkHoursList(String year, Integer departmentId, String userId, Integer range, HttpServletRequest request) {
+        return reportService.exportExtraWorkHoursList(year,departmentId, userId, range, request);
     }
     }
     @RequestMapping("/getExtraWorkHoursList")
     @RequestMapping("/getExtraWorkHoursList")
-    public HttpRespMsg getExtraWorkHoursList(String year, Integer departmentId, String userId, HttpServletRequest request) {
+    public HttpRespMsg getExtraWorkHoursList(String year, Integer departmentId, String userId, Integer range, Integer pageIndex, Integer pageSize,HttpServletRequest request) {
         HttpRespMsg msg = new HttpRespMsg();
         HttpRespMsg msg = new HttpRespMsg();
-        msg.data = reportService.getExtraWorkHoursList(year,departmentId, userId, request);
+        msg.data = reportService.getExtraWorkHoursList(year,departmentId, userId, range, pageIndex, pageSize, request);
         return msg;
         return msg;
     }
     }
 
 

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

@@ -25,7 +25,8 @@ public interface UserCorpwxTimeMapper extends BaseMapper<UserCorpwxTime> {
 
 
     List<Map> selectByAsk(Integer companyId,String startDate,String endDate);
     List<Map> selectByAsk(Integer companyId,String startDate,String endDate);
 
 
-    List<HashMap> getExtraWorkHoursList(String year, Integer companyId, List<Integer> deptIds, String userId);
+    List<HashMap> getExtraWorkHoursList(String year, Integer companyId, List<Integer> deptIds, String userId, Integer range, Integer pageStart, Integer pageSize);
+    Integer getExtraWorkHoursCount(String year, Integer companyId, List<Integer> deptIds, String userId, Integer range);
 
 
     List<Map<String, Object>> getMonthlyOvertimeByYear(@Param("year") String year, @Param("companyId") Integer companyId, @Param("corpwxUserIds") List<String> corpwxUserIds);
     List<Map<String, Object>> getMonthlyOvertimeByYear(@Param("year") String year, @Param("companyId") Integer companyId, @Param("corpwxUserIds") List<String> corpwxUserIds);
 
 

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

@@ -227,9 +227,9 @@ public interface ReportService extends IService<Report> {
 
 
     HttpRespMsg importNewDataXiHe(Integer companyId, MultipartFile file, HttpServletRequest request);
     HttpRespMsg importNewDataXiHe(Integer companyId, MultipartFile file, HttpServletRequest request);
 
 
-    List<HashMap> getExtraWorkHoursList(String year, Integer departmentId, String userId, HttpServletRequest request);
+    HashMap getExtraWorkHoursList(String year, Integer departmentId, String userId, Integer range, Integer pageIndex, Integer pageSize,HttpServletRequest request);
 
 
-    HttpRespMsg exportExtraWorkHoursList(String year, Integer departmentId, String userId, HttpServletRequest request);
+    HttpRespMsg exportExtraWorkHoursList(String year, Integer departmentId, String userId, Integer range, HttpServletRequest request);
 
 
     HttpRespMsg getTop10ProjectReport(Integer companyId, String ymonth, String startDate, String endDate);
     HttpRespMsg getTop10ProjectReport(Integer companyId, String ymonth, String startDate, String endDate);
 
 

+ 19 - 13
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceServiceImpl.java

@@ -300,28 +300,35 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
             HttpRespMsg respMsg=new HttpRespMsg();
             HttpRespMsg respMsg=new HttpRespMsg();
             if(userNameList.size() > 0){
             if(userNameList.size() > 0){
                 if (wxCorpInfo != null&&wxCorpInfo.getSaasSyncContact() == 1) {
                 if (wxCorpInfo != null&&wxCorpInfo.getSaasSyncContact() == 1) {
-                    System.out.println("参与搜素的人员列表"+userNameList + userNameList.size());
+//                    System.out.println("参与搜素的人员列表"+userNameList + userNameList.size());
                     respMsg = wxCorpInfoService.getBatchSearchUserInfo(wxCorpInfo, userNameList,null);
                     respMsg = wxCorpInfoService.getBatchSearchUserInfo(wxCorpInfo, userNameList,null);
                     if(respMsg.code.equals("0")){
                     if(respMsg.code.equals("0")){
                         msg.setError("["+String.valueOf(respMsg.data)+"]在系统中为重名人员,请完善工号信息!");
                         msg.setError("["+String.valueOf(respMsg.data)+"]在系统中为重名人员,请完善工号信息!");
                         return msg;
                         return msg;
                     }
                     }
                 } else {
                 } else {
+                    StringBuilder errorMsg = new StringBuilder();
                     //不需要转译的情况
                     //不需要转译的情况
                     for (String name : userNameList) {
                     for (String name : userNameList) {
                         long count = userList.stream().filter(u -> u.getName().equals(name)).count();
                         long count = userList.stream().filter(u -> u.getName().equals(name)).count();
                         if (count == 0) {
                         if (count == 0) {
-                            msg.setError(MessageUtils.message("group.userNull",name));
-                            return msg;
+//                            msg.setError(MessageUtils.message("group.userNull",name));
+                            errorMsg.append(name).append(",");
+                            continue;
                         } else if (count > 1) {
                         } else if (count > 1) {
                             msg.setError("["+name+"]在系统中为重名人员,请完善工号信息!");
                             msg.setError("["+name+"]在系统中为重名人员,请完善工号信息!");
                             return msg;
                             return msg;
                         }
                         }
                     }
                     }
+                    if (errorMsg.length() > 0) {
+                        msg.setError("用户[" + errorMsg.substring(0, errorMsg.length() - 1) + "]不存在,请在组织结构中添加该成员(离职人员请用完善工号))");
+                        return msg;
+                    }
                 }
                 }
             }
             }
             List<User> targetUserList= (List<User>) respMsg.data;
             List<User> targetUserList= (List<User>) respMsg.data;
             //由于第一行需要指明列对应的标题
             //由于第一行需要指明列对应的标题
+            StringBuilder errorMsg = new StringBuilder();
             for (int rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex++) {
             for (int rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex++) {
                 Row row = sheet.getRow(rowIndex);
                 Row row = sheet.getRow(rowIndex);
                 if (row == null) {
                 if (row == null) {
@@ -403,7 +410,6 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
                 }
                 }
 
 
                 if (first != null && first.isPresent()) {
                 if (first != null && first.isPresent()) {
-                    System.out.println("匹配到的人员:"+first.get().getName());
                     finance.setUserId(first.get().getId());
                     finance.setUserId(first.get().getId());
                     BigDecimal total = new BigDecimal(0);
                     BigDecimal total = new BigDecimal(0);
                     if (salaryCell != null) {
                     if (salaryCell != null) {
@@ -550,30 +556,30 @@ public class FinanceServiceImpl extends ServiceImpl<FinanceMapper, Finance> impl
                     }
                     }
                 } else {
                 } else {
                     if (includeJobNumber) {
                     if (includeJobNumber) {
-                        //msg.setError("用户["+name+","+finance.getJobNumber()+"]不存在,请在组织结构中添加该成员");
-                        msg.setError(MessageUtils.message("group.userNullById",name,finance.getJobNumber()));
+                        errorMsg.append(name).append(",");
                     } else {
                     } else {
-                        //msg.setError("用户["+name+"]不存在,请在组织结构中添加该成员");
-                        msg.setError(MessageUtils.message("group.userNull",name));
+                        errorMsg.append(name).append(",");
                     }
                     }
-                    return msg;
+
+                    continue;//跳过,当前存在错误,塞入错误消息中,稍后进行全部返回提示;
                 }
                 }
                 finance.setYmonth(yearMonth);
                 finance.setYmonth(yearMonth);
                 financeList.add(finance);
                 financeList.add(finance);
             }
             }
             if (financeList.size() == 0) {
             if (financeList.size() == 0) {
-                //msg.setError("请填写数据再上传");
-                msg.setError(MessageUtils.message("file.dateNull"));
+                msg.setError("请填写数据再上传");
+                return msg;
+            }
+            if (errorMsg.length() > 0) {
+                msg.setError("用户[" + errorMsg.substring(0, errorMsg.length() - 1) + "]不存在,请在组织结构中添加该成员(离职人员请用完善工号))");
                 return msg;
                 return msg;
             }
             }
-
 
 
             //批量插入
             //批量插入
             financeService.saveOrUpdateBatch(financeList);
             financeService.saveOrUpdateBatch(financeList);
             if (syncUserCost) {
             if (syncUserCost) {
                 //重新计算时薪,保证按照标准工作时长下的时薪正确
                 //重新计算时薪,保证按照标准工作时长下的时薪正确
                 List<User> dbUpUserList = new ArrayList<>();
                 List<User> dbUpUserList = new ArrayList<>();
-//                BigDecimal db = timeType.getMonthDays().multiply(new BigDecimal(timeType.getAllday()));
                 for (User upU : updateUserList) {
                 for (User upU : updateUserList) {
                     User user1 = new User();
                     User user1 = new User();
                     user1.setId(upU.getId());
                     user1.setId(upU.getId());

+ 133 - 28
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -15954,32 +15954,73 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     }
     }
 
 
     @Override
     @Override
-    public List<HashMap> getExtraWorkHoursList(String year, Integer departmentId, String userId, HttpServletRequest request) {
+    public HashMap  getExtraWorkHoursList(String year, Integer departmentId, String userId, Integer range, Integer pageIndex, Integer pageSize, HttpServletRequest request) {
         List<HashMap> list = new ArrayList<>();
         List<HashMap> list = new ArrayList<>();
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
-
+        Integer pageStart = pageIndex == null ? null : (pageIndex - 1) * pageSize;
         List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
         List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
+        List<Integer> deptIds = null;
         List<Department> firstLineDepartments = allDeptList.stream().filter(Department::getFlag).collect(Collectors.toList());
         List<Department> firstLineDepartments = allDeptList.stream().filter(Department::getFlag).collect(Collectors.toList());
-        List<Department> allFirstLineDepartments = new ArrayList<>(firstLineDepartments);
+        List<Department> allNonFirstLineDepartments = new ArrayList<>(firstLineDepartments);
         for (Department dept: firstLineDepartments) {
         for (Department dept: firstLineDepartments) {
-            allFirstLineDepartments.addAll(getSubDepts(dept, allDeptList));
-        }
-        if (departmentId != null) {
-            allFirstLineDepartments = allFirstLineDepartments.stream().filter(dept -> dept.getDepartmentId().equals(departmentId)).collect(Collectors.toList());
-            //要取子部门的所有集合
-            if (allFirstLineDepartments.size() > 0) {
-                allFirstLineDepartments.addAll(getSubDepts(allFirstLineDepartments.get(0), allDeptList));
+            allNonFirstLineDepartments.addAll(getSubDepts(dept, allDeptList));
+        }
+        //提取非一线的部门
+        List<Integer> nonFirstLineDeptIds = allNonFirstLineDepartments.stream().map(Department::getDepartmentId).collect(Collectors.toList());
+        if (range != null) {
+            //取一线或者非一线的部门
+            if (range == 1) {
+                //一线, 排除所有非一线的
+                List<Integer> allDeptIds = allDeptList.stream().map(Department::getDepartmentId).collect(Collectors.toList());
+                if (allNonFirstLineDepartments.size() > 0) {
+                    List<Integer> allNonFirstLineDeptIds = allNonFirstLineDepartments.stream().map(Department::getDepartmentId).collect(Collectors.toList());
+                    deptIds = allDeptIds.stream().filter(all->!allNonFirstLineDeptIds.contains(all)).collect(Collectors.toList());
+                    if (departmentId != null) {
+                        Integer findDeptId = deptIds.stream().filter(dept -> dept.equals(departmentId)).findAny().orElse(null);
+                        if (findDeptId == null) {
+                            HashMap map = new HashMap();
+                            map.put("list", list);
+                            map.put("total", 0);
+                            return map;
+                        } else {
+                            Department department = allDeptList.stream().filter(dept -> dept.getDepartmentId().equals(findDeptId)).findAny().orElse(null);
+
+                            //要取子部门的所有集合
+                            if (department != null) {
+                                List<Department> allList = getSubDepts(department, allDeptList);
+                                deptIds = allList.stream().map(Department::getDepartmentId).collect(Collectors.toList());
+                            }
+                        }
+                    }
+                }
+            } else {
+                if (departmentId != null) {
+                    allNonFirstLineDepartments = allNonFirstLineDepartments.stream().filter(dept -> dept.getDepartmentId().equals(departmentId)).collect(Collectors.toList());
+                    //要取子部门的所有集合
+                    if (allNonFirstLineDepartments.size() > 0) {
+                        allNonFirstLineDepartments.addAll(getSubDepts(allNonFirstLineDepartments.get(0), allDeptList));
+                    }
+                }
+                //非一线
+                if (allNonFirstLineDepartments.size() == 0) {
+                    HashMap map = new HashMap();
+                    map.put("list", list);
+                    map.put("total", 0);
+                    return map;
+                }
+                deptIds = allNonFirstLineDepartments.stream().map(Department::getDepartmentId).collect(Collectors.toList());
             }
             }
         }
         }
-        if (allFirstLineDepartments.size() == 0) {
-            return list;
-        }
-        List<Integer> deptIds = allFirstLineDepartments.stream().map(Department::getDepartmentId).collect(Collectors.toList());
 
 
-        // 1. 查询用户基础信息(只查一次)
-        List<HashMap> userList = userCorpwxTimeMapper.getExtraWorkHoursList(year, companyId, deptIds, userId);
+
+        // 1. 查询用户基础信息(只查一次),支持分页
+        List<HashMap> userList = userCorpwxTimeMapper.getExtraWorkHoursList(year, companyId, deptIds, userId, range, pageStart, pageSize);
+        Integer total = userCorpwxTimeMapper.getExtraWorkHoursCount(year, companyId, deptIds, userId, range);
         if (userList.isEmpty()) {
         if (userList.isEmpty()) {
-            return list;
+            HashMap map = new HashMap();
+            map.put("list", list);
+            map.put("total", total);
+            return map;
         }
         }
 
 
         // 2. 收集所有用户ID和企微ID
         // 2. 收集所有用户ID和企微ID
@@ -15991,16 +16032,73 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 
 
         // 3. 批量查询全年月度加班数据(只查一次user_corpwx_time表,使用otTime字段)
         // 3. 批量查询全年月度加班数据(只查一次user_corpwx_time表,使用otTime字段)
         Map<String, Map<String, Double>> overtimeMap = new HashMap<>();
         Map<String, Map<String, Double>> overtimeMap = new HashMap<>();
-        if (!corpwxUserIds.isEmpty()) {
-            List<Map<String, Object>> overtimeList = userCorpwxTimeMapper.getMonthlyOvertimeByYear(year, companyId, corpwxUserIds);
-            for (Map<String, Object> row : overtimeList) {
-                String corpwxId = String.valueOf(row.get("corpwxUserid"));
-                String month = String.valueOf(row.get("month"));
-                double overtime = row.get("overtime") != null ? ((Number) row.get("overtime")).doubleValue() : 0.0;
-                overtimeMap.computeIfAbsent(corpwxId, k -> new HashMap<>()).put(month, overtime);
+        if (range == null) {
+            //区分员工是一线还是非一线的
+            if (!corpwxUserIds.isEmpty()) {
+                List<String> nonFirstLineUserCorpwxUserIds = new ArrayList<>();
+                List<String> firstLineUserIds = new ArrayList<>();
+                for (HashMap user : userList) {
+                    // 先转为Long,再转int
+                    Long deptIdLong = (Long) user.get("departmentId");
+                    int deptId = deptIdLong.intValue();
+                    if (nonFirstLineDeptIds.contains(deptId)) {
+                        //非一线
+                        user.put("flag", true);
+                        nonFirstLineUserCorpwxUserIds.add((String)user.get("corpwxUserid"));
+                    } else {
+                        user.put("flag", false);//一线的
+                        firstLineUserIds.add((String)user.get("id"));
+                    }
+                }
+                if (!firstLineUserIds.isEmpty()) {
+                    List<Report> overtimeList = reportMapper.selectList(new QueryWrapper<Report>().select("creator_id, date_format(create_date, '%m') as content, sum(overtime_hours) as overtime_hours").in("creator_id", firstLineUserIds).eq("state", 1).eq("DATE_FORMAT(create_date,'%Y')", year + "").groupBy("creator_id, date_format(create_date, '%Y-%m')"));
+                    for (Report row : overtimeList) {
+                        String corpwxId = (String)userList.stream().filter(u->String.valueOf(u.get("id")).equals(row.getCreatorId())).findFirst().orElse(null).get("corpwxUserid");
+                        String month = row.getContent();
+                        double overtime = row.getOvertimeHours();
+                        overtimeMap.computeIfAbsent(corpwxId, k -> new HashMap<>()).put(month, overtime);
+                    }
+                }
+                if (!nonFirstLineUserCorpwxUserIds.isEmpty()) {
+                    List<Map<String, Object>> overtimeList = userCorpwxTimeMapper.getMonthlyOvertimeByYear(year, companyId, nonFirstLineUserCorpwxUserIds);
+                    for (Map<String, Object> row : overtimeList) {
+                        String corpwxId = String.valueOf(row.get("corpwxUserid"));
+                        String month = String.valueOf(row.get("month"));
+                        double overtime = row.get("overtime") != null ? ((Number) row.get("overtime")).doubleValue() : 0.0;
+                        overtimeMap.computeIfAbsent(corpwxId, k -> new HashMap<>()).put(month, overtime);
+                    }
+                }
+            }
+        } else if (range == 1) {
+            for (HashMap user : userList) {
+                user.put("flag", false);//一线的
+            }
+             //一线的员工,加班时长从日报获取
+            if (!corpwxUserIds.isEmpty()) {
+                List<Report> overtimeList = reportMapper.selectList(new QueryWrapper<Report>().select("creator_id, date_format(create_date, '%m') as content, sum(overtime_hours) as overtime_hours").in("creator_id", userIds).eq("state", 1).eq("DATE_FORMAT(create_date,'%Y')", year + "").groupBy("creator_id, date_format(create_date, '%m')"));
+                for (Report row : overtimeList) {
+                    String corpwxId = (String)userList.stream().filter(u->String.valueOf(u.get("id")).equals(row.getCreatorId())).findFirst().orElse(null).get("corpwxUserid");
+                    String month = row.getContent();
+                    double overtime = row.getOvertimeHours();
+                    overtimeMap.computeIfAbsent(corpwxId, k -> new HashMap<>()).put(month, overtime);
+                }
+            }
+        } else {
+            for (HashMap user : userList) {
+                user.put("flag", true);//非一线的
+            }
+            if (!corpwxUserIds.isEmpty()) {
+                List<Map<String, Object>> overtimeList = userCorpwxTimeMapper.getMonthlyOvertimeByYear(year, companyId, corpwxUserIds);
+                for (Map<String, Object> row : overtimeList) {
+                    String corpwxId = String.valueOf(row.get("corpwxUserid"));
+                    String month = String.valueOf(row.get("month"));
+                    double overtime = row.get("overtime") != null ? ((Number) row.get("overtime")).doubleValue() : 0.0;
+                    overtimeMap.computeIfAbsent(corpwxId, k -> new HashMap<>()).put(month, overtime);
+                }
             }
             }
         }
         }
 
 
+
         // 4. 批量查询全年月度调休数据(只查一次user_corpwx_time表)
         // 4. 批量查询全年月度调休数据(只查一次user_corpwx_time表)
         Map<String, Map<String, Double>> leaveMap = new HashMap<>();
         Map<String, Map<String, Double>> leaveMap = new HashMap<>();
         if (!corpwxUserIds.isEmpty()) {
         if (!corpwxUserIds.isEmpty()) {
@@ -16042,23 +16140,28 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             userMap.remove("corpwxUserid");
             userMap.remove("corpwxUserid");
             list.add(userMap);
             list.add(userMap);
         }
         }
-        return list;
+        HashMap map = new HashMap();
+        map.put("list", list);
+        map.put("total", total);
+        return map;
     }
     }
 
 
     @Override
     @Override
-    public HttpRespMsg exportExtraWorkHoursList(String year, Integer departmentId, String userId, HttpServletRequest request) {
+    public HttpRespMsg exportExtraWorkHoursList(String year, Integer departmentId, String userId, Integer range, HttpServletRequest request) {
         HttpRespMsg msg = new HttpRespMsg();
         HttpRespMsg msg = new HttpRespMsg();
         try {
         try {
             Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
             Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
             WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new LambdaQueryWrapper<WxCorpInfo>().eq(WxCorpInfo::getCompanyId, companyId));
             WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new LambdaQueryWrapper<WxCorpInfo>().eq(WxCorpInfo::getCompanyId, companyId));
             CompanyDingding dingding = companyDingdingService.getOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
             CompanyDingding dingding = companyDingdingService.getOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));
 
 
-            List<HashMap> list = getExtraWorkHoursList(year, departmentId, userId, request);
+            HashMap ret = getExtraWorkHoursList(year, departmentId, userId,range, null, null,  request);
+            List<HashMap> list = (List<HashMap>) ret.get("list");
 
 
             List<List<String>> dataList = new ArrayList<>();
             List<List<String>> dataList = new ArrayList<>();
             List<String> titleList = new ArrayList<>();
             List<String> titleList = new ArrayList<>();
             titleList.add("姓名");
             titleList.add("姓名");
             titleList.add("部门");
             titleList.add("部门");
+            titleList.add("一线/非一线");
             // 动态生成1-12月的标题
             // 动态生成1-12月的标题
             for (int m = 1; m <= 12; m++) {
             for (int m = 1; m <= 12; m++) {
                 titleList.add(m + "月加班(h)");
                 titleList.add(m + "月加班(h)");
@@ -16073,6 +16176,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 List<String> item = new ArrayList<>();
                 List<String> item = new ArrayList<>();
                 String name = String.valueOf(map.get("name"));
                 String name = String.valueOf(map.get("name"));
                 String departmentName = String.valueOf(map.get("departmentName"));
                 String departmentName = String.valueOf(map.get("departmentName"));
+                boolean flag = (boolean)(map.get("flag"));
                 if (wxCorpInfo != null && wxCorpInfo.getSaasSyncContact() == 1) {
                 if (wxCorpInfo != null && wxCorpInfo.getSaasSyncContact() == 1) {
                     item.add("$userName=" + name + "$");
                     item.add("$userName=" + name + "$");
                     item.add("$departmentName=" + departmentName + "$");
                     item.add("$departmentName=" + departmentName + "$");
@@ -16083,6 +16187,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     item.add(name);
                     item.add(name);
                     item.add(departmentName);
                     item.add(departmentName);
                 }
                 }
+                item.add(flag?"非一线":"一线");
                 // 动态填充1-12月的加班和调休数据
                 // 动态填充1-12月的加班和调休数据
                 for (int m = 1; m <= 12; m++) {
                 for (int m = 1; m <= 12; m++) {
                     Object monthOvertime = map.get("month" + m + "Overtime");
                     Object monthOvertime = map.get("month" + m + "Overtime");
@@ -16591,7 +16696,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             return msg;
             return msg;
         }
         }
 
 
-        List<HashMap> userList = userCorpwxTimeMapper.getExtraWorkHoursList(null, companyId, scope.scopedDeptIds, null);
+        List<HashMap> userList = userCorpwxTimeMapper.getExtraWorkHoursList(null, companyId, scope.scopedDeptIds, null, 2, null, null);
         if (userList.isEmpty()) {
         if (userList.isEmpty()) {
             msg.data = new ArrayList<>();
             msg.data = new ArrayList<>();
             return msg;
             return msg;

+ 19 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserCorpwxTimeMapper.xml

@@ -140,9 +140,28 @@
         <if test="userId != null and userId != ''">
         <if test="userId != null and userId != ''">
             and user.id = #{userId}
             and user.id = #{userId}
         </if>
         </if>
+        <if test="range != null and deptIds != null">
         and user.department_id in
         and user.department_id in
         <foreach item="item" collection="deptIds" separator="," open="(" close=")" index="">
         <foreach item="item" collection="deptIds" separator="," open="(" close=")" index="">
             #{item, jdbcType=INTEGER}
             #{item, jdbcType=INTEGER}
         </foreach>
         </foreach>
+        </if>
+        <if test="pageStart != null and pageSize != null">
+            limit #{pageStart}, #{pageSize}
+        </if>
     </select>
     </select>
+    <select id="getExtraWorkHoursCount" resultType="java.lang.Integer">
+        select count(*) from `user`
+        where user.`company_id` = #{companyId}
+        <if test="userId != null and userId != ''">
+            and user.id = #{userId}
+        </if>
+        <if test="range != null and deptIds != null">
+            and user.department_id in
+            <foreach item="item" collection="deptIds" separator="," open="(" close=")" index="">
+                #{item, jdbcType=INTEGER}
+            </foreach>
+        </if>
+    </select>
+
 </mapper>
 </mapper>

+ 42 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -974,6 +974,18 @@
                 :value="item"
                 :value="item"
               ></el-option>
               ></el-option>
             </el-select>
             </el-select>
+            <el-select v-if="ins == 45"
+                v-model="range"
+                clearable
+                filterable
+                size="small"
+                @change="selcts()"
+                style="margin-right: 20px;width:120px;"
+              >
+                <el-option label="全部" :value="-1" ></el-option>
+                <el-option label="一线员工" :value="1" ></el-option>
+                <el-option label="非一线员工" :value="2" ></el-option>
+              </el-select>
             <!-- 状态筛选(工时日报表、日报明细表) -->
             <!-- 状态筛选(工时日报表、日报明细表) -->
             <el-select
             <el-select
               v-if="ins == 37 || ins == 38"
               v-if="ins == 37 || ins == 38"
@@ -6781,6 +6793,19 @@
                     </span>
                     </span>
                   </template>
                   </template>
                 </el-table-column>
                 </el-table-column>
+                <el-table-column
+                  prop="flag"
+                  align="center"
+                  label="一线/非一线"
+                  width="120"
+                  fixed
+                >
+                  <template slot-scope="scope">
+                    <span  :style="scope.row.flag?'color:red':'color:#20a0ff;'">
+                      {{ scope.row.flag?'非一线':'一线' }}
+                    </span>
+                  </template>
+                </el-table-column>
                 <!-- 每月加班和调休列 -->
                 <!-- 每月加班和调休列 -->
                 <el-table-column
                 <el-table-column
                   v-for="month in 12"
                   v-for="month in 12"
@@ -7129,7 +7154,6 @@
                 ins != 40 &&
                 ins != 40 &&
                 ins != 41 &&
                 ins != 41 &&
                 ins != 42 &&
                 ins != 42 &&
-                ins != 45 &&
                 ins != 46
                 ins != 46
               "
               "
             >
             >
@@ -7986,6 +8010,7 @@ export default {
   props: {},
   props: {},
   data() {
   data() {
     return {
     return {
+      range: -1,//全部范围人员
       selectYmonth: this.dayjs(new Date()).format("YYYY-MM"),
       selectYmonth: this.dayjs(new Date()).format("YYYY-MM"),
       themeColor: getThemeColor(),
       themeColor: getThemeColor(),
       screeningCondition: {
       screeningCondition: {
@@ -9877,6 +9902,9 @@ export default {
           sl.departmentId =
           sl.departmentId =
             this.departmentIdArray[this.departmentIdArray.length - 1];
             this.departmentIdArray[this.departmentIdArray.length - 1];
         }
         }
+        if (this.range != -1) {
+          sl.range = this.range;//支持范围参数
+        }
       } else if (this.ins == 46) {
       } else if (this.ins == 46) {
         fName = `考勤异常表.xlsx`;
         fName = `考勤异常表.xlsx`;
         url = `/exception-infos/exportExceptionReport`;
         url = `/exception-infos/exportExceptionReport`;
@@ -12915,17 +12943,29 @@ export default {
       this.extraWorkHoursLoading = true;
       this.extraWorkHoursLoading = true;
       let parameter = {
       let parameter = {
         year: this.extraWorkHoursYear || new Date().getFullYear().toString(),
         year: this.extraWorkHoursYear || new Date().getFullYear().toString(),
+        pageIndex: this.page,
+        pageSize: this.size,
       };
       };
       if (this.userId) {
       if (this.userId) {
         parameter.userId = this.userId;
         parameter.userId = this.userId;
       }
       }
+      if (this.range != -1) {
+        parameter.range = this.range;
+      }
       if (this.departmentIdArray.length != 0) {
       if (this.departmentIdArray.length != 0) {
         parameter.departmentId =
         parameter.departmentId =
           this.departmentIdArray[this.departmentIdArray.length - 1];
           this.departmentIdArray[this.departmentIdArray.length - 1];
       }
       }
       this.postData(`/report/getExtraWorkHoursList`, parameter)
       this.postData(`/report/getExtraWorkHoursList`, parameter)
         .then((res) => {
         .then((res) => {
-          this.extraWorkHoursList = Array.isArray(res.data) ? res.data : (res.data.records || res.data.list || []);
+          const data = res.data;
+          if (Array.isArray(data)) {
+            this.extraWorkHoursList = data;
+            this.total = data.length;
+          } else {
+            this.extraWorkHoursList = data.records || data.list || [];
+            this.total = data.total || 0;
+          }
         })
         })
         .finally(() => {
         .finally(() => {
           this.extraWorkHoursLoading = false;
           this.extraWorkHoursLoading = false;

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

@@ -780,7 +780,7 @@
                     <el-checkbox v-model="personnelAllocation">含人员分摊明细</el-checkbox>
                     <el-checkbox v-model="personnelAllocation">含人员分摊明细</el-checkbox>
                 </div>
                 </div>
                 <div style="margin-top: 20px;" v-if="groupByCategory==0">
                 <div style="margin-top: 20px;" v-if="groupByCategory==0">
-                    <span style="margin-right: 10px;">项目成本金额保留至小数点后</span>
+                    <span style="margin-right: 10px;">分摊成本保留至小数点后</span>
                     <el-select v-model="exportScale" size="small" style="width: 120px;">
                     <el-select v-model="exportScale" size="small" style="width: 120px;">
                         <el-option :value="2" label="2位"></el-option>
                         <el-option :value="2" label="2位"></el-option>
                         <el-option :value="3" label="3位"></el-option>
                         <el-option :value="3" label="3位"></el-option>

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet_h5/src/views/cost/cost.vue

@@ -30,7 +30,7 @@
                             <van-col span="18">{{item.project}}</van-col>
                             <van-col span="18">{{item.project}}</van-col>
                         </van-row>
                         </van-row>
                         <van-row>
                         <van-row>
-                            <van-col span="6" style="text-align:center;color:#969799">{{ user.companyId == '7030' ? '项目令号' : '项目编号' }}</van-col>
+                            <van-col span="6" style="text-align:center;color:#969799">项目编号</van-col>
                             <van-col span="18">{{item.projectCode}}</van-col>
                             <van-col span="18">{{item.projectCode}}</van-col>
                         </van-row>
                         </van-row>
                         <van-row>
                         <van-row>

+ 63 - 11
fhKeeper/formulahousekeeper/timesheet_h5/src/views/project/edit.vue

@@ -1,4 +1,4 @@
-<template>
+<template>
   <div>
   <div>
     <van-nav-bar :title="isAddMode ? '新增项目' : '编辑项目'" left-text="返回" @click-left="back" fixed left-arrow />
     <van-nav-bar :title="isAddMode ? '新增项目' : '编辑项目'" left-text="返回" @click-left="back" fixed left-arrow />
     <div class="content">
     <div class="content">
@@ -81,7 +81,7 @@
             </template>
             </template>
         </van-field>
         </van-field>
             <van-popup v-model="userNamesShow" position="bottom" :style="{ height: '80%' }" >
             <van-popup v-model="userNamesShow" position="bottom" :style="{ height: '80%' }" >
-                <van-search v-model="userName" placeholder="输入员工姓名搜索" @search="onSearch" v-if="user.userNameNeedTranslate != '1'"></van-search>
+                <van-search v-model="userName" placeholder="输入员工姓名搜索" @search="onSearch"></van-search>
                 <div style="minHeight:300px;">
                 <div style="minHeight:300px;">
                 <template v-if="user.userNameNeedTranslate == '1'">
                 <template v-if="user.userNameNeedTranslate == '1'">
                     <van-checkbox class="userCheckbox" v-for="(item) in userList" :key="item.id" v-model="item.isChecked" ><TranslationOpenDataText type='userName' :openid='item.name'></TranslationOpenDataText></van-checkbox>
                     <van-checkbox class="userCheckbox" v-for="(item) in userList" :key="item.id" v-model="item.isChecked" ><TranslationOpenDataText type='userName' :openid='item.name'></TranslationOpenDataText></van-checkbox>
@@ -127,7 +127,7 @@
             </template>
             </template>
         </van-field>
         </van-field>
             <van-popup v-model="dailyReviewFlg" position="bottom" :style="{ height: '80%' }">
             <van-popup v-model="dailyReviewFlg" position="bottom" :style="{ height: '80%' }">
-                <van-search v-model="userName" placeholder="输入员工姓名搜索" @search="onSearch" v-if="user.userNameNeedTranslate != '1'"></van-search>
+                <van-search v-model="userName" placeholder="输入员工姓名搜索" @search="onSearch"></van-search>
                 <div style="minHeight:300px;">
                 <div style="minHeight:300px;">
                 <template v-if="user.userNameNeedTranslate == '1'">
                 <template v-if="user.userNameNeedTranslate == '1'">
                     <van-checkbox class="userCheckbox" v-for="(item) in dailyUserList" :key="item.id" v-model="item.isChecked" ><TranslationOpenDataText type='userName' :openid='item.name'></TranslationOpenDataText></van-checkbox>
                     <van-checkbox class="userCheckbox" v-for="(item) in dailyUserList" :key="item.id" v-model="item.isChecked" ><TranslationOpenDataText type='userName' :openid='item.name'></TranslationOpenDataText></van-checkbox>
@@ -237,6 +237,7 @@ export default {
             dailyUserList: [],
             dailyUserList: [],
             dailyReviewFlg: false,
             dailyReviewFlg: false,
             editProjectMan: false,
             editProjectMan: false,
+            onSearchTime: null,
             canOnlyModParticipator: this.$route.query.canOnlyModParticipator==='1'?true:false,
             canOnlyModParticipator: this.$route.query.canOnlyModParticipator==='1'?true:false,
         }
         }
     },
     },
@@ -303,18 +304,69 @@ export default {
             this.levelShow = false
             this.levelShow = false
         },
         },
         onSearch(val) {
         onSearch(val) {
-            console.log(val);
-            this.userList = [];
-            this.allUserList.forEach(u=>{if (u.name.startsWith(val)) {
-                this.userList.push(u);
-            }})
+            if (this.user.userNameNeedTranslate != '1') {
+                // 普通模式:本地过滤
+                this.userList = [];
+                this.allUserList.forEach(u => {
+                    if (u.name.startsWith(val)) {
+                        this.userList.push(u);
+                    }
+                });
+            } else {
+                // 企业微信翻译模式:防抖后调用后端接口搜索
+                if (this.onSearchTime != null) {
+                    clearTimeout(this.onSearchTime);
+                }
+                var that = this;
+                this.onSearchTime = setTimeout(() => {
+                    that.getOnSearch(val);
+                }, 500);
+            }
+        },
+        getOnSearch(val) {
+            this.$axios.post('/user/getEmployeeList', {
+                departmentId: -1,
+                pageIndex: 1,
+                pageSize: 200,
+                keyword: val,
+                status: 1,
+                roleId: '',
+                cursor: '',
+                onlyDirect: 0,
+            })
+            .then(res => {
+                if (res.code == 'ok') {
+                    let list = res.data.records;
+                    list = list.filter(user=>user.isActive==1);
+                    list.forEach(u => {
+                        let found = this.allUserList.find(a => a.id == u.id);
+                        if (found) {
+                            // 将 allUserList 中已有的勾选状态同步到搜索结果
+                            u.isChecked = found.isChecked;
+                        } else {
+                            u.isChecked = false;
+                            this.allUserList.push(u);
+                        }
+                    });
+                    this.userList = list;
+                } else {
+                    this.$toast.fail('搜索失败');
+                }
+            }).catch(err => { this.$toast.clear(); console.log(err); });
         },
         },
         userNamesConfirm(){
         userNamesConfirm(){
             let that = this;
             let that = this;
+            // 先把当前 userList 中的勾选状态写回 allUserList 对应对象,解决搜索后勾选状态不同步的问题
+            this.userList.forEach(u => {
+                let found = this.allUserList.find(a => a.id == u.id);
+                if (found) {
+                    found.isChecked = u.isChecked;
+                }
+            });
             that.inchargerList = [];
             that.inchargerList = [];
             that.projectDetail.userId = [];
             that.projectDetail.userId = [];
             let userNames = ''
             let userNames = ''
-            this.userList.filter(u=>u.isChecked).forEach(u=>{
+            this.allUserList.filter(u=>u.isChecked).forEach(u=>{
                 userNames+=(u.name+',');
                 userNames+=(u.name+',');
                 that.projectDetail.userId.push(u.id);
                 that.projectDetail.userId.push(u.id);
                 that.inchargerList.push(u);
                 that.inchargerList.push(u);
@@ -340,7 +392,7 @@ export default {
         },
         },
         integrationreAuidType() {
         integrationreAuidType() {
             this.dailyUserList = []
             this.dailyUserList = []
-            this.userList.filter(u=>u.isChecked).forEach(u=>{
+            this.allUserList.filter(u=>u.isChecked).forEach(u=>{
                 let obj = {}
                 let obj = {}
                 obj.name = u.name
                 obj.name = u.name
                 obj.id = u.id
                 obj.id = u.id
@@ -561,7 +613,7 @@ export default {
             }).catch(err=> {this.$toast.clear();console.log(err)});
             }).catch(err=> {this.$toast.clear();console.log(err)});
         },
         },
         getUserList(){
         getUserList(){
-            this.$axios.post("/user/getEmployeeList", {departmentId: -1,pageIndex: 1,pageSize: -1})
+            this.$axios.post("/user/getEmployeeList", {departmentId: -1,pageIndex: 1,pageSize: -1, status: 1})
             .then(res => {
             .then(res => {
                 if(res.code == "ok") {
                 if(res.code == "ok") {
                     let list = res.data.records
                     let list = res.data.records

+ 4 - 7
fhKeeper/formulahousekeeper/timesheet_h5/src/views/project/index.vue

@@ -10,7 +10,7 @@
                     v-model="popoverValue"
                     v-model="popoverValue"
                     show-action
                     show-action
                     shape="round" background="#F4F4F4"
                     shape="round" background="#F4F4F4"
-                    :placeholder="'请输入' + (popoverType == '1' ? '项目名称' : user.companyId == '7030' ? '项目令号' : '项目编号') + '关键词'"
+                    :placeholder="'请输入' + (popoverType == '1' ? '项目名称' : '项目编号') + '关键词'"
                     @search="popoverSearch"
                     @search="popoverSearch"
                     >
                     >
                     <template slot="left">
                     <template slot="left">
@@ -22,7 +22,7 @@
                         placement="bottom-start"
                         placement="bottom-start"
                         >
                         >
                         <template slot="reference">
                         <template slot="reference">
-                            <span>{{popoverType == '1' ? '项目名称' : user.companyId == '7030' ? '项目令号' : '项目编号'}}<van-icon name="arrow-down" size="10" style="margin-left:2px;" /></span>
+                            <span>{{popoverType == '1' ? '项目名称' : '项目编号'}}<van-icon name="arrow-down" size="10" style="margin-left:2px;" /></span>
                         </template>
                         </template>
                         </van-popover>
                         </van-popover>
                     </template>
                     </template>
@@ -35,9 +35,6 @@
             </van-sticky>
             </van-sticky>
             <van-pull-refresh v-model="isDownLoading" @refresh="onDownRefresh">
             <van-pull-refresh v-model="isDownLoading" @refresh="onDownRefresh">
                 <van-list v-model="isUpLoading" :finished="upFinished" :immediate-check="false" :offset="100" finished-text="没有更多了" @load="onLoadList">
                 <van-list v-model="isUpLoading" :finished="upFinished" :immediate-check="false" :offset="100" finished-text="没有更多了" @load="onLoadList">
-                    <!-- <van-swipe-cell v-for="(item,index) in list" :key="index">
-                        <van-cell :border="false" :title="item.projectName" :value="item.projectCode" clickable @click="toProjectInside(item)"/>
-                    </van-swipe-cell>  -->
                     <div v-for="(item, index) in list" :key="index" class="popupItem paddingDiv" @click="toProjectInside(item)">
                     <div v-for="(item, index) in list" :key="index" class="popupItem paddingDiv" @click="toProjectInside(item)">
                         <p class="popupItemOne" v-if="item.projectName" style="overflow: auto;white-space:normal;">{{item.projectName}}</p>
                         <p class="popupItemOne" v-if="item.projectName" style="overflow: auto;white-space:normal;">{{item.projectName}}</p>
                         <p class="popupItemTwo" v-if="item.projectCode" style="overflow: auto;white-space:normal;">{{item.projectCode}}</p> 
                         <p class="popupItemTwo" v-if="item.projectCode" style="overflow: auto;white-space:normal;">{{item.projectCode}}</p> 
@@ -47,7 +44,7 @@
 
 
             <van-dialog v-model="show" :title="title" show-cancel-button :beforeClose="chargeBtn">
             <van-dialog v-model="show" :title="title" show-cancel-button :beforeClose="chargeBtn">
                 <van-form style="margin: 0.4rem 0;">
                 <van-form style="margin: 0.4rem 0;">
-                    <van-field v-model="form.projectCode" :name="user.companyId == '7030' ? '项目令号' : '项目编号'" :label="user.companyId == '7030' ? '项目令号' : '项目编号'" placeholder="请填写项目编号" />
+                    <van-field v-model="form.projectCode" name="项目编号" label="项目编号" placeholder="请填写项目编号" />
                     <van-field v-model="form.projectName" name="项目名称" label="项目名称" placeholder="请填写项目名称" :rules="[{ required: true, message: '请填写项目名称' }]"/>
                     <van-field v-model="form.projectName" name="项目名称" label="项目名称" placeholder="请填写项目名称" :rules="[{ required: true, message: '请填写项目名称' }]"/>
                     <van-field readonly clickable v-model="form.userNames"  label="参与人" 
                     <van-field readonly clickable v-model="form.userNames"  label="参与人" 
                     placeholder="请选择参与人" @click="clickPicker()">
                     placeholder="请选择参与人" @click="clickPicker()">
@@ -175,7 +172,7 @@
                 popoverValue: '',
                 popoverValue: '',
                 popoverShow: false,
                 popoverShow: false,
                 popoverType: '1',
                 popoverType: '1',
-                popoverActions: [{text: '项目名称',type: '1'},{text: JSON.parse(localStorage.userInfo).companyId == '7030' ? '项目令号' : '项目编号',type: '2'}],
+                popoverActions: [{text: '项目名称',type: '1'},{text: '项目编号',type: '2'}],
                 projectVue: null,
                 projectVue: null,
             };
             };
         },
         },

+ 7 - 60
fhKeeper/formulahousekeeper/timesheet_h5/src/views/project/projectInside.vue

@@ -22,7 +22,7 @@
                     </van-cell>
                     </van-cell>
                     <van-cell>
                     <van-cell>
                         <van-row>
                         <van-row>
-                            <van-col span="7">{{user.companyId == '7030' ? '项目令号:' : '项目编号:'}}</van-col>
+                            <van-col span="7">项目编号:</van-col>
                             <van-col span="17">{{projectDetail.projectCode}}</van-col>
                             <van-col span="17">{{projectDetail.projectCode}}</van-col>
                         </van-row>
                         </van-row>
                     </van-cell>
                     </van-cell>
@@ -95,57 +95,7 @@
                             <van-col span="17">¥{{projectDetail.outputValue == null ? '-' : projectDetail.outputValue.toFixed(2)}}</van-col>
                             <van-col span="17">¥{{projectDetail.outputValue == null ? '-' : projectDetail.outputValue.toFixed(2)}}</van-col>
                         </van-row>
                         </van-row>
                     </van-cell>
                     </van-cell>
-
-                    <!-- 威派格 -->
-                <template v-if="user.companyId == 936">
-                    <van-cell>
-                        <van-row>
-                            <van-col span="7">合同编号:</van-col>
-                            <van-col span="17" v-if="projectDetail.projectSeparate">{{projectDetail.projectSeparate.contractCode ? projectDetail.projectSeparate.contractCode : '-'}}</van-col>
-                        </van-row>
-                    </van-cell>
-                    <van-cell>
-                        <van-row>
-                            <van-col span="7">质保开始时间:</van-col>
-                            <van-col span="17" v-if="projectDetail.projectSeparate">{{projectDetail.projectSeparate.warrantyStartDate == null ? '-' : projectDetail.projectSeparate.warrantyStartDate}}</van-col>
-                        </van-row>
-                    </van-cell>
-                    <van-cell>
-                        <van-row>
-                            <van-col span="7">质保截至时间:</van-col>
-                            <van-col span="17" v-if="projectDetail.projectSeparate">{{projectDetail.projectSeparate.warrantyEndDate == null ? '-' : projectDetail.projectSeparate.warrantyEndDate}}</van-col>
-                        </van-row>
-                    </van-cell>
-                    <van-cell>
-                        <van-row>
-                            <van-col span="7">自主项目类别:</van-col>
-                            <van-col span="17" v-if="projectDetail.projectSeparate">{{projectDetail.projectSeparate.projectCategorySub}}</van-col>
-                        </van-row>
-                    </van-cell>
-                    <van-cell>
-                        <van-row>
-                            <van-col span="7">所属大区:</van-col>
-                            <van-col span="17" v-if="projectDetail.projectSeparate">{{projectDetail.projectSeparate.region}}</van-col>
-                        </van-row>
-                    </van-cell>
-                    <van-cell>
-                        <van-row>
-                            <van-col span="7">所属BU:</van-col>
-                            <van-col span="17" v-if="projectDetail.projectSeparate">{{projectDetail.projectSeparate.bu}}</van-col>
-                        </van-row>
-                    </van-cell>
-                </template>
-
-                    <!-- 长沙晶易科技 -->
-                <!-- <template v-if="user.companyId == 428">
-                    <van-cell>
-                        <van-row>
-                            <van-col span="7">项目分组:</van-col>
-                            <van-col span="17" v-if="projectDetail.projectSeparate">{{projectDetail.projectSeparate.projectCategorySub ? projectDetail.projectSeparate.projectCategorySub : '-'}}</van-col>
-                        </van-row>
-                    </van-cell>
-                </template> -->
-
+                   
                     <!-- 相关人员 -->
                     <!-- 相关人员 -->
                     <van-cell>
                     <van-cell>
                         <van-row>
                         <van-row>
@@ -183,7 +133,7 @@
                     </van-cell>
                     </van-cell>
                 </van-tab>
                 </van-tab>
                 <!-- 任务看板 -->
                 <!-- 任务看板 -->
-                <van-tab title="任务看板" v-if="activeFlg">
+                <!-- <van-tab title="任务看板" v-if="activeFlg">
                     <van-cell title="任务分组" :value="inside.taskGroup.active?inside.taskGroup.active.name:''" @click="inside.taskGroup.show = true"></van-cell>
                     <van-cell title="任务分组" :value="inside.taskGroup.active?inside.taskGroup.active.name:''" @click="inside.taskGroup.show = true"></van-cell>
                     <van-popup v-model="inside.taskGroup.show" position="bottom">
                     <van-popup v-model="inside.taskGroup.show" position="bottom">
                         <van-picker
                         <van-picker
@@ -208,9 +158,6 @@
                             </template>
                             </template>
                         </van-picker>
                         </van-picker>
                     </van-popup>
                     </van-popup>
-                    <!-- <van-cell value-class="addtaskvalue">
-                        <van-button plain type="info" class="addtaskbutton" @click="toEditask(null)">新建任务</van-button>
-                    </van-cell> -->
                     <van-icon name="add-o" class="addtaskicon" @click="toEditask(null)" />
                     <van-icon name="add-o" class="addtaskicon" @click="toEditask(null)" />
                     <div class="taskList">
                     <div class="taskList">
                         <van-cell v-for="item in inside.taskList" :key="item.id">
                         <van-cell v-for="item in inside.taskList" :key="item.id">
@@ -227,7 +174,7 @@
                             </div>
                             </div>
                         </van-cell>
                         </van-cell>
                     </div>
                     </div>
-                </van-tab>
+                </van-tab> -->
             </van-tabs>
             </van-tabs>
         </div>
         </div>
     </div>
     </div>
@@ -280,9 +227,9 @@ export default {
                 this.canModParticipator = true
                 this.canModParticipator = true
             }
             }
         }
         }
-        if(this.user.company.packageWorktime == 1) {
-            this.activeFlg = false
-        }
+        // if(this.user.company.packageWorktime == 1) {
+        //     this.activeFlg = false
+        // }
 
 
         this.getProjectDetail()
         this.getProjectDetail()
         this.getLevelList()
         this.getLevelList()

+ 1 - 2
fhKeeper/formulahousekeeper/timesheet_h5/src/views/review/index.vue

@@ -132,9 +132,8 @@
                                 </span>
                                 </span>
                             </span>
                             </span>
                             ]
                             ]
-
                         </div>
                         </div>
-                        <div class="project_title" v-if="item1.projectCode != null" >{{ user.companyId == '7030' ? '项目令号' : '项目编号' }}:{{item1.projectCode}}</div>
+                        <div class="project_title" v-if="item1.projectCode != null" >项目编号:{{item1.projectCode}}</div>
                         <div class="project_title" v-if="item1.subProjectName != null && user.companyId != yuzhongCompId" >子项目:{{item1.subProjectName}}</div>
                         <div class="project_title" v-if="item1.subProjectName != null && user.companyId != yuzhongCompId" >子项目:{{item1.subProjectName}}</div>
                         <div class="project_title" v-if="user.companyId == yuzhongCompId" >角色:{{item1.extraField1?roleList.find(r=>r.value==item1.extraField1).label:''}}</div>
                         <div class="project_title" v-if="user.companyId == yuzhongCompId" >角色:{{item1.extraField1?roleList.find(r=>r.value==item1.extraField1).label:''}}</div>
                         <div class="project_title" v-if="user.company.packageProject==1&&item1.groupName != null" >任务分组:{{item1.groupName}}</div>
                         <div class="project_title" v-if="user.company.packageProject==1&&item1.groupName != null" >任务分组:{{item1.groupName}}</div>