Selaa lähdekoodia

权限相关bug修改

seyason 3 vuotta sitten
vanhempi
commit
2b41cc3bcb
15 muutettua tiedostoa jossa 159 lisäystä ja 150 poistoa
  1. 25 3
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/SysRoleController.java
  2. 21 5
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java
  3. 17 21
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java
  4. 8 15
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java
  5. 14 9
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  6. 20 22
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  7. 8 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/SysRoleServiceImpl.java
  8. 12 25
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  9. 12 12
      fhKeeper/formulahousekeeper/timesheet/src/main.js
  10. 3 1
      fhKeeper/formulahousekeeper/timesheet/src/permissions.js
  11. 2 26
      fhKeeper/formulahousekeeper/timesheet/src/views/Home.vue
  12. 3 3
      fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue
  13. 11 4
      fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue
  14. 1 1
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue
  15. 2 2
      fhKeeper/formulahousekeeper/timesheet_h5/src/views/review/index.vue

+ 25 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/SysRoleController.java

@@ -2,15 +2,19 @@ package com.management.platform.controller;
 
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.management.platform.entity.Company;
 import com.management.platform.entity.SysRole;
+import com.management.platform.mapper.CompanyMapper;
 import com.management.platform.service.SysRoleService;
 import com.management.platform.service.UserService;
 import com.management.platform.util.HttpRespMsg;
+import org.springframework.util.StringUtils;
 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>
@@ -27,16 +31,34 @@ public class SysRoleController {
     private HttpServletRequest request;
     @Resource
     private SysRoleService sysRoleService;
+    @Resource
+    private CompanyMapper companyMapper;
 
     /**
      * 为已经存在的企业生成默认的角色权限
      * @param companyId 公司id
      */
     @RequestMapping("/genCorpDefaultRoles")
-    public HttpRespMsg genCorpDefaultRoles(Integer companyId) {
-        SysRole role = sysRoleService.generateDefaultRoles(companyId);
+    public HttpRespMsg genCorpDefaultRoles(Integer companyId, Integer isAll) {
         HttpRespMsg msg = new HttpRespMsg();
-        msg.data = role;
+        if (StringUtils.isEmpty(companyId) && isAll == 1) {
+            QueryWrapper<Company> queryWrapper = new QueryWrapper<Company>();
+            queryWrapper.eq("id", 88)
+                    .or().eq("id", 294).or().eq("id",309).or().eq("id", 7)
+                    .or().eq("id", 10).or().eq("id", 424).or().eq("id", 317)
+                    .or().eq("id", 428).or().eq("id", 469).or().eq("id", 528)
+                    .or().eq("id", 529).or().gt("id", 565);
+            //565是2月底最后一家
+            List<Company> allCompany = companyMapper.selectList(queryWrapper);
+            for (Company company : allCompany) {
+                SysRole role = sysRoleService.generateDefaultRoles(company.getId());
+                msg.data = role;
+            }
+        } else {
+            SysRole role = sysRoleService.generateDefaultRoles(companyId);
+            msg.data = role;
+        }
+
         return msg;
     }
 

+ 21 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -424,7 +424,7 @@ public class WeiXinCorpController {
                     SysRole managerRole = null;
                     if (cpList.size() > 0) {
                         company = cpList.get(0);
-                        managerRole = sysRoleMapper.selectOne(new QueryWrapper<SysRole>().eq("company_id", company.getId()).eq("role_name", com.management.platform.constant.Constant.ROLE_SUPER_MANAGER));
+                        managerRole = sysRoleMapper.selectOne(new QueryWrapper<SysRole>().eq("company_id", company.getId()).eq("rolename", com.management.platform.constant.Constant.ROLE_SUPER_MANAGER));
                     } else {
                         //首先生成一个新公司,增加会员的试用一个月
                         company = new Company().setCompanyName(corpName)
@@ -607,13 +607,24 @@ public class WeiXinCorpController {
                     //检查该授权人是否已经存在
                     if (userMapper.selectCount(new QueryWrapper<User>().eq("corpwx_userid", userId)) == 0) {
                         JSONObject userDetail = getUserInfo(curCorpAccessToken, userId);
-
+                        //检查是否有超级管理员
+                        SysRole smanager = sysRoleMapper.selectOne(
+                                new QueryWrapper<SysRole>().eq("company_id", companyId).eq("rolename", "超级管理员"));
                         //授权人就当做是超级管理员吧
                         log.info("===userDetail==" + userDetail.toJSONString());
+                        SysRole defaultRole = null;
+                        if (userMapper.selectCount(new QueryWrapper<User>().eq("role_id", smanager.getId()))> 0) {
+                            //已经有超级管理员了,用默认权限
+                            defaultRole = sysRoleMapper.selectOne(
+                                    new QueryWrapper<SysRole>().eq("company_id", companyId).eq("is_default", 1));
+                        } else {
+                            defaultRole = smanager;
+                        }
                         Long id = SnowFlake.nextId();
                         User user = new User()
                                 .setId(id.toString())
-                                .setRole(1)
+                                .setRoleId(defaultRole.getId())
+                                .setRoleName(defaultRole.getRolename())
                                 .setName(data.getAuthUsername()==null?userId:data.getAuthUsername())
                                 .setCorpwxUserid(userId)
                                 .setColor(ColorUtil.randomColor())
@@ -1035,6 +1046,9 @@ public class WeiXinCorpController {
         //获取公司根部门人员,也就是没有分配部门的人员
         int companyRootDeptId = 1;
         JSONArray unAssignedUserList = getDeptUserSimple(curCorpAccessToken, companyRootDeptId);
+        SysRole defaultRole = sysRoleMapper.selectOne(
+                new QueryWrapper<SysRole>().eq("company_id", companyId).eq("is_default", 1));
+
         for (int m=0;m<unAssignedUserList.size(); m++) {
             JSONObject userJson = unAssignedUserList.getJSONObject(m);
             String curUserid = userJson.getString("userid");
@@ -1043,7 +1057,8 @@ public class WeiXinCorpController {
             User user = new User();
 
             user.setId(SnowFlake.nextId()+"")
-                    .setRole(0)//默认普通员工
+                    .setRoleId(defaultRole.getId())//默认普通员工
+                    .setRoleName(defaultRole.getRolename())
                     .setCompanyId(companyId)
                     .setName(userJson.getString("name"))
                     .setCorpwxUserid(curUserid)
@@ -1071,7 +1086,8 @@ public class WeiXinCorpController {
                 User user = new User();
 
                 user.setId(SnowFlake.nextId()+"")
-                        .setRole(0)//默认普通员工
+                        .setRoleId(defaultRole.getId())//默认普通员工
+                        .setRoleName(defaultRole.getRolename())
                         .setCompanyId(companyId)
                         .setDepartmentId(0)
                         .setName(userJson.getString("name"))

+ 17 - 21
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.entity.*;
 import com.management.platform.entity.vo.DepartmentMasterVO;
 import com.management.platform.entity.vo.DepartmentVO;
+import com.management.platform.entity.vo.SysRichFunction;
 import com.management.platform.mapper.*;
 import com.management.platform.service.DepartmentService;
 import com.management.platform.util.ExcelUtil;
@@ -37,6 +38,8 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
     @Resource
     private UserMapper userMapper;
     @Resource
+    private SysFunctionMapper sysFunctionMapper;
+    @Resource
     private DepartmentMapper departmentMapper;
     @Resource
     private DepartmentService departmentService;
@@ -526,20 +529,8 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         unAssignedDept.setLabel("未分配");
         list.add(unAssignedDept);
 
-        //
         List<User> userList = new ArrayList<>();
         userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
-//        if (currentUser.getRole() == 0) {
-//            List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("incharger_id", currentUser.getId()));
-//            if (projectList.size() > 0) {
-//                List<Integer> collect = projectList.stream().map(Project::getId).collect(Collectors.toList());
-//                List<Participation> participationList = participationMapper.selectList(new QueryWrapper<Participation>().in("project_id", collect));
-//                List<String> userIds = participationList.stream().map(Participation::getUserId).collect(Collectors.toList());
-//                userList = userMapper.selectList(new QueryWrapper<User>().in("id", userIds));
-//            }
-//        } else if (currentUser.getRole() == 1 || currentUser.getRole() == 2) {
-//
-//        }
 
         List<HashMap> userMapList = new ArrayList<>();
         for (User u : userList) {
@@ -651,17 +642,22 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         try {
             Integer companyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
             User user = userMapper.selectById(request.getHeader("TOKEN"));
-            List<Integer> deptIds = new ArrayList<>();
-            deptIds.add(-1);
-            if (user.getManageDeptId() != 0) {
-                //有负责的部门
-                List<Department> myDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()));
-                List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
-                for (Department dept: myDeptList) {
-                    deptIds.add(dept.getDepartmentId());
-                    deptIds.addAll(getBranchDepartment(dept.getDepartmentId(), allDeptList));
+            List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全公司工时");
+            List<Integer> deptIds = null;
+            if (functionList.size() == 0) {
+                deptIds = new ArrayList<>();
+                deptIds.add(-1);
+                if (user.getManageDeptId() != 0) {
+                    //有负责的部门
+                    List<Department> myDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()));
+                    List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
+                    for (Department dept: myDeptList) {
+                        deptIds.add(dept.getDepartmentId());
+                        deptIds.addAll(getBranchDepartment(dept.getDepartmentId(), allDeptList));
+                    }
                 }
             }
+
             System.out.println("获取到管理的部门ids length=="+deptIds);
             List<Map<String, Object>> list = departmentMapper
                     .getCostByUser(deptIds, startDate, endDate, companyId, null);

+ 8 - 15
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java

@@ -114,7 +114,7 @@ public class DingDingServiceImpl implements DingDingService {
             if (!company.getCompanyName().equals(corpName)) {
                 company.setCompanyName(corpName);
                 companyMapper.updateById(company);
-                smanager = sysRoleMapper.selectOne(new QueryWrapper<SysRole>().eq("company_id", company.getId()).eq("role_name", Constant.ROLE_SUPER_MANAGER));
+                smanager = sysRoleMapper.selectOne(new QueryWrapper<SysRole>().eq("company_id", company.getId()).eq("rolename", Constant.ROLE_SUPER_MANAGER));
             }
         } else {
             //首先生成一个新公司,增加会员的试用一个月
@@ -169,7 +169,8 @@ public class DingDingServiceImpl implements DingDingService {
             Long id = SnowFlake.nextId();
             User user = new User()
                     .setId(id.toString())
-                    .setRole(smanager.getId())
+                    .setRoleId(smanager.getId())
+                    .setRoleName(smanager.getRolename())
                     .setDingdingUserid(authUserId)
                     .setColor(ColorUtil.randomColor())
                     .setCompanyId(company.getId());
@@ -822,18 +823,6 @@ public class DingDingServiceImpl implements DingDingService {
                         userMapper.updateById(oldUser);
                         System.out.println("更新用户姓名==" + oldUser.getName());
                     }
-                    //已有人员不做改动
-//                User oldUser = userMapper.selectList(new QueryWrapper<User>().eq("dingding_userid", dingdingUserid).eq("company_id", companyId).orderByDesc("create_time")).get(0);
-//                oldUser.setName(userJson.getString("name"));
-//                oldUser.setDepartmentId(departmentId);
-                    //不修改人员角色
-//                if (oldUser.getRole() == Constant.ROLE_EMPLOYEE) {
-//                    oldUser.setRole(user.getRole());
-//                }
-//                if (departmentId != null) {
-//                    oldUser.setDepartmentCascade(convertDepartmentIdToCascade(departmentId));
-//                }
-//                userMapper.updateById(oldUser);
                 }
             }
         }
@@ -873,6 +862,9 @@ public class DingDingServiceImpl implements DingDingService {
         OapiUserListsimpleResponse rsp = client.execute(req, access_token);
         System.out.println(rsp.getBody());
         JSONObject resp = JSONObject.parseObject(rsp.getBody());
+        SysRole defaultRole = sysRoleMapper.selectOne(
+                new QueryWrapper<SysRole>().eq("company_id", companyId).eq("is_default", 1));
+
         if (resp.getInteger("errcode") == 0) {
             JSONObject result = resp.getJSONObject("result");
             JSONArray list = result.getJSONArray("list");
@@ -885,7 +877,8 @@ public class DingDingServiceImpl implements DingDingService {
                 user.setName(userObj.getString("name"));
                 user.setDingdingUserid(userObj.getString("userid"));
                 user.setDepartmentId(sysDeptId);
-                user.setRole(0);
+                user.setRoleId(defaultRole.getId());
+                user.setRoleName(defaultRole.getRolename());
                 user.setCompanyId(companyId);
                 user.setColor(ColorUtil.randomColor());
                 user.setDepartmentCascade(convertDepartmentIdToCascade(sysDeptId));

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

@@ -118,11 +118,12 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
             User user = userMapper.selectById(request.getHeader("Token"));
-            if (user.getRole() == 0) {
+            List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部项目");
+            if (functionList.size() == 0) {
                 //普通员工只能看本人相关的项目列表
                 httpRespMsg.data = projectMapper.getParticipatedProject(user.getId(), user.getCompanyId());
             } else {
-                //其他的管理员,都可以看全部的
+                //有权限的看全部的
                 httpRespMsg.data = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", user.getCompanyId()));
             }
         } catch (NullPointerException e) {
@@ -141,9 +142,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             //通过公司id获取该公司所有的项目列表
             User user = userMapper.selectById(request.getHeader("Token"));
             Integer companyId = user.getCompanyId();
+            List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部项目");
             //判断用户的角色,如果是管理员和负责人,查看全部的。如果是普通员工,只能是看到参与的项目
             QueryWrapper<Project> queryWrapper = null;
-            if (user.getRole() == 0) {
+            if (functionList.size() == 0) {
                 //普通员工
                 List<Participation> pList = participationMapper.selectList(new QueryWrapper<Participation>().eq("user_id", user.getId()));
                 List<Integer> projectIds = new ArrayList<>();
@@ -785,7 +787,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         User user = userMapper.selectById(request.getHeader("Token"));
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         Project project = projectMapper.selectById(id);
-        if (user.getId().equals(project.getInchargerId()) || (user.getCompanyId().equals(project.getCompanyId()) && user.getRole() > 0)) {
+        if (user.getId().equals(project.getInchargerId()) || (user.getCompanyId().equals(project.getCompanyId()))) {
             project.setProgress(progress);
             //更新进度
             projectMapper.updateById(project);
@@ -800,14 +802,15 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         User user = userMapper.selectById(request.getHeader("Token"));
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         Project project = projectMapper.selectById(id);
-        if (user.getId().equals(project.getInchargerId()) || (user.getCompanyId().equals(project.getCompanyId()) && user.getRole() > 0)) {
+        List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "管理全部项目");
+        if (user.getId().equals(project.getInchargerId()) || user.getId().equals(project.getCreatorId())
+                || functionList.size() > 0) {
             project.setStatus(status);
             if (status == 2) {
                 project.setFinishDate(finishDate);
             }
             //更新状态
             projectMapper.updateById(project);
-
         } else {
             httpRespMsg.setError("无权操作");
         }
@@ -1368,7 +1371,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
         List<String> userIds = new ArrayList<>();
-        if (user.getRole() == 0) {
+        List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部项目");
+        if (functionList.size() == 0) {
             //看看是部门经理还是项目负责人
             if (user.getManageDeptId() != null && user.getManageDeptId() != 0) {
                 List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("department_id", user.getManageDeptId()));
@@ -1402,7 +1406,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             projectIds = new ArrayList<>();
             projectIds.add(targetProjectId);
         } else {
-            if (user.getRole() == 0) {
+            if (functionList.size() == 0) {
                 //普通员工只看自己相关的
                 List<Participation> participationList
                         = participationMapper.selectList(new QueryWrapper<Participation>().in("user_id", userIds));
@@ -1987,7 +1991,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         //获取我管理的用户
         User user = userMapper.selectById(request.getHeader("TOKEN"));
         List<User> userList = new ArrayList<>();
-        if (user.getRole() == 1 || user.getRole() == 2 || user.getRole() == 6) {
+        List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部项目");
+        if (functionList.size() > 0) {
             //管理员
             userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", user.getCompanyId()).eq("is_active", 1));
         } else {

+ 20 - 22
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -7,10 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.controller.WeiXinCorpController;
 import com.management.platform.entity.*;
-import com.management.platform.entity.vo.DepartmentVO;
-import com.management.platform.entity.vo.UserDailyWorkItem;
-import com.management.platform.entity.vo.UserMonthWork;
-import com.management.platform.entity.vo.WorktimeItem;
+import com.management.platform.entity.vo.*;
 import com.management.platform.mapper.*;
 import com.management.platform.service.*;
 import com.management.platform.util.ExcelUtil;
@@ -85,6 +82,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     @Resource
     private ProjectAuditorMapper projectAuditorMapper;
     @Resource
+    private SysFunctionMapper sysFunctionMapper;
+    @Resource
     private ReportService reportService;
     @Resource
     ReportExtraDegreeMapper reportExtraDegreeMapper;
@@ -161,7 +160,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             String userId = request.getHeader("Token");
             User user = userMapper.selectById(userId);
             List<Map<String, Object>> nameList = new ArrayList<>();
-            if (user.getRole() == 0) {
+            List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全公司工时");
+            if (functionList.size() == 0) {
                 String leaderId = user.getId();
 
                 //查看自己的日报
@@ -762,7 +762,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             Integer companyId = curUser.getCompanyId();
             Integer isEngeering = companyMapper.selectById(companyId).getPackageEngineering();
             String leaderId = null;
-            if (curUser.getRole() != 1 && curUser.getRole() != 2) {//非超级管理员和系统管理员
+            List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(curUser.getRoleId(), "审核全员日报");
+            if (functionList.size() == 0) {//没有全员审核的权限
                 leaderId = curUser.getId();
             }
             List<Map<String, Object>> auditReportList = reportMapper.getAuditReportList(date, companyId, departmentId, projectId, leaderId, isEngeering, startDate, endDate, userId);
@@ -1276,11 +1277,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
             User user = userMapper.selectById(request.getHeader("Token"));
-            if (user.getRole() == 0) {
-                httpRespMsg.setError("无修改权限");
-            } else {
-                reportMapper.updateById(reportMapper.selectById(id).setState(1));
-            }
+            reportMapper.updateById(reportMapper.selectById(id).setState(1));
         } catch (NullPointerException e) {
             httpRespMsg.setError("验证失败");
             return httpRespMsg;
@@ -1294,11 +1291,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
             User user = userMapper.selectById(request.getHeader("Token"));
-            if (user.getRole() == 0) {
-                httpRespMsg.setError("无修改权限");
-            } else {
-                reportMapper.updateById(reportMapper.selectById(id).setState(2));
-            }
+            reportMapper.updateById(reportMapper.selectById(id).setState(2));
         } catch (NullPointerException e) {
             httpRespMsg.setError("验证失败");
             return httpRespMsg;
@@ -1340,7 +1333,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 
         HttpRespMsg departmentList = departmentService.getDepartmentList(request);
         List<DepartmentVO> list = (List<DepartmentVO>) departmentList.data;
-        if (curUser.getRole() == 1 || curUser.getRole() == 2) {
+        List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(curUser.getRoleId(), "查看全公司工时");
+        if (functionList.size() > 0) {
             //查看全部的
             //加上未分配的部门
             DepartmentVO unAssignedDept = new DepartmentVO();
@@ -1711,10 +1705,11 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 
         List<Integer> ids = ListUtil.convertIntegerIdsArrayToList(reportIds);
         int cnt = 0;
+        List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "审核全员日报");
         for (Integer reportId : ids) {
             Report report = new Report();
             report.setState(3);//待提交,即草稿状态
-            if (user.getRole() == 0) {
+            if (functionList.size() == 0) {
                 //自己只能撤销待审核状态的
                 cnt += reportMapper.update(report, new QueryWrapper<Report>().eq("id", reportId).eq("state", 0));
             } else {
@@ -1937,7 +1932,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         List<User> allRangeUserList = new ArrayList<>();
         List<Map<String, Object>> list = null;
         //分角色权限:管理员看全部的,部门负责人看自己部门的,个人只能看自己的。
-        if (user.getRole() == 0) {
+        List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全公司工时");
+        if (functionList.size() == 0) {
             //检查是不是部门负责人
             if (user.getManageDeptId() != null && user.getManageDeptId() != 0) {
                 List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
@@ -2448,7 +2444,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             //新增数据行 并且装填数据
             int rowNum = 1;
             List<HashMap<String, Object>> allReportByDate = null;
-            if (user.getRole() == 0 || user.getRole() == 5) {
+            List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全公司工时");
+            if (functionList.size() == 0) {
                 //检查是否是部门负责人
                 if (user.getManageDeptId() > 0) {
                     List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
@@ -2488,7 +2485,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 //                allReportByDate = reportMapper.getPMOReportByDate(startDate, null, user.getId(), endDate);
 //            }
             else {
-                //管理员看公司所有人的
+                //看公司所有人的
                 allReportByDate = reportMapper.getAllReportByDate(startDate, user.getCompanyId(), null, endDate, projectId);
             }
             if (timeType.getMultiWorktime() == 1) {
@@ -2740,7 +2737,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         Integer companyId = user.getCompanyId();
         List<Map<String, Object>> list = null;
         //分角色权限:管理员看全部的,部门负责人看自己部门的,个人只能看自己的。
-        if (user.getRole() == 0) {
+        List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全公司工时");
+        if (functionList.size() == 0) {
             //检查是不是部门负责人
             if (user.getManageDeptId() != null && user.getManageDeptId() != 0) {
                 List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));

+ 8 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/SysRoleServiceImpl.java

@@ -50,7 +50,8 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
     public static String[] financeFunctions = {"人员成本管理", "添加人员", "导出人员", "导入人员", "请假填报","费用填报", "查看全部请假单"};
     public static String[] pmoFunctions = {"新增项目","查看全部项目","管理全部项目","分类管理","导入项目","代填日报", "请假填报","费用填报",
             "导出项目","查看资源分配", "基线成本项管理","查看成本基线","校正成本基线","查看合同金额"};
-    public static String[] corpLeaderFunctions = {"查看全部项目","导出项目","查看资源分配", "查看成本基线","查看合同金额", "请假填报","费用填报", "查看全部请假单"};
+    public static String[] corpLeaderFunctions = {"查看全公司工时","查看全部项目","导出项目","查看资源分配",
+            "查看成本基线","查看合同金额", "请假填报","费用填报", "查看全部请假单"};
     public static final HashMap<String, String[]> functionMaps = new HashMap();
     static {
         functionMaps.put("普通员工", employeeFunctions);
@@ -87,6 +88,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
     @Override
     public SysRole generateDefaultRoles(Integer companyId) {
         Company company = companyMapper.selectById(companyId);
+        System.out.println("==为【"+company.getCompanyName()+"】生成默认角色");
         TimeType timeType = timeTypeMapper.selectById(companyId);
         String[] roles = Constant.ROLE_NAMES;
         SysRole sManager = null;
@@ -149,6 +151,10 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
         if (company.getPackageFinance() == 1) {
             functionQueryWrapper.or().eq("package_finance", 1);
         }
+        //企业微信考勤查看全部的权限
+        if (timeType.getSyncCorpwxTime() == 1) {
+            functionQueryWrapper.or().eq("sync_corpwx_time", 1);
+        }
         functionQueryWrapper.orderByAsc("seq");
 
         List<SysFunction> functions = sysFunctionMapper.selectList(functionQueryWrapper);
@@ -179,6 +185,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
         }
         //查找之前的用户,赋予相关的roleId
         updateOldUserRole(companyId);
+        System.out.println("==========生成成功===========");
         return sManager;
     }
 

+ 12 - 25
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -403,12 +403,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
             } else {
                 if (!requester.getCompanyId().equals(target.getCompanyId())) {
                     httpRespMsg.setError("只能删除同一公司人员的账号");
-                } else if (target.getRole() == 1) {
+                } else if ("超级管理员".equals(target.getRoleName())) {
                     //超级管理员账号不能删除
-                    httpRespMsg.setError("负责人账号不可删除");
-                } else if (target.getRole() == 2 && requester.getRole() != 1) {
-                    httpRespMsg.setError("您无权删除系统管理员账号,请联系超级管理员操作");
-                }  else {
+                    httpRespMsg.setError("超级管理员不可删除");
+                } else {
                     //检测是否该人员已填日报,已填写日报的不能删除
                     Integer userReportNum = reportMapper.selectCount(new QueryWrapper<Report>().eq("creator_id", target.getId()));
                     if (userReportNum > 0) {
@@ -910,23 +908,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     @Override
     public HttpRespMsg switchPermission(String id, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
-        try {
-            User requester = userMapper.selectById(request.getHeader("Token")),
-                    target = userMapper.selectById(id);
-            if (requester.getRole() != 1) {
-                httpRespMsg.setError("仅负责人有权限更改其他人员权限");
-            } else if (!target.getCompanyId().equals(requester.getCompanyId())) {
-                httpRespMsg.setError("只可修改同一公司人员的权限");
-            } else if (target.getRole() == 1) {
-                httpRespMsg.setError("不可修改负责人的权限");
-            } else {
-                target.setRole(target.getRole() == 0 ? 2 : 0);
-                userMapper.updateById(target);
-            }
-        } catch (NullPointerException e) {
-            httpRespMsg.setError("缺少数据 未查询到相应人员信息");
-            return httpRespMsg;
-        }
+
         return httpRespMsg;
     }
 
@@ -1321,16 +1303,21 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     public HttpRespMsg changeSysManager(String toUserId, Integer myRoleId, HttpServletRequest request) {
         HttpRespMsg msg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("TOKEN"));
-        if (user.getRole() != 1) {
+        if (!"超级管理员".equals(user.getRoleName())) {
             msg.setError("无权操作");
         } else {
             User toUser = userMapper.selectById(toUserId);
             if (toUser.getIsActive() == 0) {
                 msg.setError(toUser.getName()+"已停用,请先启用该员工再转让。");
             } else {
-                toUser.setRole(1);
+                SysRole smanager = sysRoleMapper.selectOne(
+                        new QueryWrapper<SysRole>().eq("company_id", user.getCompanyId()).eq("rolename", "超级管理员"));
+                toUser.setRoleId(smanager.getId());
+                toUser.setRoleName(smanager.getRolename());
                 userMapper.updateById(toUser);
-                user.setRole(myRoleId);
+                user.setRoleId(myRoleId);
+                String newRoleName = sysRoleMapper.selectById(myRoleId).getRolename();
+                user.setRoleName(newRoleName);
                 userMapper.updateById(user);
             }
         }

+ 12 - 12
fhKeeper/formulahousekeeper/timesheet/src/main.js

@@ -230,18 +230,18 @@ function hasPermission(route, roles) {
 router.afterEach(() => {
     NProgress.done();
     // 百度统计
-    setTimeout(()=>{
-        var _hmt = _hmt || [];
-        (function() {
-            //每次执行前,先移除上次插入的代码
-            document.getElementById('baidu_tj') && document.getElementById('baidu_tj').remove();
-            var hm = document.createElement("script");
-            hm.src = "https://hm.baidu.com/hm.js?b485cd24e5dcbe73d4dde5abf7dc8ae0";
-            hm.id = "baidu_tj"
-            var s = document.getElementsByTagName("script")[0];
-            s.parentNode.insertBefore(hm, s);
-        })();
-    },0);
+    // setTimeout(()=>{
+    //     var _hmt = _hmt || [];
+    //     (function() {
+    //         //每次执行前,先移除上次插入的代码
+    //         document.getElementById('baidu_tj') && document.getElementById('baidu_tj').remove();
+    //         var hm = document.createElement("script");
+    //         hm.src = "https://hm.baidu.com/hm.js?b485cd24e5dcbe73d4dde5abf7dc8ae0";
+    //         hm.id = "baidu_tj"
+    //         var s = document.getElementsByTagName("script")[0];
+    //         s.parentNode.insertBefore(hm, s);
+    //     })();
+    // },0);
 })
 
 // 定义的方法,对文本框使用,只能输入数组, // 加 v-enter-number

+ 3 - 1
fhKeeper/formulahousekeeper/timesheet/src/permissions.js

@@ -25,6 +25,7 @@ const StringUtil = {
         reportsPersonnel: false, // 查看相关人员工时 // 后台
         reportsFillOut: false, // 代填日报 //
         reportsDeleteAll: false, // 删除全公司日报
+        importReport: false, //导入工时
 
         // 财务核算成本 
         financialCustom: false, // 自定义薪资项 // 
@@ -59,9 +60,10 @@ const StringUtil = {
 
         // 导入日报审核
         importAudit: false, // 导入日报审核记录 //
+        
     }
-
     for(var i in arr) {
+        arr[i] == '导入工时' ? obj.importReport = true : ''
         arr[i] == '导入日报审核记录' ? obj.importAudit = true : ''
         arr[i] == '新增项目' ? obj.projectNew = true : ''
         arr[i] == '查看全部项目' ? obj.projectView = true : ''

+ 2 - 26
fhKeeper/formulahousekeeper/timesheet/src/views/Home.vue

@@ -61,7 +61,7 @@
                     </span>
                     <el-dropdown-menu slot="dropdown">
                         <!-- <el-dropdown-item disabled ><span style="font-size:12px;"><i class="el-icon-view" ></i>{{roleArray[user.role]}}</span></el-dropdown-item> -->
-                        <el-dropdown-item disabled ><span style="font-size:12px;"><i class="el-icon-view" ></i>{{roleIdName}}</span></el-dropdown-item>
+                        <el-dropdown-item disabled ><span style="font-size:12px;"><i class="el-icon-view" ></i>{{user.roleName}}</span></el-dropdown-item>
                         <el-dropdown-item @click.native="reset">修改密码</el-dropdown-item>
                         <!-- <el-dropdown-item @click.native="editInfoOpen">修改信息</el-dropdown-item> -->
                         <el-dropdown-item divided @click.native="logout">退出登录</el-dropdown-item>
@@ -205,33 +205,10 @@
                 tableHeight: 0,
                 popoverData: [],
                 num: 0,
-                roleIdName: '',
             };
         },
         methods: {
-            // 获取权限
-            getRoleList() {
-                this.http.post('/permission/getRoleList', {
-                    companyId: this.user.companyId
-                },
-                    res => {
-                        if(res) {
-                            for(var i in res.data) {
-                                if(res.data[i].id == this.user.roleId) {
-                                    this.roleIdName = res.data[i].rolename
-                                }
-                            }
-                        }
-                    },
-                    error => {
-                    this.editLoading = false;
-                    this.editPassWord = false;
-                    this.$message({
-                        message: error,
-                        type: "error"
-                    });
-                });
-            },
+            
             //退出登录
             logout: function() {
                 var _this = this;
@@ -455,7 +432,6 @@
             } else {
                 this.$router.push("/login");
             }
-            this.getRoleList()
         },
     };
 </script>

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

@@ -185,15 +185,15 @@
         <el-dialog :title="title" v-if="addFormVisible" :visible.sync="addFormVisible" :close-on-click-modal="false" customClass="customWidth" width="960px">
             <el-form ref="form1" :model="addForm" :rules="rules" label-width="120px">
                 <el-form-item label="项目编号" >
-                    <el-input v-model="addForm.code" :disabled="!permissions.projectManagement" placeholder="请输入项目编号" clearable></el-input>
+                    <el-input v-model="addForm.code" :disabled="!permissions.projectManagement && addForm.creatorId != user.id" placeholder="请输入项目编号" clearable></el-input>
                 </el-form-item>
                 <el-form-item label="项目分类">
-                    <el-select v-model="addForm.category" clearable>
+                    <el-select v-model="addForm.category" clearable :disabled="!permissions.projectManagement && addForm.creatorId != user.id">
                         <el-option v-for="(item) in baseClfList" :key="item.id" :value="item.id" :label="item.name"></el-option>
                     </el-select>
                 </el-form-item>
                 <el-form-item label="项目名称" prop="name">
-                    <el-input v-model="addForm.name" :disabled="!permissions.projectManagement" placeholder="请输入项目名称" clearable></el-input>
+                    <el-input v-model="addForm.name" :disabled="!permissions.projectManagement && addForm.creatorId != user.id" placeholder="请输入项目名称" clearable></el-input>
                 </el-form-item>
                 <el-form-item label="项目类型" prop="isPublic">
                     <el-select v-model="addForm.isPublic" style="width:32%;" @change="selectPublic">

+ 11 - 4
fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

@@ -363,9 +363,9 @@
                 </el-form-item>
                 <el-form-item label="转让后自己的角色" >
                     <el-select v-model="myRoleId" style="width:300px">
-                        <el-option v-for="item in roleDescArray" :label="item.label" :value="item.value" :key="item.name">
-                            <span style="float: left">{{item.label}}</span>
-                            <span style="float: right; color: #8492a6; font-size: 13px">{{item.desc}}</span>
+                        <el-option v-for="item in acquireRoleList" :label="item.rolename" :value="item.id" :key="item.name">
+                            <span style="float: left">{{item.rolename}}</span>
+                            <span style="float: right; color: #8492a6; font-size: 13px">{{item.roleDescribe}}</span>
                         </el-option>
                     </el-select>
                 </el-form-item>
@@ -406,7 +406,7 @@
                 deactiveDate:null,
                 deactiveDialog:false,
                 toUserId:null,
-                myRoleId: 2,
+                myRoleId: null,
                 allActiveUsers:[],
                 transferDialog: false,
                 containInvalid:1,
@@ -764,6 +764,13 @@
                         });
                     return;
                 }
+                if (!this.myRoleId) {
+                    this.$message({
+                            message: '请选择转让后您自己的角色',
+                            type: "error"
+                        });
+                    return;
+                }
                 this.$confirm("您将失去超级管理员角色,需要重新登录。确定要转让吗?", "提示", {
                     //type: 'warning'
                 }).then(() => {

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

@@ -85,7 +85,7 @@
                             <el-link v-if="reportTimeType.type != 0" type="primary" style="margin-right:10px;" :underline="false" @click="isSubstitude=false;fillInReportss()">按周填报</el-link>
                             <el-link type="primary" v-if="permissions.reportsFillOut" style="margin-right:10px;" :underline="false" @click="isSubstitude=true; fillInReport(-1,0)">代填日报</el-link>
                             <el-link type="primary" style="margin-right:10px;" :underline="false" @click="isSubstitude=false;fillInReport(-1,1)">批量填报</el-link>
-                            <el-link type="primary" v-if="user.manageDeptId != 0" style="margin-right:10px;" :underline="false" @click="imports()">工时导入</el-link>
+                            <el-link type="primary" v-if="permissions.importReport || user.manageDeptId != 0" style="margin-right:10px;" :underline="false" @click="imports()">工时导入</el-link>
                             <el-link type="primary" style="margin-right:10px;" :underline="false" @click="showExportDialog">导出日报</el-link>
                             <!--部门负责人给个导出工时的功能 -->
                             <el-link type="primary" v-if="user.manageDeptId != 0" style="margin-right:10px;" :underline="false" @click="showExportTimeDialog">导出工时统计</el-link>

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

@@ -74,8 +74,8 @@
                         </div>
                     </div>
                     <div class="form_btn" slot="footer">
-                        <van-button v-if="flg" size="small" type="info" @click="approve(item.id, item)">通过</van-button>
-                        <van-button v-if="flg" size="small" type="danger" @click="showDenyDialog(item.id,0,item.dateStr, item)">驳回</van-button>
+                        <van-button v-if="(flg || user.id == item.data[0].projectAuditorId)&&item.state == 0" size="small" type="info" @click="approve(item.id, item)">通过</van-button>
+                        <van-button v-if="(flg || user.id == item.data[0].projectAuditorId)&&item.state == 0" size="small" type="danger" @click="showDenyDialog(item.id,0,item.dateStr, item)">驳回</van-button>
                         <van-button v-if="(flg || user.id == item.data[0].inchargerId) && item.state == 1" size="small" type="danger" @click="showDenyDialog(item.id,1,item.dateStr, item)">撤销</van-button>
                     </div>
                     <van-popup v-model="imgShow" position="bottom" closeable >