Преглед изворни кода

Merge branch 'master' of http://47.100.37.243:10080/ZHOU/yunsu.git

quyueting пре 5 година
родитељ
комит
81dc9186d9
36 измењених фајлова са 970 додато и 484 уклоњено
  1. 1 0
      .idea/modules.xml
  2. 7 6
      cloud-model/src/main/java/com/hssx/cloudmodel/constant/Constant.java
  3. 1 1
      cloud-model/src/main/java/com/hssx/cloudmodel/controller/CompanyController.java
  4. 1 0
      cloud-model/src/main/java/com/hssx/cloudmodel/controller/ProjectController.java
  5. 1 1
      cloud-model/src/main/java/com/hssx/cloudmodel/controller/ProjectFileController.java
  6. 21 0
      cloud-model/src/main/java/com/hssx/cloudmodel/controller/UserCompanyController.java
  7. 6 6
      cloud-model/src/main/java/com/hssx/cloudmodel/controller/UserController.java
  8. 16 1
      cloud-model/src/main/java/com/hssx/cloudmodel/entity/Company.java
  9. 1 36
      cloud-model/src/main/java/com/hssx/cloudmodel/entity/Project.java
  10. 110 0
      cloud-model/src/main/java/com/hssx/cloudmodel/entity/UserCompany.java
  11. 1 1
      cloud-model/src/main/java/com/hssx/cloudmodel/mapper/CompanyMapper.java
  12. 16 0
      cloud-model/src/main/java/com/hssx/cloudmodel/mapper/UserCompanyMapper.java
  13. 2 1
      cloud-model/src/main/java/com/hssx/cloudmodel/service/CompanyService.java
  14. 16 0
      cloud-model/src/main/java/com/hssx/cloudmodel/service/UserCompanyService.java
  15. 2 0
      cloud-model/src/main/java/com/hssx/cloudmodel/service/UserService.java
  16. 17 2
      cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/CompanyServiceImpl.java
  17. 20 0
      cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/UserCompanyServiceImpl.java
  18. 68 9
      cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/UserServiceImpl.java
  19. 1 1
      cloud-model/src/main/java/com/hssx/cloudmodel/util/CodeGenerator.java
  20. 4 8
      cloud-model/src/main/resources/mapper/CompanyMapper.xml
  21. 4 8
      cloud-model/src/main/resources/mapper/ProjectMapper.xml
  22. 19 0
      cloud-model/src/main/resources/mapper/UserCompanyMapper.xml
  23. 15 4
      cloud-model/src/test/java/com/hssx/cloudmodel/CloudModelApplicationTests.java
  24. 7 0
      ys_vue/build/webpack.base.conf.js
  25. 12 21
      ys_vue/package-lock.json
  26. 1 0
      ys_vue/package.json
  27. 2 0
      ys_vue/src/main.js
  28. 5 1
      ys_vue/src/port.js
  29. 4 54
      ys_vue/src/routes.js
  30. 18 15
      ys_vue/src/views/Home.vue
  31. 1 1
      ys_vue/src/views/Login.vue
  32. 14 0
      ys_vue/src/views/base/comp.vue
  33. 71 39
      ys_vue/src/views/base/role.vue
  34. 122 34
      ys_vue/src/views/mold/moldDownload.vue
  35. 325 181
      ys_vue/src/views/project/project.vue
  36. 38 53
      ys_vue/src/views/project/staff.vue

+ 1 - 0
.idea/modules.xml

@@ -2,6 +2,7 @@
 <project version="4">
   <component name="ProjectModuleManager">
     <modules>
+      <module fileurl="file://$PROJECT_DIR$/cloud-model/cloud-model.iml" filepath="$PROJECT_DIR$/cloud-model/cloud-model.iml" />
       <module fileurl="file://$PROJECT_DIR$/cloud-model/cloud-model.iml" filepath="$PROJECT_DIR$/cloud-model/cloud-model.iml" />
       <module fileurl="file://$PROJECT_DIR$/.idea/yunsu.iml" filepath="$PROJECT_DIR$/.idea/yunsu.iml" />
     </modules>

+ 7 - 6
cloud-model/src/main/java/com/hssx/cloudmodel/constant/Constant.java

@@ -7,10 +7,11 @@ package com.hssx.cloudmodel.constant;
  * Version: 1.0
  */
 public class Constant {
-    public static final String SYS_USER = "sysUserInfo";
-    public static final String COMMON_USER = "UserInfo";
-    public static final Integer SYSTEM_ID = 1;
-    public static final String DEFAULT_PWD = "000000";
-    public static final Integer PAGE_NUM = 1;
-    public static final Integer PAGE_SIZE = 10;
+    public static final String DEFAULT_PWD = "000000";//默认密码
+    public static final Integer ASSETS_COMPANY = 0;//资产方编号
+    public static final Integer PRODUCER_COMPANY = 1;//生产方编号
+    public static final Integer SYS_PARENT_ID = 0;//系统管理员的上级id
+    public static final Integer SYS_ID = 1;//系统管理员的id
+
+
 }

+ 1 - 1
cloud-model/src/main/java/com/hssx/cloudmodel/controller/CompanyController.java

@@ -32,7 +32,7 @@ public class CompanyController {
     /**
      * 添加/修改公司
      *
-     * @param company 参数:companyName 公司名 companyAddress 公司地址
+     * @param company 参数:companyName 公司名 companyAddress 公司地址 companyType 公司类型 0-资产方 1-客户
      * @param flag    0-添加,1-修改
      * @return
      */

+ 1 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/controller/ProjectController.java

@@ -32,6 +32,7 @@ public class ProjectController{
     /**
      * 添加/修改项目
      * 参数:projectName 项目名 ,customerCompany 客户方公司id customerCompanyName 客户方公司名称
+     * managerId 项目经理id
      * 修改时/添加时分配项目: id 项目id ,userIds 参与项目的用户id 如:“1,2,3”(多个或者一个)()
      * flag 0-添加,1-修改
      *

+ 1 - 1
cloud-model/src/main/java/com/hssx/cloudmodel/controller/ProjectFileController.java

@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RestController;
  * @since 2019-07-30
  */
 @RestController
-@RequestMapping("/project-file")
+@RequestMapping("/projectfile")
 public class ProjectFileController {
 
 }

+ 21 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/controller/UserCompanyController.java

@@ -0,0 +1,21 @@
+package com.hssx.cloudmodel.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-08-01
+ */
+@RestController
+@RequestMapping("/usercompany")
+public class UserCompanyController {
+
+}
+

+ 6 - 6
cloud-model/src/main/java/com/hssx/cloudmodel/controller/UserController.java

@@ -52,14 +52,15 @@ public class UserController {
 
     /**
      * 创建账号是所获取的公司列表
+     * parentId 当前用户的上级id id 当前用户id
      * @return
      */
     @ApiOperation(value = "获取公司列表")
     @RequestMapping("/getCompanyList")
     @ResponseBody
-    public HttpRespMsg getCompanyList(){
+    public HttpRespMsg getCompanyList(User user){
         HttpRespMsg msg = new HttpRespMsg();
-        List<Company> list = companyService.getIdAndNamelist();
+        List<Company> list = companyService.getIdAndNamelist(user);
         msg.data = list;
         return msg;
     }
@@ -67,10 +68,9 @@ public class UserController {
     /**
      * 添加/修改用户
      *
-     * 参数:account 账号 username 用户名(账号使用者的名字)
+     * 参数:account 账号 username 用户名(账号使用者的名字)parentId 创建此用户的创建者id
      * password 密码 ,mobile 手机号 ,roleName 角色名称, companyId 所属公司id
-     * teamName 团体名称 :客户方、供应方
-     * flag 0-添加,1-修改 subordinateType 所属团队 0-供应商 1-客户
+     * flag 0-添加,1-修改
      * @return
      */
     @ApiOperation("添加/修改用户")
@@ -110,7 +110,7 @@ public class UserController {
     public HttpRespMsg deleteUser(User user, HttpServletRequest request,
                                   HttpServletResponse response) {
         HttpRespMsg msg = new HttpRespMsg();
-        msg.data= userService.removeById(user.getId());
+        msg = userService.deleteUser(user);
         return msg;
     }
 

+ 16 - 1
cloud-model/src/main/java/com/hssx/cloudmodel/entity/Company.java

@@ -13,7 +13,7 @@ import java.io.Serializable;
  * </p>
  *
  * @author 吴涛涛
- * @since 2019-07-26
+ * @since 2019-08-01
  */
 @TableName("tb_company")
 public class Company extends Model<Company> {
@@ -38,6 +38,12 @@ public class Company extends Model<Company> {
     @TableField("company_address")
     private String companyAddress;
 
+    /**
+     * 公司类型 0-资产方 1-生产方
+     */
+    @TableField("company_type")
+    private Integer companyType;
+
 
     public Integer getId() {
         return id;
@@ -63,6 +69,14 @@ public class Company extends Model<Company> {
         this.companyAddress = companyAddress;
     }
 
+    public Integer getCompanyType() {
+        return companyType;
+    }
+
+    public void setCompanyType(Integer companyType) {
+        this.companyType = companyType;
+    }
+
     @Override
     protected Serializable pkVal() {
         return this.id;
@@ -74,6 +88,7 @@ public class Company extends Model<Company> {
         "id=" + id +
         ", companyName=" + companyName +
         ", companyAddress=" + companyAddress +
+        ", companyType=" + companyType +
         "}";
     }
 }

+ 1 - 36
cloud-model/src/main/java/com/hssx/cloudmodel/entity/Project.java

@@ -6,8 +6,6 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
-import com.fasterxml.jackson.annotation.JsonFormat;
-
 import java.io.Serializable;
 
 /**
@@ -16,7 +14,7 @@ import java.io.Serializable;
  * </p>
  *
  * @author 吴涛涛
- * @since 2019-07-31
+ * @since 2019-08-01
  */
 @TableName("tb_project")
 public class Project extends Model<Project> {
@@ -45,14 +43,12 @@ public class Project extends Model<Project> {
      * 开始时间
      */
     @TableField("start_time")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime startTime;
 
     /**
      * 结束时间
      */
     @TableField("end_time")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime endTime;
 
     /**
@@ -91,23 +87,10 @@ public class Project extends Model<Project> {
     @TableField("owner_company_name")
     private String ownerCompanyName;
 
-    /**
-     * 模具生产方公司id
-     */
-    @TableField("customer_company")
-    private Integer customerCompany;
-
-    /**
-     * 模具生产方公司名称
-     */
-    @TableField("customer_company_name")
-    private String customerCompanyName;
-
     /**
      * 创建时间
      */
     @TableField("indate")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime indate;
 
     /**
@@ -211,22 +194,6 @@ public class Project extends Model<Project> {
         this.ownerCompanyName = ownerCompanyName;
     }
 
-    public Integer getCustomerCompany() {
-        return customerCompany;
-    }
-
-    public void setCustomerCompany(Integer customerCompany) {
-        this.customerCompany = customerCompany;
-    }
-
-    public String getCustomerCompanyName() {
-        return customerCompanyName;
-    }
-
-    public void setCustomerCompanyName(String customerCompanyName) {
-        this.customerCompanyName = customerCompanyName;
-    }
-
     public LocalDateTime getIndate() {
         return indate;
     }
@@ -270,8 +237,6 @@ public class Project extends Model<Project> {
         ", isDelete=" + isDelete +
         ", ownerCompany=" + ownerCompany +
         ", ownerCompanyName=" + ownerCompanyName +
-        ", customerCompany=" + customerCompany +
-        ", customerCompanyName=" + customerCompanyName +
         ", indate=" + indate +
         ", managerId=" + managerId +
         ", manager=" + manager +

+ 110 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/entity/UserCompany.java

@@ -0,0 +1,110 @@
+package com.hssx.cloudmodel.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-08-01
+ */
+@TableName("tb_user_company")
+public class UserCompany extends Model<UserCompany> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 用户账号公司关联表主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 用户id
+     */
+    @TableField("user_id")
+    private Integer userId;
+
+    /**
+     * 用户所属公司id
+     */
+    @TableField("belong_company_id")
+    private Integer belongCompanyId;
+
+    /**
+     * 合作模具资产方公司id
+     */
+    @TableField("cooperation_company_id")
+    private Integer cooperationCompanyId;
+
+    /**
+     * 创建时间
+     */
+    @TableField("indate")
+    private LocalDateTime indate;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public Integer getBelongCompanyId() {
+        return belongCompanyId;
+    }
+
+    public void setBelongCompanyId(Integer belongCompanyId) {
+        this.belongCompanyId = belongCompanyId;
+    }
+
+    public Integer getCooperationCompanyId() {
+        return cooperationCompanyId;
+    }
+
+    public void setCooperationCompanyId(Integer cooperationCompanyId) {
+        this.cooperationCompanyId = cooperationCompanyId;
+    }
+
+    public LocalDateTime getIndate() {
+        return indate;
+    }
+
+    public void setIndate(LocalDateTime indate) {
+        this.indate = indate;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "UserCompany{" +
+        "id=" + id +
+        ", userId=" + userId +
+        ", belongCompanyId=" + belongCompanyId +
+        ", cooperationCompanyId=" + cooperationCompanyId +
+        ", indate=" + indate +
+        "}";
+    }
+}

+ 1 - 1
cloud-model/src/main/java/com/hssx/cloudmodel/mapper/CompanyMapper.java

@@ -2,6 +2,7 @@ package com.hssx.cloudmodel.mapper;
 
 import com.hssx.cloudmodel.entity.Company;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.hssx.cloudmodel.entity.User;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -18,5 +19,4 @@ public interface CompanyMapper extends BaseMapper<Company> {
 
     List<Company> getListByKeyName(@Param("keyName") String keyName, @Param("start")Integer start, @Param("pageSize") Integer pageSize);
 
-    List<Company> selectIdAndNamelist();
 }

+ 16 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/mapper/UserCompanyMapper.java

@@ -0,0 +1,16 @@
+package com.hssx.cloudmodel.mapper;
+
+import com.hssx.cloudmodel.entity.UserCompany;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-08-01
+ */
+public interface UserCompanyMapper extends BaseMapper<UserCompany> {
+
+}

+ 2 - 1
cloud-model/src/main/java/com/hssx/cloudmodel/service/CompanyService.java

@@ -2,6 +2,7 @@ package com.hssx.cloudmodel.service;
 
 import com.hssx.cloudmodel.entity.Company;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.hssx.cloudmodel.entity.User;
 import com.hssx.cloudmodel.util.HttpRespMsg;
 import com.hssx.cloudmodel.util.PageUtil;
 
@@ -21,7 +22,7 @@ public interface CompanyService extends IService<Company> {
 
     HttpRespMsg pageList(PageUtil page, String keyName);
 
-    List<Company> getIdAndNamelist();
+    List<Company> getIdAndNamelist(User user);
 
     HttpRespMsg deleteById(Integer id);
 }

+ 16 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/service/UserCompanyService.java

@@ -0,0 +1,16 @@
+package com.hssx.cloudmodel.service;
+
+import com.hssx.cloudmodel.entity.UserCompany;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-08-01
+ */
+public interface UserCompanyService extends IService<UserCompany> {
+
+}

+ 2 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/service/UserService.java

@@ -22,4 +22,6 @@ public interface UserService extends IService<User> {
     HttpRespMsg login(User user, HttpServletRequest request);
 
     HttpRespMsg pageList(PageUtil page,Integer companyId,Integer flag,String keyName,User user,Integer roleType);
+
+    HttpRespMsg deleteUser(User user);
 }

+ 17 - 2
cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/CompanyServiceImpl.java

@@ -1,6 +1,7 @@
 package com.hssx.cloudmodel.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.hssx.cloudmodel.constant.Constant;
 import com.hssx.cloudmodel.entity.Company;
 import com.hssx.cloudmodel.entity.User;
 import com.hssx.cloudmodel.mapper.CompanyMapper;
@@ -67,8 +68,22 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
     }
 
     @Override
-    public List<Company> getIdAndNamelist() {
-        return companyMapper.selectIdAndNamelist();
+    public List<Company> getIdAndNamelist(User user) {
+        QueryWrapper<Company> qw = new QueryWrapper<>();
+        qw.select("id","company_name","company_type");
+        if(Constant.SYS_ID == user.getParentId()){
+            //此时是admin创建用户,返回可选的生产方公司,查询出当前admin的信息并获取他的公司id
+            User admin = userMapper.selectOne(new QueryWrapper<User>().eq("id", user.getId()));
+            qw.eq("company_type",Constant.PRODUCER_COMPANY).or().eq("id",admin.getCompanyId());
+        }else if(Constant.SYS_PARENT_ID == user.getParentId()){
+            //系统管理员创建admin,返回资产方公司
+            qw.eq("company_type",Constant.ASSETS_COMPANY);
+        }else{
+            //此时是项目经理创建其他用户
+            User admin = userMapper.selectOne(new QueryWrapper<User>().eq("id", user.getParentId()));
+            qw.eq("company_type",Constant.ASSETS_COMPANY).or().eq("id",admin.getCompanyId());
+        }
+        return companyMapper.selectList(qw);
     }
 
     @Override

+ 20 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/UserCompanyServiceImpl.java

@@ -0,0 +1,20 @@
+package com.hssx.cloudmodel.service.impl;
+
+import com.hssx.cloudmodel.entity.UserCompany;
+import com.hssx.cloudmodel.mapper.UserCompanyMapper;
+import com.hssx.cloudmodel.service.UserCompanyService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 吴涛涛
+ * @since 2019-08-01
+ */
+@Service
+public class UserCompanyServiceImpl extends ServiceImpl<UserCompanyMapper, UserCompany> implements UserCompanyService {
+
+}

+ 68 - 9
cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/UserServiceImpl.java

@@ -3,9 +3,10 @@ package com.hssx.cloudmodel.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import com.hssx.cloudmodel.entity.User;
+import com.hssx.cloudmodel.constant.Constant;
+import com.hssx.cloudmodel.entity.*;
 import com.hssx.cloudmodel.entity.vo.UserVO;
-import com.hssx.cloudmodel.mapper.UserMapper;
+import com.hssx.cloudmodel.mapper.*;
 import com.hssx.cloudmodel.service.UserService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.hssx.cloudmodel.util.HttpRespMsg;
@@ -30,6 +31,14 @@ import java.util.UUID;
 public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
     @Autowired
     UserMapper userMapper;
+    @Autowired
+    CompanyMapper companyMapper;
+    @Autowired
+    UserCompanyMapper userCompanyMapper;
+    @Autowired
+    ProjectUserMapper projectUserMapper;
+    @Autowired
+    ProjectMapper projectMapper;
 
     @Override
     public HttpRespMsg login(User user, HttpServletRequest request) {
@@ -59,14 +68,42 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     public HttpRespMsg pageList(PageUtil page, Integer companyId, Integer flag, String keyName, User user, Integer roleType) {
         HttpRespMsg msg = new HttpRespMsg();
         PageHelper.startPage(page.getPageNum(), page.getPageSize());
-        List<UserVO> users = userMapper.selectListByCondition(roleType,companyId,flag, user, keyName);
+        List<UserVO> users = userMapper.selectListByCondition(roleType, companyId, flag, user, keyName);
         PageInfo<UserVO> pageInfos = new PageInfo<>(users);
         msg.data = pageInfos;
         return msg;
     }
 
+    @Override
+    public HttpRespMsg deleteUser(User user) {
+        HttpRespMsg msg = new HttpRespMsg();
+        QueryWrapper<ProjectUser> qw = new QueryWrapper<>();
+        qw.eq("user_id", user.getId());
+        //普通用户应用到项目不能删除
+        Integer count = projectUserMapper.selectCount(qw);
+        if (count > 0) {
+            msg.setError("该用户已被应用到项目,暂不提供删除操作");
+            return msg;
+        }
+        //是项目经理不能删除
+        Integer countProject = projectMapper.selectCount(new QueryWrapper<Project>().eq("manager_id", user.getId()));
+        if(countProject>0){
+            msg.setError("该用户已被应用到项目,暂不提供删除操作");
+            return msg;
+        }
+        //删除用户
+        userMapper.deleteById(user.getId());
+        //删除合作的公司
+        userCompanyMapper.delete(new QueryWrapper<UserCompany>().eq("user_id",user.getId()));
+        return msg;
+    }
+
     @Override
     public HttpRespMsg addAndUpdateUser(User user, Integer flag) {
+        //获取该账号的创建者
+        User parentUser = userMapper.selectById(user.getParentId());
+        //获取admin的用户信息
+        User proParentUser = userMapper.selectById(parentUser.getParentId());
         HttpRespMsg msg = new HttpRespMsg();
         if (flag == 0) {
             //添加角色
@@ -74,18 +111,40 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
             qw.eq("account", user.getAccount());
             int count = userMapper.selectCount(qw);
             if (count > 0) {
-                msg.setError("账号已存在,请输入其他账号");
+                User existingUser = userMapper.selectOne(qw);
+                //此时用户已经有了,则建立一条合作公司的关系
+                UserCompany userCompany = new UserCompany();
+                userCompany.setUserId(existingUser.getId());
+                userCompany.setBelongCompanyId(existingUser.getCompanyId());
+                userCompany.setCooperationCompanyId(proParentUser.getCompanyId());
+                QueryWrapper<UserCompany> qWra = new QueryWrapper<>(userCompany);
+                int userCompanyCount = userCompanyMapper.selectCount(qWra);
+                if (count == 0) {
+                    userCompanyMapper.insert(userCompany);
+                }
             } else {
                 //创建账号默认密码"000000"
-                user.setPassword(MD5Util.getPassword("000000"));
+                user.setPassword(MD5Util.getPassword(Constant.DEFAULT_PWD));
                 user.setHeadImgurl(UUID.randomUUID().toString().replaceAll("-", ""));
                 //获取角色所属的团体
-                if("资产方".equals(user.getTeamName())){
-                    user.setSubordinateType(0);
-                }else if("生产方".equals(user.getTeamName())){
-                    user.setSubordinateType(1);
+                Company company = companyMapper.selectById(user.getCompanyId());
+                if (Constant.ASSETS_COMPANY == company.getCompanyType()) {
+                    user.setSubordinateType(Constant.ASSETS_COMPANY);
+                    user.setTeamName("资产方");
+                } else if (Constant.PRODUCER_COMPANY == company.getCompanyType()) {
+                    user.setSubordinateType(Constant.PRODUCER_COMPANY);
+                    user.setTeamName("生产方");
                 }
                 userMapper.insert(user);
+                UserCompany userCompany = new UserCompany();
+                userCompany.setUserId(user.getId());
+                userCompany.setBelongCompanyId(user.getCompanyId());
+                userCompany.setCooperationCompanyId(proParentUser.getCompanyId());
+                QueryWrapper<UserCompany> qWra = new QueryWrapper<>(userCompany);
+                int userCompanyCount = userCompanyMapper.selectCount(qWra);
+                if (count == 0) {
+                    userCompanyMapper.insert(userCompany);
+                }
             }
         } else if (flag == 1) {
             //更新角色信息

+ 1 - 1
cloud-model/src/main/java/com/hssx/cloudmodel/util/CodeGenerator.java

@@ -204,7 +204,7 @@ public class CodeGenerator {
         //若想要生成的实体类继承某个Controller,则可打开下面注释。写上需要继承的Controller的位置即可
 //        strategy.setSuperControllerClass("com.baomidou.ant.common.BaseController");
         //此处user是表名,多个英文逗号分割
-        strategy.setInclude("tb_project");
+        strategy.setInclude("tb_user_company");
 //        strategy.setExclude();//数据库表全生成
 //        strategy.setInclude(scanner("user").split(","));//表名,多个英文逗号分割
         strategy.setControllerMappingHyphenStyle(true);

+ 4 - 8
cloud-model/src/main/resources/mapper/CompanyMapper.xml

@@ -7,17 +7,19 @@
         <id column="id" property="id" />
         <result column="company_name" property="companyName" />
         <result column="company_address" property="companyAddress" />
+        <result column="company_type" property="companyType" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, company_name, company_address
+        id, company_name, company_address, company_type
     </sql>
+
     <select id="getListByKeyName" resultMap="BaseResultMap">
         select
         <include refid="Base_Column_List"/>
         from
-          tb_company
+        tb_company
         <where>
             <if test="keyName != null and keyName != ''">
                 company_name like concat('%',#{keyName},'%')
@@ -25,11 +27,5 @@
         </where>
         Limit #{start},#{pageSize}
     </select>
-    <select id="selectIdAndNamelist" resultMap="BaseResultMap">
-        select
-          id, company_name
-        from
-          tb_company
-    </select>
 
 </mapper>

+ 4 - 8
cloud-model/src/main/resources/mapper/ProjectMapper.xml

@@ -15,8 +15,6 @@
         <result column="is_delete" property="isDelete" />
         <result column="owner_company" property="ownerCompany" />
         <result column="owner_company_name" property="ownerCompanyName" />
-        <result column="customer_company" property="customerCompany" />
-        <result column="customer_company_name" property="customerCompanyName" />
         <result column="indate" property="indate" />
         <result column="manager_id" property="managerId" />
         <result column="manager" property="manager" />
@@ -24,7 +22,7 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, project_name, project_no, start_time, end_time, content, creator_id, creator, is_delete, owner_company, owner_company_name, customer_company, customer_company_name, indate, manager_id, manager
+        id, project_name, project_no, start_time, end_time, content, creator_id, creator, is_delete, owner_company, owner_company_name, indate, manager_id, manager
     </sql>
 
     <resultMap id="BaseResultMapVO" type="com.hssx.cloudmodel.entity.vo.ProjectVO">
@@ -34,8 +32,6 @@
         <result column="creator_id" property="creatorId" />
         <result column="creator" property="creator" />
         <result column="is_delete" property="isDelete" />
-        <result column="customer_company" property="customerCompany" />
-        <result column="customer_company_name" property="customerCompanyName" />
         <result column="indate" property="indate" />
         <result column="manager_id" property="managerId" />
         <result column="manager" property="manager" />
@@ -49,8 +45,8 @@
     <select id="getProjectListByUid" resultMap="BaseResultMap">
         select
         p.id id,p.project_name project_name, p.creator creator,p.owner_company owner_company,
-        p.owner_company_name owner_company_name,p.customer_company customer_company,
-        p.customer_company_name customer_company_name,p.charger charger,p.indate indate
+        p.owner_company_name owner_company_name,
+        p.indate indate
         from
         tb_project p
         left join tb_project_user pu
@@ -68,7 +64,7 @@
     <select id="getProjectById" resultMap="BaseResultMapVO">
     select
         p.id id, p.project_name project_name, p.project_no project_no, p.creator_id creator_id, p.creator creator, p.owner_company owner_company,
-        p.owner_company_name owner_company_name,p.customer_company customer_company, p.customer_company_name customer_company_name, p.indate indate,
+        p.owner_company_name owner_company_name,p.indate indate,
         m.model_no model_no,m.model_name model_name
     from
         tb_project p

+ 19 - 0
cloud-model/src/main/resources/mapper/UserCompanyMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.hssx.cloudmodel.mapper.UserCompanyMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.hssx.cloudmodel.entity.UserCompany">
+        <id column="id" property="id" />
+        <result column="user_id" property="userId" />
+        <result column="belong_company_id" property="belongCompanyId" />
+        <result column="cooperation_company_id" property="cooperationCompanyId" />
+        <result column="indate" property="indate" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, user_id, belong_company_id, cooperation_company_id, indate
+    </sql>
+
+</mapper>

+ 15 - 4
cloud-model/src/test/java/com/hssx/cloudmodel/CloudModelApplicationTests.java

@@ -1,6 +1,8 @@
 package com.hssx.cloudmodel;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.hssx.cloudmodel.entity.User;
+import com.hssx.cloudmodel.mapper.UserMapper;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -14,13 +16,22 @@ import java.util.List;
 public class CloudModelApplicationTests {
 //    @Autowired
 //    private RoleService roleService;
-//    @Test
-//    public void contextLoads() {
-//        //mybatis-plus只查询特定字段的测试
+
+    @Autowired
+    UserMapper userMapper;
+    @Test
+    public void contextLoads() {
+//        User user = new User();
+//        user.setAccount("123456789");
+//        userMapper.insert(user);
+//        System.out.println(user);
+        //mybatis-plus只查询特定字段的测试
 //        QueryWrapper<Role> queryWrapper = new QueryWrapper<>();
 //        queryWrapper.select("id", "role_name");
 //        List<Role> list = roleService.list(queryWrapper);
 //        System.out.println(list);
-//    }
+    }
+
+
 
 }

+ 7 - 0
ys_vue/build/webpack.base.conf.js

@@ -2,6 +2,7 @@ var path = require('path')
 var utils = require('./utils')
 var config = require('../config')
 var vueLoaderConfig = require('./vue-loader.conf')
+var webpack = require("webpack")
 
 function resolve(dir) {
   return path.join(__dirname, '..', dir)
@@ -26,6 +27,12 @@ module.exports = {
       'scss_vars': '@/styles/vars.scss'
     }
   },
+  plugins: [
+    new webpack.ProvidePlugin({
+      jQuery: 'jquery',
+      $: 'jquery'
+    })
+  ],
   module: {
     rules: [
       {

+ 12 - 21
ys_vue/package-lock.json

@@ -3610,14 +3610,12 @@
         "balanced-match": {
           "version": "1.0.0",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "brace-expansion": {
           "version": "1.1.11",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "balanced-match": "^1.0.0",
             "concat-map": "0.0.1"
@@ -3632,20 +3630,17 @@
         "code-point-at": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "concat-map": {
           "version": "0.0.1",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "console-control-strings": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "core-util-is": {
           "version": "1.0.2",
@@ -3762,8 +3757,7 @@
         "inherits": {
           "version": "2.0.3",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "ini": {
           "version": "1.3.5",
@@ -3775,7 +3769,6 @@
           "version": "1.0.0",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "number-is-nan": "^1.0.0"
           }
@@ -3790,7 +3783,6 @@
           "version": "3.0.4",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "brace-expansion": "^1.1.7"
           }
@@ -3798,14 +3790,12 @@
         "minimist": {
           "version": "0.0.8",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "minipass": {
           "version": "2.3.5",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "safe-buffer": "^5.1.2",
             "yallist": "^3.0.0"
@@ -3824,7 +3814,6 @@
           "version": "0.5.1",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "minimist": "0.0.8"
           }
@@ -3905,8 +3894,7 @@
         "number-is-nan": {
           "version": "1.0.1",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "object-assign": {
           "version": "4.1.1",
@@ -3918,7 +3906,6 @@
           "version": "1.4.0",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "wrappy": "1"
           }
@@ -4040,7 +4027,6 @@
           "version": "1.0.2",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "code-point-at": "^1.0.0",
             "is-fullwidth-code-point": "^1.0.0",
@@ -4977,6 +4963,11 @@
       "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
       "dev": true
     },
+    "jquery": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz",
+      "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw=="
+    },
     "js-base64": {
       "version": "2.5.1",
       "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz",

+ 1 - 0
ys_vue/package.json

@@ -14,6 +14,7 @@
     "echarts": "^3.3.2",
     "element-ui": "^2.10.1",
     "font-awesome": "^4.7.0",
+    "jquery": "^3.4.1",
     "nprogress": "^0.2.0",
     "vue": "^2.6.10",
     "vue-router": "^2.3.0",

+ 2 - 0
ys_vue/src/main.js

@@ -17,6 +17,8 @@ import routes from './routes'
 // import Mock from './mock'
 // Mock.bootstrap();
 
+import $ from 'jquery'
+
 import http from './http'
 Vue.prototype.http = http
 

+ 5 - 1
ys_vue/src/port.js

@@ -8,8 +8,12 @@ export default {
     },
     project: {
         userList: '/user/list',  //用户列表
-        addUser: '/user/add',  //添加用户
+        addUser: '/user/add',  //添加或修改用户
         delUser: '/user/delete',  //删除用户
+
+        projectList: '/project/list', //项目列表
+        addProject: '/project/add', //添加或修改项目
+        getUserList: '/project/getUserList', //获取人员列表
     },
     // 基础管理
     base: {

+ 4 - 54
ys_vue/src/routes.js

@@ -1,16 +1,7 @@
 import Login from './views/Login.vue'
 import NotFound from './views/404.vue'
 import Home from './views/Home.vue'
-import Main from './views/Main.vue'
 
-import Table from './views/nav1/Table.vue'
-import Form from './views/nav1/Form.vue'
-import user from './views/nav1/user.vue'
-import Page4 from './views/nav2/Page4.vue'
-import Page5 from './views/nav2/Page5.vue'
-import Page6 from './views/nav3/Page6.vue'
-import echarts from './views/charts/echarts.vue'
-//新页面
 import map from './views/map/map.vue'
 
 import detection from './views/detection/detection.vue'
@@ -22,8 +13,8 @@ import competence from './views/project/competence.vue'
 
 import moldList from './views/mold/moldList.vue'
 import moldFile from './views/mold/moldFile.vue'
-import moldDownload from './views/mold/moldDownload.vue'
 import moldDetail from './views/mold/moldDetail.vue'
+import moldDownload from './views/mold/moldDownload.vue'
 
 import role from './views/base/role.vue'
 import comp from './views/base/comp.vue'
@@ -36,47 +27,6 @@ let routes = [
         name: '',
         hidden: true
     },
-    // {
-    //     path: '/',
-    //     component: Home,
-    //     name: '导航一',
-    //     iconCls: 'el-icon-message',//图标样式class
-    //     children: [
-    //         { path: '/main', component: Main, name: '主页', hidden: true },
-    //         { path: '/table', component: Table, name: 'Table' },
-    //         { path: '/form', component: Form, name: 'Form' },
-    //         { path: '/user', component: user, name: '列表' },
-    //     ]
-    // },
-    // {
-    //     path: '/',
-    //     component: Home,
-    //     name: '导航二',
-    //     iconCls: 'fa fa-id-card-o',
-    //     children: [
-    //         { path: '/page4', component: Page4, name: '页面4' },
-    //         { path: '/page5', component: Page5, name: '页面5' }
-    //     ]
-    // },
-    // {
-    //     path: '/',
-    //     component: Home,
-    //     name: '',
-    //     iconCls: 'fa fa-address-card',
-    //     leaf: true,//只有一个节点
-    //     children: [
-    //         { path: '/page6', component: Page6, name: '导航三' }
-    //     ]
-    // },
-    // {
-    //     path: '/',
-    //     component: Home,
-    //     name: 'Charts',
-    //     iconCls: 'fa fa-bar-chart',
-    //     children: [
-    //         { path: '/echarts', component: echarts, name: 'echarts' }
-    //     ]
-    // },
     // 地图概览
     {
         path: '/',
@@ -121,8 +71,8 @@ let routes = [
         children: [
             { path: '/moldList', component: moldList, name: '模具列表' },
             { path: '/moldDetail/:id', component: moldDetail, name: '模具详情', hidden: true },
-            { path: '/moldFile', component: moldFile, name: '模具审批' },
-            { path: '/moldDownload', component: moldDownload, name: '模具下载' }
+            { path: '/moldFile', component: moldFile, name: '文档审批' },
+            { path: '/moldDownload', component: moldDownload, name: '文档下载' }
         ]
     },
     // 基础管理
@@ -132,7 +82,7 @@ let routes = [
         name: '基础管理',
         iconCls: 'iconfont icon-setting-fill',
         children: [
-            { path: '/role', component: role, name: '角色管理' },
+            // { path: '/role', component: role, name: '角色管理' },
             { path: '/comp', component: comp, name: '公司管理' },
             { path: '/factory', component: factory, name: '工厂管理' }
         ]

+ 18 - 15
ys_vue/src/views/Home.vue

@@ -17,6 +17,9 @@
 						<el-dropdown-item divided @click.native="logout">退出登录</el-dropdown-item>
 					</el-dropdown-menu>
 				</el-dropdown>
+                <el-badge is-dot class="itemNew">
+                    <i class="el-icon-message-solid" style="font-size:24px"></i>
+                </el-badge>
 			</el-col>
 		</el-col>
 		<el-col :span="24" class="main">
@@ -86,19 +89,11 @@
 	export default {
 		data() {
 			return {
+                user: sessionStorage.getItem('user'),
 				sysName:'云塑网后台管理系统',
 				collapsed:false,
 				sysUserName: '',
-				form: {
-					name: '',
-					region: '',
-					date1: '',
-					date2: '',
-					delivery: false,
-					type: [],
-					resource: '',
-					desc: ''
-                },
+				
                 editPassWord: false,
                 editLoading: false,
                 addForm: {
@@ -174,10 +169,10 @@
             }
         },
 		mounted() {
-			var user = sessionStorage.getItem('user');
-			if (user) {
-				user = JSON.parse(user);
-				this.sysUserName = user.username || '';
+			if (this.user) {
+                var user = JSON.parse(this.user);
+                this.user = user;
+                this.sysUserName = user.username || '';
             } else {
                 this.$router.push('/login');
             }
@@ -187,12 +182,20 @@
 </script>
 
 <style scoped lang="scss">
-	@import '~scss_vars';
+    @import '~scss_vars';
 	
     .el-menu-vertical-demo i {
         margin-right: 10px;
     }
 
+    .itemNew {
+        height: 25px;
+        margin-left: 15px;
+        i {
+            vertical-align: top;
+        }
+    }
+
 	.container {
 		position: absolute;
 		top: 0px;

+ 1 - 1
ys_vue/src/views/Login.vue

@@ -9,7 +9,7 @@
                 <el-input type="text" v-model="ruleForm.account" autocomplete="off" placeholder="账号" clearable prefix-icon="el-icon-user-solid"></el-input>
             </el-form-item>
             <el-form-item class="login-input" prop="password">
-                <el-input type="password" v-model="ruleForm.password" autocomplete="off" placeholder="密码" show-password prefix-icon="el-icon-lock"></el-input>
+                <el-input type="password" v-model="ruleForm.password" @keyup.enter.native="handleSubmit" autocomplete="off" placeholder="密码" show-password prefix-icon="el-icon-lock"></el-input>
             </el-form-item>
             <!-- <el-checkbox v-model="checked" checked class="remember">记住密码</el-checkbox> -->
             <el-form-item class="login-button" style="width:100%;">

+ 14 - 0
ys_vue/src/views/base/comp.vue

@@ -19,6 +19,7 @@
 		<el-table :data="list" highlight-current-row :height="tableHeight" v-loading="listLoading" style="width: 100%;">
             <el-table-column type="index" width="60"></el-table-column>
 			<el-table-column prop="companyName" label="公司名称" width="300" sortable></el-table-column>
+            <el-table-column prop="companyType" label="公司类型" width="200" sortable></el-table-column>
             <el-table-column prop="companyAddress" label="公司地址" sortable></el-table-column>
 			<el-table-column label="操作" width="150">
 				<template slot-scope="scope">
@@ -47,6 +48,12 @@
 				<el-form-item label="公司名称" prop="companyName">
 					<el-input v-model="addForm.companyName" autocomplete="off" placeholder="请输入公司地址"></el-input>
 				</el-form-item>
+                <el-form-item label="公司类型" prop="companyType">
+                    <el-select v-model="addForm.companyType" clearable filterable placeholder="请选择公司类型" style="width:532px">
+                        <el-option v-for="item in team" :key="item.value" :label="item.label" :value="item.value">
+                        </el-option>
+                    </el-select>
+				</el-form-item>
                 <el-form-item label="公司地址" prop="companyAddress">
 					<el-input v-model="addForm.companyAddress" autocomplete="off" placeholder="请输入公司地址"></el-input>
 				</el-form-item>
@@ -63,6 +70,12 @@
 				<el-form-item label="公司名称" prop="companyName">
 					<el-input v-model="editForm.companyName" autocomplete="off" placeholder="请输入公司地址"></el-input>
 				</el-form-item>
+                <el-form-item label="公司名称" prop="companyName">
+                    <el-select v-model="editForm.companyName" clearable filterable placeholder="请选择公司类型" style="width:532px">
+                        <el-option v-for="item in team" :key="item.value" :label="item.label" :value="item.value">
+                        </el-option>
+                    </el-select>
+				</el-form-item>
                 <el-form-item label="公司地址" prop="companyAddress">
 					<el-input v-model="editForm.companyAddress" autocomplete="off" placeholder="请输入公司地址"></el-input>
 				</el-form-item>
@@ -100,6 +113,7 @@
                     ]
                 },
 
+                team: [{label:'资产方',value:0},{label:'生产方',value:1}],
                 // 新增界面
 				addFormVisible: false,
 				addLoading: false,

+ 71 - 39
ys_vue/src/views/base/role.vue

@@ -19,7 +19,8 @@
 		<el-table :data="list" highlight-current-row :height="tableHeight" v-loading="listLoading" style="width: 100%;">
             <el-table-column type="index" width="60"></el-table-column>
 			<el-table-column prop="roleName" label="角色名称" width="120" sortable></el-table-column>
-			<el-table-column prop="sex" label="权限">
+            <el-table-column prop="subordinate" label="角色类型" width="120" sortable></el-table-column>
+			<el-table-column label="权限">
                 <template slot-scope="scope">
                     <el-col :span="2" v-if="scope.row.uploadPower == 1">
                         <el-tag size="medium">上传</el-tag>
@@ -59,24 +60,34 @@
         <!--新增界面-->
 		<el-dialog title="新增角色" v-if="addFormVisible" :visible.sync="addFormVisible" :close-on-click-modal="false" customClass='customWidth'>
 			<el-form :model="addForm" label-width="100px" :rules="formRules" ref="addForm">
-				<el-form-item label="角色名称" prop="roleName">
-					<el-input v-model="addForm.roleName" autocomplete="off" placeholder="请输入角色名称"></el-input>
-				</el-form-item>
-				<el-form-item label="权限配置">
-                    <el-row>
-                        <el-col :span="6" v-for="(item,index) in roleList" :key="item.val" style="text-align:center;">
-                            <el-checkbox v-model="addForm[item.label]">{{item.name}}</el-checkbox>
-                        </el-col>
-                    </el-row>
-					 <!-- <el-table :data="roleList" border :show-header="false" style="width: 100%">
-                        <el-table-column prop="name" label="名称" width="80"></el-table-column>
-                        <el-table-column prop="role" label="权限">
-                            <template slot-scope="scope">
-                                <div v-for="(item,index) in scope.row.role"></div>
-                            </template>
-                        </el-table-column>
-                    </el-table> -->
-				</el-form-item>
+                <el-col :span="12">
+                    <el-form-item label="角色名称" prop="roleName">
+                        <el-input v-model="addForm.roleName" autocomplete="off" placeholder="请输入角色名称"></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="角色类型" prop="subordinate">
+                        <el-select v-model="addForm.subordinate" clearable filterable placeholder="请选择角色类型" style="width:202px">
+                            <el-option v-for="item in team" :key="item.value" :label="item.label" :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                    <el-form-item label="权限配置">
+                            <el-col :span="6" v-for="(item,index) in roleList" :key="item.val" style="text-align:center;">
+                                <el-checkbox v-model="addForm[item.label]">{{item.name}}</el-checkbox>
+                            </el-col>
+                        <!-- <el-table :data="roleList" border :show-header="false" style="width: 100%">
+                            <el-table-column prop="name" label="名称" width="80"></el-table-column>
+                            <el-table-column prop="role" label="权限">
+                                <template slot-scope="scope">
+                                    <div v-for="(item,index) in scope.row.role"></div>
+                                </template>
+                            </el-table-column>
+                        </el-table> -->
+                    </el-form-item>
+                </el-col>
 			</el-form>
 			<div slot="footer" class="dialog-footer">
 				<el-button @click.native="addFormVisible = false">取消</el-button>
@@ -87,24 +98,36 @@
 		<!--编辑界面-->
 		<el-dialog title="编辑人员" v-if="editFormVisible" :visible.sync="editFormVisible" :close-on-click-modal="false" customClass='customWidth'>
 			<el-form :model="editForm" label-width="100px" :rules="formRules" ref="editForm">
-				<el-form-item label="角色名称" prop="roleName">
-					<el-input v-model="editForm.roleName" autocomplete="off" placeholder="请输入角色名称"></el-input>
-				</el-form-item>
-				<el-form-item label="权限配置">
-                    <el-row>
-                        <el-col :span="6" v-for="(item,index) in roleList" :key="item.val" style="text-align:center;">
-                            <el-checkbox v-model="editForm[item.label]" :checked="editForm[item.label]">{{item.name}}</el-checkbox>
-                        </el-col>
-                    </el-row>
-					 <!-- <el-table :data="roleList" border :show-header="false" style="width: 100%">
-                        <el-table-column prop="name" label="名称" width="80"></el-table-column>
-                        <el-table-column prop="role" label="权限">
-                            <template slot-scope="scope">
-                                <div v-for="(item,index) in scope.row.role"></div>
-                            </template>
-                        </el-table-column>
-                    </el-table> -->
-				</el-form-item>
+                <el-col :span="12">
+                    <el-form-item label="角色名称" prop="roleName">
+                        <el-input v-model="editForm.roleName" autocomplete="off" placeholder="请输入角色名称"></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="角色类型" prop="subordinate">
+                        <el-select v-model="editForm.subordinate" clearable filterable placeholder="请选择角色类型" style="width:202px">
+                            <el-option v-for="item in team" :key="item.value" :label="item.label" :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="权限配置">
+                        <el-row>
+                            <el-col :span="6" v-for="(item,index) in roleList" :key="item.val" style="text-align:center;">
+                                <el-checkbox v-model="editForm[item.label]" :checked="editForm[item.label]">{{item.name}}</el-checkbox>
+                            </el-col>
+                        </el-row>
+                        <!-- <el-table :data="roleList" border :show-header="false" style="width: 100%">
+                            <el-table-column prop="name" label="名称" width="80"></el-table-column>
+                            <el-table-column prop="role" label="权限">
+                                <template slot-scope="scope">
+                                    <div v-for="(item,index) in scope.row.role"></div>
+                                </template>
+                            </el-table-column>
+                        </el-table> -->
+                    </el-form-item>
+                </el-col>
 			</el-form>
 			<div slot="footer" class="dialog-footer">
 				<el-button @click.native="editFormVisible = false">取消</el-button>
@@ -123,6 +146,7 @@
 				filters: {
                     keyName: ''
                 },
+                team: [{label:'供应商',value:'供应商'},{label:'客户',value:'客户'}],
                 // roleList: [{
                 //     name: '项目文档',
                 //     role: [{name:'上传',val:0},{name:'下载',val:1},{name:'浏览',val:2},{name:'审批',val:3}]
@@ -158,6 +182,9 @@
                 formRules: {
 					roleName: [
 						{ required: true, message: '请输入姓名', trigger: 'blur' }
+                    ],
+                    subordinate: [
+						{ required: true, message: '请选择角色类型', trigger: ['blur','change'] }
 					]
                 },
 
@@ -170,6 +197,7 @@
                     dowloadPower:false,
                     viewPower:false,
                     approvalPower:false,
+                    subordinate: '',
                     flag: 0
 				},
                 
@@ -182,7 +210,9 @@
                     uploadPower: false,
                     dowloadPower:false,
                     viewPower:false,
-                    approvalPower:false
+                    approvalPower:false,
+                    subordinate: '',
+                    flag: 1
 				}
 			}
 		},
@@ -233,7 +263,8 @@
 					uploadPower: false,
                     dowloadPower:false,
                     viewPower:false,
-                    approvalPower:false
+                    approvalPower:false,
+                    subordinate: ''
 				};
             },
             
@@ -248,6 +279,7 @@
                             dowloadPower: this.addForm.dowloadPower?1:0,
                             viewPower: this.addForm.viewPower?1:0,
                             approvalPower: this.addForm.approvalPower?1:0,
+                            subordinate: this.addForm.subordinate,
                             flag: 0
                         }, res => {
                             this.addLoading = false;

+ 122 - 34
ys_vue/src/views/mold/moldDownload.vue

@@ -1,4 +1,4 @@
-<template>
+<template slot-scope="scope">
   <section>
     <!--工具条-->
     <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
@@ -35,40 +35,86 @@
       style="width: 100%;"
     >
       <el-table-column type="index" width="60"></el-table-column>
-      <el-table-column prop="name" label="模具名称" width="200" sortable></el-table-column>
-      <el-table-column label="模具3D图档" width="200" sortable>
+      <el-table-column width="200">
+        <template slot="header">
+          <el-checkbox>
+            <span>模具名称</span>
+          </el-checkbox>
+        </template>
         <template slot-scope="scope">
-          <span v-if="scope.row.mould3D == 0">未上传</span>
-          <span v-else-if="scope.row.mould3D == 1">审批中</span>
-          <span v-else>已通过</span>
+          <el-checkbox>
+            <span>{{scope.row.name}}</span>
+          </el-checkbox>
         </template>
       </el-table-column>
-      <el-table-column label="模具2D图档" width="200" sortable>
+      <el-table-column width="200">
+        <template slot="header">
+          <el-checkbox>
+            <span>模具3D图档</span>
+          </el-checkbox>
+        </template>
         <template slot-scope="scope">
-          <span v-if="scope.row.mould2D == 0">未上传</span>
-          <span v-else-if="scope.row.mould2D == 1">审批中</span>
-          <span v-else>已通过</span>
+          <span v-if="scope.row.states[0] == 0" style="padding-left: 24px;">未上传</span>
+          <span v-else-if="scope.row.states[0] == 1" style="padding-left: 24px;">审批中</span>
+          <span v-else>
+            <el-checkbox>已通过</el-checkbox>
+          </span>
         </template>
       </el-table-column>
-      <el-table-column label="零件3D图档" width="200" sortable>
+      <el-table-column width="200">
+        <template slot="header">
+          <el-checkbox>
+            <span>模具2D图档</span>
+          </el-checkbox>
+        </template>
         <template slot-scope="scope">
-          <span v-if="scope.row.part3D == 0">未上传</span>
-          <span v-else-if="scope.row.part3D == 1">审批中</span>
-          <span v-else>已通过</span>
+          <span v-if="scope.row.states[1] == 0" style="padding-left: 24px;">未上传</span>
+          <span v-else-if="scope.row.states[1] == 1" style="padding-left: 24px;">审批中</span>
+          <span v-else>
+            <el-checkbox>已通过</el-checkbox>
+          </span>
         </template>
       </el-table-column>
-      <el-table-column label="零件2D图档" width="200" sortable>
+      <el-table-column width="200">
+        <template slot="header">
+          <el-checkbox>
+            <span>零件3D图档</span>
+          </el-checkbox>
+        </template>
         <template slot-scope="scope">
-          <span v-if="scope.row.part2D == 0">未上传</span>
-          <span v-else-if="scope.row.part2D == 1">审批中</span>
-          <span v-else>已通过</span>
+          <span v-if="scope.row.states[2] == 0" style="padding-left: 24px;">未上传</span>
+          <span v-else-if="scope.row.states[2] == 1" style="padding-left: 24px;">审批中</span>
+          <span v-else>
+            <el-checkbox>已通过</el-checkbox>
+          </span>
         </template>
       </el-table-column>
-      <el-table-column label="保养方案" width="200" sortable>
+      <el-table-column width="200">
+        <template slot="header">
+          <el-checkbox>
+            <span>零件2D图档</span>
+          </el-checkbox>
+        </template>
+        <template slot-scope="scope">
+          <span v-if="scope.row.states[3] == 0" style="padding-left: 24px;">未上传</span>
+          <span v-else-if="scope.row.states[3] == 1" style="padding-left: 24px;">审批中</span>
+          <span v-else>
+            <el-checkbox>已通过</el-checkbox>
+          </span>
+        </template>
+      </el-table-column>
+      <el-table-column width="200">
+        <template slot="header">
+          <el-checkbox>
+            <span>保养方案</span>
+          </el-checkbox>
+        </template>
         <template slot-scope="scope">
-          <span v-if="scope.row.maintenance == 0">未上传</span>
-          <span v-else-if="scope.row.maintenance == 1">审批中</span>
-          <span v-else>已通过</span>
+          <span v-if="scope.row.states[4] == 0" style="padding-left: 24px;">未上传</span>
+          <span v-else-if="scope.row.states[4] == 1" style="padding-left: 24px;">审批中</span>
+          <span v-else>
+            <el-checkbox>已通过</el-checkbox>
+          </span>
         </template>
       </el-table-column>
     </el-table>
@@ -97,21 +143,39 @@ export default {
         //临时数据
         {
           name: "墨盒类型1",
-          mould3D: 0,
-          mould2D: 1,
-          part3D: 2,
-          part2D: 0,
-          maintenance: 1
+          states: [0, 1, 2, 0, 1]
         },
         {
-          name: "墨盒类型啦啦",
-          mould3D: 2,
-          mould2D: 0,
-          part3D: 1,
-          part2D: 2,
-          maintenance: 0
+          name: "墨盒类型2",
+          states: [2, 0, 1, 2, 0]
+        },
+        {
+          name: "墨盒类型3",
+          states: [1, 2, 0, 1, 2]
+        },
+        {
+          name: "墨盒类型4",
+          states: [0, 1, 2, 0, 1]
+        },
+        {
+          name: "墨盒类型5",
+          states: [2, 0, 1, 2, 0]
+        },
+        {
+          name: "墨盒类型6",
+          states: [2, 2, 2, 2, 2]
         }
       ],
+      // checkBoxArray: [],
+      // defaultItem: { value: false, able: true },
+      // defaultLine: [
+      //   { value: false, able: true },
+      //   { value: false, able: true },
+      //   { value: false, able: true },
+      //   { value: false, able: true },
+      //   { value: false, able: true },
+      //   { value: false, able: true }
+      // ],
       filters: {
         name: "",
         value: ""
@@ -131,13 +195,37 @@ export default {
       this.size = val;
       // this.getUsers();
     },
-    selsChange: function(sels) {
+    selsChange(sels) {
       this.sels = sels;
     }
+    // 点击复选框事件
+    // checkChanged(x, y) {
+    //   this.checkBoxArray[x][y].value = !this.checkBoxArray[x][y].value;
+    //   console.log(
+    //     "x=" + x + " y=" + y + " value=" + this.checkBoxArray[x][y].value
+    //   );
+    //   console.log(this.checkBoxArray[0]);
+    // }
   },
   created() {
     let height = window.innerHeight;
     this.tableHeight = height - 210;
+
+    //向checkBoxArray中push信息
+    // this.checkBoxArray = [];
+    // this.checkBoxArray.push(this.defaultLine);
+    // this.moulds.forEach(mould => {
+    //   var checkBoxLine = [];
+    //   checkBoxLine.push(this.defaultItem);
+    //   for (var i = 0; i < 6; i++) {}
+    //   mould.states.forEach(state => {
+    //     var value = false;
+    //     var able = state == 2;
+    //     var item = { value, able };
+    //     checkBoxLine.push(item);
+    //   });
+    //   this.checkBoxArray.push(checkBoxLine);
+    // });
   },
   mounted() {}
 };

+ 325 - 181
ys_vue/src/views/project/project.vue

@@ -4,101 +4,143 @@
 		<el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
 			<el-form :inline="true" :model="filters">
 				<el-form-item>
-					<el-input v-model="filters.name" placeholder="姓名"></el-input>
+					<el-input v-model="filters.keyName" placeholder="请输入项目名称"></el-input>
 				</el-form-item>
 				<el-form-item>
-					<el-button type="primary" v-on:click="getUsers">查询</el-button>
+					<el-button type="primary" v-on:click="getProject">查询</el-button>
 				</el-form-item>
-				<el-form-item>
+				<el-form-item style="float:right;" v-if="">
 					<el-button type="primary" @click="handleAdd">新增</el-button>
 				</el-form-item>
 			</el-form>
 		</el-col>
 
 		<!--列表-->
-		<el-table :data="users" highlight-current-row v-loading="listLoading" @selection-change="selsChange" style="width: 100%;">
-			<el-table-column type="selection" width="55">
-			</el-table-column>
+		<el-table :data="list" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
 			<el-table-column type="index" width="60">
 			</el-table-column>
-			<el-table-column prop="name" label="姓名" width="120" sortable>
+			<el-table-column prop="projectName" label="项目名称" width="200" sortable>
 			</el-table-column>
-			<el-table-column prop="sex" label="性别" width="100" :formatter="formatSex" sortable>
+            <el-table-column prop="ownerCompanyName" label="生产方" min-width="200" sortable>
 			</el-table-column>
-			<el-table-column prop="age" label="年龄" width="100" sortable>
+            <el-table-column prop="charger" label="生产方负责人" min-width="150" sortable>
 			</el-table-column>
-			<el-table-column prop="birth" label="生日" width="120" sortable>
+			<el-table-column prop="creator" label="项目创建人" width="150" sortable>
 			</el-table-column>
-			<el-table-column prop="addr" label="地址" min-width="180" sortable>
+			<el-table-column prop="indate" label="创建时间" width="180" sortable>
 			</el-table-column>
-			<el-table-column label="操作" width="150">
+			<!-- <el-table-column label="操作" width="150">
 				<template slot-scope="scope">
 					<el-button size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
 					<el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button>
 				</template>
-			</el-table-column>
+			</el-table-column> -->
 		</el-table>
 
 		<!--工具条-->
 		<el-col :span="24" class="toolbar">
-			<el-button type="danger" @click="batchRemove" :disabled="this.sels.length===0">批量删除</el-button>
-			<el-pagination layout="prev, pager, next" @current-change="handleCurrentChange" :page-size="20" :total="total" style="float:right;">
-			</el-pagination>
+			<el-pagination
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+                :page-sizes="[20 , 50 , 80 , 100]"
+                :page-size="20"
+                layout="total, sizes, prev, pager, next"
+                :total="total"
+                style="float:right;">
+            </el-pagination>
 		</el-col>
 
-		<!--编辑界面-->
-		<el-dialog title="编辑" v-model="editFormVisible" :close-on-click-modal="false">
-			<el-form :model="editForm" label-width="80px" :rules="editFormRules" ref="editForm">
-				<el-form-item label="姓名" prop="name">
-					<el-input v-model="editForm.name" autocomplete="off"></el-input>
-				</el-form-item>
-				<el-form-item label="性别">
-					<el-radio-group v-model="editForm.sex">
-						<el-radio class="radio" :label="1">男</el-radio>
-						<el-radio class="radio" :label="0">女</el-radio>
-					</el-radio-group>
-				</el-form-item>
-				<el-form-item label="年龄">
-					<el-input-number v-model="editForm.age" :min="0" :max="200"></el-input-number>
-				</el-form-item>
-				<el-form-item label="生日">
-					<el-date-picker type="date" placeholder="选择日期" v-model="editForm.birth"></el-date-picker>
-				</el-form-item>
-				<el-form-item label="地址">
-					<el-input type="textarea" v-model="editForm.addr"></el-input>
-				</el-form-item>
+        <!--新增界面-->
+		<el-dialog title="新增项目" v-if="addFormVisible" :visible.sync="addFormVisible" :close-on-click-modal="false" customClass='customWidth'>
+			<el-form :model="addForm" label-width="120px" :rules="formRules" ref="addForm">
+                <el-col :span="24">
+                    <el-form-item label="项目名称" prop="projectName">
+                        <el-input v-model="addForm.projectName" autocomplete="off" placeholder="请输入项目名称" style="width:510px"></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="生产方公司" prop="customerCompany">
+                        <el-select v-model="addForm.customerCompany" clearable filterable placeholder="请选择生产方公司" value-key='id' @change="companyChange(0)" style="width:195px">
+                            <el-option v-for="item in company" :key="item.id" :label="item.companyName" :value="item">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="生产方负责人" prop="charger">
+                        <el-select v-model="addForm.charger" clearable filterable placeholder="请选择生产方负责人" value-key='id' style="width:195px">
+                            <el-option v-for="item in charger" :key="item.id" :label="item.username" :value="item">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                    <el-form-item label="本方参与人">
+                        <el-select v-model="addForm.userA" clearable filterable multiple placeholder="请选择本方参与人" style="width:510px">
+                            <el-option v-for="item in userA" :key="item.id" :label="item.username" :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                    <el-form-item label="生产方参与人">
+                        <el-select v-model="addForm.userB" clearable filterable multiple placeholder="请选择生产方参与人" style="width:510px">
+                            <el-option v-for="item in userB" :key="item.id" :label="item.username" :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
 			</el-form>
 			<div slot="footer" class="dialog-footer">
-				<el-button @click.native="editFormVisible = false">取消</el-button>
-				<el-button type="primary" @click.native="editSubmit" :loading="editLoading">提交</el-button>
+				<el-button @click.native="addFormVisible = false">取消</el-button>
+				<el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button>
 			</div>
 		</el-dialog>
 
-		<!--新增界面-->
-		<el-dialog title="新增" v-model="addFormVisible" :close-on-click-modal="false">
-			<el-form :model="addForm" label-width="80px" :rules="addFormRules" ref="addForm">
-				<el-form-item label="姓名" prop="name">
-					<el-input v-model="addForm.name" autocomplete="off"></el-input>
-				</el-form-item>
-				<el-form-item label="性别">
-					<el-radio-group v-model="addForm.sex">
-						<el-radio class="radio" :label="1">男</el-radio>
-						<el-radio class="radio" :label="0">女</el-radio>
-					</el-radio-group>
-				</el-form-item>
-				<el-form-item label="年龄">
-					<el-input-number v-model="addForm.age" :min="0" :max="200"></el-input-number>
-				</el-form-item>
-				<el-form-item label="生日">
-					<el-date-picker type="date" placeholder="选择日期" v-model="addForm.birth"></el-date-picker>
-				</el-form-item>
-				<el-form-item label="地址">
-					<el-input type="textarea" v-model="addForm.addr"></el-input>
-				</el-form-item>
+		<!--编辑界面-->
+		<el-dialog title="编辑" v-if="editFormVisible" :visible.sync="editFormVisible" :close-on-click-modal="false" customClass='customWidth'>
+			<el-form :model="editForm" label-width="120px" :rules="formRules" ref="editForm" class="demo-form-inline">
+				 <el-col :span="24">
+                    <el-form-item label="项目名称" prop="projectName">
+                        <el-input v-model="editForm.projectName" autocomplete="off" placeholder="请输入项目名称" style="width:510px"></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="生产方公司" prop="customerCompany">
+                        <el-select v-model="editForm.customerCompany" clearable filterable placeholder="请选择生产方公司" value-key='id' @change="companyChange(1)" style="width:195px">
+                            <el-option v-for="item in company" :key="item.id" :label="item.companyName" :value="item">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="生产方负责人" prop="charger">
+                        <el-select v-model="editForm.charger" clearable filterable placeholder="请选择生产方负责人" value-key='id' style="width:195px">
+                            <el-option v-for="item in charger" :key="item.id" :label="item.username" :value="item">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                    <el-form-item label="本方参与人">
+                        <el-select v-model="editForm.userA" clearable filterable multiple placeholder="请选择本方参与人" style="width:510px">
+                            <el-option v-for="item in userA" :key="item.id" :label="item.username" :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                    <el-form-item label="生产方参与人">
+                        <el-select v-model="editForm.userB" clearable filterable multiple placeholder="请选择生产方参与人" style="width:510px">
+                            <el-option v-for="item in userB" :key="item.id" :label="item.username" :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
 			</el-form>
 			<div slot="footer" class="dialog-footer">
-				<el-button @click.native="addFormVisible = false">取消</el-button>
-				<el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button>
+				<el-button @click.native="editFormVisible = false">取消</el-button>
+				<el-button type="primary" @click.native="editSubmit" :loading="editLoading">提交</el-button>
 			</div>
 		</el-dialog>
 	</section>
@@ -106,117 +148,262 @@
 
 <script>
 	import util from '../../common/js/util'
-	//import NProgress from 'nprogress'
-	import { getUserListPage, removeUser, batchRemoveUser, editUser, addUser } from '../../api/api';
 
 	export default {
 		data() {
 			return {
 				filters: {
-					name: ''
-				},
-				users: [],
+					keyName: ''
+                },
+                user: JSON.parse(sessionStorage.getItem('user')),
+                company:[],
+                charger: [],
+                userA: [],
+                userB: [],
+
+				list: [],
 				total: 0,
-				page: 1,
-				listLoading: false,
-				sels: [],//列表选中列
+                page: 1,
+                size: 20,
+                listLoading: false,
+                tableHeight: 0,
+
+                formRules: {
+					projectName: [
+						{ required: true, message: '请输入项目名称', trigger: 'blur' }
+                    ],
+                    customerCompany: [
+                        { required: true, message: '请选择客户公司', trigger: ['blur','change'] }
+                    ],
+                    charger: [
+                        { required: true, message: '请选择客户方负责人', trigger: ['blur','change'] }
+                    ]
+                },
+                
+                addFormVisible: false,//新增界面是否显示
+				addLoading: false,
+				//新增界面数据
+				addForm: {
+					projectName: '',
+                    customerCompany: '',
+                    charger: '',
+                    userA: [],
+                    userB: []
+				},
 
 				editFormVisible: false,//编辑界面是否显示
 				editLoading: false,
-				editFormRules: {
-					name: [
-						{ required: true, message: '请输入姓名', trigger: 'blur' }
-					]
-				},
 				//编辑界面数据
 				editForm: {
 					id: 0,
-					name: '',
-					sex: -1,
-					age: 0,
-					birth: '',
-					addr: ''
-				},
-
-				addFormVisible: false,//新增界面是否显示
-				addLoading: false,
-				addFormRules: {
-					name: [
-						{ required: true, message: '请输入姓名', trigger: 'blur' }
-					]
-				},
-				//新增界面数据
-				addForm: {
-					name: '',
-					sex: -1,
-					age: 0,
-					birth: '',
-					addr: ''
+					projectName: '',
+                    customerCompany: '',
+                    charger: '',
+                    userA: [],
+                    userB: []
 				}
 
 			}
 		},
 		methods: {
-			//性别显示转换
-			formatSex: function (row, column) {
-				return row.sex == 1 ? '男' : row.sex == 0 ? '女' : '未知';
-			},
+            // 获取基础数据
+            getMsg(){
+                this.http.post(this.port.base.companys, {}, res => {
+                    if (res.code == "ok") {
+                        var list = res.data , array = [];
+                        for(var i in list){
+                            if(list[i].id != this.user.companyId){
+                                array.push(list[i])
+                            }
+                        }
+                        this.company = array;
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: 'error'
+                        });
+                    }
+                }, error => {
+                    this.$message({
+                        message: error,
+                        type: 'error'
+                    });
+                })
+            },
+
+			//分页
 			handleCurrentChange(val) {
 				this.page = val;
-				this.getUsers();
-			},
-			//获取用户列表
-			getUsers() {
-				let para = {
-					page: this.page,
-					name: this.filters.name
-				};
+				this.getProject();
+            },
+
+            handleSizeChange(val) {
+                this.size = val;
+				this.getProject();
+            },
+            
+			//获取项目列表
+			getProject() {
 				this.listLoading = true;
-				//NProgress.start();
-				getUserListPage(para).then((res) => {
-					this.total = res.data.total;
-					this.users = res.data.users;
-					this.listLoading = false;
-					//NProgress.done();
+				this.http.post(this.port.project.projectList, {
+                    keyName: this.filters.keyName,
+                    currentPage: this.page,
+                    pageSize: this.size,
+                }, res => {
+                    this.listLoading = false;
+                    if (res.code == "ok") {
+                        this.list = res.data.list;
+                        this.total = res.data.total;
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: 'error'
+                        });
+                    }
+                }, error => {
+                    this.listLoading = false;
+                    this.$message({
+                        message: error,
+                        type: 'error'
+                    });
+                })
+            },
+
+            //选择公司切换人员
+            companyChange: function(type){
+                var param = {};
+                if(type == 0){
+                    param.companyId = this.addForm.customerCompany.id;
+                } else if(type == 1) {
+                    param.companyId = this.editForm.customerCompany.id;
+                }
+                param.subordinateType = 1;
+                this.http.post(this.port.project.getUserList, param , res => {
+                    if (res.code == "ok") {
+                        this.charger = res.data;
+                        this.userB = res.data;
+                        if(type == 0){
+                            this.addForm.charger = '';
+                            this.addForm.userB = [];
+                        } else {
+                            this.editForm.charger = '';
+                            this.editForm.userB = [];
+                        }
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: 'error'
+                        });
+                    }
+                }, error => {
+                    this.$message({
+                        message: error,
+                        type: 'error'
+                    });
+                })
+            },
+
+            //显示新增界面
+			handleAdd: function () {
+				this.addFormVisible = true;
+				this.addForm = {
+					projectName: '',
+                    customerCompany: '',
+                    charger: '',
+                    userA: [],
+                    userB: []
+				};
+            },
+
+            //新增
+			addSubmit: function () {
+				this.$refs.addForm.validate((valid) => {
+					if (valid) {
+                        console.log(this.addForm)
+                        var userIds = "";
+                        if(this.addForm.userA.length != 0){
+                            for(var i in this.addForm.userA){
+                                userIds += this.addForm.userA[i] + ","
+                            }
+                        }
+                        
+                        if(this.addForm.userB.length != 0){
+                            for(var i in this.addForm.userB){
+                                userIds += this.addForm.userB[i] + ","
+                            }
+                        }
+                        
+                        userIds = userIds.substring(0,userIds.length-1)
+                        this.addLoading = true;
+                        this.http.post(this.port.project.addProject, {
+                            projectName: this.addForm.projectName,
+                            customerCompany: this.addForm.customerCompany.id,
+                            customerCompanyName: this.addForm.customerCompany.companyName,
+                            chargerId: this.addForm.charger.id,
+                            charger: this.addForm.charger.username,
+                            userIds: userIds,
+                            flag: 0
+                        } , res => {
+                            this.addLoading = false;
+                            this.addFormVisible = false;
+                            if (res.code == "ok") {
+                                this.$message({
+                                    message: '创建成功',
+                                    type: 'success'
+                                });
+                                this.getProject();
+                            } else {
+                                this.$message({
+                                    message: res.msg,
+                                    type: 'error'
+                                });
+                            }
+                        }, error => {
+                            this.addLoading = false;
+                            this.addFormVisible = false;
+                            this.$message({
+                                message: error,
+                                type: 'error'
+                            });
+                        })
+					}
 				});
 			},
+
 			//删除
 			handleDel: function (index, row) {
 				this.$confirm('确认删除该记录吗?', '提示', {
 					type: 'warning'
 				}).then(() => {
 					this.listLoading = true;
-					//NProgress.start();
 					let para = { id: row.id };
 					removeUser(para).then((res) => {
 						this.listLoading = false;
-						//NProgress.done();
 						this.$message({
 							message: '删除成功',
 							type: 'success'
 						});
-						this.getUsers();
+						this.getProject();
 					});
 				}).catch(() => {
 
 				});
-			},
+            },
+            
 			//显示编辑界面
 			handleEdit: function (index, row) {
 				this.editFormVisible = true;
-				this.editForm = Object.assign({}, row);
-			},
-			//显示新增界面
-			handleAdd: function () {
-				this.addFormVisible = true;
-				this.addForm = {
-					name: '',
-					sex: -1,
-					age: 0,
-					birth: '',
-					addr: ''
+                this.editForm = Object.assign({}, row);
+                this.editForm = {
+                    id: row.id,
+					projectName: row.projectName,
+                    customerCompany: row.customerCompanyName,
+                    charger: row.charger,
+                    userA: [],
+                    userB: []
 				};
 			},
+			
 			//编辑
 			editSubmit: function () {
 				this.$refs.editForm.validate((valid) => {
@@ -235,64 +422,21 @@
 								});
 								this.$refs['editForm'].resetFields();
 								this.editFormVisible = false;
-								this.getUsers();
+								this.getProject();
 							});
 						});
 					}
 				});
-			},
-			//新增
-			addSubmit: function () {
-				this.$refs.addForm.validate((valid) => {
-					if (valid) {
-						this.$confirm('确认提交吗?', '提示', {}).then(() => {
-							this.addLoading = true;
-							//NProgress.start();
-							let para = Object.assign({}, this.addForm);
-							para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
-							addUser(para).then((res) => {
-								this.addLoading = false;
-								//NProgress.done();
-								this.$message({
-									message: '提交成功',
-									type: 'success'
-								});
-								this.$refs['addForm'].resetFields();
-								this.addFormVisible = false;
-								this.getUsers();
-							});
-						});
-					}
-				});
-			},
-			selsChange: function (sels) {
-				this.sels = sels;
-			},
-			//批量删除
-			batchRemove: function () {
-				var ids = this.sels.map(item => item.id).toString();
-				this.$confirm('确认删除选中记录吗?', '提示', {
-					type: 'warning'
-				}).then(() => {
-					this.listLoading = true;
-					//NProgress.start();
-					let para = { ids: ids };
-					batchRemoveUser(para).then((res) => {
-						this.listLoading = false;
-						//NProgress.done();
-						this.$message({
-							message: '删除成功',
-							type: 'success'
-						});
-						this.getUsers();
-					});
-				}).catch(() => {
-
-				});
 			}
-		},
+			
+        },
+        created() {
+            let height = window.innerHeight;
+            this.tableHeight = height - 210;
+        },
 		mounted() {
-			this.getUsers();
+            this.getMsg();
+			this.getProject();
 		}
 	}
 

+ 38 - 53
ys_vue/src/views/project/staff.vue

@@ -3,14 +3,6 @@
 		<!--工具条-->
 		<el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
 			<el-form :inline="true" :model="filters">
-                <el-col :span="3">
-                    <el-form-item>
-                        <el-select v-model="filters.roleType" clearable placeholder="请选择角色">
-                            <el-option v-for="item in role" :key="item.id" :label="item.roleName" :value="item.id">
-                            </el-option>
-                        </el-select>
-                    </el-form-item>
-                </el-col>
                 <el-col :span="3">
                     <el-form-item>
                         <el-select v-model="filters.companyId" clearable filterable placeholder="请选择公司">
@@ -50,8 +42,8 @@
             <el-table-column prop="roleName" label="角色" sortable></el-table-column>
 			<el-table-column label="操作" width="150">
 				<template slot-scope="scope">
-					<el-button size="small" @click="handleEdit(scope.$index, scope.row)" v-if="scope.row.roleType != -1">编辑</el-button>
-					<el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)" v-if="scope.row.roleType != -1">删除</el-button>
+					<el-button size="small" @click="handleEdit(scope.$index, scope.row)" v-if="scope.row.roleName != -1">编辑</el-button>
+					<el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)" v-if="scope.row.roleName != -1">删除</el-button>
 				</template>
 			</el-table-column>
 		</el-table>
@@ -78,7 +70,7 @@
 				<el-form-item label="用户名" prop="account">
 					<el-input v-model="addForm.account" autocomplete="off" placeholder="请输入用户名(登录账号)"></el-input>
 				</el-form-item>
-				<el-form-item label="联系方式">
+				<el-form-item label="联系方式" prop="mobile">
 					<el-input v-model="addForm.mobile" autocomplete="off" placeholder="请输入联系方式"></el-input>
 				</el-form-item>
                 <el-form-item label="类型" prop="teamName">
@@ -87,17 +79,14 @@
                         </el-option>
                     </el-select>
 				</el-form-item>
-                <el-form-item label="公司" prop="companyId">
+                <el-form-item label="公司" prop="companyId" v-if="addForm.teamName=='生产方'">
 					<el-select v-model="addForm.companyId" clearable filterable placeholder="请选择所属公司" style="width:202px">
                         <el-option v-for="item in company" :key="item.id" :label="item.companyName" :value="item.id">
                         </el-option>
                     </el-select>
 				</el-form-item>
-				<el-form-item label="角色" prop="roleType">
-					<el-select v-model="addForm.roleType" clearable filterable placeholder="请选择角色" style="width:202px">
-                        <el-option v-for="item in role" :key="item.id" :label="item.roleName" :value="item.id">
-                        </el-option>
-                    </el-select>
+				<el-form-item label="角色" prop="roleName">
+                    <el-input v-model="addForm.roleName" autocomplete="off" placeholder="请输入角色名称"></el-input>
 				</el-form-item>
 			</el-form>
 			<div slot="footer" class="dialog-footer">
@@ -116,7 +105,7 @@
 				<el-form-item label="用户名" prop="account">
 					<el-input v-model="editForm.account" autocomplete="off" placeholder="请输入用户名(登录账号)"></el-input>
 				</el-form-item>
-				<el-form-item label="联系方式">
+				<el-form-item label="联系方式" prop="mobile">
 					<el-input v-model="editForm.mobile" autocomplete="off" placeholder="请输入联系方式"></el-input>
 				</el-form-item>
                 <el-form-item label="类型" prop="teamName">
@@ -125,17 +114,14 @@
                         </el-option>
                     </el-select>
 				</el-form-item>
-                <el-form-item label="公司" prop="companyId">
+                <el-form-item label="公司" prop="companyId" v-if="addForm.teamName=='生产方'">
 					<el-select v-model="editForm.companyId" clearable filterable placeholder="请选择所属公司" style="width:202px">
                         <el-option v-for="item in company" :key="item.id" :label="item.companyName" :value="item.id">
                         </el-option>
                     </el-select>
 				</el-form-item>
-				<el-form-item label="角色" prop="roleType">
-					<el-select v-model="editForm.roleType" clearable filterable placeholder="请选择角色" style="width:202px">
-                        <el-option v-for="item in role" :key="item.id" :label="item.roleName" :value="item.id">
-                        </el-option>
-                    </el-select>
+				<el-form-item label="角色" prop="roleName">
+                    <el-input v-model="editForm.roleName" autocomplete="off" placeholder="请输入角色名称"></el-input>
 				</el-form-item>
 			</el-form>
 			<div slot="footer" class="dialog-footer">
@@ -153,17 +139,30 @@
 
 	export default {
 		data() {
+            var checkPhone = (rule, value, callback) => {
+                if (!value) {
+                    return callback(new Error('请输入联系方式'));
+                } else {
+                    const reg = /^1[0-9]\d{9}$/
+                    if (reg.test(value)) {
+                        callback();
+                    } else {
+                        return callback(new Error('请输入正确的联系方式'));
+                    }
+                }
+            };
 			return {
 				filters: {
                     keyName: '',
-                    roleType: '',
+                    roleName: '',
                     flag: '姓名',
                     companyId: ''
                 },
                 
-                team: [{label:'供应商',value:'供应商'},{label:'客户',value:'客户'}],
+                team: [{label:'资产方',value:'资产方'},{label:'生产方',value:'生产方'}],
                 company: [],
-                role: [],
+                // role: [],
+                // roles:[],
 
 				list: [],
 				total: 0,
@@ -171,7 +170,7 @@
                 size: 20,
                 listLoading: false,
                 tableHeight: 0,
-                
+
                 formRules: {
                     username: [
 						{ required: true, message: '请输入姓名', trigger: 'blur' }
@@ -179,14 +178,18 @@
                     account: [
 						{ required: true, message: '请输入用户名', trigger: 'blur' }
                     ],
+                    mobile: [
+                        // { required: true, message: '请输入联系方式', trigger: 'blur' },
+                        { required: true, validator: checkPhone, trigger: 'blur'}
+                    ],
                     teamName: [
 						{ required: true, message: '请选择人员类型', trigger: ["blur",'change'] }
 					],
                     companyId: [
 						{ required: true, message: '请选择所属公司', trigger: ["blur",'change'] }
 					],
-                    roleType: [
-						{ required: true, message: '请选择角色', trigger: ["blur",'change'] }
+                    roleName: [
+						{ required: true, message: '请输入角色名称', trigger: ["blur",'change'] }
 					]
                 },
 
@@ -200,7 +203,7 @@
                     mobile: '',
                     teamName: '',
 					companyId: '',
-                    roleType: '',
+                    roleName: '',
                     flag: 0
 				},
 
@@ -215,7 +218,7 @@
                     mobile: '',
                     teamName: '',
 					companyId: '',
-                    roleType: '',
+                    roleName: '',
                     flag: 1
 				}
 			}
@@ -223,22 +226,6 @@
 		methods: {
             // 获取基础数据
             getMsg(){
-                this.http.post(this.port.base.roles, {}, res => {
-                    if (res.code == "ok") {
-                        this.role = res.data;
-                    } else {
-                        this.$message({
-                            message: res.msg,
-                            type: 'error'
-                        });
-                    }
-                }, error => {
-                    this.$message({
-                        message: error,
-                        type: 'error'
-                    });
-                })
-
                 this.http.post(this.port.base.companys, {}, res => {
                     if (res.code == "ok") {
                         this.company = res.data;
@@ -274,10 +261,8 @@
                     keyName: this.filters.keyName,
                     currentPage: this.page,
                     pageSize: this.size,
-                    roleType: this.filters.roleType==''?-2:this.filters.roleType,
                     companyId: this.filters.companyId==''?-1:this.filters.companyId,
                     flag: this.filters.flag=='姓名'?0:this.filters.flag
-
                 }, res => {
                     this.listLoading = false;
                     if (res.code == "ok") {
@@ -308,7 +293,7 @@
                     mobile: '',
                     teamName: '',
 					companyId: '',
-                    roleType: '',
+                    roleName: '',
                     flag: 0
 				};
             },
@@ -376,7 +361,7 @@
             
 			//显示编辑界面
 			handleEdit: function (index, row) {
-				this.editFormVisible = true;
+                this.editFormVisible = true;
 				this.editForm = {
                     id: row.id,
                     parentId: JSON.parse(sessionStorage.getItem('user')).id,
@@ -385,7 +370,7 @@
                     mobile: row.mobile,
                     teamName: row.teamName,
 					companyId: row.companyId,
-                    roleType: row.roleType,
+                    roleName: row.roleName,
                     flag: 1
 				};
             },