quyueting 5 سال پیش
والد
کامیت
68adca3dff
24فایلهای تغییر یافته به همراه1460 افزوده شده و 586 حذف شده
  1. 14 0
      cloud-model/src/main/java/com/hssx/cloudmodel/controller/CompanyController.java
  2. 17 1
      cloud-model/src/main/java/com/hssx/cloudmodel/controller/MouldFileController.java
  3. 42 0
      cloud-model/src/main/java/com/hssx/cloudmodel/controller/MouldOperationDynamicsController.java
  4. 2 1
      cloud-model/src/main/java/com/hssx/cloudmodel/controller/PowerController.java
  5. 1 1
      cloud-model/src/main/java/com/hssx/cloudmodel/controller/ProjectFileController.java
  6. 19 1
      cloud-model/src/main/java/com/hssx/cloudmodel/controller/ProjectOperationDynamicsController.java
  7. 170 0
      cloud-model/src/main/java/com/hssx/cloudmodel/entity/MouldOperationDynamics.java
  8. 16 0
      cloud-model/src/main/java/com/hssx/cloudmodel/mapper/MouldOperationDynamicsMapper.java
  9. 2 0
      cloud-model/src/main/java/com/hssx/cloudmodel/service/CompanyService.java
  10. 16 0
      cloud-model/src/main/java/com/hssx/cloudmodel/service/MouldOperationDynamicsService.java
  11. 10 1
      cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/CompanyServiceImpl.java
  12. 31 24
      cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/MouldFileServiceImpl.java
  13. 20 0
      cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/MouldOperationDynamicsServiceImpl.java
  14. 1 1
      cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/ProjectFileServiceImpl.java
  15. 43 18
      cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/ProjectServiceImpl.java
  16. 1 1
      cloud-model/src/main/java/com/hssx/cloudmodel/util/CodeGenerator.java
  17. 23 0
      cloud-model/src/main/resources/mapper/MouldOperationDynamicsMapper.xml
  18. 10 3
      ys_vue/src/port.js
  19. 528 237
      ys_vue/src/views/mold/moldDetail.vue
  20. 1 1
      ys_vue/src/views/mold/moldDownload.vue
  21. 70 1
      ys_vue/src/views/mold/moldFile.vue
  22. 323 266
      ys_vue/src/views/mold/moldList.vue
  23. 1 1
      ys_vue/src/views/project/project.vue
  24. 99 28
      ys_vue/src/views/project/projectDetail.vue

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

@@ -110,5 +110,19 @@ public class CompanyController {
         return msg;
     }
 
+    /**
+     * 项目分配生产方公司列表
+     * @return
+     */
+    @ApiOperation(value = "项目分配生产方公司列表")
+    @RequestMapping("/addCompanyListToProject")
+    @ResponseBody
+    public HttpRespMsg addCompanyListToProject(User user){
+        HttpRespMsg msg = new HttpRespMsg();
+        List<Company> list = companyService.addCompanyListToProject(user);
+        msg.data = list;
+        return msg;
+    }
+
 }
 

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

@@ -2,6 +2,8 @@ package com.hssx.cloudmodel.controller;
 
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.hssx.cloudmodel.entity.MouldFile;
+import com.hssx.cloudmodel.entity.ProjectFile;
 import com.hssx.cloudmodel.entity.User;
 import com.hssx.cloudmodel.entity.vo.UserVO;
 import com.hssx.cloudmodel.service.MouldFileService;
@@ -30,7 +32,7 @@ import javax.servlet.http.HttpServletResponse;
  * @since 2019-08-07
  */
 @RestController
-@RequestMapping("/mould-file")
+@RequestMapping("/mouldfile")
 public class MouldFileController {
 
     @Value("${upload.path}")
@@ -97,5 +99,19 @@ public class MouldFileController {
         HttpRespMsg msg = mouldFileService.getAllFileList(mouldId,userVO);
         return msg;
     }
+
+    /**
+     * 项目文档的下载
+     * 参数: token 用户身份凭证,id 项目id
+     *
+     * @return
+     */
+    @ApiOperation("模具所有类型文档的下载")
+    @RequestMapping("/dowloadFile")
+    @ResponseBody
+    public HttpRespMsg dowloadFile(MouldFile mouldFile, String token){
+        HttpRespMsg msg = mouldFileService.dowloadFile(mouldFile,token);
+        return msg;
+    }
 }
 

+ 42 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/controller/MouldOperationDynamicsController.java

@@ -0,0 +1,42 @@
+package com.hssx.cloudmodel.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.hssx.cloudmodel.entity.MouldOperationDynamics;
+import com.hssx.cloudmodel.entity.ProjectOperationDynamics;
+import com.hssx.cloudmodel.service.MouldOperationDynamicsService;
+import com.hssx.cloudmodel.util.HttpRespMsg;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author 吴涛涛
+ * @since 2019-08-08
+ */
+@RestController
+@RequestMapping("/mouldoperationdynamics")
+public class MouldOperationDynamicsController {
+
+    @Autowired
+    private MouldOperationDynamicsService mDynamicsService;
+    /**
+     *
+     * 项目操作记录列表
+     * projectId 项目id ,belongType 所述文件类型,0-模具文档 1-零件文档 2-试模验收 3-保养方案 4-模具更新 5-模具报废
+     * @return
+     */
+    @ApiOperation("项目操作记录列表")
+    @RequestMapping("/list")
+    @ResponseBody
+    public HttpRespMsg list(MouldOperationDynamics mouldOperationDynamics){
+        HttpRespMsg msg = new HttpRespMsg();
+        msg.data = mDynamicsService.list(new QueryWrapper<MouldOperationDynamics>().eq("mould_id",mouldOperationDynamics.getBelongType()).eq("belong_type",mouldOperationDynamics.getBelongType()).orderByDesc("id"));
+        return msg;
+    }
+
+}
+

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

@@ -30,6 +30,7 @@ public class PowerController {
     /**
      * 权限列表
      * 参数 :token 用户身份标识 pageNum 当前页码,pageSize 每页条数 keyName 关键字查询
+     * cId 公司id筛选,projectId 项目id筛选
      *
      * @return
      */
@@ -43,7 +44,7 @@ public class PowerController {
 
     /**
      * 修改权限
-     * 参数 :projectId 项目id ,id 用户id,token 用户凭证
+     * 参数 :projectId 项目id ,id 用户id,token 用户凭证 ,powers 权限类型“0,1,2,3”
      *
      * @return
      */

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

@@ -56,7 +56,7 @@ public class ProjectFileController {
     }
     /**
      * 项目文档的下载
-     * 参数: token 用户身份凭证,projectId 项目id
+     * 参数: token 用户身份凭证,id 项目id
      *
      * @return
      */

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

@@ -1,6 +1,8 @@
 package com.hssx.cloudmodel.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.hssx.cloudmodel.entity.ProjectOperationDynamics;
 import com.hssx.cloudmodel.service.ProjectOperationDynamicsService;
 import com.hssx.cloudmodel.util.HttpRespMsg;
 import io.swagger.annotations.ApiOperation;
@@ -9,6 +11,8 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -22,7 +26,21 @@ import org.springframework.web.bind.annotation.ResponseBody;
 @RequestMapping("/projectoperationdynamics")
 public class ProjectOperationDynamicsController {
     @Autowired
-    private ProjectOperationDynamicsService projectOperationDynamicsService;
+    private ProjectOperationDynamicsService dynamicsService;
 
+    /**
+     *
+     * 项目操作记录列表
+     * projectId 项目id
+     * @return
+     */
+    @ApiOperation("项目操作记录列表")
+    @RequestMapping("/list")
+    @ResponseBody
+    public HttpRespMsg list(ProjectOperationDynamics projectOperationDynamics){
+        HttpRespMsg msg = new HttpRespMsg();
+        msg.data = dynamicsService.list(new QueryWrapper<ProjectOperationDynamics>().eq("project_id",projectOperationDynamics.getProjectId()).orderByDesc("id"));
+        return msg;
+    }
 }
 

+ 170 - 0
cloud-model/src/main/java/com/hssx/cloudmodel/entity/MouldOperationDynamics.java

@@ -0,0 +1,170 @@
+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-08
+ */
+@TableName("tb_mould_operation_dynamics")
+public class MouldOperationDynamics extends Model<MouldOperationDynamics> {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 模具文档操作记录表主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 文件id
+     */
+    @TableField("file_id")
+    private Integer fileId;
+
+    /**
+     * 下载者id
+     */
+    @TableField("operator_id")
+    private Integer operatorId;
+
+    /**
+     * 下载者姓名
+     */
+    @TableField("operator_name")
+    private String operatorName;
+
+    /**
+     * 下载的时间
+     */
+    @TableField("indate")
+    private LocalDateTime indate;
+
+    /**
+     * 文件名
+     */
+    @TableField("file_name")
+    private String fileName;
+
+    /**
+     * 所述文件类型,0-模具文档 1-零件文档 2-试模验收 3-保养方案 4-模具更新 5-模具报废
+     */
+    @TableField("belong_type")
+    private Integer belongType;
+
+    /**
+     * 内容
+     */
+    @TableField("content")
+    private String content;
+
+    /**
+     * 模具id
+     */
+    @TableField("mould_id")
+    private Integer mouldId;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getFileId() {
+        return fileId;
+    }
+
+    public void setFileId(Integer fileId) {
+        this.fileId = fileId;
+    }
+
+    public Integer getOperatorId() {
+        return operatorId;
+    }
+
+    public void setOperatorId(Integer operatorId) {
+        this.operatorId = operatorId;
+    }
+
+    public String getOperatorName() {
+        return operatorName;
+    }
+
+    public void setOperatorName(String operatorName) {
+        this.operatorName = operatorName;
+    }
+
+    public LocalDateTime getIndate() {
+        return indate;
+    }
+
+    public void setIndate(LocalDateTime indate) {
+        this.indate = indate;
+    }
+
+    public String getFileName() {
+        return fileName;
+    }
+
+    public void setFileName(String fileName) {
+        this.fileName = fileName;
+    }
+
+    public Integer getBelongType() {
+        return belongType;
+    }
+
+    public void setBelongType(Integer belongType) {
+        this.belongType = belongType;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public Integer getMouldId() {
+        return mouldId;
+    }
+
+    public void setMouldId(Integer mouldId) {
+        this.mouldId = mouldId;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "MouldOperationDynamics{" +
+        "id=" + id +
+        ", fileId=" + fileId +
+        ", operatorId=" + operatorId +
+        ", operatorName=" + operatorName +
+        ", indate=" + indate +
+        ", fileName=" + fileName +
+        ", belongType=" + belongType +
+        ", content=" + content +
+        ", mouldId=" + mouldId +
+        "}";
+    }
+}

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

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

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

@@ -25,4 +25,6 @@ public interface CompanyService extends IService<Company> {
     List<Company> getIdAndNamelist(User user);
 
     HttpRespMsg deleteById(Integer id);
+
+    List<Company> addCompanyListToProject(User user);
 }

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

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

+ 10 - 1
cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/CompanyServiceImpl.java

@@ -82,11 +82,18 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
         }else{
             //此时是项目经理创建其他用户
             User admin = userMapper.selectOne(new QueryWrapper<User>().eq("id", user.getParentId()));
-            qw.eq("company_type",Constant.ASSETS_COMPANY).or().eq("id",admin.getCompanyId());
+            qw.eq("company_type",Constant.PRODUCER_COMPANY).or().eq("id",admin.getCompanyId());
         }
         return companyMapper.selectList(qw);
     }
 
+    @Override
+    public List<Company> addCompanyListToProject(User user) {
+        QueryWrapper<Company> qw = new QueryWrapper<>();
+        qw.eq("company_type",Constant.PRODUCER_COMPANY);
+        return companyMapper.selectList(qw);
+    }
+
     @Override
     public HttpRespMsg deleteById(Integer id) {
         HttpRespMsg msg = new HttpRespMsg();
@@ -98,4 +105,6 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
         }
         return msg;
     }
+
+
 }

+ 31 - 24
cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/MouldFileServiceImpl.java

@@ -2,15 +2,9 @@ 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.MouldFile;
-import com.hssx.cloudmodel.entity.ProjectFile;
-import com.hssx.cloudmodel.entity.ProjectOperationDynamics;
-import com.hssx.cloudmodel.entity.User;
+import com.hssx.cloudmodel.entity.*;
 import com.hssx.cloudmodel.entity.vo.UserVO;
-import com.hssx.cloudmodel.mapper.MouldFileMapper;
-import com.hssx.cloudmodel.mapper.ProjectFileMapper;
-import com.hssx.cloudmodel.mapper.ProjectOperationDynamicsMapper;
-import com.hssx.cloudmodel.mapper.UserMapper;
+import com.hssx.cloudmodel.mapper.*;
 import com.hssx.cloudmodel.service.MouldFileService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.hssx.cloudmodel.util.FileUtil;
@@ -28,7 +22,7 @@ import java.util.UUID;
 
 /**
  * <p>
- *  服务实现类
+ * 服务实现类
  * </p>
  *
  * @author 吴涛涛
@@ -43,13 +37,13 @@ public class MouldFileServiceImpl extends ServiceImpl<MouldFileMapper, MouldFile
     @Resource
     MouldFileMapper mouldFileMapper;
     @Resource
-    ProjectOperationDynamicsMapper projectOperationDynamicsMapper;
+    MouldOperationDynamicsMapper mouldOperationDynamicsMapper;
 
     @Override
-    public HttpRespMsg addFile(UserVO userVO,Integer blongType, MultipartFile file, String path) {
+    public HttpRespMsg addFile(UserVO userVO, Integer blongType, MultipartFile file, String path) {
         HttpRespMsg msg = new HttpRespMsg();
         User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", userVO.getToken()));
-        if(user != null){
+        if (user != null) {
             if (file != null && !file.isEmpty()) {
                 MouldFile projectFile = new MouldFile();
                 projectFile.setUplodtorId(user.getId());
@@ -97,17 +91,19 @@ public class MouldFileServiceImpl extends ServiceImpl<MouldFileMapper, MouldFile
                         projectFile = null;
                     }
                     //添加上传记录
-//                    ProjectOperationDynamics dynamics = new ProjectOperationDynamics();
-//                    dynamics.setContent(Constant.UPLOAD);
-//                    dynamics.setFileName(file.getOriginalFilename());
-//                    dynamics.setOperatorId(user.getId());
-//                    dynamics.setOperator(user.getUsername());
-//                    dynamics.setProjectId(userVO.getProjectId());
-//                    projectOperationDynamicsMapper.insert(dynamics);
+                    MouldOperationDynamics dynamics = new MouldOperationDynamics();
+                    dynamics.setContent(Constant.UPLOAD);
+                    dynamics.setFileName(file.getOriginalFilename());
+                    dynamics.setOperatorId(user.getId());
+                    dynamics.setFileId(projectFile.getId());
+                    dynamics.setOperatorName(user.getUsername());
+                    dynamics.setMouldId(userVO.getMouldId());
+                    dynamics.setBelongType(blongType);
+                    mouldOperationDynamicsMapper.insert(dynamics);
                 }
                 msg.data = projectFile;
             }
-        }else{
+        } else {
             msg.setError("当前用户不存在或者未登录");
         }
         return msg;
@@ -120,7 +116,7 @@ public class MouldFileServiceImpl extends ServiceImpl<MouldFileMapper, MouldFile
         MouldFile mf = new MouldFile();
         mf.setId(mouldFileId);
         MouldFile oldData = mouldFileMapper.selectById(mouldFileId);
-        if(user != null){
+        if (user != null) {
             if (user.getSubordinateType() == 0) {
                 //资产方
                 if (isPass == 1) {
@@ -158,14 +154,25 @@ public class MouldFileServiceImpl extends ServiceImpl<MouldFileMapper, MouldFile
     public HttpRespMsg dowloadFile(MouldFile projectFile, String token) {
         HttpRespMsg msg = new HttpRespMsg();
         User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", token));
-        return null;
+        //添加上传记录
+         MouldFile file = mouldFileMapper.selectById(projectFile.getId());
+        MouldOperationDynamics dynamics = new MouldOperationDynamics();
+        dynamics.setContent(Constant.DOWNLOAD);
+        dynamics.setFileName(file.getFileName());
+        dynamics.setOperatorId(user.getId());
+        dynamics.setOperatorName(user.getUsername());
+        dynamics.setMouldId(file.getModelId());
+        dynamics.setFileId(file.getId());
+        dynamics.setBelongType(file.getBlongType());
+        mouldOperationDynamicsMapper.insert(dynamics);
+        return msg;
     }
 
     @Override
     public HttpRespMsg getAllFileList(int mouldId, UserVO userVO) {
         List<HashMap> dataList = new ArrayList<HashMap>();
         int maxBlongType = 5;
-        for (int i=0;i<=maxBlongType; i++) {
+        for (int i = 0; i <= maxBlongType; i++) {
             HashMap<String, Object> data = new HashMap<>();
             data.put("blongType", i);
             List<MouldFile> list = mouldFileMapper.selectList(new QueryWrapper<MouldFile>().eq("model_id", mouldId).eq("blong_type", i).orderByDesc("id"));
@@ -178,7 +185,7 @@ public class MouldFileServiceImpl extends ServiceImpl<MouldFileMapper, MouldFile
     }
 
     @Override
-    public HttpRespMsg getFileList(int mouldId,Integer blongType,  UserVO userVO) {
+    public HttpRespMsg getFileList(int mouldId, Integer blongType, UserVO userVO) {
         HttpRespMsg msg = new HttpRespMsg();
         User user = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", userVO.getToken()));
         List<MouldFile> list = mouldFileMapper.selectList(new QueryWrapper<MouldFile>().eq("model_id", mouldId).eq("blong_type", blongType).orderByDesc("id"));

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

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

+ 1 - 1
cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/ProjectFileServiceImpl.java

@@ -109,7 +109,7 @@ public class ProjectFileServiceImpl extends ServiceImpl<ProjectFileMapper, Proje
         dynamics.setFileName(file.getFileName());
         dynamics.setOperatorId(user.getId());
         dynamics.setOperator(user.getUsername());
-        dynamics.setProjectId(projectFile.getProjectId());
+        dynamics.setProjectId(file.getProjectId());
         projectOperationDynamicsMapper.insert(dynamics);
         return msg;
     }

+ 43 - 18
cloud-model/src/main/java/com/hssx/cloudmodel/service/impl/ProjectServiceImpl.java

@@ -245,32 +245,51 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         ProjectVO vo = projectMapper.getProjectById(project.getId());
         User currentUser = userMapper.selectOne(new QueryWrapper<User>().eq("head_imgurl", token));
         if (Constant.SYS_PARENT_ID == currentUser.getParentId()) {
-            //当前人超级管理员 ,对项目止咳浏览
-            map.put("power", Constant.VIEW_AUTHORITY);
+            //当前人超级管理员 ,对项目只可以浏览
+            map.put("update", 0);
+            map.put("download", 0);
+            map.put("view", 1);
+            map.put("approve", 0);
+        } else if (Constant.SYS_ID == currentUser.getParentId()) {
+            //当前为系统管理员
+            map.put("update", 1);
+            map.put("download", 1);
+            map.put("view", 1);
         } else if (vo.getManagerId() == currentUser.getId()) {
             //当前人是该项目的项目经理
-            String power = Constant.UPDATE_AUTHORITY + "," + Constant.DOWNLOAD_AUTHORITY
-                    + "," + Constant.VIEW_AUTHORITY;
+            Integer approve = 0;
             if (projectApproveMapper.selectCount(new QueryWrapper<ProjectApprove>().eq("approver_id", currentUser.getId())) > 0) {
                 //查看当前项目经理是否为审批人
-                power = power+","+ Constant.APPROVAL_AUTHORITY;
+                approve = 1;
             }
-            map.put("power",power);
+            map.put("update", 1);
+            map.put("download", 1);
+            map.put("view", 1);
+            map.put("approve", approve);
         } else {
             //该项目的参与人
-            StringBuilder pow = new StringBuilder();
+            Integer update = 0;
+            Integer download = 0;
+            Integer view = 0;
+            Integer approve = 0;
             List<Power> powers = powerMapper.selectList(new QueryWrapper<Power>().eq("project_id", project.getId()).eq("user_id", currentUser.getId()));
-            if(powers.size()>0){
+            if (powers.size() > 0) {
                 for (Power power : powers) {
-                    if(pow.length()<0){
-                        pow.append(power.getPowerType());
-                    }else{
-                        pow.append(",");
-                        pow.append(power.getPowerType());
+                    if (power.getPowerType() == 0) {
+                        update = 1;
+                    } else if (power.getPowerType() == 1) {
+                        download = 1;
+                    } else if (power.getPowerType() == 2) {
+                        view = 1;
+                    } else {
+                        approve = 1;
                     }
                 }
             }
-            map.put("power",pow.toString());
+            map.put("update", update);
+            map.put("download", download);
+            map.put("view", view);
+            map.put("approve", approve);
         }
         List<User> users = projectMapper.getProjectUserById(project.getId());
         //处理users按照客户呼和供应商分组
@@ -284,7 +303,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 vo.getCustomUsers().add(user);
             }
         }
-        map.put("vo",vo);
+        map.put("vo", vo);
         msg.data = map;
         return msg;
     }
@@ -292,17 +311,23 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     @Override
     public HttpRespMsg getUserListByCompanyIds(String companyIds, Integer adminId, Integer projectId) {
         HttpRespMsg msg = new HttpRespMsg();
+        QueryWrapper<User> qw  =new QueryWrapper<User>();
         if (!"".equals(companyIds) && companyIds != null) {
             List<Integer> ids = ListUtil.convertIntegerIdsArrayToList(companyIds);
             //该项目的项目经理不能充当参与人
             Integer managerId = -1;
             if (projectId != null) {
                 Project project = projectMapper.selectById(projectId);
-                if (null != project.getManagerId()) {
-                    managerId = project.getManagerId();
+                if (adminId == project.getManagerId()) {
+                    //是本项目的项目项目经理需要返回本人
+                    qw.eq("id", adminId);
                 }
             }
-            msg.data = userMapper.selectList(new QueryWrapper<User>().in("company_id", ids).ne("id", adminId).ne("id", managerId));
+            //所选公司下的人
+            qw.in("company_id", ids);
+            //不包含资产方的系统管理员
+            qw.ne("parent_id", Constant.SYS_ID);
+            msg.data = userMapper.selectList(qw);
         }
         return msg;
     }

+ 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_mould_file");
+        strategy.setInclude("tb_mould_operation_dynamics");
 //        strategy.setExclude();//数据库表全生成
 //        strategy.setInclude(scanner("user").split(","));//表名,多个英文逗号分割
         strategy.setControllerMappingHyphenStyle(true);

+ 23 - 0
cloud-model/src/main/resources/mapper/MouldOperationDynamicsMapper.xml

@@ -0,0 +1,23 @@
+<?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.MouldOperationDynamicsMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.hssx.cloudmodel.entity.MouldOperationDynamics">
+        <id column="id" property="id" />
+        <result column="file_id" property="fileId" />
+        <result column="operator_id" property="operatorId" />
+        <result column="operator_name" property="operatorName" />
+        <result column="indate" property="indate" />
+        <result column="file_name" property="fileName" />
+        <result column="belong_type" property="belongType" />
+        <result column="content" property="content" />
+        <result column="mould_id" property="mouldId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, file_id, operator_id, operator_name, indate, file_name, belong_type, content, mould_id
+    </sql>
+
+</mapper>

+ 10 - 3
ys_vue/src/port.js

@@ -18,6 +18,8 @@ export default {
         uploadFile: '/projectfile/uploadFile', //项目文档的上传
         dowloadFile: '/projectfile/dowloadFile', //项目文档的下载
         fileList: '/projectfile/list', //项目文档列表
+        delFile: '/projectfile/delFile', //项目文档的删除
+        operList: '/projectoperationdynamics/list', //项目操作记录列表
 
         getUserList: '/user/getUserList', //获取用户列表
         getUserById: '/user/getUserListByCompanyIds', // 给项目分配参与人的时候根据公司id获取公司下的人员
@@ -29,6 +31,10 @@ export default {
         molds: '/mould/list', //模具列表
         modelList: '/mould/modelList', //给项目分配模具获取该公司下的模具列表
         moldDetail: '/mould/detail', //模具详情
+        moldFileList: '/mouldfile/list', //获取模具文档*
+        moldFileListAll: '/mouldfile/allList', //获取全部模具文档
+        moldFileUpload: '/mouldfile/uploadFile', //上传模具文档*
+        moldFileCheck: '/mouldfile/check' //审批模具文档
     },
     // 基础管理
     base: {
@@ -38,13 +44,14 @@ export default {
         roles: '/user/getRoleList', //获取角色列表
 
         addCompany: '/company/add',  //(公司)
-        companyList: '/company/list', 
-        delCompany: '/company/delete', 
+        companyList: '/company/list',
+        delCompany: '/company/delete',
         companys: '/company/getCompanyList', //创建账号是所获取的公司列表
         comps: '/company/getCompanys', //创建模具获取的(资产方)公司列表
+        addCompanyListToProject: '/company/addCompanyListToProject', //项目分配生产方公司列表
 
         addFactory: '/factory/add',  //(工厂)
-        factoryList: '/factory/list', 
+        factoryList: '/factory/list',
         delFactory: '/factory/delete',
 
         editMould: '/mouldequipment/addOrUpdate', //添加/修改模具设备

+ 528 - 237
ys_vue/src/views/mold/moldDetail.vue

@@ -1,264 +1,555 @@
 <template>
-    <section>
-        <!--工具条-->
-        <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
-            <el-form :inline="true">
-                <el-form-item>
-                    <el-button type="text" @click="backToList" icon="el-icon-back" class="back">返回</el-button>
-                </el-form-item>
-                <el-form-item class="divLine">
-                </el-form-item>
-                <el-form-item>
-                    <span class="projectTitle">{{moldDetail.modelName}}</span>
-                </el-form-item>
-                <el-form-item class="state">
-                      当前状态:
-                      <a style="color: #409EFF; cursor: pointer" @click="toDetection">运行</a>
-                      <span class="tips">(点击查看运行状态)</span>
-                </el-form-item>
-            </el-form>
+  <section>
+    <!--工具条-->
+    <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
+      <el-form :inline="true">
+        <el-form-item>
+          <el-button type="text" @click="backToList" icon="el-icon-back" class="back">返回</el-button>
+        </el-form-item>
+        <el-form-item class="divLine"></el-form-item>
+        <el-form-item>
+          <span class="projectTitle">{{moldDetail.modelName}}</span>
+        </el-form-item>
+        <el-form-item class="state">
+          当前状态:
+          <a style="color: #409EFF; cursor: pointer" @click="toDetection">运行</a>
+          <span class="tips">(点击查看运行状态)</span>
+        </el-form-item>
+      </el-form>
+    </el-col>
+    <el-col :span="24" :style="allDetail">
+      <el-col :span="24" class="title">
+        模具基本信息
+        <i class="el-icon-edit editDetail"></i>
+      </el-col>
+      <el-col :span="24" class="main">
+        <el-col :span="6" class="detail">
+          模具名称:
+          <span class="info">{{moldDetail.modelName}}</span>
         </el-col>
-        <el-col :span="24" :style="allDetail">
-            <el-col :span="24" class="title">模具基本信息
-                <i class="el-icon-edit editDetail"></i>
-            </el-col>
-            <el-col :span="24" class="main">
-                <el-col :span="6" class="detail">
-                    模具名称:
-                    <span class="info">{{moldDetail.modelName}}</span>
-                </el-col>
-                <el-col :span="6" class="detail">
-                    模具编号:
-                    <span class="info">{{moldDetail.modelNo}}</span>
-                </el-col>
-                <el-col :span="6" class="detail">
-                    云模盒编号:
-                    <span class="info">{{moldDetail.equipmentNo}}</span>
-                </el-col>
-                <el-col :span="6" class="detail">
-                    设备电量:
-                    <span class="info">{{moldDetail.hillNumber}}</span>
-                </el-col>
-                <el-col :span="6" class="detail">
-                    倒计时:
-                    <span class="info">{{moldDetail.lifetime}}</span>
-                </el-col>
-                <el-col :span="6" class="detail">
-                    初始模次:
-                    <span class="info">{{moldDetail.initialModulus}}</span>
-                </el-col>
-                <el-col :span="6" class="detail">
-                    对应RFID码:
-                    <span class="info">{{moldDetail.rfid}}</span>
-                </el-col>
-                <el-col :span="6" class="detail">
-                    穴数:
-                    <span class="info">{{moldDetail.mouldNumber}}</span>
-                </el-col>
-                <el-col :span="6" class="detail">
-                    模次寿命:
-                    <span class="info">{{moldDetail.settingLife}}</span>
-                </el-col>
-                <el-col :span="12" class="detail">
-                    所属项目:
-                    <span class="info">{{moldDetail.manufacturer}}</span>
-                </el-col>
-                <el-col :span="12" class="detail">
-                    生产方:
-                    <span class="info">{{moldDetail.companyName}}</span>
-                </el-col>
-            </el-col>
+        <el-col :span="6" class="detail">
+          模具编号:
+          <span class="info">{{moldDetail.modelNo}}</span>
+        </el-col>
+        <el-col :span="6" class="detail">
+          云模盒编号:
+          <span class="info">{{moldDetail.equipmentNo}}</span>
+        </el-col>
+        <el-col :span="6" class="detail">
+          设备电量:
+          <span class="info">{{moldDetail.hillNumber}}</span>
+        </el-col>
+        <el-col :span="6" class="detail">
+          倒计时:
+          <span class="info">{{moldDetail.ocCycle}}</span>
+        </el-col>
+        <el-col :span="6" class="detail">
+          初始模次:
+          <span class="info">{{moldDetail.initialModulus}}</span>
+        </el-col>
+        <el-col :span="6" class="detail">
+          对应RFID码:
+          <span class="info">{{moldDetail.rfid}}</span>
+        </el-col>
+        <el-col :span="6" class="detail">
+          穴数:
+          <span class="info">N/A</span>
+        </el-col>
+        <el-col :span="6" class="detail">
+          模次寿命:
+          <span class="info">{{moldDetail.settingLife}}</span>
+        </el-col>
+        <el-col :span="12" class="detail">
+          所属项目:
+          <span class="info">{{moldDetail.projectName}}</span>
+        </el-col>
+        <el-col :span="12" class="detail">
+          生产方:
+          <span class="info">{{moldDetail.factoryName}}</span>
+        </el-col>
+      </el-col>
 
-            <el-col :span="24" class="title">文档资料
-                <el-upload class="upload-demo" action="customize" :http-request="uploadFile" :show-file-list="false" multiple :limit="5" style="float:right;">
-                    <el-button size="small" type="primary">点击上传</el-button>
-                </el-upload>
-            </el-col>
-            <el-col :span="24">
-                <el-tabs v-model="activePage" @tab-click="handleClick">
-                    <el-tab-pane label="模具文档" name="0">
-                    <el-table :data="documents" highlight-current-row v-loading="listLoading" style="width: 100%;height:300px;">
-                        <el-table-column type="index" width="40"></el-table-column>
-                        <el-table-column prop="name" label="名称" sortable></el-table-column>
-                        <el-table-column prop="size" label="大小" width="200" sortable></el-table-column>
-                        <el-table-column prop="uploader" label="上传者" width="200" sortable></el-table-column>
-                        <el-table-column prop="uploadTime" label="上传时间" width="200" sortable></el-table-column>
-                        <el-table-column label="状态" width="120" sortable>
-                            <template slot-scope="scope">
-                                <span v-if="scope.row.state == 0">需要</span>
-                                <span v-else>不需要</span>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="操作" width="300" sortable>
-                            <el-button size="small">审批</el-button>
-                            <el-button size="small">浏览</el-button>
-                            <el-button size="small">下载</el-button>
-                            <el-button size="small" type="danger">删除</el-button>
-                        </el-table-column>
-                    </el-table>
-                    </el-tab-pane>
-                    <el-tab-pane label="零件文档" name="1">零件文档</el-tab-pane>
-                    <el-tab-pane label="试模及验收" name="2">试模及验收</el-tab-pane>
-                    <el-tab-pane label="保养方案" name="3">保养方案</el-tab-pane>
-                    <el-tab-pane label="模具更新" name="4">模具更新</el-tab-pane>
-                    <el-tab-pane label="模具报废" name="5">模具报废</el-tab-pane>
-                </el-tabs>
-            </el-col>
+      <el-col :span="24" class="title">
+        文档资料
+        <el-upload
+          class="upload-demo"
+          action="customize"
+          :http-request="uploadFile"
+          :show-file-list="false"
+          multiple
+          :limit="5"
+          style="float:right;"
+        >
+          <el-button size="small" type="primary">点击上传</el-button>
+        </el-upload>
+      </el-col>
+      <el-col :span="24">
+        <el-tabs v-model="activePage" @tab-click="handleClick">
+          <!-- 模具文档 -->
+          <el-tab-pane label="模具文档" name="0">
+            <el-table
+              :data="documents.mould"
+              highlight-current-row
+              v-loading="listLoading"
+              style="width: 100%;height:300px;"
+            >
+              <el-table-column type="index" width="40"></el-table-column>
+              <el-table-column prop="fileName" label="名称" sortable></el-table-column>
+              <el-table-column prop="fileSize" label="大小" width="200" sortable></el-table-column>
+              <el-table-column prop="uploadtor" label="上传者" width="200" sortable></el-table-column>
+              <el-table-column prop="indate" label="上传时间" width="200" sortable></el-table-column>
+              <el-table-column label="状态" width="120" sortable>
+                <template slot-scope="scope">
+                  <span v-if="scope.row.state == 0">需要</span>
+                  <span v-else>不需要</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="操作" width="200" sortable>
+                <template slot-scope="scope">
+                  <el-button size="small" @click="checkOpen(scope.row.id, scope.row.fileName)">审批</el-button>
+                  <a :href="scope.row.fileUrl">
+                    <el-button size="small" @click="download(scope.row.id)">下载</el-button>
+                  </a>
+                  <el-button size="small" type="danger">删除</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-tab-pane>
 
-            <el-col :span="24" class="title">操作记录</el-col>
-            <el-table :data="operations" highlight-current-row v-loading="listLoading" style="width: 100%;height:300px;">
-                <el-table-column type="index" width="40"></el-table-column>
-                <el-table-column prop="name" label="姓名" width="400" sortable></el-table-column>
-                <el-table-column prop="document" label="文档名称" sortable></el-table-column>
-                <el-table-column label="操作" width="400" sortable>
-                    <template slot-scope="scope">
-                        <span v-if="scope.row.operations == 0">浏览</span>
-                        <span v-else-if="scope.row.operations == 1">下载</span>
-                        <span v-else>删除</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="time" label="时间" width="400" sortable></el-table-column>
+          <!-- 零件文档 -->
+          <el-tab-pane label="零件文档" name="1">
+            <el-table
+              :data="documents.part"
+              highlight-current-row
+              v-loading="listLoading"
+              style="width: 100%;height:300px;"
+            >
+              <el-table-column type="index" width="40"></el-table-column>
+              <el-table-column prop="fileName" label="名称" sortable></el-table-column>
+              <el-table-column prop="fileSize" label="大小" width="200" sortable></el-table-column>
+              <el-table-column prop="uploadtor" label="上传者" width="200" sortable></el-table-column>
+              <el-table-column prop="indate" label="上传时间" width="200" sortable></el-table-column>
+              <el-table-column label="状态" width="120" sortable>
+                <template slot-scope="scope">
+                  <span v-if="scope.row.state == 0">需要</span>
+                  <span v-else>不需要</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="操作" width="300" sortable>
+                <template slot-scope="scope">
+                  <el-button size="small" @click="checkOpen(scope.row.id, scope.row.fileName)">审批</el-button>
+                  <el-button size="small">浏览</el-button>
+                  <el-button size="small" @click="download(scope.row.fileUrl)">下载</el-button>
+                  <el-button size="small" type="danger">删除</el-button>
+                </template>
+              </el-table-column>
             </el-table>
-        </el-col>
-    </section>
+          </el-tab-pane>
+
+          <!-- 试模及验收 -->
+          <el-tab-pane label="试模及验收" name="2">
+            <el-table
+              :data="documents.check"
+              highlight-current-row
+              v-loading="listLoading"
+              style="width: 100%;height:300px;"
+            >
+              <el-table-column type="index" width="40"></el-table-column>
+              <el-table-column prop="fileName" label="名称" sortable></el-table-column>
+              <el-table-column prop="fileSize" label="大小" width="200" sortable></el-table-column>
+              <el-table-column prop="uploadtor" label="上传者" width="200" sortable></el-table-column>
+              <el-table-column prop="indate" label="上传时间" width="200" sortable></el-table-column>
+              <el-table-column label="状态" width="120" sortable>
+                <template slot-scope="scope">
+                  <span v-if="scope.row.state == 0">需要</span>
+                  <span v-else>不需要</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="操作" width="300" sortable>
+                <template slot-scope="scope">
+                  <el-button size="small" @click="checkOpen(scope.row.id, scope.row.fileName)">审批</el-button>
+                  <el-button size="small">浏览</el-button>
+                  <el-button size="small" @click="download(scope.row.fileUrl)">下载</el-button>
+                  <el-button size="small" type="danger">删除</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-tab-pane>
+
+          <!-- 保养方案 -->
+          <el-tab-pane label="保养方案" name="3">
+            <el-table
+              :data="documents.maintain"
+              highlight-current-row
+              v-loading="listLoading"
+              style="width: 100%;height:300px;"
+            >
+              <el-table-column type="index" width="40"></el-table-column>
+              <el-table-column prop="fileName" label="名称" sortable></el-table-column>
+              <el-table-column prop="fileSize" label="大小" width="200" sortable></el-table-column>
+              <el-table-column prop="uploadtor" label="上传者" width="200" sortable></el-table-column>
+              <el-table-column prop="indate" label="上传时间" width="200" sortable></el-table-column>
+              <el-table-column label="状态" width="120" sortable>
+                <template slot-scope="scope">
+                  <span v-if="scope.row.state == 0">需要</span>
+                  <span v-else>不需要</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="操作" width="300" sortable>
+                <template slot-scope="scope">
+                  <el-button size="small" @click="checkOpen(scope.row.id, scope.row.fileName)">审批</el-button>
+                  <el-button size="small">浏览</el-button>
+                  <el-button size="small" @click="download(scope.row.fileUrl)">下载</el-button>
+                  <el-button size="small" type="danger">删除</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-tab-pane>
+
+          <!-- 模具更新 -->
+          <el-tab-pane label="模具更新" name="4">
+            <el-table
+              :data="documents.update"
+              highlight-current-row
+              v-loading="listLoading"
+              style="width: 100%;height:300px;"
+            >
+              <el-table-column type="index" width="40"></el-table-column>
+              <el-table-column prop="fileName" label="名称" sortable></el-table-column>
+              <el-table-column prop="fileSize" label="大小" width="200" sortable></el-table-column>
+              <el-table-column prop="uploadtor" label="上传者" width="200" sortable></el-table-column>
+              <el-table-column prop="indate" label="上传时间" width="200" sortable></el-table-column>
+              <el-table-column label="状态" width="120" sortable>
+                <template slot-scope="scope">
+                  <span v-if="scope.row.state == 0">需要</span>
+                  <span v-else>不需要</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="操作" width="300" sortable>
+                <template slot-scope="scope">
+                  <el-button size="small" @click="checkOpen(scope.row.id, scope.row.fileName)">审批</el-button>
+                  <el-button size="small">浏览</el-button>
+                  <el-button size="small" @click="download(scope.row.fileUrl)">下载</el-button>
+                  <el-button size="small" type="danger">删除</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-tab-pane>
+
+          <!-- 模具报废 -->
+          <el-tab-pane label="模具报废" name="5">
+            <el-table
+              :data="documents.abandon"
+              highlight-current-row
+              v-loading="listLoading"
+              style="width: 100%;height:300px;"
+            >
+              <el-table-column type="index" width="40"></el-table-column>
+              <el-table-column prop="fileName" label="名称" sortable></el-table-column>
+              <el-table-column prop="fileSize" label="大小" width="200" sortable></el-table-column>
+              <el-table-column prop="uploadtor" label="上传者" width="200" sortable></el-table-column>
+              <el-table-column prop="indate" label="上传时间" width="200" sortable></el-table-column>
+              <el-table-column label="状态" width="120" sortable>
+                <template slot-scope="scope">
+                  <span v-if="scope.row.state == 0">需要</span>
+                  <span v-else>不需要</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="操作" width="300" sortable>
+                <template slot-scope="scope">
+                  <el-button size="small" @click="checkOpen(scope.row.id, scope.row.fileName)">审批</el-button>
+                  <el-button size="small">浏览</el-button>
+                  <el-button size="small" @click="download(scope.row.fileUrl)">下载</el-button>
+                  <el-button size="small" type="danger">删除</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-tab-pane>
+        </el-tabs>
+      </el-col>
+
+      <!-- 操作记录 -->
+      <el-col :span="24" class="title">操作记录</el-col>
+      <el-table
+        :data="operations"
+        highlight-current-row
+        v-loading="listLoading"
+        style="width: 100%;height:300px;"
+      >
+        <el-table-column type="index" width="40"></el-table-column>
+        <el-table-column prop="name" label="姓名" width="400" sortable></el-table-column>
+        <el-table-column prop="document" label="文档名称" sortable></el-table-column>
+        <el-table-column label="操作" width="400" sortable>
+          <template slot-scope="scope">
+            <span v-if="scope.row.operation == 0">浏览</span>
+            <span v-else-if="scope.row.operation == 1">下载</span>
+            <span v-else>删除</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="time" label="时间" width="400" sortable></el-table-column>
+      </el-table>
+    </el-col>
+
+    <!-- 审批弹窗 -->
+    <el-dialog title="审批" :visible.sync="centerDialogVisible" width="30%" center>
+      <span>{{this.activeFileName}}</span>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="check(false)">不通过</el-button>
+        <el-button type="primary" @click="check(true)">通过</el-button>
+      </span>
+    </el-dialog>
+  </section>
 </template>
 
 <script>
-    import util from "../../common/js/util";
-    export default {
-        data() {
-            return {
-                detailId: this.$route.params.id,
-                //临时数据
-                moldDetail: {},
-                documents: [
-                    {
-                    name: "墨盒产品验证文档.word",
-                    size: "100KB",
-                    uploader: "张富贵",
-                    uploadTime: "2019-07-24",
-                    state: 0
-                    }
-                ],
-                operations: [
-                    {
-                    name: "王多银",
-                    document: "墨盒产品验证文档.word",
-                    operation: 0,
-                    time: "时间"
-                    }
-                ],
-
-                allDetail: {
-                    overflow: 'auto',
-                    padding: '0px 5px',
-                    height: 0
-                },
-                listLoading: false,
-                activePage: 0
-            };
+import util from "../../common/js/util";
+export default {
+  data() {
+    return {
+      detailId: this.$route.params.id,
+      moldDetail: {},
+      documents: {
+        mould: [],
+        part: [],
+        check: [],
+        maintain: [],
+        update: [],
+        abandon: []
+      },
+      //临时数据
+      operations: [
+        {
+          name: "王多银",
+          document: "墨盒产品验证文档.word",
+          operation: 0,
+          time: "时间"
+        }
+      ],
+      allDetail: {
+        overflow: "auto",
+        padding: "0px 5px",
+        height: 0
+      },
+      centerDialogVisible: false,
+      listLoading: false,
+      activeTab: 0,
+      activePage: 0,
+      activeArticleId: null,
+      activeFileName: null
+    };
+  },
+  methods: {
+    backToList() {
+      this.$router.go(-1);
+    },
+    toDetection() {
+      this.$router.push("/detection");
+    },
+    //标签页面切换时
+    handleClick(tab, event) {
+      this.activeTab = tab.name;
+    },
+    //模具详情
+    getDetail() {
+      this.http.post(
+        this.port.mold.moldDetail,
+        {
+          id: this.detailId
+        },
+        res => {
+          if (res.code == "ok") {
+            this.moldDetail = res.data;
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error"
+            });
+          }
         },
-        methods: {
-            backToList() {
-                //this.$router.push("/moldList");
-                this.$router.go(-1);
-            },
-            toDetection(){
-                this.$router.push("/detection");
-            },
-            handleClick(tab, event) {
-            },
-            // 模具详情
-            getDetail() {
-                this.listLoading = true;
-                this.http.post(this.port.mold.moldDetail, {
-                    id: this.detailId
-                }, res => {
-                    if (res.code == "ok") {
-                        this.moldDetail = res.data;
-                    } else {
-                        this.$message({
-                            message: res.msg,
-                            type: 'error'
-                        });
-                    }
-                }, error => {
-                    this.$message({
-                        message: error,
-                        type: 'error'
-                    });
-                })
-            },
-            // 文件上传
-            uploadFile() {}
+        error => {
+          this.$message({
+            message: error,
+            type: "error"
+          });
+        }
+      );
+    },
+    //获取文档
+    getDocument() {
+      this.http.post(
+        this.port.mold.moldFileListAll,
+        {
+          mouldId: this.detailId
         },
-        created() {
-            let height = window.innerHeight;
-            this.allDetail.height = height - 170 + "px";
-            const that = this;
-            window.onresize = function temp() {
-                that.allDetail.height = window.innerHeight - 210;    
-            };
+        res => {
+          if (res.code == "ok") {
+            this.documents.mould = res.data[0].list;
+            this.documents.part = res.data[1].list;
+            this.documents.check = res.data[2].list;
+            this.documents.maintain = res.data[3].list;
+            this.documents.update = res.data[4].list;
+            this.documents.abandon = res.data[5].list;
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error"
+            });
+          }
         },
-        mounted() {
-            this.getDetail();
+        error => {
+          this.$message({
+            message: error,
+            type: "error"
+          });
         }
+      );
+    },
+    //打开审批窗口
+    checkOpen(id, name) {
+      this.activeArticleId = id;
+      this.activeFileName = name;
+      this.centerDialogVisible = true;
+    },
+    //审批
+    check(adoption) {
+      this.http.post(
+        this.port.mold.moldFileCheck,
+        {
+          mouldFileId: this.activeArticleId,
+          isPass: adoption ? 1 : 0 //通过为1 不通过为0
+        },
+        res => {
+          if (res.code == "ok") {
+            this.$message({
+              message: "审批成功",
+              type: "success"
+            });
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error"
+            });
+          }
+        },
+        error => {
+          this.$message({
+            message: error,
+            type: "error"
+          });
+        }
+      );
+      this.centerDialogVisible = false;
+    },
+    //下载文件
+    download(id) {
+      console.log(id + "被下载啦");
+    },
+    //文件上传
+    uploadFile(params) {
+      var fileObj = params.file;
+      var form = new FormData();
+      form.append("file", fileObj);
+      form.append("blongType", this.activeTab);
+      this.http.uploadFile(
+        this.port.mold.moldFileUpload,
+        form,
+        res => {
+          if (res.code == "ok") {
+            this.$message({
+              message: "上传成功",
+              type: "success"
+            });
+            this.getDocument();
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error"
+            });
+          }
+        },
+        error => {
+          this.$message({
+            message: error,
+            type: "error"
+          });
+        }
+      );
+    }
+  },
+  created() {
+    let height = window.innerHeight;
+    this.allDetail.height = height - 170 + "px";
+    const that = this;
+    window.onresize = function temp() {
+      that.allDetail.height = window.innerHeight - 210;
     };
+  },
+  mounted() {
+    this.getDetail();
+    this.getDocument();
+  }
+};
 </script>
 
 <style scoped>
-    .toolbar .el-form-item {
-        font-size: 14px;
-        vertical-align: middle;
-    }
+.toolbar .el-form-item {
+  font-size: 14px;
+  vertical-align: middle;
+}
 
-    .back {
-       font-size:16px;
-    }
+.back {
+  font-size: 16px;
+}
 
-    .divLine {
-        width: 2px;
-        background: #c3c3c3;
-        height: 100%;
-    }
+.divLine {
+  width: 2px;
+  background: #c3c3c3;
+  height: 100%;
+}
 
-    .projectTitle {
-        font-size: 18px;
-        color: #333;
-    }
+.projectTitle {
+  font-size: 18px;
+  color: #333;
+}
 
-    .state {
-        float: right;
-    }
+.state {
+  float: right;
+}
 
-    .tips {
-        color:#bbb;
-    }
+.tips {
+  color: #bbb;
+}
 
-    .title {
-        padding-left: 10px;
-        padding-bottom: 0px;
-        margin: 20px 0;
-        font-size: 16px;
-        line-height: 24px;
-        border-left: 1px #20a0ff solid;
-    }
+.title {
+  padding-left: 10px;
+  padding-bottom: 0px;
+  margin: 20px 0;
+  font-size: 16px;
+  line-height: 24px;
+  border-left: 1px #20a0ff solid;
+}
 
-    .editDetail {
-        margin-left: 10px;
-        color:#20a0ff;
-        cursor: pointer;
-    }
+.editDetail {
+  margin-left: 10px;
+  color: #20a0ff;
+  cursor: pointer;
+}
 
-    .info {
-        color: grey;
-    }
+.info {
+  color: grey;
+}
 
-    .main {
-        padding-left: 10px;
-    }
+.main {
+  padding-left: 10px;
+}
 
-    .detail {
-        margin-bottom: 20px;
-    }
+.detail {
+  margin-bottom: 20px;
+}
+
+/* .upload-demo {
+  position: absolute;
+  right: 0;
+  top: -5px;
+} */
 </style>

+ 1 - 1
ys_vue/src/views/mold/moldDownload.vue

@@ -142,7 +142,7 @@ export default {
       row.forEach(item => {
         this.selectedArray.push(item.id);
       });
-      console.log(this.selectedArray);
+      // console.log(this.selectedArray);
     },
     //下载
     download(type) {

+ 70 - 1
ys_vue/src/views/mold/moldFile.vue

@@ -19,7 +19,17 @@
           <el-button type="primary">查询</el-button>
         </el-form-item>
         <el-form-item style="float: right;">
-          <el-button type="primary">上传文档</el-button>
+          <el-upload
+            class="upload-demo"
+            action="customize"
+            :http-request="uploadFile"
+            :show-file-list="false"
+            multiple
+            :limit="5"
+            style="float:right;"
+          >
+            <el-button size="small" type="primary">上传文档</el-button>
+          </el-upload>
         </el-form-item>
       </el-form>
     </el-col>
@@ -115,6 +125,65 @@ export default {
     },
     toMaintenance(id) {
       this.$router.push("/detection/" + id);
+    },
+    //上传
+    uploadFile(params) {
+      // var fileObj = params.file;
+      // var form = new FormData();
+      // form.append("projectId", this.proDetail.id);
+      // form.append("file", fileObj);
+      // this.http.uploadFile(
+      //   this.port.mold.moldFileUpload,
+      //   form,
+      //   res => {
+      //     if (res.code == "ok") {
+      //       this.$message({
+      //         message: "上传成功",
+      //         type: "success"
+      //       });
+      //       this.getFileList();
+      //     } else {
+      //       this.$message({
+      //         message: res.msg,
+      //         type: "error"
+      //       });
+      //     }
+      //   },
+      //   error => {
+      //     this.$message({
+      //       message: error,
+      //       type: "error"
+      //     });
+      //   }
+      // );
+    },
+    //获取文档列表
+    getFileList() {
+      this.listLoading = true;
+      this.http.post(
+        this.port.project.fileList,
+        {
+          projectId: this.detailId
+        },
+        res => {
+          this.listLoading = false;
+          if (res.code == "ok") {
+            this.files = res.data;
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error"
+            });
+          }
+        },
+        error => {
+          this.listLoading = false;
+          this.$message({
+            message: error,
+            type: "error"
+          });
+        }
+      );
     }
   },
   created() {

+ 323 - 266
ys_vue/src/views/mold/moldList.vue

@@ -2,296 +2,353 @@
   <section>
     <!--工具条-->
     <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.projectId" clearable placeholder="请选择项目">
-                         <el-option v-for="item in projects" :key="item.id" :label="item.projectName" :value="item.id">
-                        </el-option>
-                    </el-select>
-                </el-form-item>
-            </el-col>
-            <el-col :span="3">
-                <el-form-item>
-                    <el-select v-model="filters.serchType" placeholder="请选择查询条件">
-                        <el-option label="编号" value="0"></el-option>
-                        <el-option label="名称" value="1"></el-option>
-                    </el-select>
-                </el-form-item>
-            </el-col>
-            <el-form-item>
-                <el-input v-model="filters.keyName" placeholder="请输入编号或名称进行搜索"></el-input>
-            </el-form-item>
-            <el-form-item>
-                <el-button type="primary" @click="getMoldList">查询</el-button>
-            </el-form-item>
-            <el-form-item style="float: right" v-if="user.parentId == 1">
-                <el-button type="primary" @click="showAdd">新建</el-button>
-            </el-form-item>
-        </el-form>
+      <el-form :inline="true" :model="filters">
+        <el-col :span="3">
+          <el-form-item>
+            <el-select v-model="filters.projectId" clearable placeholder="请选择项目">
+              <el-option
+                v-for="item in projects"
+                :key="item.id"
+                :label="item.projectName"
+                :value="item.id"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="3">
+          <el-form-item>
+            <el-select v-model="filters.serchType" placeholder="请选择查询条件">
+              <el-option label="编号" value="0"></el-option>
+              <el-option label="名称" value="1"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-form-item>
+          <el-input v-model="filters.keyName" placeholder="请输入编号或名称进行搜索"></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="getMoldList">查询</el-button>
+        </el-form-item>
+        <el-form-item style="float: right" v-if="user.parentId == 1">
+          <el-button type="primary" @click="showAdd">新建</el-button>
+        </el-form-item>
+      </el-form>
     </el-col>
 
     <!--列表-->
-    <el-table :data="molds" :height="tableHeight" highlight-current-row v-loading="listLoading" style="width: 100%;">
-        <el-table-column type="index" width="40"></el-table-column>
-        <el-table-column prop="modelName" label="模具名称" width="180" sortable>
-            <template slot-scope="scope">
-                <el-link :underline="false" type="primary" @click="toDetail(scope.row)">{{scope.row.modelName}}</el-link>
-            </template>
-        </el-table-column>
-        <el-table-column prop="modelNo" label="模具编号" width="150" sortable></el-table-column>
-        <el-table-column prop="equipmentNo" label="云模盒编号" width="150" sortable></el-table-column>
-        <el-table-column prop="hillNumber" label="电量" align="center" width="100" sortable></el-table-column>
-        <el-table-column prop="projectName" label="所属项目" width="180" sortable></el-table-column>
-        <el-table-column label="所属资产方" width="200" sortable></el-table-column>
-        <el-table-column label="所属生产方" width="200" sortable></el-table-column>
-        <el-table-column prop="settingLife" label="模次寿命" width="100" align="center" sortable></el-table-column>
-        <el-table-column prop="initialModulus" label="初始模次" width="100" align="center" sortable></el-table-column>
-        <el-table-column prop="initial" label="穴数" width="100" align="center" sortable></el-table-column>
-        <el-table-column prop="rfid" label="对应RFID码" width="120" align="center" sortable></el-table-column>
-        <el-table-column label="模具文档" width="100" align="center" sortable>
-            <template slot-scope="scope">
-                <span v-if="scope.row.mouldFile == 1">已上传</span>
-                <span v-else>未上传</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="零件文档" width="100" align="center" sortable>
-            <template slot-scope="scope">
-            <span v-if="scope.row.compFile == 1">已上传</span>
-            <span v-else>未上传</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="保养方案" width="100" align="center" sortable>
-            <template slot-scope="scope">
-            <span v-if="scope.row.maintianPlan == 1">已上传</span>
-            <span v-else>未上传</span>
-            </template>
-        </el-table-column>
-         <el-table-column label="状态" width="100" align="center" sortable>
-            <template slot-scope="scope">
-                <span v-if="scope.row.state == 1" style="color:#00CD66;">运行</span>
-                <span v-else style="color:#CD2626;">禁止</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="操作" width="150" align="center" fixed="right" sortable v-if="user.parentId == 1">
-            <template slot-scope="scope">
-                <!-- <el-button size="small" type="primary" @click="toDetail(scope.row)">详情</el-button> -->
-                <el-button size="small" type="danger">删除</el-button>
-            </template>
-        </el-table-column>
+    <el-table
+      :data="molds"
+      :height="tableHeight"
+      highlight-current-row
+      v-loading="listLoading"
+      style="width: 100%;"
+    >
+      <el-table-column type="index" width="40"></el-table-column>
+      <el-table-column prop="modelName" label="模具名称" width="180" sortable>
+        <template slot-scope="scope">
+          <el-link
+            :underline="false"
+            type="primary"
+            @click="toDetail(scope.row)"
+          >{{scope.row.modelName}}</el-link>
+        </template>
+      </el-table-column>
+      <el-table-column prop="modelNo" label="模具编号" width="150" sortable></el-table-column>
+      <el-table-column prop="equipmentNo" label="云模盒编号" width="150" sortable></el-table-column>
+      <el-table-column prop="hillNumber" label="电量" align="center" width="100" sortable></el-table-column>
+      <el-table-column prop="projectName" label="所属项目" width="180" sortable></el-table-column>
+      <el-table-column label="所属资产方" width="200" sortable></el-table-column>
+      <el-table-column label="所属生产方" width="200" sortable></el-table-column>
+      <el-table-column prop="settingLife" label="模次寿命" width="100" align="center" sortable></el-table-column>
+      <el-table-column prop="initialModulus" label="初始模次" width="100" align="center" sortable></el-table-column>
+      <el-table-column prop="initial" label="穴数" width="100" align="center" sortable></el-table-column>
+      <el-table-column prop="rfid" label="对应RFID码" width="120" align="center" sortable></el-table-column>
+      <el-table-column label="模具文档" width="100" align="center" sortable>
+        <template slot-scope="scope">
+          <span v-if="scope.row.mouldFile == 1">已上传</span>
+          <span v-else>未上传</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="零件文档" width="100" align="center" sortable>
+        <template slot-scope="scope">
+          <span v-if="scope.row.compFile == 1">已上传</span>
+          <span v-else>未上传</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="保养方案" width="100" align="center" sortable>
+        <template slot-scope="scope">
+          <span v-if="scope.row.maintianPlan == 1">已上传</span>
+          <span v-else>未上传</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="状态" width="100" align="center" sortable>
+        <template slot-scope="scope">
+          <span v-if="scope.row.state == 1" style="color:#00CD66;">运行</span>
+          <span v-else style="color:#CD2626;">禁止</span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="操作"
+        width="150"
+        align="center"
+        fixed="right"
+        sortable
+        v-if="user.parentId == 1"
+      >
+        <el-button size="small" type="danger">删除</el-button>
+      </el-table-column>
     </el-table>
 
     <!--工具条-->
     <el-col :span="24" class="toolbar">
-        <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-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-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="modelNo">
-                <el-input v-model="addForm.modelNo" autocomplete="off" placeholder="请输入模具编号"></el-input>
-            </el-form-item>
-            <el-form-item label="模具名称" prop="modelName">
-                <el-input v-model="addForm.modelName" autocomplete="off" placeholder="请输入模具名称"></el-input>
-            </el-form-item>
-            <el-form-item label="云模盒编号" prop="equipmentId">
-                <el-select v-model="addForm.equipmentId" clearable filterable placeholder="请选择云模盒编号" style="width:533px">
-                    <el-option v-for="item in boxes" :key="item.id" :label="item.equipmentNo" :value="item.id">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-        </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>
-        </div>
+    <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="modelNo">
+          <el-input v-model="addForm.modelNo" autocomplete="off" placeholder="请输入模具编号"></el-input>
+        </el-form-item>
+        <el-form-item label="模具名称" prop="modelName">
+          <el-input v-model="addForm.modelName" autocomplete="off" placeholder="请输入模具名称"></el-input>
+        </el-form-item>
+        <el-form-item label="云模盒编号" prop="equipmentId">
+          <el-select
+            v-model="addForm.equipmentId"
+            clearable
+            filterable
+            placeholder="请选择云模盒编号"
+            style="width:533px"
+          >
+            <el-option
+              v-for="item in boxes"
+              :key="item.id"
+              :label="item.equipmentNo"
+              :value="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+      </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>
+      </div>
     </el-dialog>
   </section>
 </template>
 
 <script>
-    import util from "../../common/js/util";
-    export default {
-        data() {
-            return {
-                user: JSON.parse(sessionStorage.getItem('user')),
-                molds: [],
-                filters: {
-                    keyName: "",
-                    serchType: "编号",
-                    projectId: ""
-                },
-                
-                formRules: {
-                    modelNo: [
-                        { required: true, message: '请输入模具编号', trigger: 'blur' }
-                    ],
-                    modelName: [
-                        { required: true, message: '请输入模具名称', trigger: 'blur' }
-                    ],
-                    equipmentId: [
-                        { required: true, message: '请选择云模盒编号', trigger: ['blur','change'] }
-                    ]
-                },
-                listLoading: false,
-                total: 0,
-                tableHeight: 0,
-                boxes: [],
-                projects: [],
+import util from "../../common/js/util";
+export default {
+  data() {
+    return {
+      user: JSON.parse(sessionStorage.getItem("user")),
+      molds: [],
+      filters: {
+        keyName: "",
+        serchType: "编号",
+        projectId: ""
+      },
 
-                addLoading: false,
-                addFormVisible: false,
-                addForm: {
-                    modelNo: "",
-                    modelName: "",
-                    equipmentId: ""       
-                }
-            };
+      formRules: {
+        modelNo: [
+          { required: true, message: "请输入模具编号", trigger: "blur" }
+        ],
+        modelName: [
+          { required: true, message: "请输入模具名称", trigger: "blur" }
+        ],
+        equipmentId: [
+          {
+            required: true,
+            message: "请选择云模盒编号",
+            trigger: ["blur", "change"]
+          }
+        ]
+      },
+      listLoading: false,
+      total: 0,
+      tableHeight: 0,
+      boxes: [],
+      projects: [],
+
+      addLoading: false,
+      addFormVisible: false,
+      addForm: {
+        modelNo: "",
+        modelName: "",
+        equipmentId: ""
+      }
+    };
+  },
+  methods: {
+    getMsg() {
+      this.http.post(
+        this.port.base.moulds,
+        {
+          belongCompanyId: this.user.companyId
+        },
+        res => {
+          if (res.code == "ok") {
+            this.boxes = res.data;
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error"
+            });
+          }
         },
-        methods: {
-            getMsg() {
-                this.http.post(this.port.base.moulds, {
-                    belongCompanyId: this.user.companyId
-                }, res => {
-                    if (res.code == "ok") {
-                        this.boxes = res.data;
-                    } else {
-                        this.$message({
-                            message: res.msg,
-                            type: 'error'
-                        });
-                    }
-                }, error => {
-                    this.listLoading = false;
-                    this.$message({
-                        message: error,
-                        type: 'error'
-                    });
-                })
+        error => {
+          this.listLoading = false;
+          this.$message({
+            message: error,
+            type: "error"
+          });
+        }
+      );
 
-                this.http.post(this.port.project.projects, {}, res => {
-                    if (res.code == "ok") {
-                        this.projects = res.data;
-                    } else {
-                        this.$message({
-                            message: res.msg,
-                            type: 'error'
-                        });
-                    }
-                }, error => {
-                    this.listLoading = false;
-                    this.$message({
-                        message: error,
-                        type: 'error'
-                    });
-                })
-            },
-            //分页
-            handleCurrentChange(val) {
-                this.page = val;
-                this.getMoldList();
-            },
-            handleSizeChange(val) {
-                this.size = val;
-                this.getMoldList();
-            },
+      this.http.post(
+        this.port.project.projects,
+        {},
+        res => {
+          if (res.code == "ok") {
+            this.projects = res.data;
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error"
+            });
+          }
+        },
+        error => {
+          this.listLoading = false;
+          this.$message({
+            message: error,
+            type: "error"
+          });
+        }
+      );
+    },
+    //分页
+    handleCurrentChange(val) {
+      this.page = val;
+      this.getMoldList();
+    },
+    handleSizeChange(val) {
+      this.size = val;
+      this.getMoldList();
+    },
 
-            //获取模具列表
-            getMoldList() {
-                this.listLoading = true;
-                this.http.post(this.port.mold.molds, {
-                    keyName: this.filters.keyName,
-                    pageNum: this.page,
-                    pageSize: this.size,
-                    projectId: this.filters.projectId == ""?-1:this.filters.projectId,
-                    serchType: this.filters.serchType
-                }, res => {
-                    this.listLoading = false;
-                    if (res.code == "ok") {
-                        this.molds = 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'
-                    });
-                })
-            },
-            //详情
-            toDetail(row) {
-                this.$router.push('/moldList/' + row.id);
-            },
+    //获取模具列表
+    getMoldList() {
+      this.listLoading = true;
+      this.http.post(
+        this.port.mold.molds,
+        {
+          keyName: this.filters.keyName,
+          pageNum: this.page,
+          pageSize: this.size,
+          projectId: this.filters.projectId == "" ? -1 : this.filters.projectId,
+          serchType: this.filters.serchType
+        },
+        res => {
+          this.listLoading = false;
+          if (res.code == "ok") {
+            this.molds = 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"
+          });
+        }
+      );
+    },
+    //详情
+    toDetail(row) {
+      this.$router.push("/moldList/" + row.id);
+    },
 
-            //添加界面
-            showAdd() {
-                this.addFormVisible = true;
-                this.addForm = {
-                    modelNo: "",
-                    modelName: "",
-                    equipmentId: ""       
-                };
+    //添加界面
+    showAdd() {
+      this.addFormVisible = true;
+      this.addForm = {
+        modelNo: "",
+        modelName: "",
+        equipmentId: ""
+      };
+    },
+    addSubmit() {
+      this.$refs.addForm.validate(valid => {
+        if (valid) {
+          this.addLoading = true;
+          this.http.post(
+            this.port.mold.addMold,
+            this.addForm,
+            res => {
+              this.addLoading = false;
+              this.addFormVisible = false;
+              if (res.code == "ok") {
+                this.$message({
+                  message: "创建成功",
+                  type: "success"
+                });
+                this.getMoldList();
+              } else {
+                this.$message({
+                  message: res.msg,
+                  type: "error"
+                });
+              }
             },
-            addSubmit() {
-                this.$refs.addForm.validate((valid) => {
-					if (valid) {
-                        this.addLoading = true;
-                        this.http.post(this.port.mold.addMold, this.addForm , res => {
-                            this.addLoading = false;
-                            this.addFormVisible = false;
-                            if (res.code == "ok") {
-                                this.$message({
-                                    message: '创建成功',
-                                    type: 'success'
-                                });
-                                this.getMoldList();
-                            } else {
-                                this.$message({
-                                    message: res.msg,
-                                    type: 'error'
-                                });
-                            }
-                        }, error => {
-                            this.addLoading = false;
-                            this.addFormVisible = false;
-                            this.$message({
-                                message: error,
-                                type: 'error'
-                            });
-                        })
-					}
-				});
+            error => {
+              this.addLoading = false;
+              this.addFormVisible = false;
+              this.$message({
+                message: error,
+                type: "error"
+              });
             }
-        },
-        created() {
-            let height = window.innerHeight;
-            this.tableHeight = height - 210;
-            const that = this;
-            window.onresize = function temp() {
-                that.tableHeight = window.innerHeight - 210;    
-            };
-        },
-        mounted() {
-            this.getMsg();
-            this.getMoldList();
-            
+          );
         }
+      });
+    }
+  },
+  created() {
+    let height = window.innerHeight;
+    this.tableHeight = height - 210;
+    const that = this;
+    window.onresize = function temp() {
+      that.tableHeight = window.innerHeight - 210;
     };
+  },
+  mounted() {
+    this.getMsg();
+    this.getMoldList();
+  }
+};
 </script>
 
 <style scoped>

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

@@ -157,7 +157,7 @@
                     });
                 })
 
-                this.http.post(this.port.base.companys, {
+                this.http.post(this.port.base.addCompanyListToProject, {
                     parentId: this.user.parentId,
                     id: this.user.id
                 }, res => {

+ 99 - 28
ys_vue/src/views/project/projectDetail.vue

@@ -15,7 +15,7 @@
         </el-col>
         <el-col :span="24" :style="allDetail">
             <el-col :span="24" class="title">项目基本信息
-                <i class="el-icon-edit editDetail" v-if="user.parentId == 1 || user.isManager == 1" @click="edit"></i>
+                <i class="el-icon-edit editDetail" v-if="user.parentId == 1 || user.id == proDetail.managerId" @click="edit"></i>
             </el-col>
             <el-col :span="24" class="main">
                 <el-col :span="6" class="detail">
@@ -65,7 +65,7 @@
             </el-col>
 
             <el-col :span="24" class="title">项目文档
-                <el-upload class="upload-demo" action="customize" :http-request="uploadFile" :show-file-list="false" multiple :limit="5" style="float:right;">
+                <el-upload v-if="update == 1" class="upload-demo" action="customize" :http-request="uploadFile" :show-file-list="false" multiple :limit="5" style="float:right;">
                     <el-button size="small" type="primary">点击上传</el-button>
                 </el-upload>
             </el-col>
@@ -73,32 +73,30 @@
                 <el-table :data="files" highlight-current-row v-loading="listLoading" height="400" style="width: 100%;">
                     <el-table-column type="index" width="40"></el-table-column>
                     <el-table-column prop="fileName" label="名称" sortable></el-table-column>
-                    <el-table-column prop="fileSize" label="大小" width="150" sortable></el-table-column>
-                    <el-table-column prop="uploader" label="上传者" width="120" sortable></el-table-column>
-                    <el-table-column prop="indate" label="上传时间" width="200" sortable></el-table-column>
-                    <el-table-column label="操作" width="220" sortable>
-                        <template slot-scope="scope">
-                            <el-button size="small">
-                                <a :href="scope.row.url" :download="scope.row.fileName">下载</a></el-button>
-                            <el-button size="small" type="danger" v-if="scope.row.uploaderId == user.id">删除</el-button>
+                    <el-table-column prop="fileSize" label="大小" width="150" align="center" sortable></el-table-column>
+                    <el-table-column prop="uploader" label="上传者" width="120" align="center" sortable></el-table-column>
+                    <el-table-column prop="indate" label="上传时间" width="200" align="center" sortable></el-table-column>
+                    <el-table-column label="操作" width="220" align="center" sortable>
+                        <template slot-scope="scope" v-if="download == 1">
+                            <el-button size="small" @click="dowloadFile(scope.row.id)">
+                                <a :href="scope.row.url" :download="scope.row.fileName">下载</a>
+                            </el-button>
+                            <el-button size="small" type="danger" @click="fileDel(scope.row.id)" v-if="scope.row.uploaderId == user.id">删除</el-button>
+                        </template>
+                        <template slot-scope="scope" v-if="download == 0">
+                            -
                         </template>
                     </el-table-column>
                 </el-table>
             </el-col>
 
             <el-col :span="24" class="title">操作记录</el-col>
-            <el-table :data="operations" highlight-current-row v-loading="listLoading" height="400" style="width: 100%;">
+            <el-table :data="opers" highlight-current-row v-loading="oplistLoading" height="400" style="width: 100%;">
                 <el-table-column type="index" width="40"></el-table-column>
-                <el-table-column prop="name" label="姓名" width="400" sortable></el-table-column>
-                <el-table-column prop="document" label="文档名称" sortable></el-table-column>
-                <el-table-column label="操作" width="400" sortable>
-                    <template slot-scope="scope">
-                        <span v-if="scope.row.operations == 0">浏览</span>
-                        <span v-else-if="scope.row.operations == 1">下载</span>
-                        <span v-else>删除</span>
-                    </template>
-                </el-table-column>
-                <el-table-column prop="time" label="时间" width="400" sortable></el-table-column>
+                <el-table-column prop="content" label="操作" width="120" sortable></el-table-column>
+                <el-table-column prop="fileName" label="操作文档名称" sortable></el-table-column>
+                <el-table-column prop="operator" label="操作人" width="120" sortable></el-table-column>
+                <el-table-column prop="indate" label="操作时间" width="200" sortable></el-table-column>
             </el-table>
         </el-col>
 
@@ -185,6 +183,7 @@
                 //临时数据
                 proDetail: {},
                 files: [],
+                opers: [],
 
                 allDetail: {
                     overflow: 'auto',
@@ -193,8 +192,14 @@
                 },
 
                 listLoading: false,
+                oplistLoading: false,
                 activePage: 0,
 
+                update: 0,
+                download: 0,
+                view: 0,
+                approve: 0,
+
                 company:[],
                 assets: [],
                 produce: [],
@@ -248,8 +253,13 @@
                     id: this.detailId
                 }, res => {
                     if (res.code == "ok") {
-                        var list = res.data;
-                        var approves = res.data.approves;
+                        this.update = res.data.update;
+                        this.download = res.data.download;
+                        this.view = res.data.view;
+                        this.approve = res.data.approve;
+
+                        var list = res.data.vo;
+                        var approves = res.data.vo.approves;
 
                         for(var i in approves){
                             if(approves[i].subordinateType == 0){
@@ -258,9 +268,10 @@
                                 list.customerApprover = approves[i].approverName;
                             }
                         }
-
                         this.proDetail = list;
-                        this.getMsg();
+                        if(this.user.parentId != 0){
+                            this.getMsg();
+                        }
                     } else {
                         this.$message({
                             message: res.msg,
@@ -297,9 +308,32 @@
                     });
                 })
             },
+            getOperList() {
+                this.oplistLoading = true;
+                // 获取文档列表
+                this.http.post(this.port.project.operList, {
+                    projectId: this.detailId
+                }, res => {
+                    this.oplistLoading = false;
+                    if (res.code == "ok") {
+                        this.opers = res.data;
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: 'error'
+                        });
+                    }
+                }, error => {
+                    this.oplistLoading = false;
+                    this.$message({
+                        message: error,
+                        type: 'error'
+                    });
+                })
+            },
             //获取信息
             getMsg() {
-                // 获取公司
+                // 获取人员
                 var compIds = this.user.companyId;
                 for(var i in this.proDetail.customCompanies){
                     compIds += "," + this.proDetail.customCompanies[i].companyId;
@@ -333,8 +367,8 @@
                     });
                 })
 
-                // 获取人员
-                this.http.post(this.port.base.companys, {
+                // 获取公司
+                this.http.post(this.port.base.addCompanyListToProject, {
                     parentId: this.user.parentId,
                     id: this.user.id
                 }, res => {
@@ -579,6 +613,42 @@
                     });
                 })
             },
+            //下载
+            dowloadFile(id) {
+                this.http.post(this.port.project.dowloadFile, {
+                    projectId: id
+                }, res => {
+                }, error => {
+                })
+            },
+            //删除上传文件
+			fileDel(id) {
+                this.$confirm('确认删除该文档吗?', '提示', {
+					type: 'warning'
+				}).then(() => {
+                    this.http.post(this.port.project.delFile, {
+                        id: id
+                    }, res => {
+                        if (res.code == "ok") {
+                            this.$message({
+                                message: '删除成功',
+                                type: 'success'
+                            });
+                            this.getFileList();
+                        } else {
+                            this.$message({
+                                message: res.msg,
+                                type: 'error'
+                            });
+                        }
+                    }, error => {
+                        this.$message({
+                            message: error,
+                            type: 'error'
+                        });
+                    })
+				});
+            },
         },
         created() {
             let height = window.innerHeight;
@@ -591,6 +661,7 @@
         mounted() {
             this.getDetail();
             this.getFileList();
+            this.getOperList();
         }
     };
 </script>