Преглед на файлове

pssr氮气置换
pssr盲板修改

jiangbiao преди 10 месеца
родител
ревизия
b65a374c62

+ 70 - 26
master/src/main/java/com/ruoyi/project/pssr/controller/TPssrApproveController.java

@@ -133,6 +133,9 @@ public class TPssrApproveController extends BaseController {
     @Autowired
     private ITPssrInstrumentCalibrationService tPssrInstrumentCalibrationService;
 
+    @Autowired
+    private ITPssrNitrogenService tPssrNitrogenService;
+
     /**
      * 查询pssr审批管理列表
      */
@@ -234,6 +237,7 @@ public class TPssrApproveController extends BaseController {
                 doDjApprove(tPssrSubcontent);
                 break;
             case "dqzh"://氮气置换
+                doDqzhApprove(tPssrSubcontent);
                 break;
             case "xqf"://消气防设施
                 doPatrolApprove(tPssrSubcontent);
@@ -478,6 +482,66 @@ public class TPssrApproveController extends BaseController {
         return AjaxResult.success();
     }
 
+    /**
+     * 氮气置换审批流程发起申请
+     * @param sub
+     */
+    private void doDqzhApprove(TPssrSubcontent sub) {
+        String userId = getUserId().toString();
+        //修改状态
+        TPssrNitrogen tPssrNitrogen = new TPssrNitrogen();
+        tPssrNitrogen.setApproveStatus(0L);
+        tPssrNitrogen.setSubId(sub.getId());
+        Set<String> confirm1 = new HashSet<>();
+        Set<String> confirm2 = new HashSet<>();
+        for (TPssrNitrogen item : tPssrNitrogenService.selectTPssrNitrogenList(tPssrNitrogen)) {
+            item.setApproveStatus(1L);
+            item.setUpdatedate(new Date());
+            item.setUpdaterCode(userId);
+            tPssrNitrogenService.updateTPssrNitrogen(item);
+
+            // 确认人1
+            confirm1.add(item.getConfirm1());
+
+            //确认人2
+            confirm2.add(item.getConfirm2());
+        }
+
+        TPssrApprove exist = new TPssrApprove();
+        exist.setSubId(sub.getId());
+        List<TPssrApprove> tPssrApproves = tPssrApproveService.selectTPssrApproveList(exist);
+        if (CollectionUtil.isEmpty(tPssrApproves)) {
+            //新增审批数据
+            TPssrApprove approve = new TPssrApprove();
+            approve.setSubId(sub.getId());
+            approve.setApNo(DateUtils.dateTimeNow() + userId);
+            approve.setApproveStatus(1L);
+            approve.setSubCharge(sub.getConfirm());
+            approve.setCreaterCode(userId);
+            approve.setCreatedate(new Date());
+            tPssrApproveService.insertTPssrApprove(approve);
+
+            pssr2confirm(approve, new ArrayList<>(confirm1), new ArrayList<>(confirm2), sub.getConfirm());
+        } else {
+            // 已存在流程时,删除旧流程,重新发起
+            TPssrApprove approve = tPssrApproves.get(0);
+            delProcess(approve.getProcessId(), "pssr2confirm");
+
+            tPssrNitrogen = new TPssrNitrogen();
+            tPssrNitrogen.setApproveStatus(1L);
+            tPssrNitrogen.setSubId(sub.getId());
+            for (TPssrNitrogen item : tPssrNitrogenService.selectTPssrNitrogenList(tPssrNitrogen)) {
+                // 确认人1
+                confirm1.add(item.getConfirm1());
+
+                //确认人2
+                confirm2.add(item.getConfirm2());
+            }
+
+            pssr2confirm(approve, new ArrayList<>(confirm1), new ArrayList<>(confirm2), sub.getConfirm());
+        }
+    }
+    
     // 检修项目审批流程发起申请
     public void doJxxmApprove(TPssrSubcontent sub) {
         String userId = getUserId().toString();
@@ -569,25 +633,14 @@ public class TPssrApproveController extends BaseController {
         Set<String> remover = new HashSet<>();
         for (TPssrBlind item : tPssrBlindService.selectTPssrBlindList(tPssrBlind)) {
             item.setApproveStatus(1L);
-            item.setInstallStatus("0,0,0,0,0");
-            item.setRemoveStatus("0,0,0,0,0");
             item.setUpdatedate(new Date());
             item.setUpdaterCode(userId);
             tPssrBlindService.updateTPssrBlind(item);
 
-            // 装人员
+            // 装人员
             installer.add(item.getInConfirm1());
-            installer.add(item.getInConfirm2());
-            installer.add(item.getInContractor());
-            installer.add(item.getInProcess());
-            installer.add(item.getInCoordinator());
-
-            //拆除人员
-            remover.add(item.getReConfirm1());
-            remover.add(item.getReConfirm2());
-            remover.add(item.getReContractor());
-            remover.add(item.getReProcess());
-            remover.add(item.getReCoordinator());
+            //确认人
+            remover.add(item.getInConfirm2());
         }
 
         TPssrApprove exist = new TPssrApprove();
@@ -613,19 +666,10 @@ public class TPssrApproveController extends BaseController {
             tPssrBlind.setApproveStatus(1L);
             tPssrBlind.setSubId(sub.getId());
             for (TPssrBlind item : tPssrBlindService.selectTPssrBlindList(tPssrBlind)) {
-                // 装人员
+                // 装人员
                 installer.add(item.getInConfirm1());
-                installer.add(item.getInConfirm2());
-                installer.add(item.getInContractor());
-                installer.add(item.getInProcess());
-                installer.add(item.getInCoordinator());
-
-                //拆除人员
-                remover.add(item.getReConfirm1());
-                remover.add(item.getReConfirm2());
-                remover.add(item.getReContractor());
-                remover.add(item.getReProcess());
-                remover.add(item.getReCoordinator());
+                //确认人
+                remover.add(item.getInConfirm2());
             }
             pssr2confirm(approve, new ArrayList<>(installer), new ArrayList<>(remover), sub.getConfirm());
         }

+ 27 - 117
master/src/main/java/com/ruoyi/project/pssr/controller/TPssrBlindController.java

@@ -115,72 +115,58 @@ public class TPssrBlindController extends BaseController {
         if (tPssrBlind.getIds() != null && tPssrBlind.getIds().length > 0) {
             for (Long id : tPssrBlind.getIds()) {
                 TPssrBlind item = tPssrBlindService.selectTPssrBlindById(id);
-                item.setTaskType(tPssrBlind.getTaskType());
-                setEntity(item);
+                if (tPssrBlind.getTaskType() == 4) {
+                    item.setApproveStatus(3L);
+                } else if (tPssrBlind.getTaskType() == 5) {
+                    item.setApproveStatus(2L);
+                }
                 tPssrBlindService.updateTPssrBlind(item);
             }
         } else {
             TPssrBlind blind = new TPssrBlind();
             blind.setSubId(tPssrBlind.getSubId());
             blind.setCurrentUser(getUserId().toString());
-            if (tPssrBlind.getTaskType() == 0) {
+            if (tPssrBlind.getTaskType() == 4) {
                 blind.setApproveStatus(1L);
-            } else if (tPssrBlind.getTaskType() == 1) {
+            } else if (tPssrBlind.getTaskType() == 5) {
                 blind.setApproveStatus(3L);
             }
             for (TPssrBlind item : tPssrBlindService.selectTPssrBlindList(blind)) {
-                item.setTaskType(tPssrBlind.getTaskType());
-                setEntity(item);
+                if (tPssrBlind.getTaskType() == 4) {
+                    item.setApproveStatus(3L);
+                } else if (tPssrBlind.getTaskType() == 5) {
+                    item.setApproveStatus(2L);
+                }
                 tPssrBlindService.updateTPssrBlind(item);
             }
         }
         //查询当前待审批的确认人
         TPssrBlind entity = new TPssrBlind();
         entity.setSubId(tPssrBlind.getSubId());
-        if (tPssrBlind.getTaskType() == 0) {
+        if (tPssrBlind.getTaskType() == 4) {
             entity.setApproveStatus(1L);
-        } else if (tPssrBlind.getTaskType() == 1) {
+        } else if (tPssrBlind.getTaskType() == 5) {
             entity.setApproveStatus(3L);
         }
         long status = 1;
         boolean flag = false;
         for (TPssrBlind item : tPssrBlindService.selectTPssrBlindList(entity)) {
             item.setTaskType(tPssrBlind.getTaskType());
-            for (String s : setEntity(item).split(",")) {
-                int current = Integer.parseInt(s);
-                if (current == -1)
-                    continue;
-                if (tPssrBlind.getTaskType() == 0) {
-                    if (item.getInstallStatus().split(",")[current].equals("0")) {
-                        return AjaxResult.success();
-                    }
-                } else if (tPssrBlind.getTaskType() == 1) {
-                    if (item.getRemoveStatus().split(",")[current].equals("0")) {
-                        return AjaxResult.success();
-                    }
+            if (tPssrBlind.getTaskType() == 4) {
+                if (item.getInConfirm1().equals(getUserId().toString())) {
+                    return AjaxResult.success();
+                }
+            } else if (tPssrBlind.getTaskType() == 5) {
+                if (item.getInConfirm2().equals(getUserId().toString())) {
+                    return AjaxResult.success();
                 }
-            }
-            if (item.getInstallStatus().equals("1,1,1,1,1")) {
-                item.setApproveStatus(3L);//已确认安装
-                status = 3L;
-                flag = true;
-                tPssrBlindService.updateTPssrBlind(item);
-
-            }
-            if (item.getRemoveStatus().equals("1,1,1,1,1")) {
-                item.setApproveStatus(2L);//已确认拆除
-                status = 4L;
-                flag = true;
-                tPssrBlindService.updateTPssrBlind(item);
             }
         }
 
-        if (flag) {
-            TPssrSubcontent tPssrSubcontent = new TPssrSubcontent();
-            tPssrSubcontent.setId(tPssrBlind.getSubId());
-            tPssrSubcontent.setApproveStatus(status);
-            tPssrSubcontentService.updateTPssrSubcontent(tPssrSubcontent);
-        }
+        TPssrSubcontent tPssrSubcontent = new TPssrSubcontent();
+        tPssrSubcontent.setId(tPssrBlind.getSubId());
+        tPssrSubcontent.setApproveStatus(status);
+        tPssrSubcontentService.updateTPssrSubcontent(tPssrSubcontent);
 
         //无待审批任务结束当前用户流程
         TPssrApprove approve = new TPssrApprove();
@@ -191,68 +177,6 @@ public class TPssrBlindController extends BaseController {
         return AjaxResult.success();
     }
 
-    private String setEntity(TPssrBlind tPssrBlind) {
-        //安装人员
-        String inProcess = tPssrBlind.getInProcess();
-        String inCoordinator = tPssrBlind.getInCoordinator();
-        String inContractor = tPssrBlind.getInContractor();
-        String inConfirm1 = tPssrBlind.getInConfirm1();
-        String inConfirm2 = tPssrBlind.getInConfirm2();
-
-        //拆除人员
-        String reProcess = tPssrBlind.getReProcess();
-        String reCoordinator = tPssrBlind.getReCoordinator();
-        String reContractor = tPssrBlind.getReContractor();
-        String reConfirm1 = tPssrBlind.getReConfirm1();
-        String reConfirm2 = tPssrBlind.getReConfirm2();
-
-        //获取当前人员操作下标
-        String currents = "-1,";
-        if (inProcess.equals(getUserId().toString()) || reProcess.equals(getUserId().toString())) {
-            currents += "0,";
-        }
-        if (inCoordinator.equals(getUserId().toString()) || reCoordinator.equals(getUserId().toString())) {
-            currents += "1,";
-        }
-        if (inContractor.equals(getUserId().toString()) || reContractor.equals(getUserId().toString())) {
-            currents += "2,";
-        }
-        if (inConfirm1.equals(getUserId().toString()) || reConfirm1.equals(getUserId().toString())) {
-            currents += "3,";
-        }
-        if (inConfirm2.equals(getUserId().toString()) || reConfirm2.equals(getUserId().toString())) {
-            currents += "4,";
-        }
-        for (String val : currents.split(",")) {
-            int current = Integer.parseInt(val);
-            //修改状态
-            if (current != -1) {
-                if (tPssrBlind.getTaskType() == 0) {
-                    if (tPssrBlind.getInstallDate() == null) {
-                        tPssrBlind.setInstallDate(new Date());
-                    }
-                    String[] is = tPssrBlind.getInstallStatus().split(",");
-                    is[current] = "1";
-                    tPssrBlind.setInstallStatus(String.join(",", is));
-                    if (tPssrBlind.getInstallDate() == null) {
-                        tPssrBlind.setInstallDate(new Date());
-                    }
-                } else if (tPssrBlind.getTaskType() == 1) {
-                    if (tPssrBlind.getRemovedDate() == null) {
-                        tPssrBlind.setRemovedDate(new Date());
-                    }
-                    String[] rs = tPssrBlind.getRemoveStatus().split(",");
-                    rs[current] = "1";
-                    tPssrBlind.setRemoveStatus(String.join(",", rs));
-                    if (tPssrBlind.getRemovedDate() == null) {
-                        tPssrBlind.setRemovedDate(new Date());
-                    }
-                }
-            }
-        }
-        return currents;
-    }
-
     @PutMapping("/turnDownBlind")
     public AjaxResult turnDownBlind(@RequestBody TPssrBlind tPssrBlind) {
         if (tPssrBlind.getIds() != null) {
@@ -261,8 +185,6 @@ public class TPssrBlindController extends BaseController {
             for (Long id : tPssrBlind.getIds()) {
                 TPssrBlind blind = new TPssrBlind();
                 blind.setId(id);
-                blind.setInstallStatus("0,0,0,0,0");
-                blind.setRemoveStatus("0,0,0,0,0");
                 blind.setApproveStatus(1L);
                 blind.setUpdatedate(new Date());
                 blind.setUpdaterCode(getUserId().toString());
@@ -286,20 +208,8 @@ public class TPssrBlindController extends BaseController {
             Set<String> installer = new HashSet<>();
             Set<String> remover = new HashSet<>();
             for (TPssrBlind item : tPssrBlindService.selectTPssrBlindList(blind)) {
-
-                // 安装人员
                 installer.add(item.getInConfirm1());
-                installer.add(item.getInConfirm2());
-                installer.add(item.getInContractor());
-                installer.add(item.getInProcess());
-                installer.add(item.getInCoordinator());
-
-                //拆除人员
-                remover.add(item.getReConfirm1());
-                remover.add(item.getReConfirm2());
-                remover.add(item.getReContractor());
-                remover.add(item.getReProcess());
-                remover.add(item.getReCoordinator());
+                remover.add(item.getInConfirm2());
             }
 
 
@@ -310,7 +220,7 @@ public class TPssrBlindController extends BaseController {
             param.put("confirmUsers2", new ArrayList<>(remover));
             //认领任务
             processEngine.getTaskService().claim(taskId, userId);
-            taskService.addComment(taskId, approve.getProcessId(), "驳回至拆除;" + tPssrBlind.getRemarks());
+            taskService.addComment(taskId, approve.getProcessId(), "驳回;" + tPssrBlind.getRemarks());
             taskService.complete(taskId, param);
 
             // 修改审批表和sub表

+ 3 - 3
master/src/main/java/com/ruoyi/project/pssr/controller/TPssrMocController.java

@@ -104,10 +104,10 @@ public class TPssrMocController extends BaseController {
 
 
     /**
-     * 确认实验室
+     * 确认设计变更
      */
     @PreAuthorize("@ss.hasPermi('pssr:moc:edit')")
-    @Log(title = "实验室", businessType = BusinessType.UPDATE)
+    @Log(title = "设计变更", businessType = BusinessType.UPDATE)
     @PutMapping("/confirmMoc")
     public AjaxResult confirmMoc(@RequestBody TPssrMoc tPssrMoc) {
         long queryStatus = 0;
@@ -173,7 +173,7 @@ public class TPssrMocController extends BaseController {
     }
 
     /**
-     * 驳回实验室
+     * 驳回设计变更
      */
     @PutMapping("/turnDownMoc")
     public AjaxResult turnDownMoc(@RequestBody TPssrMoc tPssrMoc) {

+ 159 - 1
master/src/main/java/com/ruoyi/project/pssr/controller/TPssrNitrogenController.java

@@ -1,6 +1,16 @@
 package com.ruoyi.project.pssr.controller;
 
-import java.util.List;
+import java.util.*;
+
+import com.ruoyi.project.pssr.domain.TPssrApprove;
+import com.ruoyi.project.pssr.domain.TPssrNitrogen;
+import com.ruoyi.project.pssr.domain.TPssrSubcontent;
+import com.ruoyi.project.pssr.service.ITPssrApproveService;
+import com.ruoyi.project.pssr.service.ITPssrSubcontentService;
+import org.activiti.engine.ProcessEngine;
+import org.activiti.engine.ProcessEngines;
+import org.activiti.engine.TaskService;
+import org.activiti.engine.task.Task;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -33,6 +43,12 @@ public class TPssrNitrogenController extends BaseController
     @Autowired
     private ITPssrNitrogenService tPssrNitrogenService;
 
+    @Autowired
+    private ITPssrApproveService tPssrApproveService;
+
+    @Autowired
+    private ITPssrSubcontentService tPssrSubcontentService;
+
     /**
      * 查询系统氮气置换列表
      */
@@ -76,6 +92,7 @@ public class TPssrNitrogenController extends BaseController
     @PostMapping
     public AjaxResult add(@RequestBody TPssrNitrogen tPssrNitrogen)
     {
+        tPssrNitrogen.setApproveStatus(0L);
         return toAjax(tPssrNitrogenService.insertTPssrNitrogen(tPssrNitrogen));
     }
 
@@ -100,4 +117,145 @@ public class TPssrNitrogenController extends BaseController
     {
         return toAjax(tPssrNitrogenService.deleteTPssrNitrogenByIds(ids));
     }
+
+
+    /**
+     * 确认氮气置换
+     */
+    @PreAuthorize("@ss.hasPermi('pssr:nitrogen:edit')")
+    @Log(title = "氮气置换确认", businessType = BusinessType.UPDATE)
+    @PutMapping("/confirmNitrogen")
+    public AjaxResult confirmNitrogen(@RequestBody TPssrNitrogen tPssrNitrogen) {
+        long queryStatus = 0;
+        long approveStatus = 0;
+        Date date = null;
+        if (tPssrNitrogen.getTaskType() == 4) {
+            //确认人1确认
+            queryStatus = 1;
+            approveStatus = 3;
+            date = new Date();
+        } else if (tPssrNitrogen.getTaskType() == 5) {
+            //确认人2确认
+            queryStatus = 3;
+            approveStatus = 2;
+            date = new Date();
+        }
+        // 修改状态
+        if (tPssrNitrogen.getIds() != null && tPssrNitrogen.getIds().length > 0) {
+            for (Long id : tPssrNitrogen.getIds()) {
+                TPssrNitrogen item = tPssrNitrogenService.selectTPssrNitrogenById(id);
+                item.setApproveStatus(approveStatus);
+                if (item.getConfirmationDate() == null && queryStatus == 3) {
+                    item.setConfirmationDate(date);
+                }
+                tPssrNitrogenService.updateTPssrNitrogen(item);
+            }
+        } else {
+            TPssrNitrogen lock = new TPssrNitrogen();
+            lock.setSubId(tPssrNitrogen.getSubId());
+            lock.setApproveStatus(queryStatus);
+            for (TPssrNitrogen item : tPssrNitrogenService.selectTPssrNitrogenList(lock)) {
+                if (item.getConfirmationDate() == null && queryStatus == 3) {
+                    item.setConfirmationDate(date);
+                }
+                item.setApproveStatus(approveStatus);
+                tPssrNitrogenService.updateTPssrNitrogen(item);
+            }
+        }
+        //查询当前待审批的确认人
+        TPssrNitrogen entity = new TPssrNitrogen();
+        entity.setSubId(tPssrNitrogen.getSubId());
+        entity.setApproveStatus(queryStatus);
+        for (TPssrNitrogen item : tPssrNitrogenService.selectTPssrNitrogenList(entity)) {
+            if (tPssrNitrogen.getTaskType() == 4) {
+                if (item.getConfirm1().equals(getUserId().toString())) {
+                    return AjaxResult.success();
+                }
+            } else if (tPssrNitrogen.getTaskType() == 5) {
+                if (item.getConfirm2().equals(getUserId().toString())) {
+                    return AjaxResult.success();
+                }
+            }
+        }
+
+        //无待审批任务结束当前用户流程
+        TPssrApprove approve = new TPssrApprove();
+        approve.setSubId(tPssrNitrogen.getSubId());
+        // 因为流程关系所以approve一定会有且只有一条数据
+        TPssrApprove tPssrApprove = tPssrApproveService.selectTPssrApproveList(approve).get(0);
+        TPssrApproveController.handleConfirmApprove(tPssrApprove, getUserId().toString());
+        return AjaxResult.success();
+
+    }
+
+    /**
+     * 驳回氮气置换
+     */
+    @PutMapping("/turnDownNitrogen")
+    @Log(title = "氮气置换驳回", businessType = BusinessType.UPDATE)
+    public AjaxResult turnDownNitrogen(@RequestBody TPssrNitrogen tPssrNitrogen) {
+        if (tPssrNitrogen.getIds() != null) {
+            String userId = getUserId().toString();
+            // 修改已选择数据的状态
+            for (Long id : tPssrNitrogen.getIds()) {
+                TPssrNitrogen blind = new TPssrNitrogen();
+                blind.setId(id);
+                blind.setApproveStatus(1L);
+                blind.setUpdatedate(new Date());
+                blind.setUpdaterCode(getUserId().toString());
+                tPssrNitrogenService.updateTPssrNitrogen(blind);
+            }
+            // 查询当前流程
+            TPssrApprove approve = tPssrApproveService.selectTPssrApproveBySubId(tPssrNitrogen.getSubId());
+
+            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
+            TaskService taskService = processEngine.getTaskService();
+            Task task = processEngine.getTaskService()//获取任务service
+                    .createTaskQuery()//创建查询对象
+                    .taskAssignee(userId)
+                    .processInstanceId(approve.getProcessId()).singleResult();
+            String taskId = task.getId();
+
+            // 驳回 查询所有待审批的人员
+            TPssrNitrogen blind = new TPssrNitrogen();
+            blind.setSubId(tPssrNitrogen.getSubId());
+            blind.setApproveStatus(1L);
+            Set<String> confirm1 = new HashSet<>();
+            Set<String> confirm2 = new HashSet<>();
+            for (TPssrNitrogen item : tPssrNitrogenService.selectTPssrNitrogenList(blind)) {
+
+                // 确认人1
+                confirm1.add(item.getConfirm1());
+
+                // 确认人2
+                confirm2.add(item.getConfirm2());
+            }
+
+
+            //处理流程节点
+            Map<String, Object> param = new HashMap<>();
+            param.put("condition", 1);
+            param.put("confirmUsers1", new ArrayList<>(confirm1));
+            param.put("confirmUsers2", new ArrayList<>(confirm2));
+            //认领任务
+            processEngine.getTaskService().claim(taskId, userId);
+            taskService.addComment(taskId, approve.getProcessId(), "驳回;" + tPssrNitrogen.getRemarks());
+            taskService.complete(taskId, param);
+
+            // 修改审批表和sub表
+            approve.setApproveStatus(1L);
+            approve.setUpdatedate(new Date());
+            approve.setUpdaterCode(getUserId().toString());
+            tPssrApproveService.updateTPssrApprove(approve);
+
+            TPssrSubcontent subcontent = new TPssrSubcontent();
+            subcontent.setId(approve.getSubId());
+            subcontent.setApproveStatus(1L);
+            subcontent.setUpdatedate(new Date());
+            subcontent.setUpdaterCode(getUserId().toString());
+            tPssrSubcontentService.updateTPssrSubcontent(subcontent);
+            return AjaxResult.success();
+        }
+        return AjaxResult.error();
+    }
 }

+ 40 - 2
master/src/main/java/com/ruoyi/project/pssr/domain/TPssrBlind.java

@@ -30,7 +30,7 @@ public class TPssrBlind extends BaseEntity
     private Long approveId;
 
     /** 单元/系统号 */
-    @Excel(name = "单元/系统号")
+    @Excel(name = "区域")
     private String unitNo;
 
     /** P&ID图号 */
@@ -46,7 +46,7 @@ public class TPssrBlind extends BaseEntity
     private String medium;
 
     /** 隔离/盲板编号 */
-    @Excel(name = "隔离/盲板编号")
+    @Excel(name = "盲板编号")
     private String blindNo;
 
     /** 所在位置 */
@@ -178,6 +178,44 @@ public class TPssrBlind extends BaseEntity
     private String installStatus;
     private String removeStatus;
 
+
+    private String blindType;
+    private String startupStatus;
+    private String actualStatus;
+    private String satisfy;
+
+    public String getBlindType() {
+        return blindType;
+    }
+
+    public void setBlindType(String blindType) {
+        this.blindType = blindType;
+    }
+
+    public String getStartupStatus() {
+        return startupStatus;
+    }
+
+    public void setStartupStatus(String startupStatus) {
+        this.startupStatus = startupStatus;
+    }
+
+    public String getActualStatus() {
+        return actualStatus;
+    }
+
+    public void setActualStatus(String actualStatus) {
+        this.actualStatus = actualStatus;
+    }
+
+    public String getSatisfy() {
+        return satisfy;
+    }
+
+    public void setSatisfy(String satisfy) {
+        this.satisfy = satisfy;
+    }
+
     public String getInstallStatus() {
 
         return installStatus;

+ 24 - 3
master/src/main/java/com/ruoyi/project/pssr/domain/TPssrNitrogen.java

@@ -34,7 +34,8 @@ public class TPssrNitrogen extends BaseEntity
 
     /** 采样日期 */
     @Excel(name = "采样日期")
-    private String samplingDate;
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    private Date samplingDate;
 
     /** 样品名称 */
     @Excel(name = "样品名称")
@@ -104,6 +105,26 @@ public class TPssrNitrogen extends BaseEntity
     @Excel(name = "审批状态")
     private Long approveStatus;
 
+    private Long[] ids;
+
+    private Long taskType;
+
+    public Long[] getIds() {
+        return ids;
+    }
+
+    public void setIds(Long[] ids) {
+        this.ids = ids;
+    }
+
+    public Long getTaskType() {
+        return taskType;
+    }
+
+    public void setTaskType(Long taskType) {
+        this.taskType = taskType;
+    }
+
     public void setId(Long id)
     {
         this.id = id;
@@ -140,12 +161,12 @@ public class TPssrNitrogen extends BaseEntity
     {
         return systemName;
     }
-    public void setSamplingDate(String samplingDate)
+    public void setSamplingDate(Date samplingDate)
     {
         this.samplingDate = samplingDate;
     }
 
-    public String getSamplingDate()
+    public Date getSamplingDate()
     {
         return samplingDate;
     }

+ 21 - 1
master/src/main/resources/mybatis/pssr/TPssrBlindMapper.xml

@@ -43,10 +43,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="installStatus"    column="install_status"    />
         <result property="removeStatus"    column="remove_status"    />
         <result property="deptName" column="dept_name" />
+        <result property="blindType" column="blind_type" />
+        <result property="startupStatus" column="startup_status" />
+        <result property="actualStatus" column="actual_status" />
+        <result property="satisfy" column="satisfy" />
     </resultMap>
 
     <sql id="selectTPssrBlindVo">
-        select d.INSTALL_STATUS,d.REMOVE_STATUS,d.id, d.sub_id, d.approve_id, d.unit_no, d.pid_no, d.pipeline_no, d.medium, d.blind_no, d.location, d.iso_type, d.tag_no, d.blind_size, d.pressure_rate, d.pressurized, d.figure, d.install_date, d.in_process, d.in_coordinator, d.in_contractor, d.in_confirm1, d.in_confirm2, d.removed_date, d.re_process, d.re_coordinator, d.re_contractor, d.re_confirm1, d.re_confirm2, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.approve_status ,s.dept_name from t_pssr_blind d
+        select d.blind_type,d.startup_status,d.actual_status,d.satisfy,d.INSTALL_STATUS,d.REMOVE_STATUS,d.id, d.sub_id, d.approve_id, d.unit_no, d.pid_no, d.pipeline_no, d.medium, d.blind_no, d.location, d.iso_type, d.tag_no, d.blind_size, d.pressure_rate, d.pressurized, d.figure, d.install_date, d.in_process, d.in_coordinator, d.in_contractor, d.in_confirm1, d.in_confirm2, d.removed_date, d.re_process, d.re_coordinator, d.re_contractor, d.re_confirm1, d.re_confirm2, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.approve_status ,s.dept_name from t_pssr_blind d
       left join sys_dept s on s.dept_id = d.dept_id
     </sql>
 
@@ -97,6 +101,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="deptId != null "> and dept_id = #{deptId}</if>
             <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
             <if test="approveStatus != null "> and approve_status = #{approveStatus}</if>
+            <if test="blindType != null "> and blind_type = #{blindType}</if>
+            <if test="startupStatus != null "> and startup_status = #{startupStatus}</if>
+            <if test="actualStatus != null "> and actual_status = #{actualStatus}</if>
+            <if test="satisfy != null "> and satisfy = #{satisfy}</if>
             and d.del_flag = 0
         </where>
         <!-- 数据范围过滤 -->
@@ -151,6 +159,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="approveStatus != null">approve_status,</if>
             <if test="installStatus != null">install_status,</if>
             <if test="removeStatus != null">remove_status,</if>
+            <if test="blindType != null">blind_type,</if>
+            <if test="startupStatus != null">startup_status,</if>
+            <if test="actualStatus != null">actual_status,</if>
+            <if test="satisfy != null">satisfy,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -190,6 +202,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="approveStatus != null">#{approveStatus},</if>
             <if test="installStatus != null">#{installStatus},</if>
             <if test="removeStatus != null">#{removeStatus},</if>
+            <if test="blindType != null">#{blindType},</if>
+            <if test="startupStatus != null">#{startupStatus},</if>
+            <if test="actualStatus != null">#{actualStatus},</if>
+            <if test="satisfy != null">#{satisfy},</if>
          </trim>
     </insert>
 
@@ -232,6 +248,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="approveStatus != null">approve_status = #{approveStatus},</if>
             <if test="installStatus != null">install_status = #{installStatus},</if>
             <if test="removeStatus != null">remove_status = #{removeStatus},</if>
+            <if test="blindType != null">blind_type = #{blindType},</if>
+            <if test="startupStatus != null">startup_status = #{startupStatus},</if>
+            <if test="actualStatus != null">actual_status = #{actualStatus},</if>
+            <if test="satisfy != null">satisfy = #{satisfy},</if>
         </trim>
         where id = #{id}
     </update>

+ 19 - 1
ui/src/api/pssr/nitrogen.js

@@ -1,5 +1,23 @@
 import request from '@/utils/request'
 
+// 确认NITROGEN完成确认清单
+export function handleConfirmNitrogen(data) {
+  return request({
+    url: '/pssr/nitrogen/confirmNitrogen',
+    method: 'put',
+    data: data
+  })
+}
+
+// 驳回NITROGEN完成确认清单
+export function handleTurnDownNitrogen(data) {
+  return request({
+    url: '/pssr/nitrogen/turnDownNitrogen',
+    method: 'put',
+    data: data
+  })
+}
+
 // 查询系统氮气置换列表
 export function listNitrogen(query) {
   return request({
@@ -50,4 +68,4 @@ export function exportNitrogen(query) {
     method: 'get',
     params: query
   })
-}
+}

+ 56 - 310
ui/src/views/pssr/blind/index.vue

@@ -145,88 +145,26 @@
           <el-tag v-if="scope.row.approveStatus==2" type="success">已确认</el-tag>
         </template>
       </el-table-column>
-      <el-table-column label="单元/系统号" align="center" prop="unitNo" :show-overflow-tooltip="true" width="150"/>
-      <el-table-column label="P&ID图号" align="center" prop="pidNo" :show-overflow-tooltip="true" width="150"/>
-      <el-table-column label="管线号" align="center" prop="pipelineNo" :show-overflow-tooltip="true" width="150"/>
-      <el-table-column label="介质" align="center" prop="medium" :show-overflow-tooltip="true" width="150"/>
-      <el-table-column label="隔离/盲板编号" align="center" prop="blindNo" :show-overflow-tooltip="true" width="150"/>
-      <el-table-column label="所在位置" align="center" prop="location" :show-overflow-tooltip="true" width="150"/>
+      <el-table-column label="区域" align="center" prop="unitNo" :show-overflow-tooltip="true" width="150"/>
+      <el-table-column label="盲板编号" align="center" prop="blindNo" :show-overflow-tooltip="true" width="150"/>
       <el-table-column label="隔离类型" align="center" prop="isoType" :show-overflow-tooltip="true" width="150"/>
-      <el-table-column label="被隔离设备/管线位号" align="center" prop="tagNo" :show-overflow-tooltip="true"
-                       width="150"/>
       <el-table-column label="尺寸" align="center" prop="blindSize" :show-overflow-tooltip="true" width="150"/>
       <el-table-column label="压力等级" align="center" prop="pressureRate" :show-overflow-tooltip="true" width="150"/>
+      <el-table-column label="介质" align="center" prop="medium" :show-overflow-tooltip="true" width="150"/>
+      <el-table-column label="“8”字盲板" align="center" prop="figure" :show-overflow-tooltip="true" width="150"/>
+      <el-table-column label="PID" align="center" prop="pidNo" :show-overflow-tooltip="true" width="150"/>
+      <el-table-column label="位置" align="center" prop="location" :show-overflow-tooltip="true" width="150"/>
       <el-table-column label="是否承压" align="center" prop="pressurized" :show-overflow-tooltip="true" width="150"/>
-      <el-table-column label="是否“8”字板" align="center" prop="figure" :show-overflow-tooltip="true" width="150"/>
-      <el-table-column label="已经安装" align="center">
-        <el-table-column label="安装时间" align="center" prop="installDate" width="100">
-          <template slot-scope="scope">
-            <span>{{ parseTime(scope.row.installDate, '{y}-{m}-{d}') }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="工艺操作人员" align="center" prop="inProcess" :show-overflow-tooltip="true"
-                         width="150">
-          <template slot-scope="scope">
-            <span>{{ userFormat(scope.row.inProcess) }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="设备/仪表协调员" align="center" prop="inCoordinator" :show-overflow-tooltip="true"
-                         width="150">
-          <template slot-scope="scope">
-            <span>{{ userFormat(scope.row.inCoordinator) }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="承包商" align="center" prop="inContractor" :show-overflow-tooltip="true" width="150">
-          <template slot-scope="scope">
-            <span>{{ userFormat(scope.row.inContractor) }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="片区盲板司令" align="center" prop="inConfirm1" :show-overflow-tooltip="true"
-                         width="150">
-          <template slot-scope="scope">
-            <span>{{ userFormat(scope.row.inConfirm1) }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="盲板总司令" align="center" prop="inConfirm2" :show-overflow-tooltip="true" width="150">
-          <template slot-scope="scope">
-            <span>{{ userFormat(scope.row.inConfirm2) }}</span>
-          </template>
-        </el-table-column>
+      <el-table-column label="拆装人员" align="center" prop="inConfirm1" :show-overflow-tooltip="true"
+                       width="150">
+        <template slot-scope="scope">
+          <span>{{ userFormat(scope.row.inConfirm1) }}</span>
+        </template>
       </el-table-column>
-      <el-table-column label="已经拆除" align="center">
-        <el-table-column label="拆装时间" align="center" prop="removedDate" width="100">
-          <template slot-scope="scope">
-            <span>{{ parseTime(scope.row.removedDate, '{y}-{m}-{d}') }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="工艺操作人员" align="center" prop="reProcess" :show-overflow-tooltip="true"
-                         width="150">
-          <template slot-scope="scope">
-            <span>{{ userFormat(scope.row.reProcess) }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="设备/仪表协调员" align="center" prop="reCoordinator" :show-overflow-tooltip="true"
-                         width="150">
-          <template slot-scope="scope">
-            <span>{{ userFormat(scope.row.reCoordinator) }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="承包商" align="center" prop="reContractor" :show-overflow-tooltip="true" width="150">
-          <template slot-scope="scope">
-            <span>{{ userFormat(scope.row.reCoordinator) }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="片区盲板司令" align="center" prop="reConfirm1" :show-overflow-tooltip="true"
-                         width="150">
-          <template slot-scope="scope">
-            <span>{{ userFormat(scope.row.reConfirm1) }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="盲板总司令" align="center" prop="reConfirm2" :show-overflow-tooltip="true" width="150">
-          <template slot-scope="scope">
-            <span>{{ userFormat(scope.row.reConfirm2) }}</span>
-          </template>
-        </el-table-column>
+      <el-table-column label="确认人" align="center" prop="inConfirm2" :show-overflow-tooltip="true" width="150">
+        <template slot-scope="scope">
+          <span>{{ userFormat(scope.row.inConfirm2) }}</span>
+        </template>
       </el-table-column>
       <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true" width="150"/>
       <el-table-column label="操作" align="center" fixed="right" v-if="isApprove==0" width="120"
@@ -267,39 +205,15 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="150px">
         <el-row>
           <el-col :span="12">
-            <el-form-item label="单元/系统号" prop="unitNo">
+            <el-form-item label="区域" prop="unitNo">
               <el-input v-model="form.unitNo" placeholder="请输入单元/系统号"/>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="P&ID图号" prop="pidNo">
-              <el-input v-model="form.pidNo" placeholder="请输入P&ID图号"/>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="管线号" prop="pipelineNo">
-              <el-input v-model="form.pipelineNo" placeholder="请输入管线号"/>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="介质" prop="medium">
-              <el-input v-model="form.medium" placeholder="请输入介质"/>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="隔离/盲板编号" prop="blindNo">
+            <el-form-item label="盲板编号" prop="blindNo">
               <el-input v-model="form.blindNo" placeholder="请输入隔离/盲板编号"/>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="所在位置" prop="location">
-              <el-input v-model="form.location" placeholder="请输入所在位置"/>
-            </el-form-item>
-          </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
@@ -307,134 +221,73 @@
               <el-input v-model="form.isoType" placeholder="请输入隔离类型"/>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="被隔离设备/管线位号" prop="tagNo">
-              <el-input v-model="form.tagNo" placeholder="请输入被隔离设备/管线位号"/>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
           <el-col :span="12">
             <el-form-item label="尺寸" prop="blindSize">
               <el-input v-model="form.blindSize" placeholder="请输入尺寸"/>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="压力等级" prop="pressureRate">
-              <el-input v-model="form.pressureRate" placeholder="请输入压力等级"/>
-            </el-form-item>
-          </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="是否承压" prop="pressurized">
-              <el-input v-model="form.pressurized" placeholder="请输入是否承压"/>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="是否“8”字板" prop="figure">
-              <el-input v-model="form.figure" placeholder="请输入是否“8”字板"/>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="已经安装:" label-width="350px">
+            <el-form-item label="压力等级" prop="pressureRate">
+              <el-input v-model="form.pressureRate" placeholder="请输入压力等级"/>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="工艺操作人员" prop="inProcess">
-              <el-select v-model="form.inProcess" clearable filterable style="width: 100%;"
-                         placeholder="请选择工艺操作人员">
-                <el-option v-for="user in userOptions"
-                           :label="user.nickName"
-                           :value="user.userId+''"
-                           :key="user.userId"/>
-              </el-select>
+            <el-form-item label="盲板类型" prop="blindType">
+              <el-input v-model="form.blindType" placeholder="请输入盲板类型"/>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="设备/仪表协调员" prop="inCoordinator">
-              <el-select v-model="form.inCoordinator" clearable filterable style="width: 100%;"
-                         placeholder="请选择设备/仪表协调员">
-                <el-option v-for="user in userOptions"
-                           :label="user.nickName"
-                           :value="user.userId+''"
-                           :key="user.userId"/>
-              </el-select>
+            <el-form-item label="介质" prop="medium">
+              <el-input v-model="form.medium" placeholder="请输入介质"/>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="承包商" prop="inContractor">
-              <el-select v-model="form.inContractor" clearable filterable style="width: 100%;"
-                         placeholder="请选择承包商">
-                <el-option v-for="user in userOptions"
-                           :label="user.nickName"
-                           :value="user.userId+''"
-                           :key="user.userId"/>
-              </el-select>
+            <el-form-item label="“8”字盲板" prop="figure">
+              <el-input v-model="form.figure" placeholder="请输入是否“8”字板"/>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="片区盲板司令" prop="inConfirm1">
-              <el-select v-model="form.inConfirm1" clearable filterable style="width: 100%;"
-                         placeholder="请选择片区盲板司令">
-                <el-option v-for="user in userOptions"
-                           :label="user.nickName"
-                           :value="user.userId+''"
-                           :key="user.userId"/>
-              </el-select>
+            <el-form-item label="PID" prop="pidNo">
+              <el-input v-model="form.pidNo" placeholder="请输入P&ID图号"/>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="盲板总司令" prop="inConfirm2">
-              <el-select v-model="form.inConfirm2" clearable filterable style="width: 100%;"
-                         placeholder="请选择盲板总司令">
-                <el-option v-for="user in userOptions"
-                           :label="user.nickName"
-                           :value="user.userId+''"
-                           :key="user.userId"/>
-              </el-select>
+            <el-form-item label="位置" prop="location">
+              <el-input v-model="form.location" placeholder="请输入所在位置"/>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="已经拆除:" label-width="350px">
+            <el-form-item label="开车前状态" prop="startupStatus">
+              <el-radio label="盲" v-model="form.startupStatus">盲</el-radio>
+              <el-radio label="通" v-model="form.startupStatus">通</el-radio>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="工艺操作人员" prop="reProcess">
-              <el-select v-model="form.reProcess" clearable filterable style="width: 100%;"
-                         placeholder="请选择工艺操作人员">
-                <el-option v-for="user in userOptions"
-                           :label="user.nickName"
-                           :value="user.userId+''"
-                           :key="user.userId"/>
-              </el-select>
+            <el-form-item label="实际状态" prop="actualStatus">
+              <el-radio label="盲" v-model="form.actualStatus">盲</el-radio>
+              <el-radio label="通" v-model="form.actualStatus">通</el-radio>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="设备/仪表协调员" prop="reCoordinator">
-              <el-select v-model="form.reCoordinator" clearable filterable style="width: 100%;"
-                         placeholder="请选择设备/仪表协调员">
-                <el-option v-for="user in userOptions"
-                           :label="user.nickName"
-                           :value="user.userId+''"
-                           :key="user.userId"/>
-              </el-select>
+            <el-form-item label="是否满足" prop="satisfy">
+              <el-radio label="✔" v-model="form.satisfy">✔</el-radio>
+              <el-radio label="✖" v-model="form.satisfy">✖</el-radio>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="承包商" prop="reContractor">
-              <el-select v-model="form.reContractor" clearable filterable style="width: 100%;"
-                         placeholder="请选择承包商">
+            <el-form-item label="拆装人员" prop="inConfirm1">
+              <el-select v-model="form.inConfirm1" clearable filterable style="width: 100%;"
+                         placeholder="请选择拆装人员">
                 <el-option v-for="user in userOptions"
                            :label="user.nickName"
                            :value="user.userId+''"
@@ -445,9 +298,9 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="片区盲板司令" prop="reConfirm1">
-              <el-select v-model="form.reConfirm1" clearable filterable style="width: 100%;"
-                         placeholder="请选择片区盲板司令">
+            <el-form-item label="盲板总司令" prop="inConfirm2">
+              <el-select v-model="form.inConfirm2" clearable filterable style="width: 100%;"
+                         placeholder="请选择盲板司令">
                 <el-option v-for="user in userOptions"
                            :label="user.nickName"
                            :value="user.userId+''"
@@ -456,20 +309,11 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="盲板总司令" prop="reConfirm2">
-              <el-select v-model="form.reConfirm2" clearable filterable style="width: 100%;"
-                         placeholder="请选择盲板总司令">
-                <el-option v-for="user in userOptions"
-                           :label="user.nickName"
-                           :value="user.userId+''"
-                           :key="user.userId"/>
-              </el-select>
+            <el-form-item label="备注" prop="remarks">
+              <el-input v-model="form.remarks" placeholder="请输入备注"/>
             </el-form-item>
           </el-col>
         </el-row>
-        <el-form-item label="备注" prop="remarks">
-          <el-input v-model="form.remarks" placeholder="请输入备注"/>
-        </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -478,105 +322,7 @@
     </el-dialog>
     <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="approveOpen" width="60%" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="150px">
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="单元/系统号" prop="unitNo">
-              <el-input v-model="form.unitNo" placeholder="请输入单元/系统号" disabled/>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="P&ID图号" prop="pidNo">
-              <el-input v-model="form.pidNo" placeholder="请输入P&ID图号" disabled/>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="管线号" prop="pipelineNo">
-              <el-input v-model="form.pipelineNo" placeholder="请输入管线号" disabled/>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="介质" prop="medium">
-              <el-input v-model="form.medium" placeholder="请输入介质" disabled/>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="隔离/盲板编号" prop="blindNo">
-              <el-input v-model="form.blindNo" placeholder="请输入隔离/盲板编号" disabled/>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="所在位置" prop="location">
-              <el-input v-model="form.location" placeholder="请输入所在位置" disabled/>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="隔离类型" prop="isoType">
-              <el-input v-model="form.isoType" placeholder="请输入隔离类型" disabled/>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="被隔离设备/管线位号" prop="tagNo">
-              <el-input v-model="form.tagNo" placeholder="请输入被隔离设备/管线位号" disabled/>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="尺寸" prop="blindSize">
-              <el-input v-model="form.blindSize" placeholder="请输入尺寸" disabled/>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="压力等级" prop="pressureRate">
-              <el-input v-model="form.pressureRate" placeholder="请输入压力等级" disabled/>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="是否承压" prop="pressurized">
-              <el-input v-model="form.pressurized" placeholder="请输入是否承压" disabled/>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="是否“8”字板" prop="figure">
-              <el-input v-model="form.figure" placeholder="请输入是否“8”字板" disabled/>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="安装时间" prop="installDate">
-              <el-date-picker clearable size="small" style="width: 200px"
-                              v-model="form.installDate"
-                              :disabled="!isApprove==4"
-                              type="date"
-                              value-format="yyyy-MM-dd"
-                              placeholder="选择安装时间">
-              </el-date-picker>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="拆装时间" prop="removedDate">
-              <el-date-picker clearable size="small" style="width: 200px"
-                              v-model="form.removedDate"
-                              type="date"
-                              :disabled="!isApprove==5"
-                              value-format="yyyy-MM-dd"
-                              placeholder="选择拆装时间">
-              </el-date-picker>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-form-item label="备注" prop="remarks">
-          <el-input v-model="form.remarks" placeholder="请输入备注"/>
-        </el-form-item>
+
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -726,6 +472,10 @@ export default {
         createdate: null,
         updaterCode: null,
         updatedate: null,
+        blindType: null,
+        startupStatus: null,
+        actualStatus: null,
+        satisfy: null,
         deptId: null,
         remarks: null
       },
@@ -733,16 +483,8 @@ export default {
       form: {},
       // 表单校验
       rules: {
-        inProcess: [{required: true, message: "人员不可为空", trigger: "blur"}],
-        inCoordinator: [{required: true, message: "人员不可为空", trigger: "blur"}],
-        inContractor: [{required: true, message: "人员不可为空", trigger: "blur"}],
         inConfirm1: [{required: true, message: "人员不可为空", trigger: "blur"}],
         inConfirm2: [{required: true, message: "人员不可为空", trigger: "blur"}],
-        reProcess: [{required: true, message: "人员不可为空", trigger: "blur"}],
-        reCoordinator: [{required: true, message: "人员不可为空", trigger: "blur"}],
-        reContractor: [{required: true, message: "人员不可为空", trigger: "blur"}],
-        reConfirm1: [{required: true, message: "人员不可为空", trigger: "blur"}],
-        reConfirm2: [{required: true, message: "人员不可为空", trigger: "blur"}],
       }
     };
   },
@@ -814,7 +556,7 @@ export default {
       let data = {
         ids: this.ids,
         subId: this.subId,
-        taskType: this.isApprove == 4 ? 0 : 1
+        taskType: this.isApprove
       }
       handleConfirmApprove(data).then(res => {
         this.msgSuccess("确认成功");
@@ -878,6 +620,10 @@ export default {
         updaterCode: null,
         updatedate: null,
         deptId: null,
+        blindType: null,
+        startupStatus: null,
+        actualStatus: null,
+        satisfy: null,
         remarks: null
       };
       this.resetForm("form");

+ 295 - 329
ui/src/views/pssr/nitrogen/index.vue

@@ -1,42 +1,6 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="内容表id" prop="subId">
-        <el-input
-          v-model="queryParams.subId"
-          placeholder="请输入内容表id"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="审批id" prop="approveId">
-        <el-input
-          v-model="queryParams.approveId"
-          placeholder="请输入审批id"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="系统名称" prop="systemName">
-        <el-input
-          v-model="queryParams.systemName"
-          placeholder="请输入系统名称"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="采样日期" prop="samplingDate">
-        <el-input
-          v-model="queryParams.samplingDate"
-          placeholder="请输入采样日期"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
       <el-form-item label="样品名称" prop="sampleName">
         <el-input
           v-model="queryParams.sampleName"
@@ -46,101 +10,9 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="氧气" prop="oxygen">
-        <el-input
-          v-model="queryParams.oxygen"
-          placeholder="请输入氧气"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="步骤状态" prop="standard">
-        <el-input
-          v-model="queryParams.standard"
-          placeholder="请输入步骤状态"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="确认人1" prop="confirm1">
-        <el-input
-          v-model="queryParams.confirm1"
-          placeholder="请输入确认人1"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="确认人2" prop="confirm2">
-        <el-input
-          v-model="queryParams.confirm2"
-          placeholder="请输入确认人2"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="确认时间" prop="confirmationDate">
-        <el-date-picker clearable size="small" style="width: 200px"
-          v-model="queryParams.confirmationDate"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="选择确认时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="创建人" prop="createrCode">
-        <el-input
-          v-model="queryParams.createrCode"
-          placeholder="请输入创建人"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="创建时间" prop="createdate">
-        <el-date-picker clearable size="small" style="width: 200px"
-          v-model="queryParams.createdate"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="选择创建时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="修改人" prop="updaterCode">
-        <el-input
-          v-model="queryParams.updaterCode"
-          placeholder="请输入修改人"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="修改时间" prop="updatedate">
-        <el-date-picker clearable size="small" style="width: 200px"
-          v-model="queryParams.updatedate"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="选择修改时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="部门编号" prop="deptId">
-        <el-input
-          v-model="queryParams.deptId"
-          placeholder="请输入部门编号"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="备注" prop="remarks">
-        <el-input
-          v-model="queryParams.remarks"
-          placeholder="请输入备注"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
+      <el-form-item label="合格" prop="standard">
+        <el-radio label="是" v-model="queryParams.standard">是</el-radio>
+        <el-radio label="否" v-model="queryParams.standard">否</el-radio>
       </el-form-item>
       <el-form-item>
         <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -156,7 +28,9 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['pssr:nitrogen:add']"
-        >新增</el-button>
+          v-if="isApprove==0"
+        >新增
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -166,7 +40,9 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['pssr:nitrogen:edit']"
-        >修改</el-button>
+          v-if="isApprove==0"
+        >修改
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -176,17 +52,21 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['pssr:nitrogen:remove']"
-        >删除</el-button>
+          v-if="isApprove==0"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="info"
+          icon="el-icon-upload2"
+          size="mini"
+          @click="handleImport"
+          v-hasPermi="['pssr:nitrogen:edit']"
+          v-if="isApprove==0"
+        >导入
+        </el-button>
       </el-col>
-        <el-col :span="1.5">
-            <el-button
-                    type="info"
-                    icon="el-icon-upload2"
-                    size="mini"
-                    @click="handleImport"
-                    v-hasPermi="['pssr:nitrogen:edit']"
-            >导入</el-button>
-        </el-col>
       <el-col :span="1.5">
         <el-button
           type="warning"
@@ -194,43 +74,87 @@
           size="mini"
           @click="handleExport"
           v-hasPermi="['pssr:nitrogen:export']"
-        >导出</el-button>
+          v-if="isApprove==0"
+        >导出
+        </el-button>
       </el-col>
-	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-s-promotion"
+          size="mini"
+          @click="handleApprove"
+          v-if="isApprove==0"
+          v-hasPermi="['pssr:nitrogen:edit']"
+        >发起审批
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-check"
+          size="mini"
+          v-if="isApprove==4||isApprove==5"
+          @click="handleConfirmApprove"
+          v-hasPermi="['pssr:nitrogen:edit']"
+        >确认
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-refresh-left"
+          size="mini"
+          v-if="isApprove==2"
+          :disabled="multiple"
+          @click="handleTurnDown"
+          v-hasPermi="['pssr:nitrogen:edit']"
+        >驳回
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="nitrogenList" @selection-change="handleSelectionChange" :height="clientHeight" border>
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="唯一标识ID" align="center" prop="id" :show-overflow-tooltip="true"/>
-      <el-table-column label="内容表id" align="center" prop="subId" :show-overflow-tooltip="true"/>
-      <el-table-column label="审批id" align="center" prop="approveId" :show-overflow-tooltip="true"/>
+    <div style="width: 100%;text-align: center;margin-bottom: 15px">
+      <h2>系统采样分析确认清单</h2>
+      <br>
+      <span>系统采用N2吹扫,置换后根据需要对单元系统采样分析,O2<0.2%为合格。如不合格立即联系相关负责人采取措施进行整改。</span>
+    </div>
+
+    <el-table v-loading="loading" :data="nitrogenList" @selection-change="handleSelectionChange" :height="clientHeight"
+              border>
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="审批状态" align="center" prop="approveStatus" :show-overflow-tooltip="true" width="105">
+        <template slot-scope="scope">
+          <el-tag v-if="scope.row.approveStatus==0">未审批</el-tag>
+          <el-tag v-if="scope.row.approveStatus==1" type="warning">待确认</el-tag>
+          <el-tag v-if="scope.row.approveStatus==3" type="success">已确认1</el-tag>
+          <el-tag v-if="scope.row.approveStatus==2" type="success">已确认2</el-tag>
+        </template>
+      </el-table-column>
       <el-table-column label="系统名称" align="center" prop="systemName" :show-overflow-tooltip="true"/>
       <el-table-column label="采样日期" align="center" prop="samplingDate" :show-overflow-tooltip="true"/>
       <el-table-column label="样品名称" align="center" prop="sampleName" :show-overflow-tooltip="true"/>
-      <el-table-column label="氧气" align="center" prop="oxygen" :show-overflow-tooltip="true"/>
-      <el-table-column label="步骤状态" align="center" prop="standard" :show-overflow-tooltip="true"/>
-      <el-table-column label="确认人1" align="center" prop="confirm1" :show-overflow-tooltip="true"/>
-      <el-table-column label="确认人2" align="center" prop="confirm2" :show-overflow-tooltip="true"/>
-      <el-table-column label="确认时间" align="center" prop="confirmationDate" width="100">
+      <el-table-column label="氧气(%vol)" align="center" prop="oxygen" :show-overflow-tooltip="true"/>
+      <el-table-column label="合格" align="center" prop="standard" :show-overflow-tooltip="true"/>
+      <el-table-column label="确认人1" align="center" prop="confirm1" :show-overflow-tooltip="true">
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.confirmationDate, '{y}-{m}-{d}') }}</span>
+          <span>{{ userFormat(scope.row.confirm1) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="创建人" align="center" prop="createrCode" :show-overflow-tooltip="true"/>
-      <el-table-column label="创建时间" align="center" prop="createdate" width="100">
+      <el-table-column label="确认人2" align="center" prop="confirm2" :show-overflow-tooltip="true">
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.createdate, '{y}-{m}-{d}') }}</span>
+          <span>{{ userFormat(scope.row.confirm2) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="修改人" align="center" prop="updaterCode" :show-overflow-tooltip="true"/>
-      <el-table-column label="修改时间" align="center" prop="updatedate" width="100">
+      <el-table-column label="确认时间" align="center" prop="confirmationDate" width="100">
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.updatedate, '{y}-{m}-{d}') }}</span>
+          <span>{{ parseTime(scope.row.confirmationDate, '{y}-{m}-{d}') }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="部门编号" align="center" prop="deptId" :show-overflow-tooltip="true"/>
       <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true"/>
-      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+      <el-table-column label="操作" align="center" fixed="right" v-if="isApprove==0" width="120"
+                       class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -238,14 +162,16 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['pssr:nitrogen:edit']"
-          >修改</el-button>
+          >修改
+          </el-button>
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['pssr:nitrogen:remove']"
-          >删除</el-button>
+          >删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -261,125 +187,110 @@
     <!-- 添加或修改系统氮气置换对话框 -->
     <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="内容表id" prop="subId">
-          <el-input v-model="form.subId" placeholder="请输入内容表id" />
-        </el-form-item>
-        <el-form-item label="审批id" prop="approveId">
-          <el-input v-model="form.approveId" placeholder="请输入审批id" />
-        </el-form-item>
         <el-form-item label="系统名称" prop="systemName">
-          <el-input v-model="form.systemName" placeholder="请输入系统名称" />
+          <el-input v-model="form.systemName" placeholder="请输入系统名称"/>
         </el-form-item>
         <el-form-item label="采样日期" prop="samplingDate">
-          <el-input v-model="form.samplingDate" placeholder="请输入采样日期" />
+          <el-date-picker clearable size="small" style="width: 200px"
+                          v-model="form.samplingDate"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择采样日期">
+          </el-date-picker>
         </el-form-item>
         <el-form-item label="样品名称" prop="sampleName">
-          <el-input v-model="form.sampleName" placeholder="请输入样品名称" />
+          <el-input v-model="form.sampleName" placeholder="请输入样品名称"/>
         </el-form-item>
         <el-form-item label="氧气" prop="oxygen">
-          <el-input v-model="form.oxygen" placeholder="请输入氧气" />
+          <el-input v-model="form.oxygen" placeholder="请输入氧气"/>
         </el-form-item>
-        <el-form-item label="步骤状态" prop="standard">
-          <el-input v-model="form.standard" placeholder="请输入步骤状态" />
+        <el-form-item label="合格" prop="standard">
+          <el-radio label="是" v-model="form.standard">是</el-radio>
+          <el-radio label="否" v-model="form.standard">否</el-radio>
         </el-form-item>
         <el-form-item label="确认人1" prop="confirm1">
-          <el-input v-model="form.confirm1" placeholder="请输入确认人1" />
+          <el-select v-model="form.confirm1" filterable placeholder="请选择确认人2">
+            <el-option v-for="user in userOptions"
+                       :label="user.nickName"
+                       :value="user.userId+''"
+                       :key="user.userId"/>
+          </el-select>
         </el-form-item>
         <el-form-item label="确认人2" prop="confirm2">
-          <el-input v-model="form.confirm2" placeholder="请输入确认人2" />
-        </el-form-item>
-        <el-form-item label="确认时间" prop="confirmationDate">
-          <el-date-picker clearable size="small" style="width: 200px"
-            v-model="form.confirmationDate"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="选择确认时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="删除状态" prop="delFlag">
-          <el-input v-model="form.delFlag" placeholder="请输入删除状态" />
-        </el-form-item>
-        <el-form-item label="创建人" prop="createrCode">
-          <el-input v-model="form.createrCode" placeholder="请输入创建人" />
-        </el-form-item>
-        <el-form-item label="创建时间" prop="createdate">
-          <el-date-picker clearable size="small" style="width: 200px"
-            v-model="form.createdate"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="选择创建时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="修改人" prop="updaterCode">
-          <el-input v-model="form.updaterCode" placeholder="请输入修改人" />
-        </el-form-item>
-        <el-form-item label="修改时间" prop="updatedate">
-          <el-date-picker clearable size="small" style="width: 200px"
-            v-model="form.updatedate"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="选择修改时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="部门编号" prop="deptId">
-          <el-input v-model="form.deptId" placeholder="请输入部门编号" />
+          <el-select v-model="form.confirm2" filterable placeholder="请选择确认人2">
+            <el-option v-for="user in userOptions"
+                       :label="user.nickName"
+                       :value="user.userId+''"
+                       :key="user.userId"/>
+          </el-select>
         </el-form-item>
         <el-form-item label="备注" prop="remarks">
-          <el-input v-model="form.remarks" placeholder="请输入备注" />
+          <el-input v-model="form.remarks" placeholder="请输入备注"/>
         </el-form-item>
-          <el-form-item label="归属部门" prop="deptId">
-              <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
-          </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
-      <!-- 用户导入对话框 -->
-      <el-dialog :close-on-click-modal="false" :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
-          <el-upload
-                  ref="upload"
-                  :limit="1"
-                  accept=".xlsx, .xls"
-                  :headers="upload.headers"
-                  :action="upload.url + '?updateSupport=' + upload.updateSupport"
-                  :disabled="upload.isUploading"
-                  :on-progress="handleFileUploadProgress"
-                  :on-success="handleFileSuccess"
-                  :auto-upload="false"
-                  drag
-          >
-              <i class="el-icon-upload"></i>
-              <div class="el-upload__text">
-                  将文件拖到此处,或
-                  <em>点击上传</em>
-              </div>
-              <div class="el-upload__tip" slot="tip">
-                  <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
-                  <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
-              </div>
-              <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
-          </el-upload>
-          <div slot="footer" class="dialog-footer">
-              <el-button type="primary" @click="submitFileForm">确 定</el-button>
-              <el-button @click="upload.open = false">取 消</el-button>
-          </div>
-      </el-dialog>
+    <!-- 用户导入对话框 -->
+    <el-dialog :close-on-click-modal="false" :title="upload.title" :visible.sync="upload.open" width="400px"
+               append-to-body>
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          将文件拖到此处,或
+          <em>点击上传</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          <el-checkbox v-model="upload.updateSupport"/>
+          是否更新已经存在的用户数据
+          <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+        </div>
+        <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-import { listNitrogen, getNitrogen, delNitrogen, addNitrogen, updateNitrogen, exportNitrogen, importTemplate} from "@/api/pssr/nitrogen";
-import { treeselect } from "@/api/system/dept";
-import { getToken } from "@/utils/auth";
+import {
+  addNitrogen,
+  delNitrogen,
+  exportNitrogen,
+  getNitrogen,
+  handleConfirmNitrogen,
+  handleTurnDownNitrogen,
+  importTemplate,
+  listNitrogen,
+  updateNitrogen
+} from "@/api/pssr/nitrogen";
+import {treeselect} from "@/api/system/dept";
+import {getToken} from "@/utils/auth";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import {doApprove} from "@/api/pssr/approve";
+import {listUserNoPage} from "@/api/system/user";
 
 export default {
-  dicts:['pssr_approve_status'],
+  dicts: ['pssr_approve_status'],
   name: "Nitrogen",
-  components: { Treeselect },
+  components: {Treeselect},
   props: {
     subId: {
       type: Number,
@@ -392,6 +303,7 @@ export default {
   },
   data() {
     return {
+      userOptions: [],
       // 遮罩层
       loading: true,
       // 选中数组
@@ -410,24 +322,24 @@ export default {
       title: "",
       // 部门树选项
       deptOptions: undefined,
-      clientHeight:300,
+      clientHeight: 300,
       // 是否显示弹出层
       open: false,
-        // 用户导入参数
-        upload: {
-            // 是否显示弹出层(用户导入)
-            open: false,
-            // 弹出层标题(用户导入)
-            title: "",
-            // 是否禁用上传
-            isUploading: false,
-            // 是否更新已经存在的用户数据
-            updateSupport: 0,
-            // 设置上传的请求头部
-            headers: { Authorization: "Bearer " + getToken() },
-            // 上传的地址
-            url: process.env.VUE_APP_BASE_API + "/pssr/nitrogen/importData"
-        },
+      // 用户导入参数
+      upload: {
+        // 是否显示弹出层(用户导入)
+        open: false,
+        // 弹出层标题(用户导入)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        headers: {Authorization: "Bearer " + getToken()},
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/pssr/nitrogen/importData"
+      },
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -453,22 +365,31 @@ export default {
       form: {},
       // 表单校验
       rules: {
+        confirm1: [
+          {required: true, message: "确认人1不能为空", trigger: "change"}
+        ],
+        confirm2: [
+          {required: true, message: "确认人2不能为空", trigger: "change"}
+        ],
       }
     };
   },
   watch: {
-        // 根据名称筛选部门树
-        deptName(val) {
-            this.$refs.tree.filter(val);
-        }
-   },
+    // 根据名称筛选部门树
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
   created() {
-      //设置表格高度对应屏幕高度
-      this.$nextTick(() => {
-          this.clientHeight = document.body.clientHeight - 350
-      })
+    //设置表格高度对应屏幕高度
+    this.$nextTick(() => {
+      this.clientHeight = document.body.clientHeight - 350
+    })
     this.getList();
     this.getTreeselect();
+    listUserNoPage({}).then(res => {
+      this.userOptions = res.data
+    });
   },
   methods: {
     /** 查询系统氮气置换列表 */
@@ -480,12 +401,12 @@ export default {
         this.loading = false;
       });
     },
-     /** 查询部门下拉树结构 */
-     getTreeselect() {
-          treeselect().then(response => {
-              this.deptOptions = response.data;
-          });
-     },
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
     // 取消按钮
     cancel() {
       this.open = false;
@@ -528,7 +449,7 @@ export default {
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
     /** 新增按钮操作 */
@@ -571,56 +492,101 @@ export default {
     handleDelete(row) {
       const ids = row.id || this.ids;
       this.$confirm('是否确认删除?', "警告", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        }).then(function() {
-          return delNitrogen(ids);
-        }).then(() => {
-          this.getList();
-          this.msgSuccess("删除成功");
-        })
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function () {
+        return delNitrogen(ids);
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("删除成功");
+      })
     },
     /** 导出按钮操作 */
     handleExport() {
       const queryParams = this.queryParams;
       this.$confirm('是否确认导出所有系统氮气置换数据项?', "警告", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        }).then(function() {
-          return exportNitrogen(queryParams);
-        }).then(response => {
-          this.download(response.msg);
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function () {
+        return exportNitrogen(queryParams);
+      }).then(response => {
+        this.download(response.msg);
+      })
+    },
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = "用户导入";
+      this.upload.open = true;
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      importTemplate().then(response => {
+        this.download(response.msg);
+      });
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      this.$alert(response.msg, "导入结果", {dangerouslyUseHTMLString: true});
+      this.getList();
+    },
+    // 提交上传文件
+    submitFileForm() {
+      this.$refs.upload.submit();
+    },
+    //发起审批
+    handleApprove() {
+      doApprove(this.subId).then(res => {
+        this.msgSuccess("已发起确认流程");
+      })
+    },
+    handleConfirmApprove() {
+      let data = {
+        ids: this.ids,
+        subId: this.subId,
+        taskType: this.isApprove
+      }
+      handleConfirmNitrogen(data).then(res => {
+        this.msgSuccess("确认成功");
+        this.getList()
+        this.$emit('refreshHisList');
+      })
+    },
+    handleTurnDown(val) {
+      this.$prompt('请输入驳回原因', '提示', {
+        confirmButtonText: '确认驳回',
+        cancelButtonText: '取消',
+      }).then(({value}) => {
+        let data = {
+          ids: this.ids,
+          subId: this.subId,
+          remarks: value
+        }
+        handleTurnDownNitrogen(data).then(res => {
+          this.msgSuccess("驳回成功");
         })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '取消驳回'
+        });
+      });
     },
-      /** 导入按钮操作 */
-      handleImport() {
-          this.upload.title = "用户导入";
-          this.upload.open = true;
-      },
-      /** 下载模板操作 */
-      importTemplate() {
-          importTemplate().then(response => {
-              this.download(response.msg);
-          });
-      },
-      // 文件上传中处理
-      handleFileUploadProgress(event, file, fileList) {
-          this.upload.isUploading = true;
-      },
-      // 文件上传成功处理
-      handleFileSuccess(response, file, fileList) {
-          this.upload.open = false;
-          this.upload.isUploading = false;
-          this.$refs.upload.clearFiles();
-          this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
-          this.getList();
-      },
-      // 提交上传文件
-      submitFileForm() {
-          this.$refs.upload.submit();
+    userFormat(userId) {
+      for (let item of this.userOptions) {
+        if (item.userId == userId) {
+          return item.nickName
+        }
       }
+    },
   }
 };
 </script>