Browse Source

Merge remote-tracking branch 'origin/master'

yusm 5 days ago
parent
commit
d736d3b96e
27 changed files with 268 additions and 92 deletions
  1. 19 0
      fhKeeper/formulahousekeeper/baidu_site/urls.txt
  2. 1 1
      fhKeeper/formulahousekeeper/buildWorkshop.bat
  3. 21 7
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/controller/TaskController.java
  4. 28 17
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  5. 14 9
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java
  6. 2 1
      fhKeeper/formulahousekeeper/management-platform-mld/src/main/resources/mapper/TaskMapper.xml
  7. 6 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  8. 0 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/StagesController.java
  9. 0 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ExcelParserService.java
  10. 1 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java
  11. 14 8
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceMonthlyWorktimeServiceImpl.java
  12. 6 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  13. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/SysConstant.java
  14. 1 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/AttendanceStaffServiceImpl.java
  15. 32 20
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/todayPlan/distribution.vue
  16. 6 1
      fhKeeper/formulahousekeeper/timesheet/src/components/popUpWindowForSelectingPersonnel.vue
  17. 3 0
      fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue
  18. 22 5
      fhKeeper/formulahousekeeper/timesheet/src/views/project/projectInside.vue
  19. 25 3
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue
  20. 6 2
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/dailyReportReview.vue
  21. 3 3
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue
  22. 6 3
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/weekEdit.vue
  23. 6 1
      fhKeeper/formulahousekeeper/timesheet_mld/src/components/taskComponent.vue
  24. 4 2
      fhKeeper/formulahousekeeper/timesheet_mld/src/permissions.js
  25. 13 0
      fhKeeper/formulahousekeeper/timesheet_mld/src/views/task/list.vue
  26. 14 1
      fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/static/index.html
  27. 14 1
      fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/templates/index.html

+ 19 - 0
fhKeeper/formulahousekeeper/baidu_site/urls.txt

@@ -0,0 +1,19 @@
+https://www.ttkuaiban.com/page-list-1.html
+https://www.ttkuaiban.com/page-list-2.html
+https://www.ttkuaiban.com/article-47.html
+https://www.ttkuaiban.com/article-48.html
+https://www.ttkuaiban.com/article-49.html
+https://www.ttkuaiban.com/article-50.html
+https://www.ttkuaiban.com/article-51.html
+https://www.ttkuaiban.com/article-52.html
+https://www.ttkuaiban.com/article-53.html
+https://www.ttkuaiban.com/article-54.html
+https://www.ttkuaiban.com/article-55.html
+https://www.ttkuaiban.com/article-56.html
+https://www.ttkuaiban.com/article-57.html
+https://www.ttkuaiban.com/article-58.html
+https://www.ttkuaiban.com/article-60.html
+https://www.ttkuaiban.com/article-61.html
+https://www.ttkuaiban.com/article-62.html
+https://www.ttkuaiban.com/article-63.html
+https://www.ttkuaiban.com/article-64.html

+ 1 - 1
fhKeeper/formulahousekeeper/buildWorkshop.bat

@@ -1,6 +1,6 @@
 cd timesheet-workshop
 call build.bat
-cd ../timesheet-workshop_h5
+cd ../timesheet-workshop-h5
 call build.bat
 cd ../management-workshop
 call build_package.bat

+ 21 - 7
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/controller/TaskController.java

@@ -62,13 +62,13 @@ import static com.management.platform.controller.TaskDailyAllocateController.isT
 @Slf4j
 public class TaskController {
     //任务状态,0-进行中 1-已完成 2-已撤销 3-待第一审核人审核 4-待第二审核人审核 5-第一审校人驳回 6-第二审校人驳回
-    public static final Integer STATUS_DOING = 0;
-    public static final Integer STATUS_FINISH = 1;
-    public static final Integer STATUS_CANCEL = 2;
-    public static final Integer STATUS_FIRST_CHECK = 3;
-    public static final Integer STATUS_SECOND_CHECK = 4;
-    public static final Integer STATUS_FIRST_REJECT = 5;
-    public static final Integer STATUS_SECOND_REJECT = 6;
+    public static final int STATUS_DOING = 0;
+    public static final int STATUS_FINISH = 1;
+    public static final int STATUS_CANCEL = 2;
+    public static final int STATUS_FIRST_CHECK = 3;
+    public static final int STATUS_SECOND_CHECK = 4;
+    public static final int STATUS_FIRST_REJECT = 5;
+    public static final int STATUS_SECOND_REJECT = 6;
 
     @Resource
     private HttpServletRequest request;
@@ -1930,6 +1930,7 @@ public class TaskController {
         titleList.add("一级审核人");
         titleList.add("二级审核人");
         titleList.add("审核状态");
+        titleList.add("创建人");
         titleList.add("开始时间");
         titleList.add("截止时间");
         boolean anyMatch = projectList.stream().anyMatch(p -> p.getDeptId() != null && !StringUtils.isEmpty(p.getDeptId()));
@@ -1999,6 +2000,19 @@ public class TaskController {
                         break;
                 }
             }
+
+            //创建人
+            if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                String createrId = task.getCreaterId();
+                User user = userMapper.selectById(createrId);
+                item.add((String)("$userName="+user.getCorpwxUserid()+"$"));
+
+            }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
+                item.add((String)("$userName="+task.getCreaterName()+"$"));
+            }else {
+                item.add(task.getCreaterName());
+            }
+
             item.add(task.getStartDate()==null?"":df.format(task.getStartDate()));
             item.add(task.getEndDate()==null?"":df.format(task.getEndDate()));
             if(anyMatch){

+ 28 - 17
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -13636,15 +13636,23 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         User targetUser = userMapper.selectById(request.getHeader("token"));
         List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "全部部门FTE计划报表");
         List<SysRichFunction> functionDeptList = sysFunctionMapper.getRoleFunctions(targetUser.getRoleId(), "负责部门FTE计划报表");
+        String startDate = null;
+        String endDate = null;
+        LocalDate timeStart = LocalDate.parse(monthStart, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+        LocalDate timeEnd = LocalDate.parse(monthEnd, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+        startDate = timeStart.with(TemporalAdjusters.firstDayOfMonth()).toString();
+        endDate = timeEnd.with(TemporalAdjusters.lastDayOfMonth()).toString();
+        int days = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, 0).size();
+        TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", targetUser.getCompanyId()));
+        Float monthTime = days * allDay.getAllday();
         List<Integer> deptIds=null;
         List<Department> allDepartmentList=departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",targetUser.getCompanyId()));
         List<Department> userDepartmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", targetUser.getId()).eq("company_id",targetUser.getCompanyId()));
         List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("other_manager_id", targetUser.getId()));
         //判断查看权限
-        if(functionAllList.size()==0){
+        if(functionAllList.isEmpty()){
             deptIds=new ArrayList<>();
-            deptIds.add(-1);
-            if(functionDeptList.size()>0){
+            if(!functionDeptList.isEmpty()){
                 List<Integer> collect = userDepartmentList.stream().map(dm -> dm.getDepartmentId()).distinct().collect(Collectors.toList());
                 List<Integer> otherCollect = departmentOtherManagerList.stream().map(dom -> dom.getDepartmentId()).distinct().collect(Collectors.toList());
                 collect.addAll(otherCollect);
@@ -13653,24 +13661,27 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     List<Integer> branchDepartment = getBranchDepartment(integer, allDepartmentList);
                     deptIds.addAll(branchDepartment);
                 }
+                if (deptIds.isEmpty()){
+                    HashMap<String, Object> map = new HashMap<>();
+                    map.put("resultList", new ArrayList<Object>());
+                    map.put("total",0);
+                    map.put("monthTime",monthTime);
+                    httpRespMsg.data = map;
+                    return httpRespMsg;
+                }
+            }
+
+        }else {
+            if(departmentId!=null){
+                deptIds=new ArrayList<>();
+                List<Integer> branchDepartment = getBranchDepartment(departmentId, allDepartmentList);
+                deptIds.addAll(branchDepartment);
             }
         }
-        if(departmentId!=null){
-            deptIds=new ArrayList<>();
-            List<Integer> branchDepartment = getBranchDepartment(departmentId, allDepartmentList);
-            deptIds.addAll(branchDepartment);
-        }
+
+
         long total  = 0;
         List<Map<String,Object>> resultList = null;
-        String startDate = null;
-        String endDate = null;
-        LocalDate timeStart = LocalDate.parse(monthStart, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
-        LocalDate timeEnd = LocalDate.parse(monthEnd, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
-        startDate = timeStart.with(TemporalAdjusters.firstDayOfMonth()).toString();
-        endDate = timeEnd.with(TemporalAdjusters.lastDayOfMonth()).toString();
-        int days = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, 0).size();
-        TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", targetUser.getCompanyId()));
-        Float monthTime = days * allDay.getAllday();
         if(pageIndex!=null&&pageSize!=null){
             Integer size=pageSize;
             Integer start=(pageIndex-1)*size;

+ 14 - 9
fhKeeper/formulahousekeeper/management-platform-mld/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java

@@ -98,6 +98,8 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
     @Resource
     private SysFunctionService sysFunctionService;
     @Resource
+    private SysRoleFunctionService sysRoleFunctionService;
+    @Resource
     private DepartmentService departmentService;
     @Resource
     private DepartmentOtherManagerMapper departmentOtherManagerMapper;
@@ -1650,25 +1652,28 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
     public HttpRespMsg taskPlanPassOrReject(Integer taskId,boolean type, String reason, HttpServletRequest request) {
         HttpRespMsg msg = new HttpRespMsg();
         String userId = request.getHeader("Token");
+        User user = userMapper.selectById(userId);
         Task task = taskMapper.selectById(taskId);
         Project project = projectMapper.selectById(task.getProjectId());
-        List<TaskExecutor> executorList = taskExecutorMapper.selectList(new QueryWrapper<TaskExecutor>().eq("task_id", task.getId()));;
+        List<TaskExecutor> executorList = taskExecutorMapper.selectList(new QueryWrapper<TaskExecutor>().eq("task_id", task.getId()));
+        SysRoleFunction roleFunction = sysRoleFunctionService.getOne(new QueryWrapper<SysRoleFunction>().eq("role_id", user.getRoleId()).eq("function_id", 120));
         if (task.getTaskStatus() == TaskController.STATUS_FIRST_CHECK || task.getTaskStatus() == TaskController.STATUS_SECOND_CHECK){
             if (task.getTaskStatus() == TaskController.STATUS_FIRST_CHECK){
                 //校验第一审核人
-                if (!userId.equals(project.getInchargerId())){
-                    msg.setError("当前人员不是第一审核人,不能审核");
+                if (!userId.equals(project.getInchargerId())&&roleFunction==null){
+                    msg.setError("当前人员不是第一审核人也无审核计划权限,不能审核");
                     return msg;
                 }
-            } else if (task.getTaskStatus() == TaskController.STATUS_SECOND_CHECK){
+            }
+            else if (task.getTaskStatus() == TaskController.STATUS_SECOND_CHECK){
                 //校验第二审核人
                 executorList.forEach(e->{
-                    if (userId.equals(e.getSecondAuditorId())){
+                    if (userId.equals(e.getSecondAuditorId())||roleFunction!=null){
                         e.setSecAuditor(true);
                     }
                 });
-                if (executorList.stream().noneMatch(e->e.isSecAuditor())) {
-                    msg.setError("当前人员不是第二审核人,不能审核");
+                if (executorList.stream().noneMatch(e->e.isSecAuditor())&&roleFunction==null) {
+                    msg.setError("当前人员不是第二审核人也无审核计划权限,不能审核");
                     return msg;
                 }
             }
@@ -1778,7 +1783,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
 
                 String infoMsg = project.getProjectName() + "项目的FTE计划审批任务" +
                         (executorNames.isEmpty() ? "" : ",执行人有:" + executorNames) +
-                        ",工作计划被一级审核人驳回";
+                        ",工作计划在待一级审核人审核时被"+user.getName()+"驳回";
                 information.setMsg(infoMsg);
                 information.setType(11);
                 information.setJumpType(2);
@@ -1808,7 +1813,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
 
                 String infoMsg = project.getProjectName() + "项目的FTE计划审批任务" +
                         (executorNames.isEmpty() ? "" : ",执行人有:" + executorNames) +
-                        ",工作计划被二级审核人驳回";
+                        ",工作计划在待二级审核人审核时被"+user.getName()+"驳回";
                 information.setMsg(infoMsg);
                 information.setType(11);
                 information.setJumpType(2);

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform-mld/src/main/resources/mapper/TaskMapper.xml

@@ -150,6 +150,7 @@
         <result column="second_auditor_id" property="secondAuditorId" />
         <result column="second_auditor_name" property="secondAuditorName" />
         <result column="reject_user_name" property="rejectUserName" />
+        <result column="creater_name" property="createrName" />
     </resultMap>
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
@@ -847,7 +848,7 @@
 
     <select id="getMyAuditTaskList"
             resultMap="AuditorResultMap">
-        SELECT task.*, task_executor.`first_auditor_id`, group_concat(task_executor.`second_auditor_id`) as second_auditor_id, u1.name AS first_auditor_name, group_concat(u2.`name`) AS second_auditor_name, project.`project_name`, stages.stages_name
+        SELECT task.*, task_executor.`first_auditor_id`, group_concat(task_executor.`second_auditor_id`) as second_auditor_id, u1.name AS first_auditor_name, group_concat(u2.`name`) AS second_auditor_name, project.`project_name`, stages.stages_name,task.creater_name
         FROM task LEFT JOIN task_executor ON task.id = task_executor.`task_id`
         left join project on project.id = task.`project_id`
         LEFT JOIN `user` u1 ON u1.id = task_executor.`first_auditor_id` LEFT JOIN `user` u2 ON u2.id = task_executor.`second_auditor_id`

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

@@ -1628,6 +1628,12 @@ public class ReportController {
                         httpRespMsg.setError("当前选择了带车间的工时分组,对应的工单号必填");
                         return httpRespMsg;
                     }
+                    //入库后工时 有工单号的情况 禁止提交
+                    if (group != null && group.getName().equals("入库后工时") && !StringUtils.isEmpty(report.getExtraField4())) {
+                        HttpRespMsg httpRespMsg = new HttpRespMsg();
+                        httpRespMsg.setError("入库后工时禁止填报工单号");
+                        return httpRespMsg;
+                    }
                 }
                 if (!StringUtils.isEmpty(report.getExtraField4()) && StringUtils.isEmpty(report.getExtraField5())) {
                     HttpRespMsg httpRespMsg = new HttpRespMsg();

+ 0 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/StagesController.java

@@ -191,7 +191,6 @@ public class StagesController {
         //按任务分组查看
         queryWrapper.eq("group_id", item.getGroupId());
         queryWrapper.isNull("parent_tid");
-        queryWrapper.eq("is_task_plan",0);
         //排序根据前端传过来的字段
         if (isDesc) {
             queryWrapper.orderByDesc(order);

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

@@ -53,7 +53,6 @@ public class ExcelParserService {
 
                     // 解析时间记录
                     String timeRecord = getCellValue(timeCell);
-                    System.out.println("dateStr="+dateStr+", TImeRecord:"+timeRecord);
                     if (timeRecord == null || timeRecord.isEmpty() || "-".equals(timeRecord)) {
                         continue;
                     }
@@ -150,7 +149,6 @@ public class ExcelParserService {
                 if (DateUtil.isCellDateFormatted(cell)) {
                     java.util.Date date = cell.getDateCellValue();
                     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");
-                    System.out.println("这是datecell:"+cell.getDateCellValue().toString());
                     return simpleDateFormat.format(date);
                 } else {
                     return String.valueOf(cell.getNumericCellValue());

+ 1 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java

@@ -2281,7 +2281,6 @@ public class DingDingServiceImpl implements DingDingService {
         //考虑到可能加班到凌晨,需要设置第二天凌晨6点为下班时间
         endDate = LocalDate.parse(endDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")).plusDays(1).toString();
         req.setCheckDateTo(endDate+ " 06:00:00");
-        System.out.println("请求考勤attendance/listRecord:startTime="+req.getCheckDateFrom()+", endTime="+req.getCheckDateTo());
         req.setIsI18n(false);
         OapiAttendanceListRecordResponse rsp = null;
         try {
@@ -2361,7 +2360,7 @@ public class DingDingServiceImpl implements DingDingService {
                                 long timeInSeconds = localDateTime.toEpochSecond(ZoneOffset.UTC);
                                 onDutyEarleast.setUserCheckTime(timeInSeconds*1000);
                             }
-                            if (8138 == dingding.getCompanyId()) {
+                            if (SysConstant.ZhengBeiCompIds.contains(dingding.getCompanyId())) {
                                 //休息时间段:苏州正北-午休12:00-13:00, 晚修:17:30-18:00
                                 double workHours = ExcelParserService.calculateZhengBeiWorkHours(timeItem.getStartTime(), timeItem.getEndTime());
                                 timeItem.setWorkHours((float)workHours);

+ 14 - 8
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceMonthlyWorktimeServiceImpl.java

@@ -51,7 +51,7 @@ public class FinanceMonthlyWorktimeServiceImpl extends ServiceImpl<FinanceMonthl
     public static final String TIME_TYPE_DEBUG = "调试工时(车间)";
     public static final String TIME_TYPE_WAIT = "等料工时(车间)";
     public static final String TIME_TYPE_BUSTRIP = "出差工时(含上机、售后工时)";
-    public static final String TIME_TYPE_CLEAN = "清洁打包工时(入库后)";
+    public static final String TIME_TYPE_CLEAN = "入库后工时";
 
     static List<String> groupNameList = new ArrayList<>();
     {
@@ -206,7 +206,7 @@ public class FinanceMonthlyWorktimeServiceImpl extends ServiceImpl<FinanceMonthl
             //查询日报数据
             List<Department> departmentList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getCompanyId, user.getCompanyId()));
             List<Project> projectList = projectMapper.selectList(new LambdaQueryWrapper<Project>().eq(Project::getCompanyId, user.getCompanyId()));
-            List<Project> publicProjectList = projectList.stream().filter(p -> p.getIsPublic() == 1).collect(Collectors.toList());
+            List<Project> publicProjectList = projectList.stream().filter(p -> p.getIsPublic() == 1 && !"HH-QJ-0000001".equals(p.getProjectCode())).collect(Collectors.toList());
             List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().select(User::getId, User::getName, User::getDepartmentId).eq(User::getCompanyId, user.getCompanyId()));
 
             List<Report> reportList = reportMapper.getReportProjectGroupDetailList(user.getCompanyId(), firstDayOfMonth, lastDayOfMonth, groupNameList);
@@ -300,7 +300,8 @@ public class FinanceMonthlyWorktimeServiceImpl extends ServiceImpl<FinanceMonthl
                             List<User> deptUserList = userList.stream().filter(u -> u.getDepartmentId().equals(deptId)).collect(Collectors.toList());
                             List<String> deptUserIds = deptUserList.stream().map(User::getId).collect(Collectors.toList());
                             List<Report> deptUserReportGroupList = reportMapper.selectList(new QueryWrapper<Report>().select("project_id,extra_field4,extra_field5,dept_id, sum(working_time) working_time")
-                                    .in("creator_id", deptUserIds).between("create_date", firstDayOfMonth, lastDayOfMonth).isNotNull("extra_field4").ne("extra_field4", "")
+                                    .in("creator_id", deptUserIds).between("create_date", firstDayOfMonth, lastDayOfMonth)
+                                    .isNotNull("extra_field4").ne("extra_field4", "").eq("state", 1)
                                     .groupBy("project_id,extra_field4,extra_field5"));
                             double totalTime = deptUserReportGroupList.stream().mapToDouble(Report::getWorkingTime).sum();
                             System.out.println("处理公共工时分摊,总工时=="+totalTime);
@@ -322,7 +323,7 @@ public class FinanceMonthlyWorktimeServiceImpl extends ServiceImpl<FinanceMonthl
                             //处理非三大中心的公共工时分摊,按本部门的工单工时来统计
                             List<Report> deptUserReportGroupList = reportMapper.selectList(new QueryWrapper<Report>().select("project_id,extra_field4,extra_field5,dept_id, sum(working_time) working_time")
                                     .eq("dept_id", deptId).between("create_date", firstDayOfMonth, lastDayOfMonth).isNotNull("extra_field4").ne("extra_field4", "")
-                                    .eq("is_assist", 0)
+                                    .eq("is_assist", 0).eq("state", 1)
                                     .groupBy("project_id,extra_field4,extra_field5"));
                             double totalTime = deptUserReportGroupList.stream().mapToDouble(Report::getWorkingTime).sum();
                             System.out.println("处理非三大中心公共工时分摊,总工时=="+totalTime);
@@ -560,7 +561,9 @@ public class FinanceMonthlyWorktimeServiceImpl extends ServiceImpl<FinanceMonthl
     @Override
     public HttpRespMsg getUnDistriibutedPublicTime(Integer fmwId, HttpServletRequest request) {
         FinanceMonthlyWorktime financeMonthlyWorktime = financeMonthlyWorktimeMapper.selectById(fmwId);
-        List<Project> publicProjectList = projectMapper.selectList(new LambdaQueryWrapper<Project>().eq(Project::getIsPublic, 1).eq(Project::getCompanyId, financeMonthlyWorktime.getCompanyId()));
+        List<Project> publicProjectList = projectMapper.selectList(new LambdaQueryWrapper<Project>().eq(Project::getIsPublic, 1)
+                        .ne(Project::getProjectCode, "HH-QJ-0000001")//请假项目排除掉
+                .eq(Project::getCompanyId, financeMonthlyWorktime.getCompanyId()));
         List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().select(User::getId, User::getName, User::getDepartmentId).eq(User::getCompanyId, financeMonthlyWorktime.getCompanyId()));
 // 处理公共项目工时分摊
         List<Integer> publicProjectIds = publicProjectList.stream()
@@ -577,9 +580,11 @@ public class FinanceMonthlyWorktimeServiceImpl extends ServiceImpl<FinanceMonthl
             //TODO: 需确认,员工填报公共项目工时的时候,会选择到工单吗?
             //研发中心的公共工时不参与分摊; deptId=9508
             int reserveDeptId = 9508;
+            //请假项目不参与
             List<Report> publicReportList = reportMapper.selectList(
                     new LambdaQueryWrapper<Report>().select(Report::getCreatorId, Report::getDeptId, Report::getWorkingTime).eq(Report::getState, 1)
-                            .ne(Report::getDeptId, reserveDeptId)
+                            .ne(Report::getDeptId, reserveDeptId).ne(Report::getProjectId, null)
+
                             .in(Report::getProjectId, publicProjectIds).between(Report::getCreateDate, firstDayOfMonth, lastDayOfMonth));
             //按照人员所在的部门进行分组,汇总,如果公共项目没有工单,此步骤可以省略
             publicReportList.forEach(report -> {
@@ -614,7 +619,8 @@ public class FinanceMonthlyWorktimeServiceImpl extends ServiceImpl<FinanceMonthl
                         List<User> deptUserList = userList.stream().filter(u -> u.getDepartmentId().equals(deptId)).collect(Collectors.toList());
                         List<String> deptUserIds = deptUserList.stream().map(User::getId).collect(Collectors.toList());
                         List<Report> deptUserReportGroupList = reportMapper.selectList(new QueryWrapper<Report>().select("project_id,extra_field4,extra_field5,dept_id, sum(working_time) working_time")
-                                .in("creator_id", deptUserIds).between("create_date", firstDayOfMonth, lastDayOfMonth).isNotNull("extra_field4").ne("extra_field4", "")
+                                .in("creator_id", deptUserIds).between("create_date", firstDayOfMonth, lastDayOfMonth)
+                                .isNotNull("extra_field4").ne("extra_field4", "").eq("state", 1)
                                 .groupBy("project_id,extra_field4,extra_field5"));
                         double totalTime = deptUserReportGroupList.stream().mapToDouble(Report::getWorkingTime).sum();
                         System.out.println("处理公共工时分摊,总工时=="+totalTime);
@@ -627,7 +633,7 @@ public class FinanceMonthlyWorktimeServiceImpl extends ServiceImpl<FinanceMonthl
                         //处理非三大中心的公共工时分摊,按本部门的工单工时来统计
                         List<Report> deptUserReportGroupList = reportMapper.selectList(new QueryWrapper<Report>().select("project_id,extra_field4,extra_field5,dept_id, sum(working_time) working_time")
                                 .eq("dept_id", deptId).between("create_date", firstDayOfMonth, lastDayOfMonth).isNotNull("extra_field4").ne("extra_field4", "")
-                                .eq("is_assist", 0)
+                                .eq("is_assist", 0).eq("state", 1)
                                 .groupBy("project_id,extra_field4,extra_field5"));
                         double totalTime = deptUserReportGroupList.stream().mapToDouble(Report::getWorkingTime).sum();
                         System.out.println("处理非三大中心公共工时分摊,总工时=="+totalTime);

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

@@ -2294,6 +2294,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                             double wh = first.get().getWorkHours();
                             //赋值打卡时长
                             map.put("cardHours", wh);
+                            map.put("startTime", first.get().getStartTime());
+                            map.put("endTime", first.get().getEndTime());
                         }
                     }
                 }
@@ -2312,6 +2314,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                             double wh = first.get().getWorkHours();
                             //赋值打卡时长
                             map.put("cardHours", wh);
+                            map.put("startTime", first.get().getStartTime());
+                            map.put("endTime", first.get().getEndTime());
                         }
                     }
                 }
@@ -2330,6 +2334,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                             double wh = first.get().getWorkHours();
                             //赋值打卡时长
                             map.put("cardHours", wh);
+                            map.put("startTime", first.get().getStartTime());
+                            map.put("endTime", first.get().getEndTime());
                         }
                     }
                 }

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/SysConstant.java

@@ -4,5 +4,5 @@ import java.util.Arrays;
 import java.util.List;
 
 public class SysConstant {
-    public static final List<Integer> ZhengBeiCompIds = Arrays.asList(new Integer[]{7703, 8138, 8261});
+    public static final List<Integer> ZhengBeiCompIds = Arrays.asList(new Integer[]{7703, 8138, 8261,8264,8268});
 }

+ 1 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/AttendanceStaffServiceImpl.java

@@ -1260,7 +1260,7 @@ public class AttendanceStaffServiceImpl extends ServiceImpl<AttendanceStaffMappe
                                 .append("-").append(applyForm.getEndTime().format(formatter2));
                         if (applyForm.getType()==3) {
                             stringBuilder.append(applyForm.getApplyBillName());
-                            if ((applyForm.getStartTime().getHour()==8||applyForm.getEndTime().getHour()==17)&&staff.getAttendanceTypeName().equals("班次异常")){
+                            if (applyForm.getStartTime() != null && applyForm.getEndTime() != null && staff.getAttendanceTypeName() != null && (applyForm.getStartTime().getHour() == 8 || applyForm.getEndTime().getHour() == 17) && staff.getAttendanceTypeName().equals("班次异常")){
                                 staff.setAttendanceType(QING_JIA);
                                 if (applyForm.getStartTime().getHour()==8) {
                                     staff.setClockStartTime(LocalDateTime.of(clockDate, LocalTime.of(8, 0)));

+ 32 - 20
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/todayPlan/distribution.vue

@@ -14,20 +14,20 @@
         <div>{{ productSchedulingNum }}</div>
         <div>{{ dates }}</div>
       </div>
-      <van-button @click="batchUnReceive()" :disabled="canBatchOperationsBePerformed" type="info" size="small">批量拒收</van-button>
+      <!-- <van-button @click="batchUnReceive()" :disabled="canBatchOperationsBePerformed" type="info" size="small">批量拒收</van-button> -->
+      <van-button @click="batchUnReceive()" :disabled="!isCanAgree || distributionList.length == 0" type="info" size="small">批量拒收</van-button>
     </div>
     
     <div class="distribution_con contentRoll">
       <div class="distribution_box" v-for="item,index in distributionList" :key="index">
         <div class="distribution_ItemBom">
-          <!-- <van-checkbox v-if="todayAndTomorrow" :disabled="item.checkboxDisabled  || (item.teamNames&&item.teamNames.indexOf(user.name) == -1)"  v-model="item.prodProcedure.isSelected"  @click="itemChecked" shape="square"> -->
-          <template v-if="user.workTypeId == 1">
-            <van-checkbox v-if="todayAndTomorrow" v-model="item.prodProcedure.isSelected"  @click="itemChecked" shape="square">
-            </van-checkbox>
-          </template>
-          <template v-if="user.workTypeId != 1">
+          <div class="distribution_ItemBomFlex">
             <van-checkbox v-if="todayAndTomorrow" :disabled="item.checkboxDisabled  || (item.teamNames&&item.teamNames.indexOf(user.name) == -1)"  v-model="item.prodProcedure.isSelected"  @click="itemChecked" shape="square"></van-checkbox>
-          </template>
+            <template v-if="user.workTypeId == 1 && (isCanAgree || !(item.prodProcedureTeamList || []).length)">
+              <van-button style="margin-right: 10px;" @click="cancelReassignment(item)" type="info" size="small" v-if="item.isTransfer == 1">取消改派</van-button>
+              <van-button style="margin-right: 10px;" @click="showReassignment(item)" type="info" size="small" v-if="item.isTransfer == 0">改派</van-button>
+            </template>
+          </div>
           <div class="PlanItem">
             <span>{{item.prodProcedure.seq}}. {{ item.prodProcedure.name }}</span>
           </div>
@@ -88,13 +88,13 @@
   <div class="formBatch" v-if="todayAndTomorrow">
         <van-checkbox v-model="isAllChecked" :disabled="distributionList.length == 0" @click="allChecked" shape="square" style="padding-left:3vw"></van-checkbox>
         <div style="padding:1vh 2vw">
-          <template v-if="user.workTypeId == 1">
+          <!-- <template v-if="user.workTypeId == 1">
             <van-button style="margin-right: 10px;" @click="cancelReassignment()" :disabled="doYouWantToCancelTheReassignment" type="info" size="small">取消改派</van-button>
             <van-button style="margin-right: 10px;" @click="showReassignment()" :disabled="isItPossibleToReassign" type="info" size="small">改派</van-button>
-          </template>
+          </template> -->
           
-          <van-button style="margin-right: 10px;" @click="batchReceive()" :disabled="canBatchOperationsBePerformed" type="info" size="small">批量接收</van-button>
-          <van-button @click="cancellationReceiveBatch()" :disabled="canBatchOperationsBePerformed" type="info" size="small">批量取消接收</van-button>
+          <van-button style="margin-right: 10px;" @click="batchReceive()" :disabled="!isCanAgree || distributionList.length == 0" type="info" size="small">批量接收</van-button>
+          <van-button @click="cancellationReceiveBatch()" :disabled="!isCanAgree || distributionList.length == 0" type="info" size="small">批量取消接收</van-button>
           
           <!-- <van-button @click="batchAgree(false)" :disabled="!isCanAgree || distributionList.length == 0" type="danger" size="small" style="margin-left:2vw">批量驳回</van-button> -->
         </div>
@@ -156,6 +156,7 @@ export default {
       dropDownSelectionValue: 2,
 
       deptId: '',
+      reassignRow: {}
     };
   },
   computed: {
@@ -221,10 +222,12 @@ export default {
     this.getPeople()
   },
   methods: {
-    cancelReassignment() {
-      const selectedData = this.distributionList.filter(item => item.prodProcedure && item.prodProcedure.isSelected)
-      const str = (selectedData || []).map(item => item.prodProcedure && item.prodProcedure.name).join(',')
-      const ids = (selectedData || []).map(item => item.id).join(',')
+    cancelReassignment(row) {
+      // const selectedData = this.distributionList.filter(item => item.prodProcedure && item.prodProcedure.isSelected)
+      // const str = (selectedData || []).map(item => item.prodProcedure && item.prodProcedure.name).join(',')
+      // const ids = (selectedData || []).map(item => item.id).join(',')
+      const str = row.prodProcedure.name
+      const ids = row.id
       Dialog.confirm({
         title: '取消改派',
         message: `确定取消【${str}】改派吗?`,
@@ -249,9 +252,11 @@ export default {
     },
     changeDepartmentSelection(list) {
       const { value, label } = list[0] || {}
-      const selectedData = this.distributionList.filter(item => item.prodProcedure && item.prodProcedure.isSelected)
-      const str = (selectedData || []).map(item => item.prodProcedure && item.prodProcedure.name).join(',')
-      const ids = (selectedData || []).map(item => item.id).join(',')
+      // const selectedData = this.distributionList.filter(item => item.prodProcedure && item.prodProcedure.isSelected)
+      // const str = (selectedData || []).map(item => item.prodProcedure && item.prodProcedure.name).join(',')
+      // const ids = (selectedData || []).map(item => item.id).join(',')
+      const str = this.reassignRow.prodProcedure.name
+      const ids = this.reassignRow.id
       Dialog.confirm({
         title: '改派',
         message: `确定将【${str}】改派给【${label}】部门吗?`,
@@ -276,7 +281,8 @@ export default {
         // on cancel
       });
     },
-    showReassignment() {
+    showReassignment(row) {
+      this.reassignRow = { ...row }
       this.popupDepartmentShow = true
     },
     cancellationReceiveBatch(){
@@ -693,6 +699,12 @@ export default {
           display: flex;
           flex-wrap: wrap;
           padding: 0px 6px 6px 6px;
+          .distribution_ItemBomFlex {
+            width: 100%;
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+          }
 
           .PlanItem {
             width: 50%;

+ 6 - 1
fhKeeper/formulahousekeeper/timesheet/src/components/popUpWindowForSelectingPersonnel.vue

@@ -3,7 +3,7 @@
     @close="$emit('input', false)" append-to-body top="5.6vh">
     <div class="theContent">
       <div class="theContent-input">
-        <el-input placeholder="请输入内容" v-model.trim="filterText" class="input-with-select"
+        <el-input placeholder="请输入内容" ref="focusOnInput" v-model.trim="filterText" class="input-with-select"
           @keyup.enter.native="nameSearch()">
           <el-button slot="append" icon="el-icon-search" @click="nameSearch()"></el-button>
         </el-input>
@@ -69,6 +69,11 @@ export default {
   watch: {
     value(newVal) {
       this.dialogVisible = newVal
+      if(newVal) {
+        this.$nextTick(() => {
+          this.$refs.focusOnInput.focus()
+        })
+      }
     },
     filterText(val) {
       if (this.user.userNameNeedTranslate != 1) {

+ 3 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -5246,6 +5246,9 @@ export default {
       return sums;
     },
     adjustWorkingHours(row, title = '', value, filed) {
+      if(this.obtainMonthlyFinancialStatementsRows.status == 1) {
+        return
+      }
       this.adjustWorkingHoursRow = {
         ...row,
         filed,

+ 22 - 5
fhKeeper/formulahousekeeper/timesheet/src/views/project/projectInside.vue

@@ -1347,7 +1347,9 @@
                 createGroupWay:'new',
                 modGroupDialog:false,
                 subTaskVisible:false,
-                orderList:[{id:"seq",name:this.$t('manuallydragthesequence'),isDesc:false},{id:"create_date",name:this.$t('creationtimeisthelatest'),isDesc:true},
+                orderList:[{id:"seq",name:this.$t('manuallydragthesequence'),isDesc:false},
+                {id:"create_date",name:this.$t('creationtimeisthelatest'),isDesc:true},
+                {id:"indate",name:'创建时间最早',isDesc:false},
                                 {id:"end_date",name:this.$t('deadlineisthelatest'),isDesc:true},
                                 {id:"task_level",name:this.$t('highestpriority'),isDesc:true}],
                 order:"seq",
@@ -3208,8 +3210,14 @@
             },
             viewChange(index, indexPath) {
                 this.groupType = 1;
-                this.order = "create_date";
-                this.isDesc = true;
+                if (this.user.companyId == 7757) {
+                    this.order = "indate";
+                    this.isDesc = false;
+                } else {
+                    this.order = "create_date";
+                    this.isDesc = true;
+                }
+                
                 this.selectedGroup = this.viewList.filter(g=>g.id == index)[0];
                 this.getViewTaskList();
                 this.displayTable = true;
@@ -3218,8 +3226,14 @@
             groupChange(index, indexPath) {
                 console.log('店家了')
                 this.groupType = 0;
-                this.order = "seq";
-                this.isDesc = false;
+                if (this.user.companyId == 7757) {
+                    this.order = "indate";
+                    this.isDesc = false;
+                } else {
+                    this.order = "seq";
+                    this.isDesc = false;
+                }
+                
                 this.selectedGroup = this.groupList.filter(g=>g.id == index)[0];
                 this.groupResponsibleId = this.selectedGroup.inchargerId
                 this.getStageList();
@@ -4004,6 +4018,9 @@
         mounted() {
             this.curProjectId = parseInt(this.$route.params.id);
             this.activeName = this.$route.path.split("/")[1];
+            if (this.user.companyId == 7757) {
+                this.order = "indate";
+            }
             this.getDetail();
             this.getUsers();
             this.getMyProjectList();

+ 25 - 3
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -1284,7 +1284,7 @@
 
         <!--导出报表条件选择 -->
         <el-dialog :title="$t('textLink.exportWork')" v-if="exportDialog" :visible.sync="exportDialog" customClass="customWidth" width="500px">
-            <el-form ref="form3" :model="exportParam" >
+            <el-form ref="form3" :model="exportParam" label-width="105px">
                 <el-form-item prop="projectId" :label="$t('defaultText.selectProject')">
                     <el-select v-model="exportParam.projectId" :placeholder="$t('other.allProject')"  clearable filterable style="width:350px;">
                         <el-option v-for="item in projectList"  :key="item.id" :label="item.projectName" :value="item.id"></el-option>
@@ -1314,7 +1314,7 @@
                 </el-form-item>
 
                 <el-form-item :label="customConfigurationRow.name" v-if="customConfigurationRow.name">
-                    <el-select v-model="exportParam.plate" placeholder="请选择"  clearable filterable>
+                    <el-select v-model="exportParam.plate" placeholder="请选择"  clearable filterable style="width:350px;">
                         <el-option v-for="item in customConfigurationRow.subUserCustomList || []"  :key="item.id" :label="item.name" :value="item.newId"></el-option>
                     </el-select>
                 </el-form-item>
@@ -4421,7 +4421,8 @@
           // month: this.date,
           startDate: this.WorktimeDatepickValue[0],
           endDate: this.WorktimeDatepickValue[1],
-          onlyHaveAttendance: this.onlyHaveAttendance?1:0
+          onlyHaveAttendance: this.onlyHaveAttendance?1:0,
+          noReportDeptId: this.deptIdForNoReport.length>0?this.deptIdForNoReport[this.deptIdForNoReport.length-1]:null
         },
         (res) => {
           if (res.code == "ok") {
@@ -5009,6 +5010,8 @@
                     }
                     this.jsTime = this.workForm.totalDuration * days;
                 }
+
+                this.seleChn()
             },
 
             // 是否加班的单机事件
@@ -6849,6 +6852,9 @@
                             if (this.isSubstitude && this.user.timeType.showCorpwxCardtime) {
                                 this.workForm.showRefresh = true;
                             }
+                            if(this.user.timeType.type == 3) {
+                                this.workForm.totalDuration = this.user.timeType.allday
+                            }
                     if (this.timeBasecostList&&this.timeBasecostList.length>0) {
                         this.workForm.domains[0].basecostId = this.timeBasecostList[0].id;
                     }        
@@ -7195,6 +7201,14 @@
                         });
                         return
                     }
+
+                    if(taskGroupRow.name.indexOf('入库后工时') != '-1' && extraField4) {
+                        this.$message({
+                            message: `入库后工时不能关联工单`,
+                            type: "error"
+                        });
+                        return
+                    }
                 }
                 
                 this.tianxieDialogVisible = false
@@ -9020,6 +9034,14 @@
                                     });
                                     return
                                 }
+
+                                if(taskGroupRow.name.indexOf('入库后工时') != '-1' && extraField4) {
+                                    this.$message({
+                                        message: `入库后工时不能关联工单`,
+                                        type: "error"
+                                    });
+                                    return
+                                }
                             }
                         }
 

+ 6 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/dailyReportReview.vue

@@ -237,7 +237,11 @@
               </el-table-column>
               <el-table-column prop="cardHours" :label="$t('workAttendance') + '(h)'" v-if="user.timeType.showCorpwxCardtime==1||user.timeType.showDdCardtime==1 || user.timeType.syncFanwei==1">
                   <template slot-scope="scope">
-                      <span :style="scope.row.cardHours != scope.row.reportTime?'color:red':''">{{scope.row.cardHours?scope.row.cardHours.toFixed(1):'-'}}</span>
+                      <span :style="scope.row.cardHours != scope.row.reportTime?'color:red':''">
+                        <span>{{ scope.row.startTime }} ~ {{ scope.row.endTime }}</span>  
+                        <span v-if="scope.row.cardHours">共 {{ scope.row.cardHours.toFixed(1) }} 小时</span>
+                        <span v-if="!scope.row.cardHours">-</span>
+                      </span>
                   </template>
               </el-table-column>
               
@@ -251,7 +255,7 @@
                       <span v-for="(item, index) in scope.row.data" style="margin-right:10px;" ><template v-if="index==0 || (index>0 && (scope.row.data[index-1].content != item.content))"><b>{{item.project}}</b>{{ ':'+item.content }}</template></span>
                   </template>
               </el-table-column>
-              <el-table-column label="代填人" v-if="user.companyId == 8138 || user.companyId == 7703 || user.companyId == 8261" width="120">
+              <el-table-column label="代填人" v-if="user.companyId == 8138 || user.companyId == 7703 || user.companyId == 8261 || user.companyId == 8264 || user.companyId == 8268" width="120">
                   <template slot-scope="scope">
                       <div>
                           <span v-if="user.userNameNeedTranslate == '1'">

+ 3 - 3
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/index.vue

@@ -2380,7 +2380,7 @@ export default {
                 const extraField4 = this.form.domains[this.clickIndex].extraField4
                 const extraField5 = this.form.domains[this.clickIndex].extraField5
                 console.log(this.form.domains[this.clickIndex])
-                if((value.name.indexOf('出差工时') != -1 || value.name.indexOf('研发工时') != -1) && (extraField4 || extraField5)) {
+                if((value.name.indexOf('出差工时') != -1 || value.name.indexOf('研发工时') != -1 || value.name.indexOf('入库后工时') != -1) && (extraField4 || extraField5)) {
                     this.form.domains[this.clickIndex].extraField4 = ''
                     this.form.domains[this.clickIndex].extraField5 = ''
                 }
@@ -2390,7 +2390,7 @@ export default {
                     this.doYouWantToDisplayTheWorkOrder = true
                 }
 
-                if(value.name.indexOf('出差工时') != -1) {
+                if(value.name.indexOf('出差工时') != -1 || value.name.indexOf('入库后工时') != -1) {
                    this.doYouWantToDisplayTheWorkOrderGongdan = false 
                 } else {
                     this.doYouWantToDisplayTheWorkOrderGongdan = true
@@ -2736,7 +2736,7 @@ export default {
             if (this.user.timeType.subProMustFill == 1) {
                 for (var p in this.form.domains) {
                     var oneProItem = this.form.domains[p]
-                    if (oneProItem.subProjectList.length > 0 && !oneProItem.subProjectId) {
+                    if (oneProItem.subProjectList && oneProItem.subProjectList.length > 0 && !oneProItem.subProjectId) {
                         //没有选择子项目
                         this.$toast('子项目必填,请检查')
                         return

+ 6 - 3
fhKeeper/formulahousekeeper/timesheet_h5/src/views/edit/weekEdit.vue

@@ -1818,7 +1818,7 @@
                     const extraField4 = domainItem.extraField4
                     const extraField5 = domainItem.extraField5
                     console.log(domainItem)
-                    if((value.name.indexOf('出差工时') != -1 || value.name.indexOf('研发工时') != -1) && (extraField4 || extraField5)) {
+                    if((value.name.indexOf('出差工时') != -1 || value.name.indexOf('研发工时') != -1 || value.name.indexOf('入库后工时') != -1) && (extraField4 || extraField5)) {
                         this.currentForm.domains[this.clickIndex].extraField4 = ''
                         this.currentForm.domains[this.clickIndex].extraField5 = ''
                     }
@@ -1828,7 +1828,7 @@
                         this.doYouWantToDisplayTheWorkOrder = true
                     }
 
-                    if(value.name.indexOf('出差工时') != -1) {
+                    if(value.name.indexOf('出差工时') != -1 || value.name.indexOf('入库后工时') != -1) {
                         this.doYouWantToDisplayTheWorkOrderGongdan = false 
                     } else {
                         this.doYouWantToDisplayTheWorkOrderGongdan = true
@@ -1836,7 +1836,10 @@
 
                     const { reportExtraField4Name, reportExtraField5Name } = this.user.timeType
                     if((reportExtraField4Name || reportExtraField5Name) && value.id) {
-                        this.getInfoByProjectId(this.currentForm.domains[this.clickIndex].projectCode, value.id)
+                        console.log('kaishi1zhix1', this.currentForm.domains[this.clickIndex])
+                        const projectId = this.currentForm.domains[this.clickIndex].projectId
+                        const row = this.projectss.find(item => item.id == projectId)
+                        this.getInfoByProjectId((this.currentForm.domains[this.clickIndex].projectCode || row.projectCode), value.id)
                     }
                 }
 

+ 6 - 1
fhKeeper/formulahousekeeper/timesheet_mld/src/components/taskComponent.vue

@@ -394,12 +394,17 @@
             <el-button @click.native="planToWithdraw()">撤回</el-button>
         </template>
 
-        <template v-if="addForm.id && millerSReviewer.includes(user.id) && [3, 4].includes(showMmeiLaiDeData.taskStatus)">
+        <template v-if="addForm.id && millerSReviewer.includes(user.id) && [3, 4].includes(showMmeiLaiDeData.taskStatus) && !permissions.taskApprovalPlan">
             <template v-if="(showMmeiLaiDeData.taskStatus == 3 && user.id == showMmeiLaiDeData.checkFirstId) || (showMmeiLaiDeData.taskStatus == 4 && user.id == showMmeiLaiDeData.checkSecondId)">
                 <el-button type="danger" @click="planOperation(false)" :loading="addLoading">驳回</el-button>
                 <el-button type="success" @click="planOperation(true)" :loading="addLoading">通过</el-button>
             </template>
         </template>
+
+        <template v-if="permissions.taskApprovalPlan && addForm.id">
+            <el-button type="danger" @click="planOperation(false)" :loading="addLoading">驳回</el-button>
+            <el-button type="success" @click="planOperation(true)" :loading="addLoading">通过</el-button>
+        </template>
         
         <template>
             <el-button type="primary" @click="submitInsert()" :loading="addLoading" v-if="addForm.canEditTask || !addForm.id">

+ 4 - 2
fhKeeper/formulahousekeeper/timesheet_mld/src/permissions.js

@@ -158,9 +158,10 @@ const StringUtil = {
         equipmentInformationManagement: false,
         equipmentCostManagement: false,
 
-        // 任务
+        // 工作计划
         tasksReviewTaskFile: false,
-        viewFilesReviewedByOthers: false
+        viewFilesReviewedByOthers: false,
+        taskApprovalPlan: false
         
     }
     // console.log(arr);
@@ -308,6 +309,7 @@ const StringUtil = {
         arr[i] == '查看他人审核文件' ? obj.viewFilesReviewedByOthers = true : ''
 
         arr[i] == '全部工作计划待审核统计' ? obj.reportAllWorkPlansAwaitingReviewAndStatistics = true : ''
+        arr[i] == '审批计划' ? obj.taskApprovalPlan = true : ''
     }
     return obj
   }

+ 13 - 0
fhKeeper/formulahousekeeper/timesheet_mld/src/views/task/list.vue

@@ -163,6 +163,15 @@
                             </div>
                         </template>
                     </el-table-column>
+                    <el-table-column prop="executorName" label="创建人" sortable width="130">
+                        <template slot-scope="scope">
+                            <!-- <el-link type="primary" @click="showUser(scope.row.executorId)">{{scope.row.executorName}}</el-link> -->
+                            <span v-if="user.userNameNeedTranslate == '1'">
+                                <TranslationOpenDataText type='userName' :openid='scope.row.createrName'></TranslationOpenDataText>
+                            </span>
+                            <span v-if="user.userNameNeedTranslate != '1'">{{scope.row.createrName}}</span>
+                        </template>
+                    </el-table-column>
                     <el-table-column prop="executorName" :label="$t('zhi-hang-ren')" sortable width="130">
                         <template slot-scope="scope">
                             <!-- <el-link type="primary" @click="showUser(scope.row.executorId)">{{scope.row.executorName}}</el-link> -->
@@ -190,6 +199,10 @@
                             <el-button v-if="scope.row.taskStatus == 1" size="small" type="warning" @click="completes(scope.row.id, 1, scope.row)">{{ $t('zhong-qi') }}</el-button>
                             <el-button v-if="idx == 3" size="small" type="primary" @click="handleAuditTask(scope.row, true)">通过</el-button>
                             <el-button v-if="idx == 3" size="small" type="danger" @click="handleAuditTask(scope.row, false)">驳回</el-button>
+                            <template v-if="permissions.taskApprovalPlan && idx == 0">
+                                <el-button v-if="scope.row.taskStatus == 3 || scope.row.taskStatus == 4" size="small" type="success" @click="handleAuditTask(scope.row, true)">通过</el-button>
+                                <el-button v-if="scope.row.taskStatus == 3 || scope.row.taskStatus == 4" size="small" type="danger" @click="handleAuditTask(scope.row, false)">驳回</el-button>
+                            </template>
                             </div>
                         </template>
                     </el-table-column>

+ 14 - 1
fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/static/index.html

@@ -30,7 +30,20 @@
 <!--        }-->
 <!--    </script>-->
 </head>
-
+<!-- Default Statcounter code for worktime https://www.ttkuaiban.com -->
+<script type="text/javascript">
+    var sc_project=13147769;
+    var sc_invisible=1;
+    var sc_security="55bc3e62";
+</script>
+<script type="text/javascript"
+        src="https://www.statcounter.com/counter/counter.js" async></script>
+<noscript><div class="statcounter"><a title="Web Analytics Made Easy -
+Statcounter" href="https://statcounter.com/" target="_blank"><img
+        class="statcounter" src="https://c.statcounter.com/13147769/0/55bc3e62/1/"
+        alt="Web Analytics Made Easy - Statcounter"
+        referrerPolicy="no-referrer-when-downgrade"></a></div></noscript>
+<!-- End of Statcounter Code -->
 <body data-spy="scroll" data-target=".fixed-top" id="body">
     <div class="spinner-wrapper">
         <div class="spinner">

+ 14 - 1
fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/templates/index.html

@@ -30,7 +30,20 @@
 <!--        }-->
 <!--    </script>-->
 </head>
-
+<!-- Default Statcounter code for worktime https://www.ttkuaiban.com -->
+<script type="text/javascript">
+    var sc_project=13147769;
+    var sc_invisible=1;
+    var sc_security="55bc3e62";
+</script>
+<script type="text/javascript"
+        src="https://www.statcounter.com/counter/counter.js" async></script>
+<noscript><div class="statcounter"><a title="Web Analytics Made Easy -
+Statcounter" href="https://statcounter.com/" target="_blank"><img
+        class="statcounter" src="https://c.statcounter.com/13147769/0/55bc3e62/1/"
+        alt="Web Analytics Made Easy - Statcounter"
+        referrerPolicy="no-referrer-when-downgrade"></a></div></noscript>
+<!-- End of Statcounter Code -->
 <body data-spy="scroll" data-target=".fixed-top" id="body">
     <div class="spinner-wrapper">
         <div class="spinner">