Browse Source

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

Lijy 1 year ago
parent
commit
a47bb070c9
14 changed files with 417 additions and 111 deletions
  1. 4 9
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/UserController.java
  2. 42 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/UserWorkTypeController.java
  3. 1 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/User.java
  4. 3 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/UserWorkType.java
  5. 1 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/UserMapper.java
  6. 4 4
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/UserService.java
  7. 8 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/UserWorkTypeService.java
  8. 6 3
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProdProcedureServiceImpl.java
  9. 12 16
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProductServiceImpl.java
  10. 14 11
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  11. 81 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/UserWorkTypeServiceImpl.java
  12. 4 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/UserMapper.xml
  13. 79 56
      fhKeeper/formulahousekeeper/timesheet-workshop/src/views/product/list.vue
  14. 158 9
      fhKeeper/formulahousekeeper/timesheet-workshop/src/views/team/index.vue

+ 4 - 9
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/UserController.java

@@ -120,11 +120,6 @@ public class UserController {
     public HttpRespMsg getBaseInfo(@RequestParam String userId){
     public HttpRespMsg getBaseInfo(@RequestParam String userId){
         HttpRespMsg msg=new HttpRespMsg();
         HttpRespMsg msg=new HttpRespMsg();
         User user = userService.getById(userId);
         User user = userService.getById(userId);
-        UserWorkType workType = userWorkTypeService.getById(user.getWorkTypeId());
-        if(workType!=null){
-            user.setWorkType(workType.getName());
-        }
-
         msg.setData(user);
         msg.setData(user);
 
 
         return msg;
         return msg;
@@ -141,11 +136,11 @@ public class UserController {
      */
      */
     @RequestMapping("/getEmployeeList")
     @RequestMapping("/getEmployeeList")
     public HttpRespMsg getEmployeeList(@RequestParam Integer departmentId,@RequestParam(defaultValue = "0") Integer matchingType, String keyword,
     public HttpRespMsg getEmployeeList(@RequestParam Integer departmentId,@RequestParam(defaultValue = "0") Integer matchingType, String keyword,
-                                       Integer status, Integer roleId,
+                                       Integer status, Integer roleId,Integer workTypeId,
                                        Integer onlyDirect,
                                        Integer onlyDirect,
                                        String cursor,
                                        String cursor,
                                        @RequestParam Integer pageIndex, @RequestParam Integer pageSize) throws Exception {
                                        @RequestParam Integer pageIndex, @RequestParam Integer pageSize) throws Exception {
-        return userService.getEmployeeList(departmentId,matchingType, keyword, status, roleId, onlyDirect, cursor,pageIndex, pageSize, request);
+        return userService.getEmployeeList(departmentId,matchingType, keyword, status, roleId,workTypeId, onlyDirect, cursor,pageIndex, pageSize, request);
     }
     }
 
 
     @RequestMapping("/getSimpleActiveUserList")
     @RequestMapping("/getSimpleActiveUserList")
@@ -215,11 +210,11 @@ public class UserController {
      */
      */
     @RequestMapping("/insertUser")
     @RequestMapping("/insertUser")
     public HttpRespMsg insertUser(String id, @RequestParam String name, String phone,
     public HttpRespMsg insertUser(String id, @RequestParam String name, String phone,
-                                  @RequestParam Integer roleId, Double monthCost, Double cost,
+                                  @RequestParam Integer roleId,@RequestParam Integer workTypeId, 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 jobNumber, String inactiveDate) {
                                     String plate1,String plate2,String plate3,String plate4,String plate5, String jobNumber, String inactiveDate) {
-        return userService.insertUser(id, name, phone, roleId, monthCost, cost, departmentId, salaryType, costApplyDate,
+        return userService.insertUser(id, name, phone, roleId, workTypeId, monthCost, cost, departmentId, salaryType, costApplyDate,
                     position, certJson, request,inductionDate,superiorId,plate1, plate2, plate3,plate4,plate5, jobNumber, inactiveDate);
                     position, certJson, request,inductionDate,superiorId,plate1, plate2, plate3,plate4,plate5, jobNumber, inactiveDate);
     }
     }
 
 

+ 42 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/UserWorkTypeController.java

@@ -1,10 +1,21 @@
 package com.management.platform.controller;
 package com.management.platform.controller;
 
 
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.management.platform.entity.User;
+import com.management.platform.entity.UserWorkType;
+import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.UserWorkTypeService;
+import com.management.platform.util.HttpRespMsg;
+import org.apache.http.HttpRequest;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
 /**
 /**
  * <p>
  * <p>
  *  前端控制器
  *  前端控制器
@@ -16,6 +27,37 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 @RestController
 @RequestMapping("/user-work-type")
 @RequestMapping("/user-work-type")
 public class UserWorkTypeController {
 public class UserWorkTypeController {
+    @Resource
+    private UserWorkTypeService userWorkTypeService;
+    @Resource
+    private HttpServletRequest request;
+    @Resource
+    private UserMapper userMapper;
+
+    @RequestMapping("getAll")
+    public HttpRespMsg getAll(){
+        HttpRespMsg msg=new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("Token"));
+
+        List<UserWorkType> typeList = userWorkTypeService.list(new LambdaQueryWrapper<UserWorkType>().eq(user.getCompanyId() != null, UserWorkType::getCompanyId, user.getCompanyId()));
+
+        msg.setData(typeList);
+        return msg;
+    }
+
+    @RequestMapping("updateOrInsert")
+    public HttpRespMsg update(UserWorkType workType){
+       return userWorkTypeService.updateOrInsert(workType,request);
+    }
+
+    @RequestMapping("delete")
+    public HttpRespMsg delete(Integer id){
+        return userWorkTypeService.delete(id,request);
+    }
 
 
+    @RequestMapping("getById")
+    public HttpRespMsg getById(Integer id){
+        return userWorkTypeService.getInfo(id,request);
+    }
 }
 }
 
 

+ 1 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/User.java

@@ -303,7 +303,7 @@ public class User extends Model<User> {
     /**
     /**
      * 工种名
      * 工种名
      */
      */
-    @TableField(exist = false)
+    @TableField("work_type")
     private String workType;
     private String workType;
 
 
     @Override
     @Override

+ 3 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/UserWorkType.java

@@ -30,6 +30,9 @@ public class UserWorkType extends Model<UserWorkType> {
     @TableField("name")
     @TableField("name")
     private String name;
     private String name;
 
 
+    @TableField("company_id")
+    private Integer companyId;
+
 
 
     @Override
     @Override
     protected Serializable pkVal() {
     protected Serializable pkVal() {

+ 1 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/UserMapper.java

@@ -22,7 +22,7 @@ import java.util.Map;
 public interface UserMapper extends BaseMapper<User> {
 public interface UserMapper extends BaseMapper<User> {
     List<Map<String, Object>> getUserByDepartment(Page page,
     List<Map<String, Object>> getUserByDepartment(Page page,
                                                   @Param("companyId") Integer companyId,
                                                   @Param("companyId") Integer companyId,
-                                                  @Param("departmentId") Integer departmentId,Integer matchingType, String keyword, Integer status, @Param("roleId") Integer roleId);
+                                                  @Param("departmentId") Integer departmentId, Integer matchingType, String keyword, Integer status, @Param("roleId") Integer roleId, @Param("workTypeId") Integer workTypeId);
 
 
     List<Map<String, Object>> getUserByDepartmentList(Page page,
     List<Map<String, Object>> getUserByDepartmentList(Page page,
                                                       @Param("companyId") Integer companyId,
                                                       @Param("companyId") Integer companyId,

+ 4 - 4
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/UserService.java

@@ -27,7 +27,7 @@ public interface UserService extends IService<User> {
 
 
     HttpRespMsg getUserInfo(String id);
     HttpRespMsg getUserInfo(String id);
 
 
-    HttpRespMsg getEmployeeList(Integer departmentId,Integer matchingType, String keyword, Integer status, Integer roleId, Integer onlyDirect, String cursor, Integer pageIndex, Integer pageSize, HttpServletRequest request) throws Exception;
+    HttpRespMsg getEmployeeList(Integer departmentId, Integer matchingType, String keyword,  Integer status, Integer roleId,Integer workTypeId, Integer onlyDirect, String cursor, Integer pageIndex, Integer pageSize, HttpServletRequest request) throws Exception;
 
 
     HttpRespMsg deleteUser(String userId, HttpServletRequest request);
     HttpRespMsg deleteUser(String userId, HttpServletRequest request);
 
 
@@ -35,10 +35,10 @@ public interface UserService extends IService<User> {
 
 
     HttpRespMsg insertCompany(String companyName, String name, String phone, String vcode, String pwd, Integer type, String from);
     HttpRespMsg insertCompany(String companyName, String name, String phone, String vcode, String pwd, Integer type, String from);
 
 
-    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, Integer  workTypeId, 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, String jobNumber, String inactiveDate);
+                           HttpServletRequest request, String inductionDate, String superiorId, String plate1,
+                           String plate2, String plate3, String plate4, String plate5, String jobNumber, String inactiveDate);
 
 
     HttpRespMsg importUser(MultipartFile multipartFile, HttpServletRequest request);
     HttpRespMsg importUser(MultipartFile multipartFile, HttpServletRequest request);
 
 

+ 8 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/UserWorkTypeService.java

@@ -2,6 +2,9 @@ package com.management.platform.service;
 
 
 import com.management.platform.entity.UserWorkType;
 import com.management.platform.entity.UserWorkType;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.util.HttpRespMsg;
+
+import javax.servlet.http.HttpServletRequest;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -13,4 +16,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
  */
 public interface UserWorkTypeService extends IService<UserWorkType> {
 public interface UserWorkTypeService extends IService<UserWorkType> {
 
 
+    HttpRespMsg updateOrInsert(UserWorkType workType, HttpServletRequest request);
+
+    HttpRespMsg delete(Integer id,HttpServletRequest request);
+
+    HttpRespMsg getInfo(Integer id, HttpServletRequest request);
 }
 }

+ 6 - 3
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProdProcedureServiceImpl.java

@@ -50,7 +50,6 @@ public class ProdProcedureServiceImpl extends ServiceImpl<ProdProcedureMapper, P
         long count = prodProcedureList.stream().filter(prodProcedure -> map.put(prodProcedure.getName(), prodProcedure) == null).count();
         long count = prodProcedureList.stream().filter(prodProcedure -> map.put(prodProcedure.getName(), prodProcedure) == null).count();
         if(count==prodProcedureList.size()){
         if(count==prodProcedureList.size()){
 
 
-
             prodProcedureList.stream().forEach(prodProcedure -> {
             prodProcedureList.stream().forEach(prodProcedure -> {
                 user.getCompanyId();
                 user.getCompanyId();
                 prodProcedure.setCompanyId(user.getCompanyId());
                 prodProcedure.setCompanyId(user.getCompanyId());
@@ -72,15 +71,17 @@ public class ProdProcedureServiceImpl extends ServiceImpl<ProdProcedureMapper, P
                 //2.要删除的id
                 //2.要删除的id
                 List<ProdProcedure> deleteList = oldList.stream().filter(old -> {
                 List<ProdProcedure> deleteList = oldList.stream().filter(old -> {
                     for (ProdProcedure prodProcedure : prodProcedureList) {
                     for (ProdProcedure prodProcedure : prodProcedureList) {
-                        if (prodProcedure.getId() == old.getId()) {
+                        System.out.println(old.getId()+"=="+prodProcedure.getId());
+                        if (old.getId()==prodProcedure.getId() ) {
                             return false;
                             return false;
                         }
                         }
                     }
                     }
                     return true;
                     return true;
 
 
                 }).collect(Collectors.toList());
                 }).collect(Collectors.toList());
-                if (deleteList != null && deleteList.size() > 0) {
 
 
+                if (deleteList != null && deleteList.size() > 0) {
+                    System.out.println("deleteList"+deleteList);
                     List<Integer> deleteIdList = deleteList.stream().map(delete -> delete.getId()).collect(Collectors.toList());
                     List<Integer> deleteIdList = deleteList.stream().map(delete -> delete.getId()).collect(Collectors.toList());
                     prodProcedureMapper.deleteBatchIds(deleteIdList);
                     prodProcedureMapper.deleteBatchIds(deleteIdList);
                 }
                 }
@@ -88,11 +89,13 @@ public class ProdProcedureServiceImpl extends ServiceImpl<ProdProcedureMapper, P
                 //3.编辑的id
                 //3.编辑的id
                 List<ProdProcedure> updateList = prodProcedureList.stream().filter(prodProcedure -> prodProcedure.getId() != null).collect(Collectors.toList());
                 List<ProdProcedure> updateList = prodProcedureList.stream().filter(prodProcedure -> prodProcedure.getId() != null).collect(Collectors.toList());
                 if (updateList != null&&updateList.size()>0) {
                 if (updateList != null&&updateList.size()>0) {
+                    System.out.println("updateList"+updateList);
                     this.updateBatchById(updateList);
                     this.updateBatchById(updateList);
                 }
                 }
                 //4.新增的id
                 //4.新增的id
                 List<ProdProcedure> insertList = prodProcedureList.stream().filter(prodProcedure -> prodProcedure.getId() == null).collect(Collectors.toList());
                 List<ProdProcedure> insertList = prodProcedureList.stream().filter(prodProcedure -> prodProcedure.getId() == null).collect(Collectors.toList());
                 if (insertList != null&&insertList.size()>0) {
                 if (insertList != null&&insertList.size()>0) {
+                    System.out.println("insertList"+insertList);
                     this.saveBatch(insertList);
                     this.saveBatch(insertList);
                 }
                 }
             }else{
             }else{

+ 12 - 16
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProductServiceImpl.java

@@ -348,7 +348,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
             sheet = workbook.getSheetAt(1);
             sheet = workbook.getSheetAt(1);
             rowNum = sheet.getLastRowNum();
             rowNum = sheet.getLastRowNum();
 
 
-            for(int indexNum=1;indexNum<rowNum;indexNum++){
+            for(int indexNum=1;indexNum<=rowNum;indexNum++){
                 XSSFRow row = sheet.getRow(indexNum);
                 XSSFRow row = sheet.getRow(indexNum);
                 //跳过空行
                 //跳过空行
                 if(row==null){
                 if(row==null){
@@ -425,30 +425,26 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
                 prodProcedureList.add(prodProcedure);
                 prodProcedureList.add(prodProcedure);
             }
             }
 
 
-            //检查同一版本的同一版本号工序中有没有重复的
+            //检查一个产品是否只有一个工序版本号中有没有重复的
             for (ProdProcedure prodProcedure : prodProcedureList) {
             for (ProdProcedure prodProcedure : prodProcedureList) {
 
 
-                if(prodProcedureList.stream().filter(procedure ->{
-                    return prodProcedure.getName().equals(procedure.getName())&&!prodProcedure.getVersionNumber().equals(procedure.getVersionNumber());
-                } ).count()>0){
+                if(prodProcedureList.stream().filter(procedure -> {
+                    return prodProcedure.getProductName().equals(procedure.getProductName()) && !prodProcedure.getVersionNumber().equals(procedure.getVersionNumber());
+                }).count()>0){
+
                     msg.setError("一个产品只能导入一个产品号");
                     msg.setError("一个产品只能导入一个产品号");
                     return msg;
                     return msg;
                 }
                 }
 
 
-
-
-
-                long count = prodProcedureList.stream()
+                //检查是否有重复的工序
+                if(prodProcedureList.stream()
                         .filter(procedure -> procedure.getProductName().equals(prodProcedure.getProductName()) && procedure.getVersionNumber().equals(prodProcedure.getVersionNumber()) && procedure.getName().equals(prodProcedure.getName()))
                         .filter(procedure -> procedure.getProductName().equals(prodProcedure.getProductName()) && procedure.getVersionNumber().equals(prodProcedure.getVersionNumber()) && procedure.getName().equals(prodProcedure.getName()))
-                        .count();
-                if(count>1){
+                        .count()>1){
                     msg.setError("产品"+prodProcedure.getProductName()+"的"+prodProcedure.getVersionNumber()+"版本工序重复了");
                     msg.setError("产品"+prodProcedure.getProductName()+"的"+prodProcedure.getVersionNumber()+"版本工序重复了");
                     return msg;
                     return msg;
                 }
                 }
             }
             }
 
 
-            System.out.println(productList);
-            System.out.println(prodProcedureList);
             //插入数据
             //插入数据
             if(saveBatch(productList)) {
             if(saveBatch(productList)) {
 
 
@@ -621,12 +617,12 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
             }
             }
 
 
 
 
-      *//*      //导出excel
+            //导出excel
             String result="系统提示:Excel文件导出成功!";
             String result="系统提示:Excel文件导出成功!";
             //生成Excel文件
             //生成Excel文件
             String fileUrlSuffix = "产品详情"+System.currentTimeMillis();
             String fileUrlSuffix = "产品详情"+System.currentTimeMillis();
-            return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,fileUrlSuffix,dataList,path);*//*
-//
+            return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,fileUrlSuffix,dataList,path);
+
             String title= "产品详情"+System.currentTimeMillis();
             String title= "产品详情"+System.currentTimeMillis();
             String fileName= title+".xlsx";
             String fileName= title+".xlsx";
             String path="D://cloud/upload/";
             String path="D://cloud/upload/";

+ 14 - 11
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.constant.Constant;
 import com.management.platform.constant.Constant;
-import com.management.platform.controller.WeiXinCorpController;
 import com.management.platform.entity.*;
 import com.management.platform.entity.*;
 import com.management.platform.entity.vo.SysRichFunction;
 import com.management.platform.entity.vo.SysRichFunction;
 import com.management.platform.entity.vo.UserVO;
 import com.management.platform.entity.vo.UserVO;
@@ -19,8 +18,6 @@ import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
 import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
-import org.apache.commons.collections4.Put;
-import org.apache.commons.io.FileUtils;
 import org.apache.poi.hssf.usermodel.*;
 import org.apache.poi.hssf.usermodel.*;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.usermodel.*;
@@ -36,7 +33,6 @@ import org.springframework.ldap.core.LdapTemplate;
 import org.springframework.ldap.filter.EqualsFilter;
 import org.springframework.ldap.filter.EqualsFilter;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.ModelAndView;
@@ -211,7 +207,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     private TaskGroupService taskGroupService;
     private TaskGroupService taskGroupService;
     @Resource
     @Resource
     private ParticipationService participationService;
     private ParticipationService participationService;
-
+    @Resource
+    private UserWorkTypeMapper workTypeMapper;
     @Resource
     @Resource
     private LdapTemplate ldapTemplate;
     private LdapTemplate ldapTemplate;
 
 
@@ -744,7 +741,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 
 
     //获取员工的列表
     //获取员工的列表
     @Override
     @Override
-    public HttpRespMsg getEmployeeList(Integer departmentId,Integer matchingType,String keyword, Integer status, Integer roleId, Integer onlyDirect, String cursor, Integer pageIndex, Integer pageSize, HttpServletRequest request) throws Exception {
+    public HttpRespMsg getEmployeeList(Integer departmentId, Integer matchingType, String keyword,  Integer status, Integer roleId,Integer workTypeId, Integer onlyDirect, String cursor, Integer pageIndex, Integer pageSize, HttpServletRequest request) throws Exception {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         Boolean flag = false;
         Boolean flag = false;
         if (status != null && status.equals(2)){
         if (status != null && status.equals(2)){
@@ -784,11 +781,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 Page<User> page = new Page<>(pageIndex, pageSize);
                 Page<User> page = new Page<>(pageIndex, pageSize);
                 if (departmentId == -1) {
                 if (departmentId == -1) {
                     //单独查找全部
                     //单独查找全部
-                    list = userMapper.getUserByDepartment(page, companyId, null,matchingType, keyword, status, roleId);
+                    list = userMapper.getUserByDepartment(page, companyId, null,matchingType, keyword, status, roleId,workTypeId);
                     total = page.getTotal();
                     total = page.getTotal();
                 } else if (departmentId == 0) {
                 } else if (departmentId == 0) {
                     //单独查找0, 未分配的
                     //单独查找0, 未分配的
-                    list = userMapper.getUserByDepartment(page, companyId, departmentId,matchingType, keyword, status, roleId);
+                    list = userMapper.getUserByDepartment(page, companyId, departmentId,matchingType, keyword, status, roleId, workTypeId);
                     total = page.getTotal();
                     total = page.getTotal();
                 } else {
                 } else {
                     //范围查找
                     //范围查找
@@ -1181,9 +1178,11 @@ 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,
-                                  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 jobNumber, String inactiveDate) {
+    public HttpRespMsg insertUser(String targetId, String name, String phone, Integer roleId, Integer  workTypeId, Double monthCost, Double cost,
+                                  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 jobNumber, String inactiveDate) {
+
+
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         try {
         try {
@@ -1222,6 +1221,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                                 .setPhone(phone)
                                 .setPhone(phone)
                                 .setRoleId(roleId)
                                 .setRoleId(roleId)
                                 .setRoleName(sysRoleMapper.selectById(roleId).getRolename())
                                 .setRoleName(sysRoleMapper.selectById(roleId).getRolename())
+                                .setWorkTypeId(workTypeId)
+                                .setWorkType(workTypeMapper.selectById(workTypeId).getName())
                                 .setCompanyId(creator.getCompanyId())
                                 .setCompanyId(creator.getCompanyId())
                                 .setMonthCost(monthCostValue)
                                 .setMonthCost(monthCostValue)
                                 .setCost(costValue)
                                 .setCost(costValue)
@@ -1303,6 +1304,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                         .setPhone(phone)
                         .setPhone(phone)
                         .setRoleId(roleId)
                         .setRoleId(roleId)
                         .setRoleName(sysRoleMapper.selectById(roleId).getRolename())
                         .setRoleName(sysRoleMapper.selectById(roleId).getRolename())
+                        .setWorkTypeId(workTypeId)
+                        .setWorkType(workTypeMapper.selectById(workTypeId).getName())
                         .setMonthCost(monthCostValue)
                         .setMonthCost(monthCostValue)
                         .setCost(costValue)
                         .setCost(costValue)
                         .setPosition(position)
                         .setPosition(position)

+ 81 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/UserWorkTypeServiceImpl.java

@@ -1,11 +1,19 @@
 package com.management.platform.service.impl;
 package com.management.platform.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.management.platform.entity.User;
 import com.management.platform.entity.UserWorkType;
 import com.management.platform.entity.UserWorkType;
+import com.management.platform.mapper.UserMapper;
 import com.management.platform.mapper.UserWorkTypeMapper;
 import com.management.platform.mapper.UserWorkTypeMapper;
 import com.management.platform.service.UserWorkTypeService;
 import com.management.platform.service.UserWorkTypeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.util.HttpRespMsg;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
 /**
 /**
  * <p>
  * <p>
  *  服务实现类
  *  服务实现类
@@ -16,5 +24,78 @@ import org.springframework.stereotype.Service;
  */
  */
 @Service
 @Service
 public class UserWorkTypeServiceImpl extends ServiceImpl<UserWorkTypeMapper, UserWorkType> implements UserWorkTypeService {
 public class UserWorkTypeServiceImpl extends ServiceImpl<UserWorkTypeMapper, UserWorkType> implements UserWorkTypeService {
+    @Resource
+    private UserWorkTypeMapper workTypeMapper;
+    @Resource
+    private UserMapper userMapper;
+    @Override
+    public HttpRespMsg updateOrInsert(UserWorkType workType, HttpServletRequest request) {
+        HttpRespMsg msg=new HttpRespMsg();
+        String token = request.getHeader("Token");
+        Integer companyId = userMapper.selectById(token).getCompanyId();
+
+        int count = count(new LambdaQueryWrapper<UserWorkType>()
+                .eq(StringUtils.isNoneBlank(workType.getName()), UserWorkType::getName, workType.getName())
+                .eq(companyId!=null,UserWorkType::getCompanyId,companyId)
+        );
+
+        if(workType.getId()!=null){
+           if(count>1){
+               msg.setError("改工种已存在");
+           }else{
+
+               workTypeMapper.updateById(workType);
+               User user=new User();
+               user.setWorkType(workType.getName());
+
+               userMapper.update(user,new LambdaQueryWrapper<User>()
+                       .eq(true,User::getWorkTypeId,workType.getId())
+                       .eq(companyId!=null,User::getCompanyId,companyId)
+               );
+           }
+
+        }else{
+            if(count!=0){
+                msg.setError("改工种已存在");
+            }else{
+                workType.setCompanyId(companyId);
+                workTypeMapper.insert(workType);
+            }
+
+        }
+
+         msg.setData(workType);
+        return msg;
+    }
+
+
+    @Override
+    public HttpRespMsg delete(Integer id, HttpServletRequest request) {
+        HttpRespMsg msg=new HttpRespMsg();
+
+        String token = request.getHeader("Token");
+        User user = userMapper.selectById(token);
+        if(userMapper.selectCount(new LambdaQueryWrapper<User>().eq(id!=null,User::getWorkTypeId,id)
+                .eq(user.getCompanyId()!=null,User::getCompanyId,user.getCompanyId()))>0){
+            msg.setError("改工种正在使用,不能删除");
+        }else{
+            workTypeMapper.deleteById(id);
+        }
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg getInfo(Integer id, HttpServletRequest request) {
+        HttpRespMsg msg=new HttpRespMsg();
+
+        String token = request.getHeader("Token");
+        User user = userMapper.selectById(token);
+        UserWorkType userWorkType = workTypeMapper.selectOne(new LambdaQueryWrapper<UserWorkType>()
+                .eq(user.getCompanyId() != null, UserWorkType::getCompanyId, user.getCompanyId())
+                .eq(id != null, UserWorkType::getId, id)
+        );
+        msg.setData(userWorkType);
 
 
+        return msg;
+    }
 }
 }

+ 4 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/UserMapper.xml

@@ -58,7 +58,7 @@
     </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.gender, a.role_id as roleId, a.role_name as roleName, a.work_type_id as workTypeId, a.work_type as workType, 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, DATE_FORMAT(a.create_time, '%Y-%m-%d %H:%m')  as createTime
         a.job_number as jobNumber, DATE_FORMAT(a.create_time, '%Y-%m-%d %H:%m')  as createTime
@@ -88,6 +88,9 @@
         <if test="roleId != null">
         <if test="roleId != null">
             AND a.role_id = #{roleId}
             AND a.role_id = #{roleId}
         </if>
         </if>
+        <if test="workTypeId!= null">
+            AND a.work_type_id = #{workTypeId}
+        </if>
     </select>
     </select>
 
 
     <!--范围分页获取人员-->
     <!--范围分页获取人员-->

+ 79 - 56
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/product/list.vue

@@ -368,10 +368,10 @@
 
 
 
 
         <!-- 产品分类管理 -->
         <!-- 产品分类管理 -->
-        <el-dialog title="分类管理" :visible.sync="isganttshow" width="50%" :before-close="handleClose">
+        <el-dialog title="分类管理" :visible.sync="isganttshow" width="50%" >
             <div>
             <div>
                 <el-table :data="categoryList" style="width: 100%">
                 <el-table :data="categoryList" style="width: 100%">
-                    <el-table-column type="index" width="180">
+                    <el-table-column type="index" width="180" label="序号">
                     </el-table-column>
                     </el-table-column>
                     <el-table-column prop="name" label="分类名称" width="180">
                     <el-table-column prop="name" label="分类名称" width="180">
                     </el-table-column>
                     </el-table-column>
@@ -408,7 +408,7 @@
             <div>
             <div>
                 <el-form ref="form" :model="category" label-width="80px">
                 <el-form ref="form" :model="category" label-width="80px">
                     <el-form-item label="分类名称">
                     <el-form-item label="分类名称">
-                        <el-input v-model="category.name"></el-input>
+                        <el-input v-model="category.name" placeholder="请输入"></el-input>
                     </el-form-item>
                     </el-form-item>
                 </el-form>
                 </el-form>
             </div>
             </div>
@@ -788,7 +788,7 @@ export default {
             temaddForm: {},
             temaddForm: {},
             rules: {
             rules: {
                 name: [{ required: true, message: this.$t('pleaseentername'), trigger: "blur" }],
                 name: [{ required: true, message: this.$t('pleaseentername'), trigger: "blur" }],
-                code: [{ required: true, message: this.$t('qing-shu-ru-bian-hao'), trigger: "blur" }],
+                code: [{ required: true, message: "请输入项目代码", trigger: "blur" }],
                 orderNumber: [{ required: true, message:' 请输入订单数量', trigger: "blur" }],
                 orderNumber: [{ required: true, message:' 请输入订单数量', trigger: "blur" }],
                 unit: [{ required: true, message: '请输入单位', trigger: "blur" }],
                 unit: [{ required: true, message: '请输入单位', trigger: "blur" }],
                 groupNumber: [{ required: true, message: '请输入编组', trigger: "blur" }],
                 groupNumber: [{ required: true, message: '请输入编组', trigger: "blur" }],
@@ -1057,24 +1057,33 @@ export default {
                 })
                 })
         },
         },
         saveCategory() {
         saveCategory() {
+            if (this.category.name == null) {
+                this.$message({
+                    showClose: true,
+                    message: '分类名不能为空',
+                    type: 'warning'
+                });
+            }else{
 
 
-            this.http.post("/prod-category/saveOrUpdateInfo", this.category,
-                res => {
-                    if (res.code == 'ok') {
-                        this.isganttshowCa = false
-                        this.getCategoryList()
-                        this.category = {}
-                    } else {
-                        this.$message({
-                            showClose: true,
-                            message: '该分类已存在',
-                            type: 'warning'
-                        });
-                    }
+                this.http.post("/prod-category/saveOrUpdateInfo", this.category,
+                    res => {
+                        if (res.code == 'ok') {
+                            this.isganttshowCa = false
+                            this.getCategoryList()
+                            this.category = {}
+                        } else {
+                            this.$message({
+                                showClose: true,
+                                message: '该分类已存在',
+                                type: 'warning'
+                            });
+                        }
 
 
 
 
-                })
+                    })
 
 
+            }
+            
         },
         },
 
 
         getCategoryList() {
         getCategoryList() {
@@ -3230,50 +3239,64 @@ export default {
             this.$refs.form1.validate(valid => {
             this.$refs.form1.validate(valid => {
                 console.log(valid)
                 console.log(valid)
                 if (valid) {
                 if (valid) {
+                    console.log("columnNumber", this.addForm.columnNumber,"vehicleNumber", this.addForm.vehicleNumber)
+                    let flag=true;
+                    if(!Number.isInteger(this.addForm.orderNumber)){
+                        flag=false;
+                    }
+                    if(this.addForm.columnNumber != null && !Number.isInteger(this.addForm.columnNumber)){
+                        flag=false;
+                    }
+                    if(this.addForm.vehicleNumber != null && !Number.isInteger(this.addForm.vehicleNumber)){
+                        flag=false;
+                    }
 
 
-                    if(Number.isInteger(this.addForm.orderNumber)&& Number.isInteger(this.addForm.columnNumber) && Number.isInteger(this.addForm.vehicleNumber)){    
-                    //console.log("valid",valid)
-                    this.addLoading = true;
-                    this.addForm.categoryId = this.cateId;
-                    this.http.post('/product/saveProductInfo', this.addForm,
-                        res => {
-                            this.addLoading = false;
-                            if (res.code == "ok") {
-                                this.productId = res.data.id;
-                                this.productName = res.data.name;
-                                this.$message({
-                                    message: (this.addForm.id != null ? this.$t('xiu-gai') : this.$t('create')) + this.$t('other.successful'),
-                                    type: "success"
-                                });
-                                if (addSequence) {
-                                    //进入工序录入
-                                    this.http.post('/prod-procedure/getProdProcedureList', { productId: this.productId },
-                                        res => {
-                                            this.procedureLit = res.data.prodProcedureList;
-                                            this.procedureVersion = res.data.version;
-
-                                        })
-
-                                    this.prodEditActive = 1;
+                    
+                    if(flag){
+                            //console.log("valid",valid)
+                        this.addLoading = true;
+                        this.addForm.categoryId = this.cateId;
+                        this.http.post('/product/saveProductInfo', this.addForm,
+                            res => {
+                                this.addLoading = false;
+                                if (res.code == "ok") {
+                                    this.productId = res.data.id;
+                                    this.productName = res.data.name;
+                                    this.$message({
+                                        message: (this.addForm.id != null ? this.$t('xiu-gai') : this.$t('create')) + this.$t('other.successful'),
+                                        type: "success"
+                                    });
+                                    if (addSequence) {
+                                        //进入工序录入
+                                        this.http.post('/prod-procedure/getProdProcedureList', { productId: this.productId },
+                                            res => {
+                                                this.procedureLit = res.data.prodProcedureList;
+                                                this.procedureVersion = res.data.version;
+
+                                            })
+
+                                        this.prodEditActive = 1;
+                                    } else {
+                                        this.addFormVisible = false;
+                                    }
+                                    this.getList();
                                 } else {
                                 } else {
-                                    this.addFormVisible = false;
+                                    this.$message({
+                                        message: res.msg,
+                                        type: "error"
+                                    });
                                 }
                                 }
-                                this.getList();
-                            }else {
+                            },
+                            error => {
+                                this.addLoading = false;
                                 this.$message({
                                 this.$message({
-                                    message: res.msg,
+                                    message: error,
                                     type: "error"
                                     type: "error"
                                 });
                                 });
-                            }
-                        },
-                        error => {
-                            this.addLoading = false;
-                            this.$message({
-                                message: error,
-                                type: "error"
-                            });
-                        });;
-                    } else {
+                            });;
+
+                    }
+                    else {
                          this.$message({
                          this.$message({
                             message: "数量要为整数",
                             message: "数量要为整数",
                             type: "error"
                             type: "error"

+ 158 - 9
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/team/index.vue

@@ -113,6 +113,10 @@
                     <el-form-item style="float:right;" v-if="user.dingdingUserid != null && permissions.structureImport">
                     <el-form-item style="float:right;" v-if="user.dingdingUserid != null && permissions.structureImport">
                         <el-link type="primary" :underline="false" @click="showCorpDDSyncDialog">{{ $t('synchronizetheaddressbook') }}</el-link>
                         <el-link type="primary" :underline="false" @click="showCorpDDSyncDialog">{{ $t('synchronizetheaddressbook') }}</el-link>
                     </el-form-item>
                     </el-form-item>
+
+                     <el-form-item style="float:right;" v-if="permissions.structureExport">
+                          <el-link type="primary" :underline="false" @click="showWorkTypeDialog">自定义工种</el-link>
+                      </el-form-item>
                     
                     
                     <el-form-item style="float:right;">
                     <el-form-item style="float:right;">
                         <span style="color: #666666">{{ $t('jiao-se') }}</span>
                         <span style="color: #666666">{{ $t('jiao-se') }}</span>
@@ -121,16 +125,27 @@
                         </el-select>
                         </el-select>
                     </el-form-item>
                     </el-form-item>
                     <el-form-item style="float:right;">
                     <el-form-item style="float:right;">
-                        <span style="color: #666666">{{ $t('state.states') }}</span>
-                        <el-select v-model="status" :placeholder="$t('defaultText.pleaseChoose')" @change="getUser()" style="width: 120px" size="small">
+                        <span style="color: #666666">工种</span>
+                        <el-select v-model="workTypeId" :placeholder="$t('defaultText.pleaseChoose')" @change="getUser()" style="width: 120px" clearable size="small">
                             <el-option
                             <el-option
-                            v-for="item in states"
-                            :key="item.value"
-                            :label="item.label"
-                            :value="item.value">
+                            v-for="item in workTypeList"
+                            :key="item.id"
+                            :label="item.name"
+                            :value="item.id">
                             </el-option>
                             </el-option>
                         </el-select>
                         </el-select>
                     </el-form-item>
                     </el-form-item>
+                    <el-form-item style="float:right;">
+                          <span style="color: #666666">{{ $t('state.states') }}</span>
+                          <el-select v-model="status" :placeholder="$t('defaultText.pleaseChoose')" @change="getUser()" style="width: 120px" size="small">
+                              <el-option
+                              v-for="item in states"
+                              :key="item.value"
+                              :label="item.label"
+                              :value="item.value">
+                              </el-option>
+                          </el-select>
+                      </el-form-item>
                     <el-form-item style="float:right;">
                     <el-form-item style="float:right;">
                         <div style="width: 300px;display: inline-block;margin-top: 4px">
                         <div style="width: 300px;display: inline-block;margin-top: 4px">
                             <el-input v-model="keyword" class="input-with-select" placeholder="请输入" clearable="true" size="small">
                             <el-input v-model="keyword" class="input-with-select" placeholder="请输入" clearable="true" size="small">
@@ -173,6 +188,8 @@
                   </template>
                   </template>
                 </el-table-column>
                 </el-table-column>
                 <el-table-column prop="jobNumber" :label="$t('Worknumber')" ></el-table-column>
                 <el-table-column prop="jobNumber" :label="$t('Worknumber')" ></el-table-column>
+                <el-table-column prop="workType" label="工种" ></el-table-column>
+                <el-table-column  label="性别" ><template slot-scope="scope"><div>{{ scope.row.gender == 1 ? '男' : "女" }}</div></template></el-table-column>
                 <el-table-column prop="phone" :label="$t('shou-ji')" width="120"></el-table-column>
                 <el-table-column prop="phone" :label="$t('shou-ji')" width="120"></el-table-column>
                 <el-table-column prop="departmentName" :label="$t('lable.department')" width="220">
                 <el-table-column prop="departmentName" :label="$t('lable.department')" width="220">
                   <template slot-scope="scope">
                   <template slot-scope="scope">
@@ -236,7 +253,42 @@
             </el-col>
             </el-col>
         </el-col>
         </el-col>
       </div>
       </div>
-
+      <!-- 工种列表 -->
+       <el-dialog title="工种管理" :visible.sync="isganttshow" width="50%" :before-close="handleClose">
+              <div>
+                  <el-table :data="workTypeList" style="width: 100%">
+                      <el-table-column type="index" width="180" label="序号">
+                      </el-table-column>
+                      <el-table-column prop="name" label="工种名称" width="180">
+                      </el-table-column>
+                      <el-table-column label="操作">
+                          <template slot-scope="scope">
+                              <el-button size="mini" @click="updateWorkType(scope.row)">编辑</el-button>
+                              <el-button size="mini" @click="deleteWorkType(scope.row)">删除</el-button>
+                          </template>
+                      </el-table-column>
+                  </el-table>
+              </div>
+              <span slot="footer" class="dialog-footer">
+                  <el-button @click="isganttshow = false">取 消</el-button>
+                  <el-button type="primary" @click="isganttshowWk = true; title = '新增工种'; workType = {}">新增</el-button>
+              </span>
+          </el-dialog>
+          
+          <!-- 编辑工种 -->
+          <el-dialog :title="title" :visible.sync="isganttshowWk" width="30%">
+              <div>
+                  <el-form ref="form" :model="workType" label-width="80px">
+                      <el-form-item label="工种名称">
+                          <el-input v-model="workType.name" placeholder="请输入"></el-input>
+                      </el-form-item>
+                  </el-form>
+              </div>
+              <span slot="footer" class="dialog-footer">
+                  <el-button @click="isganttshowWk = false">取 消</el-button>
+                  <el-button type="primary" @click=" saveWorkType()">确定</el-button>
+              </span>
+          </el-dialog>
       <!-- 修正工时所属部门 -->
       <!-- 修正工时所属部门 -->
       <el-dialog title="修正工时" :visible.sync="workingHoursDialog" width="650px" :before-close="handleClose">
       <el-dialog title="修正工时" :visible.sync="workingHoursDialog" width="650px" :before-close="handleClose">
         <div>
         <div>
@@ -341,6 +393,16 @@
                   <el-form-item :label="$t('Worknumber')" prop="jobNumber">
                   <el-form-item :label="$t('Worknumber')" prop="jobNumber">
                       <el-input v-model="insertForm.jobNumber" :placeholder="$t('peaseenterthe')" clearable></el-input>
                       <el-input v-model="insertForm.jobNumber" :placeholder="$t('peaseenterthe')" clearable></el-input>
                   </el-form-item>
                   </el-form-item>
+                  <el-form-item label="工种" prop="workTypeId">
+                         <el-select v-model="insertForm.workTypeId" placeholder="请选择">
+                            <el-option
+                              v-for="item in workTypeList"
+                              :key="item.id"
+                              :label="item.name"
+                              :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
                   <el-form-item :label="$t('monthcost')" prop="monthCost" v-if="insertForm.salaryType == 0 && permissions.structurePersonnel&&user.timeType.isSecretSalary==0">
                   <el-form-item :label="$t('monthcost')" prop="monthCost" v-if="insertForm.salaryType == 0 && permissions.structurePersonnel&&user.timeType.isSecretSalary==0">
                       <el-input v-model="insertForm.monthCost" id="mc" @input="oninput" :placeholder="$t('yuechengben')" clearable @keyup.native="restrictNumber('mc')"></el-input>
                       <el-input v-model="insertForm.monthCost" id="mc" @input="oninput" :placeholder="$t('yuechengben')" clearable @keyup.native="restrictNumber('mc')"></el-input>
                       <span style="color:orange;font-size:12px;">{{ $t('yuegongzuoo') }}{{timeType.monthDays}}{{ $t('time.day') }},{{$t('meitian')}}{{timeType.allday}}{{ $t('xiaoshi') }}</span>
                       <span style="color:orange;font-size:12px;">{{ $t('yuegongzuoo') }}{{timeType.monthDays}}{{ $t('time.day') }},{{$t('meitian')}}{{timeType.allday}}{{ $t('xiaoshi') }}</span>
@@ -801,6 +863,8 @@ export default {
     window.onresize = function temp() {
     window.onresize = function temp() {
         that.tableHeight = window.innerHeight - 195;
         that.tableHeight = window.innerHeight - 195;
     };
     };
+
+    this.getAllWorkType()
     this.initDrag([
     this.initDrag([
       {
       {
         type: "LR",
         type: "LR",
@@ -840,6 +904,11 @@ export default {
   },
   },
   data() {
   data() {
     return {
     return {
+      isganttshow: false,
+      isganttshowWk: false,
+      workTypeId: null,
+      workTypeList: [],  //所有工种集合
+      workType:{},
       isSyncContact: false,
       isSyncContact: false,
       showSyncDDDialog: false,
       showSyncDDDialog: false,
       transferActiveDialogFlag:false,
       transferActiveDialogFlag:false,
@@ -2420,6 +2489,7 @@ export default {
           status: this.status,
           status: this.status,
           // role: this.role
           // role: this.role
           roleId: this.roleId,
           roleId: this.roleId,
+          workTypeId: this.workTypeId,
           onlyDirect: this.onlyDirect ? "1" : "0",
           onlyDirect: this.onlyDirect ? "1" : "0",
           cursor: this.nextCursor, // 游标
           cursor: this.nextCursor, // 游标
           matchingType: this.integer
           matchingType: this.integer
@@ -2508,6 +2578,79 @@ export default {
         })
         })
         .catch(() => {});
         .catch(() => {});
     },
     },
+    showWorkTypeDialog(){
+      this.getAllWorkType()
+      this.isganttshow=true;
+    },
+    //获取所有的工种
+    getAllWorkType(){
+      this.http.post("/user-work-type/getAll",{},
+      res=>{
+        if(res.code =='ok'){
+          this.workTypeList=res.data.map(item=>{
+            return{
+              id: parseInt(item.id),
+              name: item.name
+            }
+          })
+          console.log(this.workTypeList)
+        }
+      })
+    },
+    updateWorkType(row) {
+      this.isganttshowWk = true
+      this.title = "编辑工种"
+      this.workType = row
+    },
+    deleteWorkType(row) {
+      this.http.post("/user-work-type/delete", { id: row.id },
+        res => {
+          console.log("=======", res.code)
+          if (res.code === 'ok') {
+            this.getAllWorkType()
+            this.$message({
+              showClose: true,
+              message: '删除成功',
+              type: 'success'
+            });
+          } else {
+            this.$message({
+              showClose: true,
+              message: res.msg,
+              type: 'warning'
+            });
+          }
+        })
+    },
+    saveWorkType() {
+     
+      if(this.workType.name==null){
+         this.$message({
+          showClose: true,
+          message: '工种名不能为空',
+          type: 'warning'
+        });
+      }else{
+          this.http.post("/user-work-type/updateOrInsert", this.workType,
+          res => {
+            if (res.code == 'ok') {
+              this.isganttshowWk = false
+              this.getAllWorkType()
+              this.workType = {}
+            } else {
+              this.$message({
+                showClose: true,
+                message: '该工种已存在',
+                type: 'warning'
+              });
+            }
+
+
+          })
+      }
+    
+
+    },
 
 
     // 新增、编辑人员
     // 新增、编辑人员
     openInsertDialog(row, roleNameFlg) {
     openInsertDialog(row, roleNameFlg) {
@@ -2572,10 +2715,12 @@ 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
+                jobNumber: res.data.jobNumber,
+                workTypeId: res.data.workTypeId
               };
               };
               this.$set(this.insertForm, 'inductionDate', res.data.inductionDate)
               this.$set(this.insertForm, 'inductionDate', res.data.inductionDate)
               this.getUserCustomConfig(1);
               this.getUserCustomConfig(1);
+              this.getAllWorkType()
             } else {
             } else {
               this.$message({
               this.$message({
                 message: res.msg,
                 message: res.msg,
@@ -2656,11 +2801,13 @@ export default {
             this.submitLoading = false;
             this.submitLoading = false;
             return false;
             return false;
           }
           }
+
           form = {
           form = {
             name: this.insertForm.name,
             name: this.insertForm.name,
             phone: this.insertForm.phone,
             phone: this.insertForm.phone,
             // role: this.insertForm.role,
             // role: this.insertForm.role,
             roleId: this.insertForm.roleId,
             roleId: this.insertForm.roleId,
+            workTypeId: this.insertForm.workTypeId,
             monthCost: this.insertForm.monthCost,
             monthCost: this.insertForm.monthCost,
             cost: this.insertForm.cost,
             cost: this.insertForm.cost,
             salaryType: this.insertForm.salaryType,
             salaryType: this.insertForm.salaryType,
@@ -2674,6 +2821,8 @@ export default {
             plate4: this.insertForm.plate4,
             plate4: this.insertForm.plate4,
             plate5: this.insertForm.plate5,
             plate5: this.insertForm.plate5,
             jobNumber: this.insertForm.jobNumber,
             jobNumber: this.insertForm.jobNumber,
+            workTypeId: this.insertForm.workTypeId
+            
           };
           };
           if (this.insertForm.isActive == 0) {
           if (this.insertForm.isActive == 0) {
             form.inactiveDate = this.insertForm.inactiveDate;
             form.inactiveDate = this.insertForm.inactiveDate;
@@ -2902,7 +3051,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,
+            jobNumber: this.insertForm.jobNumber
           };
           };
           if (this.insertForm.departmentId != null) {
           if (this.insertForm.departmentId != null) {
             form.departmentId =
             form.departmentId =