Browse Source

部门主要负责人要有权限看负责部门的出差记录并进行关联

seyason 2 years ago
parent
commit
710eca262a
15 changed files with 222 additions and 143 deletions
  1. 8 10
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/BusinessTripController.java
  2. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java
  3. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserController.java
  4. 64 65
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java
  5. 15 9
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/User.java
  6. 3 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/DepartmentService.java
  7. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/UserService.java
  8. 40 5
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/BusinessTripServiceImpl.java
  9. 13 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java
  10. 17 5
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  11. 8 4
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserMapper.xml
  12. 5 8
      fhKeeper/formulahousekeeper/timesheet/src/views/awayOffice/awayOffice.vue
  13. 6 7
      fhKeeper/formulahousekeeper/timesheet/src/views/project/info.vue
  14. 23 24
      fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue
  15. 15 2
      fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

+ 8 - 10
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/BusinessTripController.java

@@ -1,13 +1,17 @@
 package com.management.platform.controller;
 package com.management.platform.controller;
 
 
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.BusinessTrip;
 import com.management.platform.entity.BusinessTrip;
+import com.management.platform.entity.Department;
 import com.management.platform.entity.LeaveSheet;
 import com.management.platform.entity.LeaveSheet;
 import com.management.platform.entity.User;
 import com.management.platform.entity.User;
 import com.management.platform.entity.vo.SysRichFunction;
 import com.management.platform.entity.vo.SysRichFunction;
+import com.management.platform.mapper.DepartmentMapper;
 import com.management.platform.mapper.SysFunctionMapper;
 import com.management.platform.mapper.SysFunctionMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.BusinessTripService;
 import com.management.platform.service.BusinessTripService;
+import com.management.platform.service.DepartmentService;
 import com.management.platform.service.LeaveSheetService;
 import com.management.platform.service.LeaveSheetService;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -17,7 +21,9 @@ import org.springframework.web.bind.annotation.RestController;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -37,8 +43,8 @@ public class BusinessTripController {
     BusinessTripService businessTripService;
     BusinessTripService businessTripService;
     @Resource
     @Resource
     private HttpServletRequest request;
     private HttpServletRequest request;
-    @Resource
-    SysFunctionMapper sysFunctionMapper;
+
+
 
 
     @RequestMapping("/add")
     @RequestMapping("/add")
     public HttpRespMsg add(BusinessTrip sheet) {
     public HttpRespMsg add(BusinessTrip sheet) {
@@ -59,14 +65,6 @@ public class BusinessTripController {
 
 
     @RequestMapping("/list")
     @RequestMapping("/list")
     public HttpRespMsg list(BusinessTrip sheet, @RequestParam Integer pageIndex, @RequestParam Integer pageSize) {
     public HttpRespMsg list(BusinessTrip sheet, @RequestParam Integer pageIndex, @RequestParam Integer pageSize) {
-        String token = request.getHeader("TOKEN");
-        User user = userMapper.selectById(token);
-        List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部出差");
-        if (functionList.size() == 0) {
-            //普通员工只能看自己的
-            sheet.setOwnerId(user.getId());
-        }
-        sheet.setCompanyId(user.getCompanyId());
         return businessTripService.queryList(sheet, pageIndex, pageSize);
         return businessTripService.queryList(sheet, pageIndex, pageSize);
     }
     }
 
 

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

@@ -608,7 +608,7 @@ public class TaskController {
         String userId = request.getHeader("Token");
         String userId = request.getHeader("Token");
 
 
         QueryWrapper<Task> queryWrapper = new QueryWrapper<Task>().eq("project_id", projectId).eq("task_type", 1);
         QueryWrapper<Task> queryWrapper = new QueryWrapper<Task>().eq("project_id", projectId).eq("task_type", 1);
-        queryWrapper.orderByAsc("id");
+        queryWrapper.orderByAsc("end_date");
         msg.data = taskService.list(queryWrapper);
         msg.data = taskService.list(queryWrapper);
         return msg;
         return msg;
     }
     }

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

@@ -136,9 +136,9 @@ public class UserController {
                                   @RequestParam Integer roleId, Double monthCost, Double cost,
                                   @RequestParam Integer roleId, Double monthCost, Double cost,
                                   Integer departmentId, Integer salaryType, String costApplyDate,
                                   Integer departmentId, Integer salaryType, String costApplyDate,
                                     String position, String certJson,String inductionDate,String superiorId,
                                     String position, String certJson,String inductionDate,String superiorId,
-                                    String plate1,String plate2,String plate3,String plate4,String plate5) {
+                                    String plate1,String plate2,String plate3,String plate4,String plate5, String jobNumber) {
         return userService.insertUser(id, name, phone, roleId, monthCost, cost, departmentId, salaryType, costApplyDate,
         return userService.insertUser(id, name, phone, roleId, monthCost, cost, departmentId, salaryType, costApplyDate,
-                    position, certJson, request,inductionDate,superiorId,plate1, plate2, plate3,plate4,plate5);
+                    position, certJson, request,inductionDate,superiorId,plate1, plate2, plate3,plate4,plate5, jobNumber);
     }
     }
 
 
     /**
     /**

+ 64 - 65
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -391,8 +391,10 @@ public class WeiXinCorpController {
                                     .setRoleId(defaultRole.getId())
                                     .setRoleId(defaultRole.getId())
                                     .setRoleName(defaultRole.getRolename())
                                     .setRoleName(defaultRole.getRolename())
                                     .setName(userObj.getString("name"))
                                     .setName(userObj.getString("name"))
+                                    .setPhone(userObj.getString("mobile"))
                                     .setPassword(MD5Util.getPassword("000000"))
                                     .setPassword(MD5Util.getPassword("000000"))
                                     .setCorpwxUserid(corpWxUserId)
                                     .setCorpwxUserid(corpWxUserId)
+                                    .setJobNumber(userObj.getString("userid"))
                                     .setColor(ColorUtil.randomColor())
                                     .setColor(ColorUtil.randomColor())
                                     .setCompanyId(companyId);
                                     .setCompanyId(companyId);
                             if (sysDept != null) {
                             if (sysDept != null) {
@@ -1472,12 +1474,12 @@ public class WeiXinCorpController {
             if (unAssignedUserList.size() > 0) {
             if (unAssignedUserList.size() > 0) {
                 remoteUnAUserList = remoteGetDeptUserDetail(wxCorpInfo, corpContactAccessToken, companyRootDeptId);
                 remoteUnAUserList = remoteGetDeptUserDetail(wxCorpInfo, corpContactAccessToken, companyRootDeptId);
                 //做id转化
                 //做id转化
-                List<String> userIds = new ArrayList<>();
+                List<String> corpUserIds = new ArrayList<>();
                 for (int i=0;i<remoteUnAUserList.size(); i++) {
                 for (int i=0;i<remoteUnAUserList.size(); i++) {
-                    userIds.add(remoteUnAUserList.getJSONObject(i).getString("userid"));
+                    corpUserIds.add(remoteUnAUserList.getJSONObject(i).getString("userid"));
                 }
                 }
                 try {
                 try {
-                    JSONArray array = convertUserIdToOpenUserId(curCorpAccessToken, userIds);
+                    JSONArray array = convertUserIdToOpenUserId(curCorpAccessToken, corpUserIds);
                     for (int i=0;i<array.size(); i++) {
                     for (int i=0;i<array.size(); i++) {
                         JSONObject jsonObject = array.getJSONObject(i);
                         JSONObject jsonObject = array.getJSONObject(i);
                         String userid = jsonObject.getString("userid");
                         String userid = jsonObject.getString("userid");
@@ -1486,7 +1488,7 @@ public class WeiXinCorpController {
                         for (int m=0;m<remoteUnAUserList.size(); m++) {
                         for (int m=0;m<remoteUnAUserList.size(); m++) {
                             JSONObject remoteUser = remoteUnAUserList.getJSONObject(m);
                             JSONObject remoteUser = remoteUnAUserList.getJSONObject(m);
                             if (remoteUser.getString("userid").equals(userid)) {
                             if (remoteUser.getString("userid").equals(userid)) {
-                                remoteUser.put("userid", openUserid);
+                                remoteUser.put("openUserid", openUserid);
                                 break;
                                 break;
                             }
                             }
                         }
                         }
@@ -1498,7 +1500,7 @@ public class WeiXinCorpController {
                 }
                 }
             }
             }
 
 
-
+            List<User> updateUserList = new ArrayList<>();
             for (int m=0;m<unAssignedUserList.size(); m++) {
             for (int m=0;m<unAssignedUserList.size(); m++) {
                 JSONObject userJson = unAssignedUserList.getJSONObject(m);
                 JSONObject userJson = unAssignedUserList.getJSONObject(m);
                 String curUserid = userJson.getString("userid");
                 String curUserid = userJson.getString("userid");
@@ -1523,36 +1525,44 @@ public class WeiXinCorpController {
                 if (remoteUnAUserList != null) {
                 if (remoteUnAUserList != null) {
                     for (int i=0;i<remoteUnAUserList.size(); i++) {
                     for (int i=0;i<remoteUnAUserList.size(); i++) {
                         JSONObject remoteUserJson = remoteUnAUserList.getJSONObject(i);
                         JSONObject remoteUserJson = remoteUnAUserList.getJSONObject(i);
-                        if (remoteUserJson.getString("userid").equals(curUserid)) {
+                        if (remoteUserJson.getString("openUserid").equals(curUserid)) {
                             user.setName(remoteUserJson.getString("name"));
                             user.setName(remoteUserJson.getString("name"));
+                            user.setJobNumber(remoteUserJson.getString("userid"));
+                            user.setPhone(remoteUserJson.getString("mobile"));
                             break;
                             break;
                         }
                         }
                     }
                     }
                 }
                 }
                 //检查用户是否已经存在
                 //检查用户是否已经存在
-                User oldUser = userMapper.selectOne(new QueryWrapper<User>().select("id, name, role_name").eq("corpwx_userid", curUserid).eq("company_id", companyId));
-
+                User oldUser = userMapper.selectOne(new QueryWrapper<User>().select("id, name, job_number, phone").eq("corpwx_userid", curUserid).eq("company_id", companyId));
                 if (oldUser == null) {
                 if (oldUser == null) {
-                    //先检查姓名+手机号是否存在,如果存在,则更新corpwxId
-                    User sameNameUser = userMapper.selectOne(new QueryWrapper<User>().eq("name", user.getName()).eq("phone", user.getPhone()).eq("company_id", companyId).isNull("corpwx_userid").last("limit 1"));
-                    if (sameNameUser != null) {
-                        User upUser = new User();
-                        upUser.setId(sameNameUser.getId());
-                        upUser.setCorpwxUserid(user.getCorpwxUserid());
-                        userMapper.updateById(upUser);
-                    } else {
-                        userMapper.insert(user);
-                    }
+                    updateUserList.add(user);
                 } else {
                 } else {
-                    if (oldUser.getRoleName().equals("超级管理员") && !oldUser.getName().equals(user.getName())) {
-                        //姓名不一致,需要更新
-                        System.out.println("===更新超管姓名==="+user.getName());
-                        user.setId(oldUser.getId());
-                        oldUser.setName(user.getName());
-                        userMapper.updateById(oldUser);
+                    boolean hasChange = false;
+                    User updateUser = new User();
+                    updateUser.setId(oldUser.getId());
+                    //工号或者手机号更新了
+                    if (user.getJobNumber() != null && !user.getJobNumber().equals(oldUser.getJobNumber())) {
+                        hasChange = true;
+                        updateUser.setJobNumber(user.getJobNumber());
+                    }
+                    if (user.getPhone() != null && !user.getPhone().equals(oldUser.getPhone())) {
+                        hasChange = true;
+                        updateUser.setPhone(user.getPhone());
+                    }
+                    if (user.getName() != null && !user.getName().equals(oldUser.getName())) {
+                        hasChange = true;
+                        updateUser.setName(user.getName());
+                    }
+                    if (hasChange) {
+                        //需要更新
+                        updateUserList.add(updateUser);
                     }
                     }
                 }
                 }
             }
             }
+            if (updateUserList.size() > 0) {
+                userService.saveOrUpdateBatch(updateUserList);
+            }
         }
         }
 
 
         //获取公司全部部门,不需要递归
         //获取公司全部部门,不需要递归
@@ -1587,15 +1597,6 @@ public class WeiXinCorpController {
                 if (deptId != 1) {
                 if (deptId != 1) {
                     //忽略根,根是公司名称
                     //忽略根,根是公司名称
                     departmentMapper.insert(department);
                     departmentMapper.insert(department);
-                    //按名称比对
-//                    oldDept = departmentMapper.selectOne(new QueryWrapper<Department>().eq("company_id", companyId).eq("department_name", department.getDepartmentName()).last("limit 1"));
-//                    if (oldDept == null) {
-//                        departmentMapper.insert(department);
-//                    } else {
-//                        //按照企业微信部门id进行更新
-//                        oldDept.setCorpwxDeptid(department.getCorpwxDeptid());
-//                        departmentMapper.updateById(oldDept);
-//                    }
                 }
                 }
             } else {
             } else {
                 //比较是否有更新
                 //比较是否有更新
@@ -1619,7 +1620,6 @@ public class WeiXinCorpController {
                 department = oldDept;
                 department = oldDept;
             }
             }
 
 
-//            sysDeptList.add(department);
             deptObjJSONArray.getJSONObject(i).put("sys_dept_id", department.getDepartmentId());
             deptObjJSONArray.getJSONObject(i).put("sys_dept_id", department.getDepartmentId());
             Integer departmentId = department.getDepartmentId();
             Integer departmentId = department.getDepartmentId();
             if (syncMembs == 1) {
             if (syncMembs == 1) {
@@ -1628,12 +1628,12 @@ public class WeiXinCorpController {
                 if (userList.size() > 0) {
                 if (userList.size() > 0) {
                     remoteDeptUserList = remoteGetDeptUserDetail(wxCorpInfo, corpContactAccessToken, deptId);
                     remoteDeptUserList = remoteGetDeptUserDetail(wxCorpInfo, corpContactAccessToken, deptId);
                     //做id转化
                     //做id转化
-                    List<String> userIds = new ArrayList<>();
+                    List<String> corpUserIds = new ArrayList<>();
                     for (int p=0;p<remoteDeptUserList.size(); p++) {
                     for (int p=0;p<remoteDeptUserList.size(); p++) {
-                        userIds.add(remoteDeptUserList.getJSONObject(p).getString("userid"));
+                        corpUserIds.add(remoteDeptUserList.getJSONObject(p).getString("userid"));
                     }
                     }
                     try {
                     try {
-                        JSONArray array = convertUserIdToOpenUserId(curCorpAccessToken, userIds);
+                        JSONArray array = convertUserIdToOpenUserId(curCorpAccessToken, corpUserIds);
                         for (int w=0;w<array.size(); w++) {
                         for (int w=0;w<array.size(); w++) {
                             JSONObject jsonObject = array.getJSONObject(w);
                             JSONObject jsonObject = array.getJSONObject(w);
                             String userid = jsonObject.getString("userid");
                             String userid = jsonObject.getString("userid");
@@ -1642,7 +1642,7 @@ public class WeiXinCorpController {
                             for (int m=0;m<remoteDeptUserList.size(); m++) {
                             for (int m=0;m<remoteDeptUserList.size(); m++) {
                                 JSONObject remoteUser = remoteDeptUserList.getJSONObject(m);
                                 JSONObject remoteUser = remoteDeptUserList.getJSONObject(m);
                                 if (remoteUser.getString("userid").equals(userid)) {
                                 if (remoteUser.getString("userid").equals(userid)) {
-                                    remoteUser.put("userid", openUserid);
+                                    remoteUser.put("openUserid", openUserid);
                                     break;
                                     break;
                                 }
                                 }
                             }
                             }
@@ -1653,7 +1653,7 @@ public class WeiXinCorpController {
                         return msg;
                         return msg;
                     }
                     }
                 }
                 }
-
+                List<User> updateUserList = new ArrayList<>();
                 for (int m=0;m<userList.size(); m++) {
                 for (int m=0;m<userList.size(); m++) {
                     JSONObject userJson = userList.getJSONObject(m);
                     JSONObject userJson = userList.getJSONObject(m);
                     String curUserid = userJson.getString("userid");
                     String curUserid = userJson.getString("userid");
@@ -1678,47 +1678,46 @@ public class WeiXinCorpController {
                     if (remoteDeptUserList != null) {
                     if (remoteDeptUserList != null) {
                         for (int t=0;t<remoteDeptUserList.size(); t++) {
                         for (int t=0;t<remoteDeptUserList.size(); t++) {
                             JSONObject remoteUserJson = remoteDeptUserList.getJSONObject(t);
                             JSONObject remoteUserJson = remoteDeptUserList.getJSONObject(t);
-                            if (remoteUserJson.getString("userid").equals(curUserid)) {
+                            if (remoteUserJson.getString("openUserid").equals(curUserid)) {
                                 //匹配到了。设置姓名
                                 //匹配到了。设置姓名
                                 System.out.println("远程的用户匹配到了:"+remoteUserJson.getString("name"));
                                 System.out.println("远程的用户匹配到了:"+remoteUserJson.getString("name"));
                                 user.setName(remoteUserJson.getString("name"));
                                 user.setName(remoteUserJson.getString("name"));
+                                user.setJobNumber(remoteUserJson.getString("userid"));
+                                user.setPhone(remoteUserJson.getString("mobile"));
                                 break;
                                 break;
                             }
                             }
                         }
                         }
                     }
                     }
                     //检查用户是否已经存在
                     //检查用户是否已经存在
-                    User oldUser = userMapper.selectOne(new QueryWrapper<User>().eq("corpwx_userid", curUserid).eq("company_id", companyId));
+                    User oldUser = userMapper.selectOne(new QueryWrapper<User>().select("id, name, job_number, phone").eq("corpwx_userid", curUserid).eq("company_id", companyId));
                     if (oldUser == null) {
                     if (oldUser == null) {
-                        //先检查姓名是否存在,如果存在,则更新corpwxId
-                        User sameNameUser = userMapper.selectOne(new QueryWrapper<User>().eq("name", user.getName()).eq("phone", user.getPhone()).eq("company_id", companyId).isNull("corpwx_userid").last("limit 1"));
-                        if (sameNameUser != null) {
-                            User upUser = new User();
-                            upUser.setId(sameNameUser.getId());
-                            upUser.setCorpwxUserid(user.getCorpwxUserid());
-                            userMapper.updateById(upUser);
-                        } else {
-                            //姓名也不存在,则插入新记录
-                            userMapper.insert(user);
-                        }
+                        updateUserList.add(user);
                     } else {
                     } else {
-                        boolean shouldUpdate = false;
-                        if (oldUser.getRoleName().equals("超级管理员") && !oldUser.getName().equals(user.getName())) {
-                            //姓名不一致,需要更新
-                            System.out.println("===更新超管姓名==="+user.getName());
-                            user.setId(oldUser.getId());
-                            oldUser.setName(user.getName());
-                            shouldUpdate = true;
+                        boolean hasChange = false;
+                        User updateUser = new User();
+                        updateUser.setId(oldUser.getId());
+                        //工号或者手机号更新了
+                        if (user.getJobNumber() != null && !user.getJobNumber().equals(oldUser.getJobNumber())) {
+                            hasChange = true;
+                            updateUser.setJobNumber(user.getJobNumber());
                         }
                         }
-                        if (!oldUser.getDepartmentId().equals(user.getDepartmentId())) {
-                            oldUser.setDepartmentId(user.getDepartmentId());
-                            shouldUpdate = true;
+                        if (user.getPhone() != null && !user.getPhone().equals(oldUser.getPhone())) {
+                            hasChange = true;
+                            updateUser.setPhone(user.getPhone());
                         }
                         }
-                        if (shouldUpdate) {
-                            userMapper.updateById(oldUser);
+                        if (user.getName() != null && !user.getName().equals(oldUser.getName())) {
+                            hasChange = true;
+                            updateUser.setName(user.getName());
+                        }
+                        if (hasChange) {
+                            //需要更新
+                            updateUserList.add(updateUser);
                         }
                         }
-
                     }
                     }
                 }
                 }
+                if (updateUserList.size() > 0) {
+                    userService.saveOrUpdateBatch(updateUserList);
+                }
             }
             }
         }
         }
 
 

+ 15 - 9
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/User.java

@@ -1,27 +1,27 @@
 package com.management.platform.entity;
 package com.management.platform.entity;
 
 
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
+import java.math.BigDecimal;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.List;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.format.annotation.DateTimeFormat;
 
 
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.util.List;
-
 /**
 /**
  * <p>
  * <p>
  * 
  * 
  * </p>
  * </p>
  *
  *
  * @author Seyason
  * @author Seyason
- * @since 2022-06-14
+ * @since 2022-08-09
  */
  */
 @Data
 @Data
 @EqualsAndHashCode(callSuper = false)
 @EqualsAndHashCode(callSuper = false)
@@ -220,6 +220,12 @@ public class User extends Model<User> {
     @TableField(exist = false)
     @TableField(exist = false)
     private double totalHours;
     private double totalHours;
 
 
+    /**
+     * 员工工号,公司内唯一
+     */
+    @TableField("job_number")
+    private String jobNumber;
+
     @TableField(exist = false)
     @TableField(exist = false)
     private List<UserCert> certList;
     private List<UserCert> certList;
 
 

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/DepartmentService.java

@@ -5,6 +5,7 @@ import com.management.platform.entity.Department;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.HttpRespMsg;
 
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
+import java.util.List;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -40,4 +41,6 @@ public interface DepartmentService extends IService<Department> {
     HttpRespMsg exportDeptStatistic(String startDate, String endDate, HttpServletRequest request);
     HttpRespMsg exportDeptStatistic(String startDate, String endDate, HttpServletRequest request);
 
 
     HttpRespMsg getDeptCustomDataStatistic(String startDate, String endDate, Integer departmentId, HttpServletRequest request);
     HttpRespMsg getDeptCustomDataStatistic(String startDate, String endDate, Integer departmentId, HttpServletRequest request);
+
+    public List<Integer> getDeptIncludeSubDeptIds(Integer departmentId, List<Department> allDeptList);
 }
 }

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

@@ -33,7 +33,8 @@ public interface UserService extends IService<User> {
 
 
     HttpRespMsg insertUser(String id, String name, String phone, Integer roleId, Double monthCost, Double cost, Integer departmentId,
     HttpRespMsg insertUser(String id, String name, String phone, Integer roleId, Double monthCost, Double cost, Integer departmentId,
                            Integer salaryType, String costApplyDate, String position, String certJson,
                            Integer salaryType, String costApplyDate, String position, String certJson,
-                           HttpServletRequest request,String inductionDate, String superiorId,String plate1,String plate2,String plate3,String plate4,String plate5);
+                           HttpServletRequest request,String inductionDate, String superiorId,String plate1,
+                           String plate2,String plate3,String plate4,String plate5, String jobNumber);
 
 
     HttpRespMsg importUser(MultipartFile multipartFile, HttpServletRequest request);
     HttpRespMsg importUser(MultipartFile multipartFile, HttpServletRequest request);
 
 

+ 40 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/BusinessTripServiceImpl.java

@@ -4,19 +4,18 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.management.platform.entity.*;
 import com.management.platform.entity.*;
+import com.management.platform.entity.vo.SysRichFunction;
 import com.management.platform.mapper.*;
 import com.management.platform.mapper.*;
 import com.management.platform.service.BusinessTripService;
 import com.management.platform.service.BusinessTripService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.service.DepartmentService;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 import org.springframework.util.StringUtils;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 /**
 /**
@@ -41,7 +40,12 @@ public class BusinessTripServiceImpl extends ServiceImpl<BusinessTripMapper, Bus
     private HttpServletRequest request;
     private HttpServletRequest request;
     @Resource
     @Resource
     private ProjectMapper projectMapper;
     private ProjectMapper projectMapper;
-
+    @Resource
+    SysFunctionMapper sysFunctionMapper;
+    @Resource
+    DepartmentMapper departmentMapper;
+    @Resource
+    DepartmentService departmentService;
 
 
     @Override
     @Override
     public HttpRespMsg modifyProject(BusinessTrip sheet) {
     public HttpRespMsg modifyProject(BusinessTrip sheet) {
@@ -90,8 +94,39 @@ public class BusinessTripServiceImpl extends ServiceImpl<BusinessTripMapper, Bus
 
 
     @Override
     @Override
     public HttpRespMsg queryList(BusinessTrip sheet, Integer pageIndex, Integer pageSize) {
     public HttpRespMsg queryList(BusinessTrip sheet, Integer pageIndex, Integer pageSize) {
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
         QueryWrapper<BusinessTrip> queryWrapper = new QueryWrapper<BusinessTrip>();
         QueryWrapper<BusinessTrip> queryWrapper = new QueryWrapper<BusinessTrip>();
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         HttpRespMsg httpRespMsg = new HttpRespMsg();
+        List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部出差");
+        if (functionList.size() == 0) {
+            //部门主要负责人可以看这个部门的
+            List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("manager_id", user.getId()));
+            if (departmentList.size() > 0) {
+                //先是自己的
+                List<String> userIds = new ArrayList<>();
+                userIds.add(user.getId());
+                //负责的部门的人员
+                List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
+                List<Integer> allDeptIds = new ArrayList<>();
+                for (Department firstLevelDept : departmentList) {
+                    List<Integer> deptIncludeSubDeptIds = departmentService.getDeptIncludeSubDeptIds(firstLevelDept.getDepartmentId(), allDeptList);
+                    allDeptIds.addAll(deptIncludeSubDeptIds);
+                }
+                if (allDeptIds.size() > 0) {
+                    List<User> userList = userMapper.selectList(new QueryWrapper<User>().select("id").in("department_id", allDeptIds));
+                    List<String> collect = userList.stream().map(User::getId).collect(Collectors.toList());
+                    userIds.addAll(collect);
+                    System.out.println("可见用户size=="+userIds.size());
+                    queryWrapper.in("owner_id", userIds);
+                }
+            } else {
+                //普通员工只能看自己的
+                sheet.setOwnerId(user.getId());
+            }
+        }
+        sheet.setCompanyId(user.getCompanyId());
+
         queryWrapper.eq("company_id", sheet.getCompanyId()).orderByDesc("id");
         queryWrapper.eq("company_id", sheet.getCompanyId()).orderByDesc("id");
 
 
         //增加状态
         //增加状态

+ 13 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java

@@ -952,6 +952,19 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         return httpRespMsg;
         return httpRespMsg;
     }
     }
 
 
+    @Override
+    public List<Integer> getDeptIncludeSubDeptIds(Integer departmentId, List<Department> allDeptList) {
+        List<Integer> list = new ArrayList<>();
+        list.add(departmentId);
+        //搜到子部门进行添加
+        for (Department department : allDeptList) {
+            if (departmentId.equals(department.getSuperiorId())) {
+                list.addAll(getBranchDepartment(department.getDepartmentId(), allDeptList));
+            }
+        }
+        return list;
+    }
+
 
 
     private void fillDeptUser(List<DepartmentVO> list, List<HashMap> userList) {
     private void fillDeptUser(List<DepartmentVO> list, List<HashMap> userList) {
         list.forEach(l->{
         list.forEach(l->{

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

@@ -674,13 +674,14 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     @Override
     @Override
     public HttpRespMsg insertUser(String targetId, String name, String phone, Integer roleId, Double monthCost, Double cost,
     public HttpRespMsg insertUser(String targetId, String name, String phone, Integer roleId, Double monthCost, Double cost,
                                   Integer departmentId, Integer salaryType, String costApplyDate, String position, String certJson, HttpServletRequest request,String inductionDate,
                                   Integer departmentId, Integer salaryType, String costApplyDate, String position, String certJson, HttpServletRequest request,String inductionDate,
-                                  String superiorId,   String plate1,String plate2,String plate3,String plate4,String plate5) {
+                                  String superiorId,   String plate1,String plate2,String plate3,String plate4,String plate5, String jobNumber) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         try {
         try {
             User creator = userMapper.selectById(request.getHeader("Token"));
             User creator = userMapper.selectById(request.getHeader("Token"));
             if (name != null) name = name.trim();
             if (name != null) name = name.trim();
             if (phone != null) phone = phone.trim();
             if (phone != null) phone = phone.trim();
+            if (jobNumber != null) jobNumber = jobNumber.trim();
             //处理时薪
             //处理时薪
             BigDecimal costValue = cost == null ? BigDecimal.valueOf(0) : BigDecimal.valueOf(cost);
             BigDecimal costValue = cost == null ? BigDecimal.valueOf(0) : BigDecimal.valueOf(cost);
             BigDecimal monthCostValue = (monthCost == null ? BigDecimal.valueOf(0) : BigDecimal.valueOf(monthCost));
             BigDecimal monthCostValue = (monthCost == null ? BigDecimal.valueOf(0) : BigDecimal.valueOf(monthCost));
@@ -696,6 +697,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                             (companyMapper.selectById(creator.getCompanyId()).getStaffCountMax())) {
                             (companyMapper.selectById(creator.getCompanyId()).getStaffCountMax())) {
                         httpRespMsg.setError("公司人员已达上限");
                         httpRespMsg.setError("公司人员已达上限");
                     } else {
                     } else {
+                        //检查本公司内工号是否重复
+                        if (!StringUtils.isEmpty(jobNumber) && userMapper.selectList(new QueryWrapper<User>().eq("company_id", creator.getCompanyId()).eq("job_number", jobNumber)).size() > 0) {
+                            httpRespMsg.setError("该工号已存在");
+                            return httpRespMsg;
+                        }
                         Long id = SnowFlake.nextId();
                         Long id = SnowFlake.nextId();
                         User user = new User()
                         User user = new User()
                                 .setId(id.toString())
                                 .setId(id.toString())
@@ -720,7 +726,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                                 .setPlate2(plate2)
                                 .setPlate2(plate2)
                                 .setPlate3(plate3)
                                 .setPlate3(plate3)
                                 .setPlate4(plate4)
                                 .setPlate4(plate4)
-                                .setPlate5(plate5);
+                                .setPlate5(plate5)
+                                .setJobNumber(jobNumber);
                         if(inductionDate!=null&&inductionDate!=""){
                         if(inductionDate!=null&&inductionDate!=""){
                             user.setInductionDate(LocalDate.parse(inductionDate,dtf));
                             user.setInductionDate(LocalDate.parse(inductionDate,dtf));
                         }
                         }
@@ -747,7 +754,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                     httpRespMsg.setError("该电话号码已存在");
                     httpRespMsg.setError("该电话号码已存在");
                     return httpRespMsg;
                     return httpRespMsg;
                 }
                 }
-
+                //检查本公司内工号是否重复
+                if (!StringUtils.isEmpty(jobNumber) && userMapper.selectList(new QueryWrapper<User>().eq("company_id", creator.getCompanyId()).eq("job_number", jobNumber).ne("id", targetId)).size() > 0) {
+                    httpRespMsg.setError("该工号已存在");
+                    return httpRespMsg;
+                }
                 User oldUser = userMapper.selectById(targetId);
                 User oldUser = userMapper.selectById(targetId);
                 boolean salaryChange = false;
                 boolean salaryChange = false;
 
 
@@ -784,7 +795,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                         .setPlate2(plate2)
                         .setPlate2(plate2)
                         .setPlate3(plate3)
                         .setPlate3(plate3)
                         .setPlate4(plate4)
                         .setPlate4(plate4)
-                        .setPlate5(plate5));
+                        .setPlate5(plate5)
+                        .setJobNumber(jobNumber));
                 if (salaryChange) {
                 if (salaryChange) {
                     UserSalary userSalary = UserSalary.copyFromUser(oldUser);
                     UserSalary userSalary = UserSalary.copyFromUser(oldUser);
                     userSalaryMapper.insert(userSalary);
                     userSalaryMapper.insert(userSalary);
@@ -1769,7 +1781,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         HttpRespMsg msg = new HttpRespMsg();
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
         User user = userMapper.selectById(token);
-        List<User> userList = userMapper.selectList(new QueryWrapper<User>().select("id, name, phone").eq("company_id", user.getCompanyId()).eq("is_active", 1));
+        List<User> userList = userMapper.selectList(new QueryWrapper<User>().select("id, name, phone, job_number").eq("company_id", user.getCompanyId()).eq("is_active", 1));
         msg.data = userList;
         msg.data = userList;
         return msg;
         return msg;
     }
     }

+ 8 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserMapper.xml

@@ -37,6 +37,8 @@
         <result column="plate3" property="plate3" />
         <result column="plate3" property="plate3" />
         <result column="plate4" property="plate4" />
         <result column="plate4" property="plate4" />
         <result column="plate5" property="plate5" />
         <result column="plate5" property="plate5" />
+        <result column="is_ops" property="isOps" />
+        <result column="job_number" property="jobNumber" />
     </resultMap>
     </resultMap>
     <resultMap id="BaseResultMap2" type="com.management.platform.entity.User">
     <resultMap id="BaseResultMap2" type="com.management.platform.entity.User">
         <id column="id" property="id" />
         <id column="id" property="id" />
@@ -46,13 +48,14 @@
     </resultMap>
     </resultMap>
     <!-- 通用查询结果列 -->
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
     <sql id="Base_Column_List">
-        id, name, phone, password, portrait_url, create_time, role, company_id, department_id, department_cascade, cost, month_cost, salary_type, manage_dept_id, color, is_active, wx_openid, role_id, role_name, cost_apply_date, dingding_userid, dingding_unionid, corpwx_userid, induction_date, inactive_date, position, report_status, superior_id, plate1, plate2, plate3, plate4, plate5
+        id, name, phone, password, portrait_url, create_time, role, company_id, department_id, department_cascade, cost, month_cost, salary_type, manage_dept_id, color, is_active, wx_openid, role_id, role_name, cost_apply_date, dingding_userid, dingding_unionid, corpwx_userid, induction_date, inactive_date, position, report_status, superior_id, plate1, plate2, plate3, plate4, plate5, is_ops, job_number
     </sql>
     </sql>
     <!--单独分页获取人员-->
     <!--单独分页获取人员-->
     <select id="getUserByDepartment" resultType="java.util.Map">
     <select id="getUserByDepartment" resultType="java.util.Map">
         SELECT a.id, a.role_id as roleId, a.role_name as roleName, a.name, a.phone, a.portrait_url AS portraitUrl, a.role, a.company_id AS companyId, a.cost,
         SELECT a.id, a.role_id as roleId, a.role_name as roleName, a.name, a.phone, a.portrait_url AS portraitUrl, a.role, a.company_id AS companyId, a.cost,
         a.department_id AS departmentId, b.department_name AS departmentName, a.department_cascade AS departmentCascade,
         a.department_id AS departmentId, b.department_name AS departmentName, a.department_cascade AS departmentCascade,
-        a.month_cost as monthCost, a.salary_type as salaryType, a.is_active as isActive,date_format(a.`inactive_date`, '%Y-%m-%d') AS inactiveDate, a.cost_apply_date as costApplyDate,a.plate1,a.plate2,a.plate3,a.plate4,a.plate5
+        a.month_cost as monthCost, a.salary_type as salaryType, a.is_active as isActive,date_format(a.`inactive_date`, '%Y-%m-%d') AS inactiveDate, a.cost_apply_date as costApplyDate,a.plate1,a.plate2,a.plate3,a.plate4,a.plate5,
+        a.job_number as jobNumber
         FROM user AS a
         FROM user AS a
         LEFT JOIN department AS b ON a.department_id = b.department_id
         LEFT JOIN department AS b ON a.department_id = b.department_id
         WHERE a.company_id = #{companyId}
         WHERE a.company_id = #{companyId}
@@ -74,7 +77,8 @@
     <select id="getUserByDepartmentList" resultType="java.util.Map">
     <select id="getUserByDepartmentList" resultType="java.util.Map">
         SELECT a.id,  a.role_id as roleId, a.role_name as roleName,  a.name, a.phone, a.portrait_url AS portraitUrl, a.role, a.company_id AS companyId, a.cost,
         SELECT a.id,  a.role_id as roleId, a.role_name as roleName,  a.name, a.phone, a.portrait_url AS portraitUrl, a.role, a.company_id AS companyId, a.cost,
         a.department_id AS departmentId, b.department_name AS departmentName, a.department_cascade AS departmentCascade,
         a.department_id AS departmentId, b.department_name AS departmentName, a.department_cascade AS departmentCascade,
-        a.month_cost as monthCost, a.salary_type as salaryType, a.is_active as isActive,date_format(a.`inactive_date`, '%Y-%m-%d') AS inactiveDate, a.cost_apply_date as costApplyDate,a.plate1,a.plate2,a.plate3,a.plate4,a.plate5
+        a.month_cost as monthCost, a.salary_type as salaryType, a.is_active as isActive,date_format(a.`inactive_date`, '%Y-%m-%d') AS inactiveDate, a.cost_apply_date as costApplyDate,a.plate1,a.plate2,a.plate3,a.plate4,a.plate5,
+        a.job_number as jobNumber
         FROM user AS a
         FROM user AS a
         LEFT JOIN department AS b ON a.department_id = b.department_id
         LEFT JOIN department AS b ON a.department_id = b.department_id
         WHERE a.company_id = #{companyId} AND a.department_id IN
         WHERE a.company_id = #{companyId} AND a.department_id IN
@@ -136,7 +140,7 @@
         AND a.id in (select user_id from participation where project_id = #{projectId})
         AND a.id in (select user_id from participation where project_id = #{projectId})
     </select>
     </select>
     <select id="getSimpleNameList" resultType="java.util.HashMap">
     <select id="getSimpleNameList" resultType="java.util.HashMap">
-        select id, name from user
+        select id, name, job_number as jobNumber from user
         ${ew.customSqlSegment}
         ${ew.customSqlSegment}
     </select>
     </select>
 
 

+ 5 - 8
fhKeeper/formulahousekeeper/timesheet/src/views/awayOffice/awayOffice.vue

@@ -186,9 +186,9 @@
                     <div><span style="color: #606266">时间段</span>
                     <div><span style="color: #606266">时间段</span>
                         <el-date-picker v-model="createDate" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="billss()" value-format="yyyy-MM-dd" placeholder="选择日期" size="small" clearable style="width:280px"></el-date-picker>
                         <el-date-picker v-model="createDate" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="billss()" value-format="yyyy-MM-dd" placeholder="选择日期" size="small" clearable style="width:280px"></el-date-picker>
                     </div>
                     </div>
-                    <!-- 从顶顶同步按钮 -->
-                    <div style="margin: 0 0 0 20px">
-                        <el-button size="small" type="primary" @click="dingdingClick()">从钉钉同步</el-button>
+                    <!-- 从钉钉同步按钮,只有钉钉的用户并且有查看全部权限的管理员才有同步按钮 -->
+                    <div style="margin: 0 0 0 20px" v-if="userComLis.dingdingUserid != null && permissions.awayOfficeAll">
+                        <el-button size="small" type="primary" @click="dingdingClick()" >从钉钉同步</el-button>
                     </div>
                     </div>
                 </div>
                 </div>
         <!-- 出差列表 -->
         <!-- 出差列表 -->
@@ -249,8 +249,8 @@
                                 <el-button icon="el-icon-close" circle size="mini"  @click="deny(scope.row)"></el-button>
                                 <el-button icon="el-icon-close" circle size="mini"  @click="deny(scope.row)"></el-button>
                             </div>
                             </div>
                             <div v-if="!isAuditList">
                             <div v-if="!isAuditList">
-                                <el-button v-if="!isAuditList && ((scope.row.status != 0 && scope.row.ownerId == user.id) || permissions.leaveAll)" icon="el-icon-delete" circle size="mini"  @click="deletes(scope.row)"></el-button>
-                                <el-button v-if="((scope.row.status != 0 && scope.row.ownerId == user.id) || permissions.leaveAll) || scope.row.status == 1" icon="el-icon-edit" circle size="mini" @click="editor(scope.row)"></el-button>
+                                <el-button v-if="!isAuditList && ((scope.row.status != 0 && scope.row.ownerId == user.id) || permissions.awayOfficeAll)" icon="el-icon-delete" circle size="mini"  @click="deletes(scope.row)"></el-button>
+                                <el-button v-if="((scope.row.status != 0 && scope.row.ownerId == user.id) || permissions.awayOfficeAll) || scope.row.status == 1" icon="el-icon-edit" circle size="mini" @click="editor(scope.row)"></el-button>
                             </div>
                             </div>
                         </template>
                         </template>
                     </el-table-column>
                     </el-table-column>
@@ -650,8 +650,6 @@ export default {
             displayTable: false,
             displayTable: false,
             formloading: false,
             formloading: false,
             apk: 0,
             apk: 0,
-            // userdata: JSON.parse(sessionStorage.getItem("user")),
-
             permissions: JSON.parse(sessionStorage.getItem("permissions")),
             permissions: JSON.parse(sessionStorage.getItem("permissions")),
             userComLis: JSON.parse(sessionStorage.getItem("user")),
             userComLis: JSON.parse(sessionStorage.getItem("user")),
             addform: {
             addform: {
@@ -813,7 +811,6 @@ export default {
                 let transmissionObj = {}
                 let transmissionObj = {}
                 transmissionObj.userId = this.ownerIdsId
                 transmissionObj.userId = this.ownerIdsId
                 transmissionObj.companyId = this.userComLis.companyId
                 transmissionObj.companyId = this.userComLis.companyId
-                console.log(this.createDateList, '俺看')
                 if(this.createDateList != 'null' && this.createDateList != null) {
                 if(this.createDateList != 'null' && this.createDateList != null) {
                     if(this.createDateList.length > 0) {
                     if(this.createDateList.length > 0) {
                         transmissionObj.startDate = this.createDateList[0]
                         transmissionObj.startDate = this.createDateList[0]

+ 6 - 7
fhKeeper/formulahousekeeper/timesheet/src/views/project/info.vue

@@ -129,8 +129,8 @@
                     </div>
                     </div>
                 </div>
                 </div>
 
 
-                <!--项目相关领导 -->
-                <div class="box info" style="margin-top:10px;" >
+                <!--项目相关领导,弃用 -->
+                <!-- <div class="box info" style="margin-top:10px;" >
                     <div><label>相关领导<el-link v-if="user.id == project.creatorId || user.id == project.inchargerId || permissions.projectManagement" @click="showChooseLeaderTree" style="float:right;"><i class="el-icon-edit"  ></i></el-link></label>
                     <div><label>相关领导<el-link v-if="user.id == project.creatorId || user.id == project.inchargerId || permissions.projectManagement" @click="showChooseLeaderTree" style="float:right;"><i class="el-icon-edit"  ></i></el-link></label>
                     
                     
                     </div>
                     </div>
@@ -141,7 +141,7 @@
                         </el-col>
                         </el-col>
                     </el-row>
                     </el-row>
                     
                     
-                </div>
+                </div> -->
 
 
                 <div class="box" style="margin-top:10px;">
                 <div class="box" style="margin-top:10px;">
                     <label>项目统计</label>
                     <label>项目统计</label>
@@ -518,9 +518,8 @@
         </el-dialog>
         </el-dialog>
 
 
         
         
-        <!-- 按部门选择相关领导 -->
-        <el-dialog title="选择相关领导"  v-if="chooseLeaderVisible" :visible.sync="chooseLeaderVisible" :close-on-click-modal="false" customClass="customWidth" width="500px">
-            <!-- <el-input style="width:100%" v-model="filterName" placeholder="请输入姓名搜索" @change="findUserInTree"></el-input> -->
+        <!-- 按部门选择相关领导,弃用 -->
+        <!-- <el-dialog title="选择相关领导"  v-if="chooseLeaderVisible" :visible.sync="chooseLeaderVisible" :close-on-click-modal="false" customClass="customWidth" width="500px">
             <div class="tree" style="height:400px">
             <div class="tree" style="height:400px">
                 <el-scrollbar style="height:100%">
                 <el-scrollbar style="height:100%">
                 <el-tree :data="deptMembData" show-checkbox :props="defaultProps" node-key="id"
                 <el-tree :data="deptMembData" show-checkbox :props="defaultProps" node-key="id"
@@ -533,7 +532,7 @@
                 <el-button  @click="chooseLeaderVisible = false" >取消</el-button>
                 <el-button  @click="chooseLeaderVisible = false" >取消</el-button>
                 <el-button type="primary" @click="chooseLeader()" >确定</el-button>
                 <el-button type="primary" @click="chooseLeader()" >确定</el-button>
             </div>
             </div>
-        </el-dialog>
+        </el-dialog> -->
     </div>
     </div>
 </template>
 </template>
 <style scoped>
 <style scoped>

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

@@ -580,11 +580,11 @@
                            </el-table>
                            </el-table>
                        </div>
                        </div>
                     </el-tab-pane>
                     </el-tab-pane>
-                    <el-tab-pane label="相关领导" name="leaders" >
+                    <!-- <el-tab-pane label="相关领导" name="leaders" >
                        <div style="padding-top:10px;">
                        <div style="padding-top:10px;">
                            <el-input @focus="showChooseLeaderTree" v-model="addForm.notifyUserNames" placeholder="请选择需要接收审核通知的相关领导"></el-input>
                            <el-input @focus="showChooseLeaderTree" v-model="addForm.notifyUserNames" placeholder="请选择需要接收审核通知的相关领导"></el-input>
                        </div>
                        </div>
-                    </el-tab-pane>
+                    </el-tab-pane> -->
                     </el-tabs>
                     </el-tabs>
                 </div>
                 </div>
             
             
@@ -863,9 +863,8 @@
             </div>
             </div>
         </el-dialog>
         </el-dialog>
 
 
-        <!-- 按部门选择相关领导 -->
-        <el-dialog title="选择相关领导"  v-if="chooseLeaderVisible" :visible.sync="chooseLeaderVisible" :close-on-click-modal="false" customClass="customWidth" width="500px">
-            <!-- <el-input style="width:100%" v-model="filterName" placeholder="请输入姓名搜索" @change="findUserInTree"></el-input> -->
+        <!-- 按部门选择相关领导,弃用 -->
+        <!-- <el-dialog title="选择相关领导"  v-if="chooseLeaderVisible" :visible.sync="chooseLeaderVisible" :close-on-click-modal="false" customClass="customWidth" width="500px">
             <div class="tree" style="height:400px">
             <div class="tree" style="height:400px">
                 <el-scrollbar style="height:100%">
                 <el-scrollbar style="height:100%">
                 <el-tree :data="deptMembData" show-checkbox :props="defaultProps" node-key="id"
                 <el-tree :data="deptMembData" show-checkbox :props="defaultProps" node-key="id"
@@ -878,7 +877,7 @@
                 <el-button  @click="chooseLeaderVisible = false" >取消</el-button>
                 <el-button  @click="chooseLeaderVisible = false" >取消</el-button>
                 <el-button type="primary" @click="chooseLeader()" >确定</el-button>
                 <el-button type="primary" @click="chooseLeader()" >确定</el-button>
             </div>
             </div>
-        </el-dialog>
+        </el-dialog> -->
 
 
         <!-- 项目专业人员的设置 -->
         <!-- 项目专业人员的设置 -->
         <el-dialog title="设置项目专业人员"  v-if="editPpMembDialog" :visible.sync="editPpMembDialog" :close-on-click-modal="false" customClass="customWidth" width="600px">
         <el-dialog title="设置项目专业人员"  v-if="editPpMembDialog" :visible.sync="editPpMembDialog" :close-on-click-modal="false" customClass="customWidth" width="600px">
@@ -2254,23 +2253,23 @@ a {
             },
             },
 
 
             //选中相关领导
             //选中相关领导
-            chooseLeader() {
-                this.chooseLeaderVisible = false;
-                var chosenList = this.$refs.chooseLeaderTree.getCheckedNodes();
-                var chosenMembList = chosenList.filter(item=>item.isUser == 1);
-                this.addForm.notifyUserNames = '';
-                this.addForm.notifyUserIds = [];
-                this.chosenLeaders = [];
-                for (var i=0;i<chosenMembList.length; i++) {
-                    this.addForm.notifyUserIds.push(chosenMembList[i].id);
-                    this.addForm.notifyUserNames += chosenMembList[i].label+',';
-                    var item = {userId:chosenMembList[i].id, userName:chosenMembList[i].label};
-                    this.chosenLeaders.push(item);
-                }
-                if (this.addForm.notifyUserNames.length > 0) {
-                    this.addForm.notifyUserNames = this.addForm.notifyUserNames.substring(0, this.addForm.notifyUserNames.length-1);
-                }
-            },
+            // chooseLeader() {
+            //     this.chooseLeaderVisible = false;
+            //     var chosenList = this.$refs.chooseLeaderTree.getCheckedNodes();
+            //     var chosenMembList = chosenList.filter(item=>item.isUser == 1);
+            //     this.addForm.notifyUserNames = '';
+            //     this.addForm.notifyUserIds = [];
+            //     this.chosenLeaders = [];
+            //     for (var i=0;i<chosenMembList.length; i++) {
+            //         this.addForm.notifyUserIds.push(chosenMembList[i].id);
+            //         this.addForm.notifyUserNames += chosenMembList[i].label+',';
+            //         var item = {userId:chosenMembList[i].id, userName:chosenMembList[i].label};
+            //         this.chosenLeaders.push(item);
+            //     }
+            //     if (this.addForm.notifyUserNames.length > 0) {
+            //         this.addForm.notifyUserNames = this.addForm.notifyUserNames.substring(0, this.addForm.notifyUserNames.length-1);
+            //     }
+            // },
 
 
             // 获取部门列表
             // 获取部门列表
             getDepartment() {
             getDepartment() {
@@ -3148,7 +3147,7 @@ a {
                         
                         
                     }
                     }
                     //获取项目的相关领导
                     //获取项目的相关领导
-                    this.getProjectNotifyUserList(item.id);
+                    // this.getProjectNotifyUserList(item.id);
                     this.getProjectAutorList(item.id);
                     this.getProjectAutorList(item.id);
                 }
                 }
                 this.addFormVisible = true;
                 this.addFormVisible = true;

+ 15 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

@@ -145,6 +145,7 @@
                     </template>
                     </template>
                 </el-table-column>
                 </el-table-column>
                 <el-table-column prop="name" label="姓名" ></el-table-column>
                 <el-table-column prop="name" label="姓名" ></el-table-column>
+                <el-table-column prop="jobNumber" label="工号" ></el-table-column>
                 <el-table-column prop="phone" label="手机" width="120"></el-table-column>
                 <el-table-column prop="phone" label="手机" width="120"></el-table-column>
                 <el-table-column prop="departmentName" label="部门" ></el-table-column>
                 <el-table-column prop="departmentName" label="部门" ></el-table-column>
                 <el-table-column label="角色" width="100">
                 <el-table-column label="角色" width="100">
@@ -270,12 +271,15 @@
         <!-- 新增/编辑人员的Dialog -->
         <!-- 新增/编辑人员的Dialog -->
         <el-dialog :title="title" :visible.sync="dialogVisible" width="550px" >
         <el-dialog :title="title" :visible.sync="dialogVisible" width="550px" >
             <el-form ref="form12" :model="insertForm" :rules="rules" label-width="80px">
             <el-form ref="form12" :model="insertForm" :rules="rules" label-width="80px">
-                <el-form-item label="名" prop="name">
+                <el-form-item label="名" prop="name">
                     <el-input v-model="insertForm.name" placeholder="请输入姓名" clearable></el-input>
                     <el-input v-model="insertForm.name" placeholder="请输入姓名" clearable></el-input>
                 </el-form-item>
                 </el-form-item>
                 <el-form-item label="电话" prop="phone">
                 <el-form-item label="电话" prop="phone">
                     <el-input v-model="insertForm.phone" placeholder="请输入电话号码" clearable></el-input>
                     <el-input v-model="insertForm.phone" placeholder="请输入电话号码" clearable></el-input>
                 </el-form-item>
                 </el-form-item>
+                <el-form-item label="工号" prop="jobNumber">
+                    <el-input v-model="insertForm.jobNumber" placeholder="请输入工号" clearable></el-input>
+                </el-form-item>
                 <el-form-item label="薪酬方式" prop="salaryType" v-if="permissions.structurePersonnel&&user.timeType.isSecretSalary==0">
                 <el-form-item label="薪酬方式" prop="salaryType" v-if="permissions.structurePersonnel&&user.timeType.isSecretSalary==0">
                     <el-radio-group v-model="insertForm.salaryType" @change="onSalaryTypeChange">
                     <el-radio-group v-model="insertForm.salaryType" @change="onSalaryTypeChange">
                     <el-radio  :label="0" >固定月成本</el-radio>
                     <el-radio  :label="0" >固定月成本</el-radio>
@@ -354,12 +358,16 @@
         <!-- 编辑超级管理员的Dialog -->
         <!-- 编辑超级管理员的Dialog -->
         <el-dialog title="编辑人员" :visible.sync="dialogVisible1" width="550px" >
         <el-dialog title="编辑人员" :visible.sync="dialogVisible1" width="550px" >
             <el-form ref="form1" :model="insertForm" :rules="rules" label-width="80px">
             <el-form ref="form1" :model="insertForm" :rules="rules" label-width="80px">
-                <el-form-item label="名字" prop="name">
+                
+                <el-form-item label="姓名" prop="name">
                     <el-input v-model="insertForm.name" placeholder="请输入姓名" clearable></el-input>
                     <el-input v-model="insertForm.name" placeholder="请输入姓名" clearable></el-input>
                 </el-form-item>
                 </el-form-item>
                 <el-form-item label="电话" prop="phone">
                 <el-form-item label="电话" prop="phone">
                     <el-input v-model="insertForm.phone" placeholder="请输入电话号码" clearable></el-input>
                     <el-input v-model="insertForm.phone" placeholder="请输入电话号码" clearable></el-input>
                 </el-form-item>
                 </el-form-item>
+                <el-form-item label="工号" prop="jobNumber">
+                    <el-input v-model="insertForm.jobNumber" placeholder="请输入工号" clearable></el-input>
+                </el-form-item>
                 <el-form-item label="薪酬方式" prop="salaryType" v-if="permissions.structurePersonnel">
                 <el-form-item label="薪酬方式" prop="salaryType" v-if="permissions.structurePersonnel">
                     <el-radio-group v-model="insertForm.salaryType" @change="onSalaryTypeChange">
                     <el-radio-group v-model="insertForm.salaryType" @change="onSalaryTypeChange">
                     <el-radio  :label="0" >固定月成本</el-radio>
                     <el-radio  :label="0" >固定月成本</el-radio>
@@ -2017,6 +2025,7 @@ export default {
                 plate3: res.data.plate3,
                 plate3: res.data.plate3,
                 plate4: res.data.plate4,
                 plate4: res.data.plate4,
                 plate5: res.data.plate5,
                 plate5: res.data.plate5,
+                jobNumber: res.data.jobNumber
               };
               };
               this.$set(this.insertForm, 'inductionDate', res.data.inductionDate)
               this.$set(this.insertForm, 'inductionDate', res.data.inductionDate)
               this.getUserCustomConfig(1);
               this.getUserCustomConfig(1);
@@ -2058,6 +2067,7 @@ export default {
           plate3: null,
           plate3: null,
           plate4: null,
           plate4: null,
           plate5: null,
           plate5: null,
+          jobNumber:null,
         };
         };
         this.title = "新增人员";
         this.title = "新增人员";
         this.getUserCustomConfig();
         this.getUserCustomConfig();
@@ -2116,6 +2126,7 @@ export default {
             plate3: this.insertForm.plate3,
             plate3: this.insertForm.plate3,
             plate4: this.insertForm.plate4,
             plate4: this.insertForm.plate4,
             plate5: this.insertForm.plate5,
             plate5: this.insertForm.plate5,
+            jobNumber: this.insertForm.jobNumber,
           };
           };
 
 
           // for(let i=0;i<5;i++) {
           // for(let i=0;i<5;i++) {
@@ -2291,6 +2302,7 @@ export default {
               certJson: res.data.certList,
               certJson: res.data.certList,
               plateMap: {},
               plateMap: {},
               superiorId: res.data.superiorId,
               superiorId: res.data.superiorId,
+              jobNumber: res.data.jobNumber,
             };
             };
           } else {
           } else {
             this.$message({
             this.$message({
@@ -2339,6 +2351,7 @@ export default {
             position: this.insertForm.position,
             position: this.insertForm.position,
             certJson: this.insertForm.certJson,
             certJson: this.insertForm.certJson,
             inductionDate: this.insertForm.inductionDate,
             inductionDate: this.insertForm.inductionDate,
+            jobNumber: this.insertForm.jobNumber,
           };
           };
           if (this.insertForm.departmentId != null) {
           if (this.insertForm.departmentId != null) {
             form.departmentId =
             form.departmentId =