Kaynağa Gözat

Merge branch 'master' of http://47.100.37.243:10080/wutt/manHourHousekeeper into master

seyason 2 yıl önce
ebeveyn
işleme
000d3d4aa8
22 değiştirilmiş dosya ile 593 ekleme ve 70 silme
  1. 60 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectLevelController.java
  2. 43 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ProjectLevel.java
  3. 13 7
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TimeType.java
  4. 1 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/ProjectVO.java
  5. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectLevelMapper.java
  6. 3 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectMapper.java
  7. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TaskMapper.java
  8. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectLevelService.java
  9. 55 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectLevelServiceImpl.java
  10. 4 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectMainServiceImpl.java
  11. 164 11
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  12. 17 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectLevelMapper.xml
  13. 18 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml
  14. 12 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskMapper.xml
  15. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TimeTypeMapper.xml
  16. 19 11
      fhKeeper/formulahousekeeper/timesheet/src/permissions.js
  17. 8 19
      fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue
  18. 1 1
      fhKeeper/formulahousekeeper/timesheet/src/views/project/detail.vue
  19. 4 1
      fhKeeper/formulahousekeeper/timesheet/src/views/project/earning.vue
  20. 116 2
      fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue
  21. 0 1
      fhKeeper/formulahousekeeper/timesheet/src/views/settings/timetype.vue
  22. 15 7
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

+ 60 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectLevelController.java

@@ -0,0 +1,60 @@
+package com.management.platform.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.management.platform.entity.Project;
+import com.management.platform.entity.ProjectLevel;
+import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.ProjectLevelService;
+import com.management.platform.service.ProjectService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-25
+ */
+@RestController
+@RequestMapping("/project-level")
+public class ProjectLevelController {
+    @Autowired
+    private ProjectLevelService projectLevelService;
+    @Resource
+    private UserMapper userMapper;
+    @Resource
+    private ProjectService projectService;
+    @RequestMapping("/addOrMod")
+    public HttpRespMsg addOrMod(HttpServletRequest request, ProjectLevel projectLevel){
+        return projectLevelService.addOrMod(request,projectLevel);
+    }
+    @RequestMapping("/list")
+    public HttpRespMsg list(HttpServletRequest request){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        List<ProjectLevel> projectLevelList = projectLevelService.list(new QueryWrapper<ProjectLevel>().eq("company_id", companyId));
+        httpRespMsg.data=projectLevelList;
+        return httpRespMsg;
+    }
+    @RequestMapping("/delete")
+    public HttpRespMsg delete(Integer id){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        int cut = projectService.count(new QueryWrapper<Project>().eq("project_level_id", id));
+        if(cut>0){
+            httpRespMsg.setError("已绑定项目");
+            return httpRespMsg;
+        }
+        projectLevelService.removeById(id);
+        return httpRespMsg;
+    }
+}
+

+ 43 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ProjectLevel.java

@@ -0,0 +1,43 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-25
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ProjectLevel extends Model<ProjectLevel> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("project_level_name")
+    private String projectLevelName;
+
+    @TableField("company_id")
+    private Integer companyId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 13 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TimeType.java

@@ -1,23 +1,23 @@
 package com.management.platform.entity;
 
-import java.math.BigDecimal;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
-import java.util.List;
-
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
 /**
  * <p>
  * 
  * </p>
  *
  * @author Seyason
- * @since 2022-07-24
+ * @since 2022-07-25
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -278,6 +278,12 @@ public class TimeType extends Model<TimeType> {
     @TableField("report_audit_type")
     private Integer reportAuditType;
 
+    /**
+     * 0-未开启 1-开启
+     */
+    @TableField("project_level_state")
+    private Integer projectLevelState;
+
     @TableField(exist = false)
     private List<User> userList;
 

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

@@ -17,5 +17,6 @@ public class ProjectVO extends Project {
     String inchargerPhone;
     String statusName;
     String projectMainName;
+    String levelName;
     List<Map<String,Object>> providerInfoList;
 }

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ProjectLevelMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.ProjectLevel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-25
+ */
+public interface ProjectLevelMapper extends BaseMapper<ProjectLevel> {
+
+}

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

@@ -46,9 +46,9 @@ public interface ProjectMapper extends BaseMapper<Project> {
     List<Map<String, Object>> getAllMembCost(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("projectId") Integer projectId,
                                              @Param("companyId") Integer companyId);
 
-    List<Project> getAllProjectCost(Integer companyId, Integer pageStart, Integer pageSize, Integer projectId);
+    List<Project> getAllProjectCost(Integer companyId, Integer pageStart, Integer pageSize, Integer projectId,List<Integer> inchagerIds);
 
-    List<Project> getProjectInAndOut(Integer companyId, Integer pageStart, Integer pageSize, Integer projectId);
+    List<Project> getProjectInAndOut(Integer companyId, Integer pageStart, Integer pageSize, Integer projectId,List<Integer> inchagerIds);
 
     List<CustomerProject> getCustomerProjectInAndOut(Integer companyId, Integer pageStart, Integer pageSize,Integer customerId,Integer projectId);
 
@@ -64,7 +64,7 @@ public interface ProjectMapper extends BaseMapper<Project> {
     List<Map> getTaskPlanByProject(@Param("projectIds") List<Integer> projectIds, @Param("startDate") String startDate,
                                 @Param("endDate") String endDate, @Param("companyId") Integer companyId);
 
-    List<ProjectWithStage> selectWithStage(Integer companyId, Integer startIndex, Integer endIndex, Integer projectId);
+    List<ProjectWithStage> selectWithStage(Integer companyId, Integer startIndex, Integer endIndex, Integer projectId,List<Integer> inchagerIds);
 
     List<Map<String, Object>> getTimeCostReport(@Param("companyId") Integer companyId, @Param("startDate") String startDate, @Param("endDate") String endDate,
                                           @Param("projectId") Integer projectId,@Param("deptIds")List<Integer> deptIds);

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

@@ -31,9 +31,9 @@ public interface TaskMapper extends BaseMapper<Task> {
 
     List<TimeTask> getTaskWithWorktime(Integer projectId, Integer taskType);
 
-    List getProjectTask(Integer companyId, Integer pageStart, Integer pageSize, Integer projectId,Integer taskType);
+    List getProjectTask(Integer companyId, Integer pageStart, Integer pageSize, Integer projectId,Integer taskType,List<Integer> inchagerIds);
 
-    Integer getProjectTaskCount(Integer companyId, Integer projectId,Integer taskType);
+    Integer getProjectTaskCount(Integer companyId, Integer projectId,Integer taskType,List<Integer> inchagerIds);
 
     List getTaskWithProjectName(@Param(Constants.WRAPPER) Wrapper wrapper, Integer pageStart, Integer pageSize);
 

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectLevelService.java

@@ -0,0 +1,20 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.ProjectLevel;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.util.HttpRespMsg;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-25
+ */
+public interface ProjectLevelService extends IService<ProjectLevel> {
+
+    HttpRespMsg addOrMod(HttpServletRequest request, ProjectLevel projectLevel);
+}

+ 55 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectLevelServiceImpl.java

@@ -0,0 +1,55 @@
+package com.management.platform.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.entity.ProjectLevel;
+import com.management.platform.mapper.ProjectLevelMapper;
+import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.ProjectLevelService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2022-07-25
+ */
+@Service
+public class ProjectLevelServiceImpl extends ServiceImpl<ProjectLevelMapper, ProjectLevel> implements ProjectLevelService {
+
+    @Resource
+    private ProjectLevelMapper projectLevelMapper;
+    @Resource
+    private UserMapper userMapper;
+
+    @Override
+    public HttpRespMsg addOrMod(HttpServletRequest request, ProjectLevel projectLevel) {
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        projectLevel.setCompanyId(companyId);
+        if(projectLevel.getId()!=null){
+            Integer count = projectLevelMapper.selectCount(new QueryWrapper<ProjectLevel>().eq("company_id", projectLevel.getCompanyId())
+                    .eq("project_level_name", projectLevel.getProjectLevelName()).ne("id", projectLevel.getId()));
+            if(count>0){
+                httpRespMsg.setError("名称已存在");
+                return httpRespMsg;
+            }
+            projectLevelMapper.updateById(projectLevel);
+        }else {
+            Integer count = projectLevelMapper.selectCount(new QueryWrapper<ProjectLevel>().eq("company_id", projectLevel.getCompanyId())
+                    .eq("project_level_name", projectLevel.getProjectLevelName()));
+            if(count>0){
+                httpRespMsg.setError("名称已存在");
+                return httpRespMsg;
+            }
+            projectLevelMapper.insert(projectLevel);
+        }
+        return httpRespMsg;
+    }
+}

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

@@ -45,11 +45,11 @@ public class ProjectMainServiceImpl extends ServiceImpl<ProjectMainMapper, Proje
             Integer count1 = projectMainMapper.selectCount(new QueryWrapper<ProjectMain>().eq("company_id", projectMain.getCompanyId())
                     .eq("name", projectMain.getName()).ne("id", projectMain.getId()));
             if(count>0){
-                httpRespMsg.setError("编号重复");
+                httpRespMsg.setError("编号已存在");
                 return httpRespMsg;
             }
             if(count1>0){
-                httpRespMsg.setError("名称重复");
+                httpRespMsg.setError("名称已存在");
                 return httpRespMsg;
             }
             projectMainMapper.updateById(projectMain);
@@ -59,11 +59,11 @@ public class ProjectMainServiceImpl extends ServiceImpl<ProjectMainMapper, Proje
             Integer count3 = projectMainMapper.selectCount(new QueryWrapper<ProjectMain>().eq("company_id", projectMain.getCompanyId())
                     .eq("name", projectMain.getName()));
             if(count2>0){
-                httpRespMsg.setError("编号重复");
+                httpRespMsg.setError("编号已存在");
                 return httpRespMsg;
             }
             if(count3>0){
-                httpRespMsg.setError("名称重复");
+                httpRespMsg.setError("名称已存在");
                 return httpRespMsg;
             }
             projectMainMapper.insert(projectMain);

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

@@ -138,6 +138,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     ProviderInfoMapper providerInfoMapper;
     @Resource
     ProjectMainMapper projectMainMapper;
+    @Resource
+    ProjectLevelMapper projectLevelMapper;
 
     @Resource
     private HttpServletResponse response;
@@ -245,9 +247,17 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             List<ProviderInfo> providerInfoList = providerInfoMapper.selectList(new QueryWrapper<ProviderInfo>().eq("company_id", companyId));
             List<ProviderCategory> providerCategoryList = providerCategoryMapper.selectList(new QueryWrapper<ProviderCategory>().eq("company_id", companyId));
             List<ProjectMain> projectMainList = projectMainMapper.selectList(new QueryWrapper<ProjectMain>().eq("company_id", companyId));
+            List<ProjectLevel> projectLevelList = projectLevelMapper.selectList(new QueryWrapper<ProjectLevel>().eq("company_id", companyId));
+            TimeType timeType = timeTypeMapper.selectById(companyId);
             List<ProjectVO> list = new ArrayList<>();
             for (Project project : projectList) {
                 ProjectVO projectVO = new ProjectVO();
+                if(timeType.getProjectLevelState()==1){
+                    Optional<ProjectLevel> first = projectLevelList.stream().filter(pl -> pl.getId().equals(project.getLevel())).findFirst();
+                    if(first.isPresent()){
+                        projectVO.setLevelName(first.get().getProjectLevelName());
+                    }
+                }
                 BeanUtils.copyProperties(project, projectVO);
                 projectVO.setParticipator(participationMapper.getParticipator(projectVO.getId()));
                 Optional<User> first = userList.stream().filter(u -> u.getId().equals(project.getInchargerId())).findFirst();
@@ -1411,9 +1421,26 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     public HttpRespMsg getProjectTask(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request,Integer taskType) {
         User user = userMapper.selectById(request.getHeader("Token"));
         Integer companyId = user.getCompanyId();
-        int total = taskMapper.getProjectTaskCount(companyId, projectId,taskType);
         int pageStart = (pageIndex -1) * pageSize;
-        List projectTask = taskMapper.getProjectTask(companyId, pageStart, pageSize, projectId,taskType);
+        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目任务报表");
+        List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目任务报表");
+        //判断查看权限
+        List<Integer> inchagerIds=null;
+        if(functionAllList.size()==0){
+            inchagerIds=new ArrayList<>();
+            if(functionInchargeList.size()>0){
+                List<Project> list = projectList.stream().filter(pl ->(pl.getInchargerId()==null?0:pl.getInchargerId()).equals(user.getId())).collect(Collectors.toList());
+                if(list!=null){
+                    List<Integer> collect = list.stream().map(li -> li.getId()).collect(Collectors.toList());
+                    inchagerIds.addAll(collect);
+                }
+            }else {
+                inchagerIds.add(-1);
+            }
+        }
+        int total = taskMapper.getProjectTaskCount(companyId, projectId,taskType,inchagerIds);
+        List projectTask = taskMapper.getProjectTask(companyId, pageStart, pageSize, projectId,taskType,inchagerIds);
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         Map<String, Object> map = new HashMap<>();
         map.put("records", projectTask);
@@ -1431,7 +1458,24 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
         QueryWrapper<Project> queryWrapper = new QueryWrapper<Project>().eq("company_id", companyId);
         DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        List<Map> projectList = taskMapper.getProjectTask(companyId, null, null, null,taskType);
+        List<Project> projectAllList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目任务报表");
+        List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目任务报表");
+        //判断查看权限
+        List<Integer> inchagerIds=null;
+        if(functionAllList.size()==0){
+            inchagerIds=new ArrayList<>();
+            if(functionInchargeList.size()>0){
+                List<Project> list = projectAllList.stream().filter(pl -> (pl.getInchargerId()==null?0:pl.getInchargerId()).equals(user.getId())).collect(Collectors.toList());
+                if(list!=null){
+                    List<Integer> collect = list.stream().map(li -> li.getId()).collect(Collectors.toList());
+                    inchagerIds.addAll(collect);
+                }
+            }else {
+                inchagerIds.add(-1);
+            }
+        }
+        List<Map> projectList = taskMapper.getProjectTask(companyId, null, null, null,taskType,inchagerIds);
         List<ProjectVO> list = new ArrayList<>();
         String[] statusNames = {"进行中","已完成","已撤销"};
         String[] typeList = {"任务","里程碑","风险"};
@@ -1461,13 +1505,33 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     public HttpRespMsg getAllProjectCost(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request) {
         User user = userMapper.selectById(request.getHeader("Token"));
         Integer companyId = user.getCompanyId();
+        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目任务报表");
+        List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目任务报表");
+        //判断查看权限
+        List<Integer> inchagerIds=null;
+        if(functionAllList.size()==0){
+            inchagerIds=new ArrayList<>();
+            if(functionInchargeList.size()>0){
+                List<Project> list = projectList.stream().filter(pl -> (pl.getInchargerId()==null?0:pl.getInchargerId()).equals(user.getId())).collect(Collectors.toList());
+                if(list!=null){
+                    List<Integer> collect = list.stream().map(li -> li.getId()).collect(Collectors.toList());
+                    inchagerIds.addAll(collect);
+                }
+            }else {
+                inchagerIds.add(-1);
+            }
+        }
         //撤销的项目不算
         QueryWrapper<Project> queryWrapper = new QueryWrapper<Project>().eq("company_id", companyId);
         queryWrapper.and(wrapper->wrapper.isNull("status").or().ne("status", 3));
+        if(inchagerIds!=null){
+            queryWrapper.in("id",inchagerIds);
+        }
         int total = projectMapper.selectCount(queryWrapper);
         int pageStart = (pageIndex -1) * pageSize;
         System.out.println("companyId="+companyId+", pageStart="+pageStart+", pageSize="+pageSize);
-        List projectTask = projectMapper.getAllProjectCost(companyId, pageStart, pageSize, projectId);
+        List projectTask = projectMapper.getAllProjectCost(companyId, pageStart, pageSize, projectId,inchagerIds);
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         Map<String, Object> map = new HashMap<>();
         map.put("records", projectTask);
@@ -1482,9 +1546,25 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         //通过公司id获取该公司所有的项目列表
         User user = userMapper.selectById(request.getHeader("Token"));
         Integer companyId = user.getCompanyId();
-
+        List<Project> projectAllList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目任务报表");
+        List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目任务报表");
+        //判断查看权限
+        List<Integer> inchagerIds=null;
+        if(functionAllList.size()==0){
+            inchagerIds=new ArrayList<>();
+            if(functionInchargeList.size()>0){
+                List<Project> list = projectAllList.stream().filter(pl ->(pl.getInchargerId()==null?0:pl.getInchargerId()).equals(user.getId())).collect(Collectors.toList());
+                if(list!=null){
+                    List<Integer> collect = list.stream().map(li -> li.getId()).collect(Collectors.toList());
+                    inchagerIds.addAll(collect);
+                }
+            }else {
+                inchagerIds.add(-1);
+            }
+        }
         QueryWrapper<Project> queryWrapper = new QueryWrapper<Project>().eq("company_id", companyId);
-        List<Project> projectList = projectMapper.getAllProjectCost(companyId, null, null, null);
+        List<Project> projectList = projectMapper.getAllProjectCost(companyId, null, null, null,inchagerIds);
         List<List<String>> exportList = new ArrayList<>();
         String[] titles = {"项目编号", "项目名称", "人工成本", "一般费用", "差旅费用","外包费用", "总费用"};
         exportList.add(Lists.list(titles));
@@ -1510,12 +1590,32 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     public HttpRespMsg getProjectInAndOut(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request) {
         User user = userMapper.selectById(request.getHeader("Token"));
         Integer companyId = user.getCompanyId();
+        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目任务报表");
+        List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目任务报表");
+        //判断查看权限
+        List<Integer> inchagerIds=null;
+        if(functionAllList.size()==0){
+            inchagerIds=new ArrayList<>();
+            if(functionInchargeList.size()>0){
+                List<Project> list = projectList.stream().filter(pl ->(pl.getInchargerId()==null?0:pl.getInchargerId()).equals(user.getId())).collect(Collectors.toList());
+                if(list!=null){
+                    List<Integer> collect = list.stream().map(li -> li.getId()).collect(Collectors.toList());
+                    inchagerIds.addAll(collect);
+                }
+            }else {
+                inchagerIds.add(-1);
+            }
+        }
         //撤销的项目不算
         QueryWrapper<Project> queryWrapper = new QueryWrapper<Project>().eq("company_id", companyId);
         queryWrapper.and(wrapper->wrapper.isNull("status").or().ne("status", 3));
+        if(inchagerIds!=null){
+            queryWrapper.in("id",inchagerIds);
+        }
         int total = projectMapper.selectCount(queryWrapper);
         int pageStart = (pageIndex -1) * pageSize;
-        List projectTask = projectMapper.getProjectInAndOut(companyId, pageStart, pageSize, projectId);
+        List projectTask = projectMapper.getProjectInAndOut(companyId, pageStart, pageSize, projectId,inchagerIds);
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         Map<String, Object> map = new HashMap<>();
         map.put("records", projectTask);
@@ -1550,9 +1650,25 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         //通过公司id获取该公司所有的项目列表
         User user = userMapper.selectById(request.getHeader("Token"));
         Integer companyId = user.getCompanyId();
-
+        List<Project> projectAllList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目任务报表");
+        List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目任务报表");
+        //判断查看权限
+        List<Integer> inchagerIds=null;
+        if(functionAllList.size()==0){
+            inchagerIds=new ArrayList<>();
+            if(functionInchargeList.size()>0){
+                List<Project> list = projectAllList.stream().filter(pl -> (pl.getInchargerId()==null?0:pl.getInchargerId()).equals(user.getId())).collect(Collectors.toList());
+                if(list!=null){
+                    List<Integer> collect = list.stream().map(li -> li.getId()).collect(Collectors.toList());
+                    inchagerIds.addAll(collect);
+                }
+            }else {
+                inchagerIds.add(-1);
+            }
+        }
         QueryWrapper<Project> queryWrapper = new QueryWrapper<Project>().eq("company_id", companyId);
-        List<Project> projectList = projectMapper.getProjectInAndOut(companyId, null, null, null);
+        List<Project> projectList = projectMapper.getProjectInAndOut(companyId, null, null, null,inchagerIds);
         List<List<String>> exportList = new ArrayList<>();
         String[] titles = {"项目编号", "项目名称", "合同金额", "人工成本", "一般费用", "差旅费用","外包费用", "总费用", "利润", "利润率"};
         exportList.add(Lists.list(titles));
@@ -2025,12 +2141,32 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         int startIndex = (pageIndex-1)*pageSize;
         int endIndex = pageSize*pageIndex;
         HttpRespMsg msg = new HttpRespMsg();
+        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目任务报表");
+        List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目任务报表");
+        //判断查看权限
+        List<Integer> inchagerIds=null;
+        if(functionAllList.size()==0){
+            inchagerIds=new ArrayList<>();
+            if(functionInchargeList.size()>0){
+                List<Project> list = projectList.stream().filter(pl -> (pl.getInchargerId()==null?0:pl.getInchargerId()).equals(user.getId())).collect(Collectors.toList());
+                if(list!=null){
+                    List<Integer> collect = list.stream().map(li -> li.getId()).collect(Collectors.toList());
+                    inchagerIds.addAll(collect);
+                }
+            }else {
+                inchagerIds.add(-1);
+            }
+        }
         QueryWrapper<Project> queryWrapper = new QueryWrapper<Project>().eq("company_id", companyId);
         if (projectId != null) {
             queryWrapper.eq("id", projectId);
         }
+        if(inchagerIds!=null){
+            queryWrapper.in("id",inchagerIds);
+        }
         Integer total = projectMapper.selectCount(queryWrapper);
-        List<ProjectWithStage> record = projectMapper.selectWithStage(companyId, startIndex, endIndex, projectId);
+        List<ProjectWithStage> record = projectMapper.selectWithStage(companyId, startIndex, endIndex, projectId,inchagerIds);
         List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看阶段成本");
         if (functionList.size() == 0) {
             //去掉成本
@@ -2061,7 +2197,24 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         User user = userMapper.selectById(token);
         Integer companyId = user.getCompanyId();
         HttpRespMsg msg = new HttpRespMsg();
-        List<ProjectWithStage> record = projectMapper.selectWithStage(companyId, null, null, null);
+        List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", companyId));
+        List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目任务报表");
+        List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目任务报表");
+        //判断查看权限
+        List<Integer> inchagerIds=null;
+        if(functionAllList.size()==0){
+            inchagerIds=new ArrayList<>();
+            if(functionInchargeList.size()>0){
+                List<Project> list = projectList.stream().filter(pl -> (pl.getInchargerId()==null?0:pl.getInchargerId()).equals(user.getId())).collect(Collectors.toList());
+                if(list!=null){
+                    List<Integer> collect = list.stream().map(li -> li.getId()).collect(Collectors.toList());
+                    inchagerIds.addAll(collect);
+                }
+            }else {
+                inchagerIds.add(-1);
+            }
+        }
+        List<ProjectWithStage> record = projectMapper.selectWithStage(companyId, null, null, null,inchagerIds);
         //获取全部的列
         List<Integer> collect = record.stream().map(ProjectWithStage::getId).collect(Collectors.toList());
         List<Stages> stagesList = stagesMapper.selectList(new QueryWrapper<Stages>().select("distinct stages_name").in("project_id", collect));

+ 17 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectLevelMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.management.platform.mapper.ProjectLevelMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.ProjectLevel">
+        <id column="id" property="id" />
+        <result column="project_level_name" property="projectLevelName" />
+        <result column="company_id" property="companyId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, project_level_name, company_id
+    </sql>
+
+</mapper>

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

@@ -76,6 +76,12 @@
         <if test="projectId != null">
             and id = #{projectId}
         </if>
+        <if test="inchagerIds!=null and inchagerIds.size()>0">
+            and id in
+            <foreach collection="inchagerIds" open="(" close=")" separator="," item="item">
+                #{item}
+            </foreach>
+        </if>
         order by is_public desc, id asc
         <if test="startIndex != null">
             limit ${startIndex}, ${endIndex}
@@ -403,6 +409,12 @@
         <if test="projectId != null">
             and project.id = #{projectId}
         </if>
+        <if test="inchagerIds!=null and inchagerIds.size()>0">
+            and project.id in
+            <foreach collection="inchagerIds" open="(" separator="," close=")" item="item">
+                #{item}
+            </foreach>
+        </if>
         order by project.is_public desc, project.id asc
         <if test="pageStart != null and pageSize != null">
             LIMIT #{pageStart},#{pageSize}
@@ -420,6 +432,12 @@
         <if test="projectId != null">
             and project.id = #{projectId}
         </if>
+        <if test="inchagerIds!=null and inchagerIds.size()>0">
+            and project.id in
+            <foreach collection="inchagerIds" open="(" separator="," close=")" item="item">
+                #{item}
+            </foreach>
+        </if>
         order by is_public desc, id asc
         <if test="pageStart != null and pageSize != null">
             LIMIT #{pageStart},#{pageSize}

+ 12 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskMapper.xml

@@ -168,6 +168,12 @@
         <if test="taskType!=null">
             and task.task_type=#{taskType}
         </if>
+        <if test="inchagerIds!=null and inchagerIds.size()>0">
+            and task.project_id in
+            <foreach collection="inchagerIds" open="(" separator="," close=")" item="item">
+                #{item}
+            </foreach>
+        </if>
         ORDER BY project.is_public desc, project.id ASC, task.stages_id asc, task.seq asc
         <if test="pageStart != null and pageSize != null">
             limit #{pageStart}, #{pageSize}
@@ -182,6 +188,12 @@
         <if test="taskType!=null">
             and task.task_type=#{taskType}
         </if>
+        <if test="inchagerIds!=null and inchagerIds.size()>0">
+            and task.project_id in
+            <foreach collection="inchagerIds" open="(" separator="," close=")" item="item">
+                #{item}
+            </foreach>
+        </if>
     </select>
 
     <select id="getTaskWithProjectName" resultMap="RichResultMap">

Dosya farkı çok büyük olduğundan ihmal edildi
+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TimeTypeMapper.xml


+ 19 - 11
fhKeeper/formulahousekeeper/timesheet/src/permissions.js

@@ -42,12 +42,16 @@ const StringUtil = {
         setFinanceAuditor: false, //设置财务审核人
 
         // 项目报表服务 // 
-        reportProject: false, // 项目报表 //
-        reportTask : false, // 项目任务报表 //
-        reportCostOf : false, // 项目成本报表 // 
-        reportBalance : false, // 项目收支平衡表 // 
+        reportProject: false, // 全部项目报表 //
+        reportAllTask : false, // 全部项目任务报表 //
+        reportTask : false, // 负责项目任务报表 //
+        reportAllCostOf : false, // 全部项目成本报表 // 
+        reportCostOf : false, // 负责项目成本报表 // 
+        reportAllBalance : false, // 全部项目收支平衡表 // 
+        reportBalance : false, // 负责项目收支平衡表 // 
         reportProfits : false, // 客户项目利润表 // 
-        reportPhase : false, // 项目阶段工时表 // 
+        reportAllPhase : false, // 全部项目阶段工时表 // 
+        reportPhase : false, // 负责项目阶段工时表 // 
         reportAllOvertime : false, // 全公司加班情况 //
         reportOvertime : false, // 负责部门加班情况 //
         reportCost: false, // 查看加班成本 //
@@ -57,7 +61,7 @@ const StringUtil = {
         reportTimeDivide: false, // 负责部门工时分配 //
         reportAllTimely: false, // 全公司填报及时率 //
         reportTimely: false, // 负责部门填报及时率 //
-        reportAuditRate: false, // 查看日报待审核统计 // 
+        reportAuditRate: false, // 日报待审核统计 // 
         reportPersonnel: false, // 全公司工时统计 //
         reportResponsible: false, // 负责部门工时统计 //
 
@@ -121,11 +125,15 @@ const StringUtil = {
         arr[i] == '薪资数据上传' ? obj.financialUpload = true : ''
         arr[i] == '薪资数据导出' ? obj.financialExport = true : ''
         arr[i] == '导出分摊数据' ? obj.financialShare = true : ''
-        arr[i] == '项目任务报表' ? obj.reportTask = true : ''
-        arr[i] == '项目成本报表' ? obj.reportCostOf = true : ''
-        arr[i] == '项目收支平衡表' ? obj.reportBalance = true : ''
+        arr[i] == '负责项目任务报表' ? obj.reportTask = true : ''
+        arr[i] == '全部项目任务报表' ? obj.reportAllTask = true : ''
+        arr[i] == '负责项目成本报表' ? obj.reportCostOf = true : ''
+        arr[i] == '全部项目成本报表' ? obj.reportAllCostOf = true : ''
+        arr[i] == '负责项目收支平衡表' ? obj.reportBalance = true : ''
+        arr[i] == '全部项目收支平衡表' ? obj.reportAllBalance = true : ''
         arr[i] == '客户项目利润表' ? obj.reportProfits = true : ''
-        arr[i] == '项目阶段工时表' ? obj.reportPhase = true : ''
+        arr[i] == '负责项目阶段工时表' ? obj.reportPhase = true : ''
+        arr[i] == '全部项目阶段工时表' ? obj.reportAllPhase = true : ''
         arr[i] == '全公司加班情况' ? obj.reportAllOvertime = true : ''
         arr[i] == '负责部门加班情况' ? obj.reportOvertime = true : ''
         arr[i] == '请假填报' ? obj.leaveFil = true : ''
@@ -157,7 +165,7 @@ const StringUtil = {
         arr[i] == '日报待审核统计' ? obj.reportAuditRate = true : ''
         arr[i] == '查看工时统计' ? obj.countHours = true : ''
         arr[i] == '查看成本统计' ? obj.countCost = true : ''
-        arr[i] == '项目报表' ? obj.reportProject = true : ''
+        arr[i] == '全部项目报表' ? obj.reportProject = true : ''
         arr[i] == '批量填报' ? obj.reportBatch = true : ''
         arr[i] == '项目阶段管理' ? obj.projectPhase = true : ''
         arr[i] == '全公司工时统计' ? obj.reportPersonnel = true : ''

+ 8 - 19
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -20,13 +20,13 @@
                   <span>项目报表服务</span>
                 </template>
                   <el-menu-item index="1-1" v-if="permissions.reportProject"><p @click="ssl(0)">项目报表</p></el-menu-item>
-                  <el-menu-item index="1-2" v-if="permissions.reportTask"><p @click="ssl(1)">项目任务报表</p></el-menu-item>
-                  <el-menu-item index="1-3" v-if="permissions.reportCostOf"><p @click="ssl(2)">项目成本报表</p></el-menu-item>
+                  <el-menu-item index="1-2" v-if="permissions.reportTask || permissions.reportAllTask"><p @click="ssl(1)">项目任务报表</p></el-menu-item>
+                  <el-menu-item index="1-3" v-if="permissions.reportCostOf || permissions.reportAllCostOf"><p @click="ssl(2)">项目成本报表</p></el-menu-item>
                   <el-menu-item index="1-9" v-if="permissions.reportAllTimeDivide || permissions.reportTimeDivide"><p @click="ssl(8)">人员工时分配表</p></el-menu-item>
                   <el-menu-item index="1-4" v-if="permissions.reportCostWarning"><p @click="ssl(7)">工时成本预警表</p></el-menu-item>
-                  <el-menu-item index="1-5" v-if="permissions.reportBalance"><p @click="ssl(3)">项目收支平衡表</p></el-menu-item>
+                  <el-menu-item index="1-5" v-if="permissions.reportBalance || permissions.reportAllBalance"><p @click="ssl(3)">项目收支平衡表</p></el-menu-item>
                   <el-menu-item index="1-6" v-if="user.company.packageCustomer == 1 && permissions.reportProfits"><p @click="ssl(4)">客户项目利润表</p></el-menu-item>
-                  <el-menu-item index="1-7" v-if="permissions.reportPhase"><p @click="ssl(5)">项目阶段工时表</p></el-menu-item>
+                  <el-menu-item index="1-7" v-if="permissions.reportPhase || permissions.reportAllPhase"><p @click="ssl(5)">项目阶段工时表</p></el-menu-item>
                   <el-menu-item index="1-8" v-if="permissions.reportAllOvertime || permissions.reportOvertime"><p @click="ssl(6)">加班情况统计表</p></el-menu-item>
 
                   <el-menu-item index="1-10" v-if="permissions.reportAllTimely || permissions.reportTimely"><p @click="ssl(9)">员工填报及时率</p></el-menu-item>
@@ -744,25 +744,14 @@ export default {
   },
   methods: {
     authorityToJudge() {
-      // if(this.permissions.reportProject) {this.ins = 0;return} else
-      // if(this.permissions.reportTask) {this.ins = 1;return} else
-      // if(this.permissions.reportCostOf) {this.ins = 2;return} else
-      // if(this.permissions.reportTimeDivide) {this.ins = 8;return} else
-      // if(this.permissions.reportCostWarning) {this.ins = 7;return} else
-      // if(this.permissions.reportBalance) {this.ins = 3;return} else
-      // if(this.permissions.reportProfits) {this.ins = 4;return} else
-      // if(this.permissions.reportPhase) {this.ins = 5;return} else
-      // if(this.permissions.reportOvertime) {this.ins = 6;return} else
-      // if(this.permissions.reportTimely) {this.ins = 9;return} else
-      // if(this.permissions.reportAuditRate) {this.ins = 10;return} else {this.allWrong = false}
       if(this.permissions.reportProject) {this.ssl(0);this.defaultActive = '1-1';return} else
-      if(this.permissions.reportTask) {this.ssl(1);this.defaultActive = '1-2';return} else
-      if(this.permissions.reportCostOf) {this.ssl(2);this.defaultActive = '1-3';return} else
+      if(this.permissions.reportTask || this.permissions.reportAllTask) {this.ssl(1);this.defaultActive = '1-2';return} else
+      if(this.permissions.reportCostOf || this.permissions.reportAllCostOf) {this.ssl(2);this.defaultActive = '1-3';return} else
       if(this.permissions.reportTimeDivide || this.permissions.reportAllTimeDivide) {this.ssl(8);this.defaultActive = '1-9';return} else
       if(this.permissions.reportCostWarning) {this.ssl(7);this.defaultActive = '1-4';return} else
-      if(this.permissions.reportBalance) {this.ssl(3);this.defaultActive = '1-5';return} else
+      if(this.permissions.reportBalance || this.permissions.reportAllBalance) {this.ssl(3);this.defaultActive = '1-5';return} else
       if(this.permissions.reportProfits) {this.ssl(4);this.defaultActive = '1-6';return} else
-      if(this.permissions.reportPhase) {this.ssl(5);this.defaultActive = '1-7';return} else
+      if(this.permissions.reportPhase || this.permissions.reportAllPhase) {this.ssl(5);this.defaultActive = '1-7';return} else
       if(this.permissions.reportOvertime || this.permissions.reportAllOvertime) {this.ssl(6);this.defaultActive = '1-8';return} else
       if(this.permissions.reportTimely || this.permissions.reportAllTimely) {this.ssl(9);this.defaultActive = '1-10';return} else
       if(this.permissions.reportAuditRate) {this.ssl(10);this.defaultActive = '1-11';return} else 

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

@@ -18,7 +18,7 @@
         <el-col :span="24"  style="margin-top:10px;padding-bottom: 0px;text-align:center;">
             <el-radio-group v-model="radio" @change="getList">
                 <el-radio-button label="人员"></el-radio-button>
-                <el-radio-button label="子项目"></el-radio-button>
+                <el-radio-button label="子项目" v-if="user.timeType.mainProjectState != '1'"></el-radio-button>
                 <el-radio-button label="阶段" v-if="user.company.packageProject != 0"></el-radio-button>
             </el-radio-group>
         </el-col>

+ 4 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/project/earning.vue

@@ -41,7 +41,10 @@
                         <el-table-column label="基线成本" align="center">
                             <el-table-column v-for="item in costFields" :prop="contractAmount" :label="item.baseName" :key="item.id" align="right">
                                 <template slot-scope="scope">
-                                ¥{{scope.row.costList.filter(c=>c.baseId == item.baseId)[0].baseAmount | numberToCurrency}}
+                                    <span v-if="scope.row.costList.filter(c=>c.baseId == item.baseId)[0]">
+                                        ¥{{scope.row.costList.filter(c=>c.baseId == item.baseId)[0].baseAmount | numberToCurrency}}
+                                    </span>
+                                <!-- ¥{{scope.row.costList.filter(c=>c.baseId == item.baseId)[0].baseAmount | numberToCurrency}} -->
                                 </template>
                             </el-table-column>
 <!-- 

+ 116 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -93,6 +93,9 @@
                             <el-dropdown-item v-if="permissions.projectPhase && user.company.packageProject == 1">
                                 <el-link type="primary" :underline="false" @click="phaseProjectDialog = true">项目阶段管理</el-link>
                             </el-dropdown-item>
+                            <el-dropdown-item v-if="user.timeType.projectLevelState == 1">
+                                <el-link type="primary" :underline="false" @click="projectLevelDialog = true">项目级别管理</el-link>
+                            </el-dropdown-item>
                         </el-dropdown-menu>
                         </el-dropdown>
                 </el-form-item>
@@ -206,9 +209,10 @@
             </template>
             </el-table-column>
             <!-- 级别 -->
-            <el-table-column prop="level" label="级别" min-width="190"   v-if="user.company.packageProject == 1">
+            <el-table-column :prop="user.timeType.projectLevelState == 1 ? 'levelName' : 'level'" label="级别" min-width="190"   v-if="user.company.packageProject == 1">
                 <template slot-scope="scope">
-                    {{importanceListLable[scope.row.level - 1]}}
+                    <span v-if="user.timeType.projectLevelState == 1">{{scope.row.levelName}}</span>
+                    <span v-else>{{importanceListLable[scope.row.level - 1]}}</span>
                 </template>
             </el-table-column>
             <!-- 供应商 -->
@@ -622,6 +626,43 @@
                 <el-button type="primary" @click="addPanthPro()" >新增项目阶段</el-button>
             </div>
         </el-dialog>
+
+        <!-- 项目级别管理 -->
+        <el-dialog title="项目级别管理" show-header="false" v-if="projectLevelDialog" :visible.sync="projectLevelDialog" :close-on-click-modal="false" customClass="customWidth" width="600px">
+            <el-table :data="levelList" highlight-current-row  height="400" style="width: 100%;">
+                <el-table-column type="index" width="60" label="序号">
+                    <template slot-scope="scope" >
+                            {{scope.$index+1+(page-1)*size}}
+                        </template>
+                </el-table-column>
+                <el-table-column prop="projectLevelName" label="级别名称" ></el-table-column>
+                <el-table-column label="操作" width="150">
+                    <template slot-scope="scope" >
+                        <el-button size="small" type="primary" @click="addProjectLevel(scope.row)">编辑</el-button>
+                        <el-button size="small" type="danger" @click="deleteProjectLevel(scope.row)">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="projectLevelDialog = false" >关闭</el-button>
+                <el-button type="primary" @click="addProjectLevel()" >新增项目级别</el-button>
+            </div>
+        </el-dialog>
+
+        <!-- 新增/编辑项目级别 -->
+        <el-dialog title="新增/修改项目级别" v-if="addProjectLevelDialog" :visible.sync="addProjectLevelDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
+            <el-form ref="form2" :model="addLevelForm" :rules="rules" label-width="120px">
+                <el-form-item label="项目级别名称" prop="projectLevelName">
+                    <el-input v-model="addLevelForm.projectLevelName" placeholder="请输入名称" clearable></el-input>
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button @click="addProjectLevelDialog = false">取消</el-button>
+                <el-button type="primary" @click="submitLevelPro" :loading="addLoading">提交</el-button>
+            </div>
+        </el-dialog>
+
+
         <!-- 新增/编辑 分类条目 -->
         <el-dialog title="新增/修改分类条目" v-if="addClfDialog" :visible.sync="addClfDialog" :close-on-click-modal="false" customClass="customWidth" width="500px">
             <el-form ref="form2" :model="addClf" :rules="rules" label-width="100px">
@@ -856,8 +897,10 @@ a {
             return {
                 addFlgmainProjectDialog: false,
                 addFlgPanthProjectDialog: false,
+                addProjectLevelDialog: false,
                 mainProjectList: [],
                 mainProjectDialog: false,
+                projectLevelDialog: false,
                 showImportResult: false,
                 importResultMsg:null,
                 isganttshow: false,
@@ -938,6 +981,7 @@ a {
                     name: [{ required: true, message: "请输入名称", trigger: "blur" }],
                     code: [{ required: true, message: "请输入编号", trigger: "blur" }],
                     projectStageName: [{ required: true, message: "请输入名称", trigger: "blur" }],
+                    projectLevelName: [{ required: true, message: "请输入名称", trigger: "blur" }],
                 },
                 ause: [],
                 auseList: [],
@@ -957,6 +1001,10 @@ a {
                     id: '',
                     projectStageName: ''
                 },
+                addLevelForm: {
+                    id: '',
+                    projectStageName: ''
+                },
                 statusClf:null,
                 permissionsObj: {},
 
@@ -988,6 +1036,7 @@ a {
                 listHeader: [], // 列表表头
                 rowid: '',
                 phaseProjectDialog: false, // 项目阶段
+                levelList: [],  // 项目级别
             };
         },
         // 过滤器
@@ -1054,6 +1103,66 @@ a {
                     });
                 });
             },
+            // 获取级别
+            getProjectLevel(){
+                this.http.post('/project-level/list', {},
+                res => {
+                    if (res.code == "ok") {
+                        this.levelList = res.data
+                        // this.$set(this, 'levelList', res.data)
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: "error"
+                        });
+                    }
+                },
+                error => {
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                });
+            },
+            addProjectLevel(row){
+                this.addProjectLevelDialog = true
+                if(!row) {
+                    this.addLevelForm = {
+                        projectLevelName: '',
+                        id: ''
+                        // companyId:''
+                    }
+                } else {
+                    this.addLevelForm = {
+                        id: row.id,
+                        projectLevelName: row.projectLevelName
+                        // companyId: row.companyId
+                    }
+                }
+            },
+            submitLevelPro(){
+                this.http.post('/project-level/addOrMod',this.addLevelForm,
+                    res => {
+                        if (res.code == "ok") {
+                            this.addProjectLevelDialog = false;
+                            this.getProjectLevel()
+                        } else {
+                            this.$message({
+                                message: res.msg,
+                                type: "error"
+                            });
+                        }
+                    },
+                    error => {
+                        this.$message({
+                            message: error,
+                            type: "error"
+                        });
+                        }
+                    );
+            },
+
+
             // 表格点击
             tableCellClassName({row, column, rowIndex, columnIndex}) {
                 row.index=rowIndex;
@@ -3171,6 +3280,8 @@ a {
             if(this.user.company.packageProvider == 1){
                 this.getSupplierList()
                 // this.getPhase()
+            }
+            if(this.user.company.packageProject == 1) {
                 this.obtainPhase()
             }
             // this.getSupplierList()
@@ -3178,6 +3289,9 @@ a {
             if(this.user.timeType.mainProjectState == 1){
                 this.getMainProject()
             }
+            if(this.user.timeType.projectLevelState == 1){
+                this.getProjectLevel()
+            }
 
             // 判断释放为专业版
             if(this.user.company.packageProject == 1) {

+ 0 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/settings/timetype.vue

@@ -909,7 +909,6 @@
                         } else {
                             param.customTextActive = 0
                         }
-                        
                         param.fillOvertime = param.fillOvertime ? 1 : 0
                         param.lockWorktime = param.lockWorktime ? 1 : 0
                         param.fillAhead = param.fillAhead ? 1 : 0

+ 15 - 7
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -3453,7 +3453,7 @@
             },
 
             // 获取日期列表
-            getAllDate() {
+            getAllDate(e) {
                 var dayArry = [];
                 var day = this.getCountDays();
                 let curMonthDay = null;
@@ -3488,16 +3488,24 @@
                     let nowmonth = new Date().getMonth() + 1
                     let nowd = new Date().getFullYear() + '-' + (nowmonth < 10 ? '0' + nowmonth : nowmonth)
                     if(nowd == this.date){
-                        let nowday = new Date().getDate()
+                        
+                        if(e && sessionStorage.msg){
+                        }else{
+                            sessionStorage.msg = this.date + '-' + (nowday < 10 ? '0' + nowday : nowday)
+                        }
+                        let nowday = new Date(sessionStorage.msg).getDate()
                         this.choseDay = nowday - 1
-                        sessionStorage.msg = this.date + '-' + (nowday < 10 ? '0' + nowday : nowday)
+                        
                         let monthdate = new Date(sessionStorage.msg)
                         this.curDate = (monthdate.getMonth() + 1) + '月' + monthdate.getDate() + '日'
                         console.log('choseday',sessionStorage.msg,this.choseDay,monthdate.getDate());
                     }else{
-                        this.choseDay = 0;
-                        sessionStorage.msg = this.date + '-01'
-                        let monthdate = new Date(this.date + '-01')
+                        if(e && sessionStorage.msg){
+                        }else{
+                            sessionStorage.msg = this.date + '-01'
+                        }
+                        this.choseDay = day - 1
+                        let monthdate = new Date(sessionStorage.msg)
                         this.curDate = (monthdate.getMonth() + 1) + '月' + monthdate.getDate() + '日'
                     }
                 }else{
@@ -5321,7 +5329,7 @@
             var t = util.formatDate.format(now, 'yyyy-MM-dd');
             var startStr = util.formatDate.format(new Date(), 'yyyy-MM') + "-01";
             this.exportParam.dateRange = [startStr,t];
-            this.getAllDate();
+            this.getAllDate(1);
             this.getReportList();
             this.getProjectList();
             this.getFillProjectList();