Pārlūkot izejas kodu

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper

QuYueTing 1 mēnesi atpakaļ
vecāks
revīzija
8e60aca4b9
17 mainītis faili ar 393 papildinājumiem un 104 dzēšanām
  1. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java
  2. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  3. 129 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java
  4. 1 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/GanttDataItem.java
  5. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/UserVO.java
  6. 4 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectLeaderMapper.java
  7. 17 8
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java
  8. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java
  9. 20 16
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/InformationServiceImpl.java
  10. 22 12
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  11. 5 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  12. 7 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectLeaderMapper.xml
  13. 31 7
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml
  14. 84 31
      fhKeeper/formulahousekeeper/timesheet/src/components/taskComponent.vue
  15. 47 8
      fhKeeper/formulahousekeeper/timesheet/src/views/project/gantt.vue
  16. 1 0
      fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue
  17. 19 10
      fhKeeper/formulahousekeeper/timesheet/src/views/project/project_gantt.vue

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

@@ -564,8 +564,8 @@ public class ProjectController {
     }
 
     @RequestMapping("/getGanttData")
-    public HttpRespMsg getGanttData(@RequestParam(required = false, defaultValue = "0") Integer type, String startDate, String endDate, String userId, Integer projectId, String groupName,Integer taskType, HttpServletRequest request) {
-        return projectService.getGanttData(type, startDate, endDate, userId, projectId, groupName,taskType, request);
+    public HttpRespMsg getGanttData(@RequestParam(required = false, defaultValue = "0") Integer type, String startDate, String endDate, String userId, Integer projectId, String groupName,Integer taskType,@RequestParam(required = false) Integer justWaitForMe, HttpServletRequest request) {
+        return projectService.getGanttData(type, startDate, endDate, userId, projectId, groupName,taskType,justWaitForMe, request);
     }
 
     @RequestMapping("/getGanttDataNew")

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

@@ -2016,7 +2016,7 @@ public class ReportController {
         Optional<LocalDate> min = dateList.stream().min(LocalDate::compareTo);
         //获取景昱的考勤和加班时长,进行比对,如果有不一致的,返回错误
         //错误信息格式:有加班工资的情况下,返回 异常:2024-04-18日填报工时(6h)不等于考勤总时长(8h);无加班工资情况下,返回 异常:2024-04-18日填报工时(8h)少于考勤工时(10h)
-        List<UserFvTime> userFvTimeList = userFvTimeMapper.selectList(new LambdaQueryWrapper<UserFvTime>().between(UserFvTime::getWorkDate, df.format(min.get()), df.format(max.get())));
+        List<UserFvTime> userFvTimeList = userFvTimeMapper.selectList(new LambdaQueryWrapper<UserFvTime>().between(UserFvTime::getWorkDate, df.format(min.get()), df.format(max.get())).eq(UserFvTime::getCompanyId, user.getCompanyId()).eq(UserFvTime::getUserId, userId));
         StringBuilder warningMsg = new StringBuilder();
         for (int i = 0; i < array.size(); i++) {
             JSONObject jsonObject = array.getJSONObject(i);
@@ -2030,7 +2030,7 @@ public class ReportController {
                 workingTime = jsonObject.getDouble("workingTime");
             }
 
-            Optional<UserFvTime> first = userFvTimeList.stream().filter(u -> u.getWorkDate().isEqual(date) && u.getUserId().equals(userId)).findFirst();
+            Optional<UserFvTime> first = userFvTimeList.stream().filter(u -> u.getWorkDate().isEqual(date)).findFirst();
             if(first.isPresent()){
                 if(first.get().getWorkHours()!=null){
                     Optional<User> optional = userList.stream().filter(u -> u.getId().equals(userId)).findFirst();

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

@@ -9,6 +9,7 @@ import com.management.platform.constant.Constant;
 import com.management.platform.entity.*;
 import com.management.platform.entity.bo.QueryTaskChargePage;
 import com.management.platform.entity.vo.SysRichFunction;
+import com.management.platform.entity.vo.UserVO;
 import com.management.platform.mapper.*;
 import com.management.platform.service.*;
 import com.management.platform.service.impl.WxCorpInfoServiceImpl;
@@ -125,6 +126,12 @@ public class TaskController {
     @Resource
     private WxCorpInfoMapper wxCorpInfoMapper;
 
+    @Resource
+    private ProjectLeaderMapper projectLeaderMapper;
+
+    @Resource
+    private InformationMapper informationMapper;
+
     //用于控制线程锁
     public static HashMap<String, CorpwxJobResult> corpwxJobCenter = new HashMap();
     public static HashMap<String, Integer> corpddJobCenter = new HashMap();
@@ -497,6 +504,23 @@ public class TaskController {
                 isUpdate=3;
                 task.setTaskStatus(3);//待第一审核人审核
             }
+            // 撤回后,对计划进行修改
+            if (user.getCompanyId()==Constant.MLD_COMPANY_ID
+                    &&task.getIsTaskPlan()==1
+                    &&(task.getTaskStatus()==2)
+            ){
+                if (user.getId().equals(task.getCheckFirstId())){
+                    task.setTaskStatus(4);//待第二审核人审核
+                    isUpdate=5;
+                } else if (user.getId().equals(task.getCheckSecondId())) {
+                    task.setTaskStatus(0);//变化为进行中
+                    task.setIsTaskPlan(0);//不再是计划
+                    isUpdate=6;
+                }else {
+                    task.setTaskStatus(3);//待第一审核人审核
+                    isUpdate=4;
+                }
+            }
         }
         if (Constant.MLD_COMPANY_ID==user.getCompanyId()&&task.getIsTaskPlan()==1) {
             if (task.getCheckSecondId() != null && !task.getExecutorList().isEmpty()) {
@@ -532,7 +556,7 @@ public class TaskController {
         } else if (saved && isUpdate > 0) {
             msgRecepientList=new ArrayList<>();
             //第一审核人修改后, 变成待第二审核人审核
-            if (isUpdate==1){
+            if (isUpdate==1||isUpdate==5){
                 User owner = userMapper.selectById(task.getCheckSecondId());
                 Information information = new Information();
                 Project project = projectMapper.selectById(task.getProjectId());
@@ -543,7 +567,7 @@ public class TaskController {
                 information.setTime(LocalDateTime.now());
                 informationService.save(information);
 
-            }else if(isUpdate==2){
+            }else if(isUpdate==2||isUpdate==6){
                 List<TaskExecutor> taskExecutorList = taskExecutorMapper.selectList(new QueryWrapper<TaskExecutor>().eq("task_id", task.getId()));
                 if(CollectionUtils.isNotEmpty(taskExecutorList)){
                     for (TaskExecutor taskExecutor : taskExecutorList) {
@@ -570,6 +594,18 @@ public class TaskController {
                 information.setUserId(owner.getId());
                 information.setTime(LocalDateTime.now());
                 informationService.save(information);
+            } else if (isUpdate==4) {
+                //给第一审核人发送信息提醒
+                log.info("撤销后小组长修改,给第一审核人发送信息提醒");
+                User owner = userMapper.selectById(task.getCheckFirstId());
+                Information information = new Information();
+                information.setType(11);
+                Project project = projectMapper.selectById(task.getProjectId());
+                information.setMsg(project.getProjectName()+"项目有新的预计FTE计划审批任务,请您查收.");
+                information.setTaskId(task.getId());
+                information.setUserId(owner.getId());
+                information.setTime(LocalDateTime.now());
+                informationService.save(information);
             }
         }
         if (task.getExecutorId() == null) {
@@ -640,6 +676,57 @@ public class TaskController {
         return msg;
     }
 
+    //撤回工作计划
+    @RequestMapping("/withdrawalTaskPlan")
+    public HttpRespMsg withdrawalTaskPlan(Integer taskId,HttpServletRequest request) {
+        HttpRespMsg msg = new HttpRespMsg();
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
+        Task task = taskMapper.selectById(taskId);
+        if (task.getTaskPlan()!=1&&task.getIsTaskPlan()!=1){
+            msg.setError("当前计划已变成任务不能撤回计划");
+            return msg;
+        }
+        /**
+         * 任务状态,0-进行中 1-已完成 2-已撤销 3-待第一审核人审核 4-待第二审核人审核 5-第一审核人驳回  6-第二审核人驳回
+         */
+        int count= projectLeaderMapper.selectCountIsLeader(taskId,user.getId());
+        //是这个计划的小组长
+        if (count>0){
+            //待第一审核人审核
+            if (task.getTaskStatus()==3){
+                task.setTaskStatus(2);
+                taskMapper.updateById(task);
+                Information information = new Information();
+                User owner = userMapper.selectById(task.getCheckFirstId());
+                Project project = projectMapper.selectById(task.getProjectId());
+                information.setMsg(project.getProjectName()+"项目有预计FTE计划撤销");
+//                information.setTaskId(task.getId());
+                information.setUserId(owner.getId());
+                information.setType(11);
+                information.setTime(LocalDateTime.now());
+                informationMapper.insert(information);
+            }else {
+                msg.setError("当前计划已处于二级审核或已审核通过,不能撤回");
+                return msg;
+            }
+        }
+        //计划的第一审核人
+        String checkFirstId = task.getCheckFirstId();
+        if (checkFirstId!=null&&checkFirstId.equals(user.getId())){
+            msg.setError("项目经理不能撤回");
+            return msg;
+        }
+
+        //计划的第二审核人
+        String checkSecondId = task.getCheckSecondId();
+        if (checkSecondId!=null&&checkSecondId.equals(user.getId())){
+            msg.setError("区域经理不能撤回");
+            return msg;
+        }
+        return msg;
+    }
+
     private void updateProjectProgress(Integer projectId) {
         //只有里程碑才更新项目进度, 非已撤销状态的
         List<Task> all = taskMapper.simpleList(new QueryWrapper<Task>().eq("project_id", projectId).ne("task_status", 2).eq("task_type",1),null,null);
@@ -1193,6 +1280,46 @@ public class TaskController {
             msg.setError(MessageUtils.message("Stages.noExistAndRefresh"));
             return msg;
         }
+        HttpRespMsg msg = new HttpRespMsg();
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
+        if (Constant.MLD_COMPANY_ID==user.getCompanyId()){
+            int count= projectLeaderMapper.selectCountIsLeader(id,user.getId());
+            //是这个计划的小组长
+            if (count>0){
+                /**
+                 * 任务状态,0-进行中 1-已完成 2-已撤销 3-待第一审核人审核 4-待第二审核人审核 5-第一审核人驳回  6-第二审核人驳回
+                 */
+                //待第一审核人审核
+                if (task.getTaskStatus()==3&&task.getIsTaskPlan()==1){
+                    msg.setError("当前计划已处于一级审核状态,小组长不能删除");
+                    return msg;
+                }else if(task.getTaskStatus()==4&&task.getIsTaskPlan()==1){
+                    msg.setError("当前计划已处于二级审核状态,小组长不能删除");
+                    return msg;
+                }else if(task.getTaskStatus()==0&&task.getIsTaskPlan()==0){
+                    msg.setError("当前计划已审核通过,小组长不能删除");
+                    return msg;
+                }
+            }
+
+            if (task.getCheckFirstId()!=null&&task.getCheckFirstId().equals(user.getId())){
+                if(task.getTaskStatus()==4&&task.getIsTaskPlan()==1){
+                    msg.setError("当前计划已处于二级审核状态,项目经理不能删除");
+                    return msg;
+                }else if(task.getTaskStatus()==0&&task.getIsTaskPlan()==0){
+                    msg.setError("当前计划已审核通过,项目经理不能删除");
+                    return msg;
+                }
+            }
+
+            if (task.getCheckSecondId()!=null&&task.getCheckSecondId().equals(user.getId())){
+                if(task.getTaskStatus()==3&&task.getIsTaskPlan()==1){
+                    msg.setError("当前计划已处于一级审核状态,区域经理不能删除");
+                    return msg;
+                }
+            }
+        }
 
         if (task.getParentTid() == null) {
             //删除的是第一级任务,需要调整顺序

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/GanttDataItem.java

@@ -33,4 +33,5 @@ public class GanttDataItem {
     private Integer taskId;
     private Integer leaderOrManager;
     private Integer taskPlan;
+    private List<String> leaderIdList;
 }

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/UserVO.java

@@ -16,7 +16,7 @@ public class UserVO extends User {
     private Long remainingTime;
     //是否是项目经理
     private boolean isLeader;
-    // 组员0, 小组长1,审核人2
+    // 组员0, 小组长1,审核人2 ,既是小组长又是审核人3
     private int projectLeaderType;
     private Company company;
 

+ 4 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectLeaderMapper.java

@@ -2,6 +2,7 @@ package com.management.platform.mapper;
 
 import com.management.platform.entity.ProjectLeader;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +14,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ProjectLeaderMapper extends BaseMapper<ProjectLeader> {
 
+    int selectCountIsLeader(@Param("taskId") Integer taskId,@Param("userId") String userId);
+
+
 }

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

@@ -66,31 +66,40 @@ public interface ProjectMapper extends BaseMapper<Project> {
     List<Map> getGanttData(@Param("userIds") List<String> userIds, @Param("companyId") Integer companyId);
 
     List<Map> getTaskPlanByMemb(@Param("userIds") List<String> userIds, @Param("startDate") String startDate,
-                                    @Param("endDate") String endDate, @Param("companyId") Integer companyId);
+                                    @Param("endDate") String endDate, @Param("companyId") Integer companyId,
+                                @Param("creatorId") String creatorId,@Param("justWaitForMe")Integer justWaitForMe
+                                );
 
     List<Map> getTaskPlanByProject(@Param("projectIds") List<Integer> projectIds, @Param("startDate") String startDate,
-                                @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("groupName")String groupName,@Param("taskType")Integer taskType);
+                                @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("groupName")String groupName,@Param("taskType")Integer taskType,
+                                   @Param("creatorId") String creatorId,@Param("justWaitForMe")Integer justWaitForMe);
     List<Map> getTaskPlanWithLeave(@Param("userIds") List<String> userIds, @Param("startDate") String startDate,
                                    @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("creatorId") String creatorId,@Param("targetUserId") String targetUserId);
 
     List<Map> getTaskPlanByGeneralMemb(@Param("userIds") List<String> userIds, @Param("startDate") String startDate,
-                                @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("creatorId") String creatorId,@Param("targetUserId") String targetUserId);
+                                @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("creatorId") String creatorId,@Param("targetUserId") String targetUserId,
+                                       @Param("justWaitForMe")Integer justWaitForMe);
 
     List<Map> getTaskPlanByProManager(@Param("userIds") List<String> userIds, @Param("startDate") String startDate,
-                                      @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("managerId") String managerId,@Param("targetUserId") String targetUserId);
+                                      @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("managerId") String managerId,@Param("targetUserId") String targetUserId,
+                                      @Param("justWaitForMe")Integer justWaitForMe);
     List<Map> getTaskPlanByAreaManager(@Param("userIds") List<String> userIds, @Param("startDate") String startDate,
-                                      @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("managerId") String managerId,@Param("targetUserId") String targetUserId);
+                                      @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("managerId") String managerId,@Param("targetUserId") String targetUserId,
+                                       @Param("justWaitForMe")Integer justWaitForMe);
 
     List<Map> getTaskPlanByProjectGeneralMemb(@Param("projectIds") List<Integer> projectIds, @Param("startDate") String startDate,
                                    @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("creatorId") String creatorId,
-                                              @Param("groupName")String groupName,@Param("taskType")Integer taskType,@Param("targetProjectId")Integer targetProjectId);
+                                              @Param("groupName")String groupName,@Param("taskType")Integer taskType,@Param("targetProjectId")Integer targetProjectId,
+                                              @Param("justWaitForMe")Integer justWaitForMe);
 
     List<Map> getTaskPlanByProjectManager(@Param("projectIds") List<Integer> projectIds, @Param("startDate") String startDate,
                                               @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("managerId") String managerId,
-                                          @Param("groupName")String groupName,@Param("taskType")Integer taskType,@Param("targetProjectId")Integer targetProjectId);
+                                          @Param("groupName")String groupName,@Param("taskType")Integer taskType,@Param("targetProjectId")Integer targetProjectId,
+                                          @Param("justWaitForMe")Integer justWaitForMe);
     List<Map> getTaskPlanByProjectAreaManager(@Param("projectIds") List<Integer> projectIds, @Param("startDate") String startDate,
                                           @Param("endDate") String endDate, @Param("companyId") Integer companyId,@Param("managerId") String managerId,
-                                              @Param("groupName")String groupName,@Param("taskType")Integer taskType,@Param("targetProjectId")Integer targetProjectId);
+                                              @Param("groupName")String groupName,@Param("taskType")Integer taskType,@Param("targetProjectId")Integer targetProjectId,
+                                              @Param("justWaitForMe")Integer justWaitForMe);
 
     List<ProjectWithStage> selectWithStage(Integer companyId, Integer startIndex, Integer endIndex, Integer projectId,String inchargerId,String startDate,String endDate);
 

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

@@ -116,7 +116,7 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg exportCustomerProjectInAndOut(HttpServletRequest request);
 
-    HttpRespMsg getGanttData(Integer type, String startDate, String endDate, String userId, Integer projectId, String groupName,Integer taskType, HttpServletRequest request);
+    HttpRespMsg getGanttData(Integer type, String startDate, String endDate, String userId, Integer projectId, String groupName,Integer taskType,Integer justWaitForMe, HttpServletRequest request);
 
     HttpRespMsg getProjectStagesCost(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request,String stageNames,String startDate,String endDate);
 

+ 20 - 16
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/InformationServiceImpl.java

@@ -3,6 +3,7 @@ package com.management.platform.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.generator.config.IFileCreate;
 import com.management.platform.constant.Constant;
 import com.management.platform.entity.*;
 import com.management.platform.entity.vo.GanttDataItem;
@@ -90,24 +91,27 @@ public class InformationServiceImpl extends ServiceImpl<InformationMapper, Infor
                 }
                 if (Constant.MLD_COMPANY_ID==user.getCompanyId()&&info.getTaskId()!=null){
                     Task task = taskService.getById(info.getTaskId());
-                    GanttDataItem dataItem = new GanttDataItem();
-                    dataItem.setTaskStatus(task.getTaskStatus());
+                    if (task!=null){
+                        GanttDataItem dataItem = new GanttDataItem();
+                        dataItem.setTaskStatus(task.getTaskStatus());
 
-                    if(countLeader>0){
-                        dataItem.setLeaderOrManager(1);
-                    } else if (countFirstCheck > 0 || countSecondCheck > 0) {
-                        dataItem.setLeaderOrManager(2);
+                        if(countLeader>0){
+                            dataItem.setLeaderOrManager(1);
+                        } else if (countFirstCheck > 0 || countSecondCheck > 0) {
+                            dataItem.setLeaderOrManager(2);
+                        }
+                        dataItem.setCheckFirstId(task.getCheckFirstId());
+                        dataItem.setCheckSecondId(task.getCheckSecondId());
+                        dataItem.setObjType(2);
+                        dataItem.setIsTaskPlan(task.getIsTaskPlan());
+                        dataItem.setTaskPlan(task.getTaskPlan());
+
+                        DateTimeFormatter customFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+                        dataItem.setEnd_date(task.getEndDate()!=null ? task.getEndDate().format(customFormatter) : null);
+                        dataItem.setStart_date(task.getStartDate()!=null ? task.getStartDate().format(customFormatter) : null);
+                        info.setGanttData(dataItem);
                     }
-                    dataItem.setCheckFirstId(task.getCheckFirstId());
-                    dataItem.setCheckSecondId(task.getCheckSecondId());
-                    dataItem.setObjType(2);
-                    dataItem.setIsTaskPlan(task.getIsTaskPlan());
-                    dataItem.setTaskPlan(task.getTaskPlan());
-
-                    DateTimeFormatter customFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-                    dataItem.setEnd_date(task.getEndDate()!=null ? task.getEndDate().format(customFormatter) : null);
-                    dataItem.setStart_date(task.getStartDate()!=null ? task.getStartDate().format(customFormatter) : null);
-                    info.setGanttData(dataItem);
+
                 }
             }
             httpRespMsg.data = information;

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

@@ -4800,11 +4800,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     }
 
     @Override
-    public HttpRespMsg getGanttData(Integer type, String startDate, String endDate, String targetUserId, Integer targetProjectId, String groupName,Integer taskType, HttpServletRequest request) {
+    public HttpRespMsg getGanttData(Integer type, String startDate, String endDate, String targetUserId, Integer targetProjectId, String groupName,Integer taskType,Integer justWaitForMe, HttpServletRequest request) {
         //根据人员权限来获取,
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
-
+        List<ProjectLeader> projectLeaderList = projectLeaderService.list(new QueryWrapper<ProjectLeader>().eq("company_id", user.getCompanyId()));
         List<String> userIds = new ArrayList<>();
         List<String> userIdsExtra = new ArrayList<>();
         List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部项目");
@@ -4861,7 +4861,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 String lsLastItemId = null;
                 String btLastItemId = null;
                 //按人员获取
-                ganttData = projectMapper.getTaskPlanByMemb(userIds, startDate ,endDate, user.getCompanyId());
+                ganttData = projectMapper.getTaskPlanByMemb(userIds, startDate ,endDate, user.getCompanyId(),user.getId(),justWaitForMe);
                 System.out.println("renyuan==>"+ganttData.size());
                 if (user.getCompanyId()==Constant.MLD_COMPANY_ID){
                     List<ProjectLeader> leaderList = projectLeaderService.list(new QueryWrapper<ProjectLeader>().eq("leader_id", user.getId()).eq("company_id", user.getCompanyId()));
@@ -4873,7 +4873,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         List<String> userProjectIds = participations.stream().distinct().map(Participation::getUserId).collect(Collectors.toList());
                         userProjectIds.add("-1");
                         userIdsExtra.addAll(userProjectIds);
-                        List<Map> taskPlanByGeneralMemb = projectMapper.getTaskPlanByGeneralMemb(userProjectIds, startDate, endDate, user.getCompanyId(), user.getId(),targetUserId);
+                        List<Map> taskPlanByGeneralMemb = projectMapper.getTaskPlanByGeneralMemb(userProjectIds, startDate, endDate, user.getCompanyId(), user.getId(),targetUserId,justWaitForMe);
                         for (Map map : taskPlanByGeneralMemb) {
                             map.put("leaderOrManager",1);
                         }
@@ -4895,7 +4895,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         List<String> collectUserIdList = executorList.stream().distinct().map(TaskExecutor::getExecutorId).collect(Collectors.toList());
                         collectUserIdList.add("-1");
                         userIdsExtra.addAll(collectUserIdList);
-                        List<Map> getTaskPlanByProManager = projectMapper.getTaskPlanByProManager(collectUserIdList, startDate, endDate, user.getCompanyId(),user.getId(),targetUserId);
+                        List<Map> getTaskPlanByProManager = projectMapper.getTaskPlanByProManager(collectUserIdList, startDate, endDate, user.getCompanyId(),user.getId(),targetUserId,justWaitForMe);
                         for (Map map : getTaskPlanByProManager) {
                             map.put("leaderOrManager",2);
                         }
@@ -4911,7 +4911,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         List<String> collectUserIdList = executorList.stream().distinct().map(TaskExecutor::getExecutorId).collect(Collectors.toList());
                         collectUserIdList.add("-1");
                         userIdsExtra.addAll(collectUserIdList);
-                        List<Map> getTaskPlanByProManager = projectMapper.getTaskPlanByAreaManager(collectUserIdList, startDate, endDate, user.getCompanyId(),user.getId(),targetUserId);
+                        List<Map> getTaskPlanByProManager = projectMapper.getTaskPlanByAreaManager(collectUserIdList, startDate, endDate, user.getCompanyId(),user.getId(),targetUserId,justWaitForMe);
                         for (Map map : getTaskPlanByProManager) {
                             map.put("leaderOrManager",2);
                         }
@@ -5107,7 +5107,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         }
                     }
                 }
-                ganttData = projectMapper.getTaskPlanByProject(projectIds, startDate ,endDate, user.getCompanyId(),groupName,taskType);
+                ganttData = projectMapper.getTaskPlanByProject(projectIds, startDate ,endDate, user.getCompanyId(),groupName,taskType,user.getId(),justWaitForMe);
                 System.out.println("ganttData1:"+ganttData.size());
                 if (user.getCompanyId()==Constant.MLD_COMPANY_ID){
                     List<ProjectLeader> leaderList = projectLeaderService.list(new QueryWrapper<ProjectLeader>().eq("leader_id", user.getId()).eq("company_id", user.getCompanyId()));
@@ -5115,7 +5115,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     if (!leaderList.isEmpty()){
                         List<Integer> projectIdList = leaderList.stream().map(ProjectLeader::getProjectId).collect(Collectors.toList());
                         projectIdList.add(-1);
-                        List<Map> taskPlanByGeneralMemb = projectMapper.getTaskPlanByProjectGeneralMemb(projectIdList,startDate ,endDate, user.getCompanyId(),user.getId(),groupName,taskType,targetProjectId);
+                        List<Map> taskPlanByGeneralMemb = projectMapper.getTaskPlanByProjectGeneralMemb(projectIdList,startDate ,endDate, user.getCompanyId(),user.getId(),groupName,taskType,targetProjectId,justWaitForMe);
                         System.out.println("ganttData2:"+taskPlanByGeneralMemb.size());
                         ganttData.addAll(taskPlanByGeneralMemb);
                     }
@@ -5124,7 +5124,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     if (!projectList.isEmpty()){
                         List<Integer> projectIdList = projectList.stream().map(Project::getId).collect(Collectors.toList());
                         projectIdList.add(-1);
-                        List<Map> taskPlanByProjectManager = projectMapper.getTaskPlanByProjectManager(projectIdList,startDate ,endDate, user.getCompanyId(),user.getId(),groupName,taskType,targetProjectId);
+                        List<Map> taskPlanByProjectManager = projectMapper.getTaskPlanByProjectManager(projectIdList,startDate ,endDate, user.getCompanyId(),user.getId(),groupName,taskType,targetProjectId,justWaitForMe);
                         System.out.println("ganttData2:"+taskPlanByProjectManager.size());
                         ganttData.addAll(taskPlanByProjectManager);
                     }
@@ -5136,7 +5136,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         List<TaskExecutor> executorList = taskExecutorService.list(new QueryWrapper<TaskExecutor>().in("task_id", taskIdList).isNotNull("executor_id"));
                         List<Integer> projectIdList = executorList.stream().distinct().map(TaskExecutor::getProjectId).collect(Collectors.toList());
                         projectIdList.add(-1);
-                        List<Map> taskPlanByProjectAreaManager = projectMapper.getTaskPlanByProjectAreaManager(projectIdList, startDate, endDate, user.getCompanyId(),user.getId(),groupName,taskType,targetProjectId);
+                        List<Map> taskPlanByProjectAreaManager = projectMapper.getTaskPlanByProjectAreaManager(projectIdList, startDate, endDate, user.getCompanyId(),user.getId(),groupName,taskType,targetProjectId,justWaitForMe);
                         System.out.println("ganttData2:"+taskPlanByProjectAreaManager.size());
                         ganttData.addAll(taskPlanByProjectAreaManager);
                     }
@@ -5251,6 +5251,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     curItem.setIsTaskPlan(map.get("isTaskPlan")==null?null:(Integer)map.get("isTaskPlan"));
                     curItem.setTaskStatus(map.get("taskStatus")==null?null:(Integer)map.get("taskStatus"));
                     curItem.setTaskId(map.get("taskId")==null?null:(Integer)map.get("taskId"));
+                    if (map.get("id")!=null){
+                        Integer projectIdSelect = (Integer) map.get("id");
+                        List<String> leaderIdcollect = projectLeaderList.stream().filter(p -> p.getProjectId().equals(projectIdSelect)).map(ProjectLeader::getLeaderId).collect(Collectors.toList());
+                        curItem.setLeaderIdList(leaderIdcollect);
+                    }
                     curItem.setLeaderOrManager(map.get("leaderOrManager")==null?null:(Integer)map.get("leaderOrManager"));
                     curItem.setTaskPlan(map.get("taskPlan")==null?null:(Integer)map.get("taskPlan"));
                     curItem.end_date = end_date;
@@ -5285,6 +5290,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     curItem.setCheckSecondId(map.get("checkSecondId")==null?null:(String) map.get("checkSecondId"));
                     curItem.setTaskStatus(map.get("taskStatus")==null?null:(Integer)map.get("taskStatus"));
                     curItem.setTaskId(map.get("taskId")==null?null:(Integer)map.get("taskId"));
+                    if (map.get("id")!=null){
+                        Integer projectIdSelect = (Integer) map.get("id");
+                        List<String> leaderIdcollect = projectLeaderList.stream().filter(p -> p.getProjectId().equals(projectIdSelect)).map(ProjectLeader::getLeaderId).collect(Collectors.toList());
+                        curItem.setLeaderIdList(leaderIdcollect);
+                    }
                     curItem.setLeaderOrManager(map.get("leaderOrManager")==null?null:(Integer)map.get("leaderOrManager"));
                     curItem.setTaskPlan(map.get("taskPlan")==null?null:(Integer)map.get("taskPlan"));
                     curItem.start_date = start_date;
@@ -12787,7 +12797,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 String lsLastItemId = null;
                 String btLastItemId = null;
                 //按人员获取
-                ganttData = projectMapper.getTaskPlanByMemb(userIds, startDate ,endDate, user.getCompanyId());
+                ganttData = projectMapper.getTaskPlanByMemb(userIds, startDate ,endDate, user.getCompanyId(),user.getId(),null);
                 QueryWrapper<LeaveSheet> lsQueryWrapper=new QueryWrapper();
                 lsQueryWrapper.in("owner_id", userIds);
                 if (startDate != null && endDate != null) {
@@ -12973,7 +12983,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         }
                     }
                 }
-                ganttData = projectMapper.getTaskPlanByProject(projectIds, startDate ,endDate, user.getCompanyId(),null,null);
+                ganttData = projectMapper.getTaskPlanByProject(projectIds, startDate ,endDate, user.getCompanyId(),null,null,user.getId(),null);
                 QueryWrapper<BusinessTrip> btQueryWrapper =new QueryWrapper<>();
                 QueryWrapper<BustripProject> bpQueryWrapper =new QueryWrapper<>();
                 btQueryWrapper.in("owner_id", userIds);

+ 5 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -774,13 +774,14 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                                         .eq("check_second_id", userId)
                         )
         );
-        if(LeaderCount > 0){
+
+        if (LeaderCount>0&&firstCheckCount>0){
+            return 3;
+        }else if(LeaderCount > 0){
             return 1;
         } else if (firstCheckCount > 0) {
             return 2;
-        }else {
-            return 0;
-        }
+        }else return 0;
 
     }
 

+ 7 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectLeaderMapper.xml

@@ -14,4 +14,11 @@
         id, project_id, leader_id
     </sql>
 
+    <select id="selectCountIsLeader" resultType="java.lang.Integer">
+        select count(*) from task t
+                                 INNER JOIN project p on t.project_id=p.id
+                                 INNER JOIN project_leader pl  on pl.project_id=p.id
+        where t.id=#{taskId} and t.task_plan=1 and pl.leader_id=#{userId}
+    </select>
+
 </mapper>

+ 31 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -749,6 +749,9 @@
         <foreach collection="userIds" close=")" open="(" separator="," index="" item="item">
             #{item}
         </foreach>
+        <if test="justWaitForMe !=null  ">
+            and (task.check_first_id=#{creatorId} or task.check_second_id=#{creatorId})  and (task.task_status=3 or task.task_status=4)
+        </if>
         and ((IFNULL(task.start_date , task.end_date) between #{startDate} and #{endDate}) or (task.end_date between #{startDate} and #{endDate}))
         and task.end_date is not null and task.is_task_plan =0
         AND project.`status` = 1
@@ -777,6 +780,9 @@
         <if test="taskType !=null  ">
             and task.task_type = #{taskType}
         </if>
+        <if test="justWaitForMe !=null  ">
+            and (task.check_first_id=#{creatorId} or task.check_second_id=#{creatorId})  and (task.task_status=3 or task.task_status=4)
+        </if>
         and ((IFNULL(task.start_date , task.end_date) between #{startDate} and #{endDate}) or (task.end_date between #{startDate} and #{endDate}))
         and task.end_date is not null and task.task_plan =0
         AND project.`status` = 1
@@ -2741,6 +2747,9 @@
         <if test="targetUserId !=null and targetUserId !='' ">
             and user.`id`=#{targetUserId}
         </if>
+        <if test="justWaitForMe !=null  ">
+            and (task.check_first_id=#{creatorId} or task.check_second_id=#{creatorId})  and (task.task_status=3 or task.task_status=4)
+        </if>
         AND project.`status` = 1 and task.task_plan=1
         ORDER BY user.id, task.start_date
     </select>
@@ -2774,11 +2783,14 @@
             #{item}
         </foreach>
         and ((IFNULL(task.start_date , task.end_date) between #{startDate} and #{endDate}) or (task.end_date between #{startDate} and #{endDate}))
-        and task.end_date is not null and task.is_task_plan=1 and task.task_status=3 and task.check_first_id=#{managerId}
-        AND project.`status` = 1 and task.task_plan=1
+        and task.end_date is not null and task.is_task_plan=1  and task.check_first_id=#{managerId}
+        AND project.`status` = 1 and task.task_plan=1 and task.task_status !=2
         <if test="targetUserId !=null and targetUserId !='' ">
             and user.`id`=#{targetUserId}
         </if>
+        <if test="justWaitForMe !=null">
+            and task.task_status=3
+        </if>
         ORDER BY user.id, task.start_date
     </select>
     <select id="getTaskPlanByAreaManager" resultType="java.util.Map">
@@ -2795,11 +2807,14 @@
             #{item}
         </foreach>
         and ((IFNULL(task.start_date , task.end_date) between #{startDate} and #{endDate}) or (task.end_date between #{startDate} and #{endDate}))
-        and task.end_date is not null and task.is_task_plan=1 and task.task_status=4 and task.check_second_id=#{managerId}
-        AND project.`status` = 1 and task.task_plan=1
+        and task.end_date is not null  and  task.check_second_id=#{managerId}
+        AND project.`status` = 1 and task.task_plan=1 and task.task_status !=2
         <if test="targetUserId !=null and targetUserId !='' ">
             and user.`id`=#{targetUserId}
         </if>
+        <if test="justWaitForMe !=null">
+            and task.task_status=4
+        </if>
         ORDER BY user.id, task.start_date
     </select>
     <select id="getTaskPlanByProjectGeneralMemb" resultType="java.util.Map">
@@ -2827,6 +2842,9 @@
         <if test="targetProjectId !=null  ">
             and project.`id` = #{targetProjectId}
         </if>
+        <if test="justWaitForMe !=null">
+            and (task.check_first_id=#{creatorId} or task.check_second_id=#{creatorId}) and (task.task_status=3 or task.task_status=4)
+        </if>
         and ((IFNULL(task.start_date , task.end_date) between #{startDate} and #{endDate}) or (task.end_date between #{startDate} and #{endDate}))
         and task.end_date is not null
         AND project.`status` = 1
@@ -2857,8 +2875,11 @@
         <if test="targetProjectId !=null  ">
             and project.`id` = #{targetProjectId}
         </if>
+        <if test="justWaitForMe !=null">
+            and task.task_status=3
+        </if>
         and ((IFNULL(task.start_date , task.end_date) between #{startDate} and #{endDate}) or (task.end_date between #{startDate} and #{endDate}))
-        and task.end_date is not null and task.is_task_plan=1 and task.task_status=3 and task.check_first_id=#{managerId}
+        and task.end_date is not null and task.is_task_plan=1  and task.check_first_id=#{managerId} and task.task_status !=2
         AND project.`status` = 1
         ORDER BY project.id, task.start_date
     </select>
@@ -2887,9 +2908,12 @@
         <if test="targetProjectId !=null  ">
             and project.`id` = #{targetProjectId}
         </if>
+        <if test="justWaitForMe !=null">
+            and task.task_status=4
+        </if>
         and ((IFNULL(task.start_date , task.end_date) between #{startDate} and #{endDate}) or (task.end_date between #{startDate} and #{endDate}))
-        and task.end_date is not null and task.is_task_plan=1 and task.task_status=4 and task.check_second_id=#{managerId}
-        AND project.`status` = 1
+        and task.end_date is not null and task.task_plan=1 and  task.check_second_id=#{managerId}
+        AND project.`status` = 1 and task.task_status !=2
         ORDER BY project.id, task.start_date
     </select>
     <select id="getFTETaskPlanData" resultType="java.util.Map">

+ 84 - 31
fhKeeper/formulahousekeeper/timesheet/src/components/taskComponent.vue

@@ -491,19 +491,37 @@
     <div slot="footer" class="dialog-footer foooot">
         <template v-if="!showMmeiLaiDe">
             <el-button v-if="(user.id == addForm.createrId || currentProject.inchargerId == user.id || currentProject.creatorId == user.id || permissions.projectManagement) && canAddTask" @click.native="deleteTask()" style="float:left;">{{ $t('btn.delete') }}</el-button>
+            <el-button type="primary" v-if="user.userNameNeedTranslate == 1 && !meetingId && !integrationTask.stage && addForm.executorListFront[0].executorId" @click="meetingCli()">{{ $t('faQiHuiYi') }}</el-button>
+            <el-button @click.native="closeBounceds()">{{ $t('btn.cancel') }}</el-button>
+            <el-button type="primary" @click="submitInsert" :loading="addLoading">{{ $t('btn.submit') }}</el-button>
         </template>
+        
         <template v-if="showMmeiLaiDe">
-            <el-button v-if="[0, 1, 2, 3, 5, 6].includes(showMmeiLaiDeData.taskStatus)" @click.native="deleteTask()" style="float:left;">{{ $t('btn.delete') }}</el-button>
-        </template>
-        <el-button type="primary" v-if="user.userNameNeedTranslate == 1 && !meetingId && !integrationTask.stage && addForm.executorListFront[0].executorId" @click="meetingCli()">{{ $t('faQiHuiYi') }}</el-button>
-        <el-button @click.native="closeBounceds()">{{ $t('btn.cancel') }}</el-button>
-        <template v-if="showMmeiLaiDe && addForm.id && millerSReviewer.includes(user.id) && [3, 4].includes(showMmeiLaiDeData.taskStatus) && showMmeiLaiDeData.leaderOrManager == 2">
-            <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>
+            <el-button v-if="(user.id == showMmeiLaiDeData.checkFirstId && showMmeiLaiDeData.taskStatus == 3) || (user.id == showMmeiLaiDeData.checkSecondId && [4, '4', '1', 1].includes(showMmeiLaiDeData.taskStatus))" @click.native="deleteTask()" style="float:left;">{{ $t('btn.delete') }}</el-button>
+            <el-button v-if="showMmeiLaiDeData.taskPlan && showMmeiLaiDeData.taskStatus == 2" @click.native="deleteTask()" style="float:left;">删除</el-button>
+
+            <el-button @click.native="closeBounceds()">{{ $t('btn.cancel') }}</el-button>
+
+            <template v-if="(showMmeiLaiDeData.leaderIdList || []).includes(user.id) && showMmeiLaiDeData.taskStatus == 3">
+                <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="(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>
+                <el-button type="primary" @click="submitInsert" :loading="addLoading">
+                    {{ showMmeiLaiDeData.taskPlan == 1 && showMmeiLaiDeData.taskStatus == 2 ? '重新提交' : '提交' }}
+                </el-button>
             </template>
         </template>
-        <el-button type="primary" @click="submitInsert" :loading="addLoading">{{ $t('btn.submit') }}</el-button>
+        
+        
+        
     </div>
     
     <!-- <div slot="title" v-if="addForm.parentTid != null || isRelationItem" >
@@ -1065,6 +1083,37 @@ export default {
     }
   },
   methods: {
+    planToWithdraw() {
+        this.$confirm(`确定撤回该计划吗?`, {
+            type: 'warning'
+        }).then(() => {
+            this.http.post('/task/withdrawalTaskPlan',{taskId: this.addForm.id},
+            res => {
+                if (res.code == "ok") {
+                    this.$message({
+                        message: '撤回成功',
+                        type: 'success'
+                    });
+                    let obj = {
+                        submitInsert: true,
+                        showOrNot: this.showOrNot
+                    }
+                    this.$emit('closeBounced', obj)
+                } else {
+                    this.$message({
+                    message: res.msg,
+                    type: "error"
+                    });
+                }
+            },
+            error => {
+                this.$message({
+                    message: error,
+                    type: "error"
+                });
+            });
+        })
+    },
     setDisabledPermission() {
         const { taskStatus } = this.showMmeiLaiDeData
         this.doYouWantToDisableAll = taskStatus == 3 || taskStatus == 4
@@ -1142,33 +1191,37 @@ export default {
         });
     },
     planOperation(type) {
-        this.http.post('/task/taskPlanPassOrReject', {
-            taskId: this.addForm.id, type
-        },
-        res => {
-            if (res.code == "ok") {
-                this.$message({
-                    message: '操作成功',
-                    type: "success"
-                });
-                let obj = {
-                    submitInsert: true,
-                    showOrNot: this.showOrNot
+        this.$confirm(`确定${type ? '通过' : '驳回'}该计划吗?`, {
+            type: 'warning'
+        }).then(() => {
+            this.http.post('/task/taskPlanPassOrReject', {
+                taskId: this.addForm.id, type
+            },
+            res => {
+                if (res.code == "ok") {
+                    this.$message({
+                        message: '操作成功',
+                        type: "success"
+                    });
+                    let obj = {
+                        submitInsert: true,
+                        showOrNot: this.showOrNot
+                    }
+                    this.$emit('closeBounced', obj)
+                } else {
+                    this.$message({
+                        message: res.msg,
+                        type: "error"
+                    });
                 }
-                this.$emit('closeBounced', obj)
-            } else {
+            },
+            error => {
                 this.$message({
-                    message: res.msg,
+                    message: error,
                     type: "error"
                 });
-            }
-        },
-        error => {
-            this.$message({
-                message: error,
-                type: "error"
             });
-        });
+        })
     },
     // 触发外层的会议
     meetingCli() {

+ 47 - 8
fhKeeper/formulahousekeeper/timesheet/src/views/project/gantt.vue

@@ -258,12 +258,24 @@ export default {
 
     //设置任务条样式
     gantt.templates.task_class = function (start, end, item) {
+      const { taskPlan, taskStatus } = item
+      if(taskStatus == 5 || taskStatus == 6) {
+        return "reject_line"
+      }
+      if(taskPlan == 1 && taskStatus == 0) {
+        return "success_line"
+      }
+      if(taskPlan == 1 && taskStatus == 2) {
+        return "draft_line"
+      }
       return item.taskPlanType == 3 ? "error_line" : "person_line"
     };
 
+    const that = this
     // 设置任务条内容显示
     gantt.templates.task_text = function (start, end, task) {
-      const { leaderOrManager, taskPlan, taskStatus } = task
+      const { leaderOrManager, taskPlan, taskStatus, checkFirstId, checkSecondId } = task
+      const userIds = that.user.id
       // 都审核通过
       if(taskPlan == 1 && taskStatus == 0 && task.text == '请假') {
         return `<div class="task_text">
@@ -294,12 +306,21 @@ export default {
       // 审核人
       // if (userInfo.projectLeaderType == 2) {
       if (leaderOrManager == 2) {
-        return `<div class="task_text statuss">
+        const oneRight = `<div class="exclamation-circle circle" style="color: ${task.taskPlanType == 3 ? '#f56c6c' : '#8ecaf8'}">V</div> <div class="circle"></div>`
+        const twoPairs = `<div class="exclamation-circle circle" style="color: ${task.taskPlanType == 3 ? '#f56c6c' : '#8ecaf8'}">V</div> <div class="circle exclamation-circle" style="color: ${task.taskPlanType == 3 ? '#f56c6c' : '#8ecaf8'}">V</div>`
+        const toExamine = `<div class="task_text statuss">
             ${task.taskStatus == 3 || task.taskStatus == 4 ? `<div class="circle">
               <div class="pendingReviewOfCornerMarkers">!</div>
-            </div>` : ''}
-            <div>${task.text}</div>
-          </div>`
+            </div>` : ''}`
+        const twoEmptyCircles = `<div class="circle"></div><div class="circle"></div>`
+        return `<div class="task_text">
+          ${(userIds == checkFirstId && task.taskStatus == 3) ? toExamine : (userIds == checkFirstId && task.taskStatus == 4) ? oneRight : ''}
+          ${(userIds == checkSecondId && task.taskStatus == 4) ? toExamine : (userIds == checkSecondId && task.taskStatus == 3) ? twoEmptyCircles : ''}
+          ${task.taskStatus == 5 ? `<div class="exclamation-circle circle" style="color: ${task.taskPlanType == 3 ? '#f56c6c' : '#8ecaf8'}">!</div> <div class="circle"></div>` : ''}
+          ${task.taskStatus == 6 ? `<div class="exclamation-circle circle" style="color: ${task.taskPlanType == 3 ? '#f56c6c' : '#8ecaf8'}">V</div> <div class="exclamation-circle circle" style="color: ${task.taskPlanType == 3 ? '#f56c6c' : '#8ecaf8'}">!</div>` : ''}
+          <div>${task.text}</div>
+          <div>${task.text}</div>
+        </div>`
       }
 
       // 正常人
@@ -336,7 +357,7 @@ export default {
     // 双击事件
     this.$refs.ganttContainer.addEventListener('dblclick', (event) => {
       const taskIdStr = gantt.locate(event);
-      if(userInfo.projectLeaderType != 1 && userInfo.projectLeaderType != 2) {
+      if(userInfo.projectLeaderType != 1 && userInfo.projectLeaderType != 2 && userInfo.projectLeaderType != 3) {
         return
       }
       this.showMmeiLaiDeData = {}
@@ -350,7 +371,7 @@ export default {
           this.handleEmptyClick({ taskId })
         }
       } else {
-        if(userInfo.projectLeaderType != 1) {
+        if(userInfo.projectLeaderType == 2) {
           return
         }
         // 获取 gantt_grid_data 容器
@@ -429,7 +450,25 @@ export default {
 .error_line {
   background: #ff5757;
   border: 1px solid;
-  border: #ff5757;
+  border-color: #ff5757;
+}
+
+.success_line {
+  background: #5cb87a;
+  border: 1px solid;
+  border-color: #5cb87a;
+}
+
+.draft_line {
+  background: #909399;
+  border: 1px solid;
+  border-color: #909399;
+}
+
+.reject_line {
+  background: #FFBD4D;
+  border: 1px solid;
+  border-color: #FFBD4D;
 }
 
 .task_text {

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

@@ -5081,6 +5081,7 @@ a {
                 this.projectManagerEdit = false
                 this.contractAmountReasonShow = false
                 if(i == -1) {
+                    this.chosenMembCount = 0
                     if(this.user.companyId == '936') {
                         this.isShowProjectName = false
                     }

+ 19 - 10
fhKeeper/formulahousekeeper/timesheet/src/views/project/project_gantt.vue

@@ -2,19 +2,20 @@
   <div class="container">
     <div class="gantt_head">
       <div class="head_RorX">
-        
-      <el-radio-group v-model="radio1" @change="selChange()" size="small" style="margin-right:9px;width:280px">
-        <el-radio-button :label="$t('an-ren-yuan-cha-kan')" value="renyuan"></el-radio-button>
-        <el-radio-button :label="$t('an-xiang-mu-cha-kan')" value="xiangmu"></el-radio-button>
-        <el-radio-button :label="$t('zi-yuan-xu-qiu')" value="demand"></el-radio-button>
-      </el-radio-group>
-      
+        <div class="filter-lefts">
+          <el-radio-group v-model="radio1" @change="selChange()" size="small">
+            <el-radio-button :label="$t('an-ren-yuan-cha-kan')" value="renyuan"></el-radio-button>
+            <el-radio-button :label="$t('an-xiang-mu-cha-kan')" value="xiangmu"></el-radio-button>
+            <el-radio-button :label="$t('zi-yuan-xu-qiu')" value="demand"></el-radio-button>
+          </el-radio-group>
+          <el-checkbox v-if="radio1 != $t('zi-yuan-xu-qiu') && user.companyId == 876" v-model="justWaitForMe" style="margin-left: 14px;" @change="selChange()">待我审核</el-checkbox>
+        </div>
       </div>
       <!-- 时间段筛选  -->
       <div class="head_date" v-if="isDataLoaded">
       <span>{{ $t('message.period') }}</span>
       <el-date-picker
-        style="margin-left:9px;width:17vw"
+        style="margin-left:9px;width:15vw"
         size="small"
         v-model="valueDate"
         type="daterange"
@@ -220,6 +221,7 @@ export default {
       valuex2: '',
 
       user: JSON.parse(sessionStorage.getItem("user")),
+      justWaitForMe: false
     };
   },
   computed: {},
@@ -515,13 +517,16 @@ export default {
             getlistcs.userId = this.valuex
           }
         }
+        if(this.justWaitForMe) {
+          getlistcs.justWaitForMe = 1
+        }
         var urls = ''
         if(this.user.userNameNeedTranslate == '1') {
           urls = '/project/getGanttDataNew'
         } else {
           urls = '/project/getGanttData'
         }
-        this.http.post(urls, getlistcs ,
+        this.http.post(urls, getlistcs,
         // this.http.post('/project/getGanttDataNew', getlistcs,
                         res => {
                             if (res.code == "ok") {
@@ -638,6 +643,10 @@ export default {
     height: 100%;
     width: 100%;
   }
+  .filter-lefts {
+    display: flex;
+    align-items: center;
+  }
   .left-container {
     overflow: hidden;
     position: relative;
@@ -656,7 +665,7 @@ export default {
     align-items: center;
   }
   .gantt_head .head_RorX{
-    width: 280px;
+    width: 380px;
   }
   .gantt_head .head_date{
     width: 22vw;