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

-PSSR巡检
-pssr经理审批
-巡检确认弹框bugfix
-导师带徒讲师确认

jiangbiao пре 7 месеци
родитељ
комит
e1c3ce35cc
74 измењених фајлова са 722 додато и 557 уклоњено
  1. 28 6
      master/src/main/java/com/ruoyi/project/ehs/controller/TApproveDangerController.java
  2. 54 5
      master/src/main/java/com/ruoyi/project/patrol/patrol/controller/TPatrolPlanController.java
  3. 1 1
      master/src/main/java/com/ruoyi/project/patrol/patrol/service/ITPatrolPlanService.java
  4. 3 3
      master/src/main/java/com/ruoyi/project/patrol/patrol/service/impl/TPatrolPlanServiceImpl.java
  5. 151 75
      master/src/main/java/com/ruoyi/project/pssr/controller/TPssrApproveController.java
  6. 47 29
      master/src/main/java/com/ruoyi/project/pssr/controller/TPssrPatrolController.java
  7. 10 1
      master/src/main/java/com/ruoyi/project/pssr/controller/TPssrSubcontentController.java
  8. 1 1
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFirstplanController.java
  9. 6 0
      ui/src/router/index.js
  10. 3 3
      ui/src/views/apply/offlinevalve/index.vue
  11. 105 0
      ui/src/views/approve/approveDetail/pssrMgrApprove-detail.vue
  12. 7 1
      ui/src/views/approve/myapprove/index.vue
  13. 33 24
      ui/src/views/approve/pending/index.vue
  14. 11 2
      ui/src/views/approve/taskdone/index.vue
  15. 1 1
      ui/src/views/patrol/commonuse/bicycle/index.vue
  16. 1 1
      ui/src/views/patrol/commonuse/cover/index.vue
  17. 1 1
      ui/src/views/patrol/commonuse/downspout/index.vue
  18. 1 1
      ui/src/views/patrol/commonuse/earplug/index.vue
  19. 1 1
      ui/src/views/patrol/commonuse/movement/index.vue
  20. 1 1
      ui/src/views/patrol/commonuse/pump/index.vue
  21. 1 1
      ui/src/views/patrol/commonuse/safetyBelt/index.vue
  22. 1 1
      ui/src/views/patrol/commonuse/tester/index.vue
  23. 1 1
      ui/src/views/patrol/commonuse/walkitTalkie/index.vue
  24. 1 1
      ui/src/views/patrol/dev/alarm/index.vue
  25. 1 1
      ui/src/views/patrol/dev/annihilator/index.vue
  26. 1 1
      ui/src/views/patrol/dev/bicycle/index.vue
  27. 1 1
      ui/src/views/patrol/dev/cabinet/index.vue
  28. 1 1
      ui/src/views/patrol/dev/cannon/index.vue
  29. 1 1
      ui/src/views/patrol/dev/cctv/index.vue
  30. 1 1
      ui/src/views/patrol/dev/cofferdam/index.vue
  31. 1 1
      ui/src/views/patrol/dev/cover/index.vue
  32. 1 1
      ui/src/views/patrol/dev/curtain/index.vue
  33. 1 1
      ui/src/views/patrol/dev/door/index.vue
  34. 1 1
      ui/src/views/patrol/dev/downspout/index.vue
  35. 1 1
      ui/src/views/patrol/dev/earplug/index.vue
  36. 1 1
      ui/src/views/patrol/dev/eyewash/index.vue
  37. 1 1
      ui/src/views/patrol/dev/hoseBox/index.vue
  38. 1 1
      ui/src/views/patrol/dev/movement/index.vue
  39. 1 1
      ui/src/views/patrol/dev/paga/index.vue
  40. 1 1
      ui/src/views/patrol/dev/postFire/index.vue
  41. 1 1
      ui/src/views/patrol/dev/pump/index.vue
  42. 1 1
      ui/src/views/patrol/dev/safetyBelt/index.vue
  43. 1 1
      ui/src/views/patrol/dev/sandbox/index.vue
  44. 1 1
      ui/src/views/patrol/dev/shield/index.vue
  45. 1 1
      ui/src/views/patrol/dev/sprinkler/index.vue
  46. 1 1
      ui/src/views/patrol/dev/standpipe/index.vue
  47. 1 1
      ui/src/views/patrol/dev/tester/index.vue
  48. 1 1
      ui/src/views/patrol/dev/walkieTalkie/index.vue
  49. 1 1
      ui/src/views/patrol/dev/weathervane/index.vue
  50. 1 1
      ui/src/views/patrol/emergency/cabinet/index.vue
  51. 1 1
      ui/src/views/patrol/emergency/cctv/index.vue
  52. 1 1
      ui/src/views/patrol/emergency/cofferdam/index.vue
  53. 1 1
      ui/src/views/patrol/emergency/eyewash/index.vue
  54. 1 1
      ui/src/views/patrol/emergency/paga/index.vue
  55. 1 1
      ui/src/views/patrol/fire/alarm/index.vue
  56. 1 1
      ui/src/views/patrol/fire/annihilator/index.vue
  57. 1 1
      ui/src/views/patrol/fire/cannon/index.vue
  58. 1 1
      ui/src/views/patrol/fire/curtain/index.vue
  59. 1 1
      ui/src/views/patrol/fire/door/index.vue
  60. 1 1
      ui/src/views/patrol/fire/hoseBox/index.vue
  61. 1 1
      ui/src/views/patrol/fire/postFire/index.vue
  62. 1 1
      ui/src/views/patrol/fire/sandbox/index.vue
  63. 1 1
      ui/src/views/patrol/fire/shield/index.vue
  64. 1 1
      ui/src/views/patrol/fire/sprinkler/index.vue
  65. 1 1
      ui/src/views/patrol/fire/standpipe/index.vue
  66. 1 1
      ui/src/views/patrol/fire/weathervane/index.vue
  67. 1 1
      ui/src/views/patrol/patrol/file/index.vue
  68. 1 1
      ui/src/views/patrol/patrol/main/index.vue
  69. 2 2
      ui/src/views/patrol/patrol/plan/index.vue
  70. 2 2
      ui/src/views/production/accident/index.vue
  71. 5 5
      ui/src/views/pssr/aboveall/index.vue
  72. 194 337
      ui/src/views/pssr/patrol/index.vue
  73. 4 5
      ui/src/views/pssr/subcontent/index.vue
  74. 1 1
      ui/src/views/pssr/subitem/index.vue

+ 28 - 6
master/src/main/java/com/ruoyi/project/ehs/controller/TApproveDangerController.java

@@ -33,8 +33,10 @@ import com.ruoyi.project.listener.RecorderTaskCreateListener;
 import com.ruoyi.project.listener.VerificationTaskCreateListener;
 import com.ruoyi.project.production.domain.TSaiApply;
 import com.ruoyi.project.production.service.ITSaiApplyService;
+import com.ruoyi.project.pssr.domain.TPssrAboveall;
 import com.ruoyi.project.pssr.domain.TPssrApprove;
 import com.ruoyi.project.pssr.domain.TPssrSubcontent;
+import com.ruoyi.project.pssr.service.ITPssrAboveallService;
 import com.ruoyi.project.pssr.service.ITPssrApproveService;
 import com.ruoyi.project.pssr.service.ITPssrSubcontentService;
 import com.ruoyi.project.reliability.domain.TKekaoApprove;
@@ -142,6 +144,8 @@ public class TApproveDangerController extends BaseController {
     private ITPssrApproveService tPssrApproveService;
     @Autowired
     private ITPssrSubcontentService tPssrSubcontentService;
+    @Autowired
+    private ITPssrAboveallService tPssrAboveallService;
 
     /**
      * 任务申请
@@ -347,10 +351,16 @@ public class TApproveDangerController extends BaseController {
                         TTsApprove t = tTsApproveService.selectTTsApproveById(Long.parseLong(pi.getBusinessKey()));
                         devProcess.setApNo(t.getApNo());
                         devProcess.setApproveObject(t);
-                    } else if (pi.getProcessDefinitionName().contains("PSSR")) {
+                    } else if (pi.getProcessDefinitionName().equals("PSSR装置经理审批")) {
+                        TPssrApprove t = tPssrApproveService.selectTPssrApproveById(Long.parseLong(pi.getBusinessKey()));
+                        TPssrAboveall tPssrAboveall = tPssrAboveallService.selectTPssrAboveallById(t.getAboveallId());
+                        devProcess.setProcessName(pi.getProcessDefinitionName()+"_"+tPssrAboveall.getUnit());
+                        devProcess.setApNo(t.getApNo());
+                        devProcess.setApproveObject(t);
+                    } else if (pi.getProcessDefinitionName().contains("PSSR")&&!pi.getProcessDefinitionName().equals("PSSR装置经理审批")) {
                         TPssrApprove t = tPssrApproveService.selectTPssrApproveById(Long.parseLong(pi.getBusinessKey()));
                         TPssrSubcontent tPssrSubcontent = tPssrSubcontentService.selectTPssrSubcontentById(t.getSubId());
-                        devProcess.setProcessName(pi.getProcessDefinitionName()+"_"+tPssrSubcontent.getItem());
+                        devProcess.setProcessName(pi.getProcessDefinitionName()+"_"+tPssrSubcontent.getUnitDes()+"_"+tPssrSubcontent.getItem());
                         devProcess.setApNo(t.getApNo());
                         devProcess.setApproveObject(t);
                     }
@@ -496,10 +506,16 @@ public class TApproveDangerController extends BaseController {
                     TTsApprove t = tTsApproveService.selectTTsApproveById(Long.parseLong(pi.getBusinessKey()));
                     devTask.setApNo(t.getApNo());
                     devTask.setApproveObject(t);
-                } else if (pi.getProcessDefinitionName().contains("PSSR")) {
+                } else if (pi.getProcessDefinitionName().equals("PSSR装置经理审批")) {
+                    TPssrApprove t = tPssrApproveService.selectTPssrApproveById(Long.parseLong(pi.getBusinessKey()));
+                    TPssrAboveall tPssrAboveall = tPssrAboveallService.selectTPssrAboveallById(t.getAboveallId());
+                    devTask.setProcessName(pi.getProcessDefinitionName()+"_"+tPssrAboveall.getUnit());
+                    devTask.setApNo(t.getApNo());
+                    devTask.setApproveObject(t);
+                }  else if (pi.getProcessDefinitionName().contains("PSSR")&&!pi.getProcessDefinitionName().equals("PSSR装置经理审批")) {
                     TPssrApprove t = tPssrApproveService.selectTPssrApproveById(Long.parseLong(pi.getBusinessKey()));
                     TPssrSubcontent tPssrSubcontent = tPssrSubcontentService.selectTPssrSubcontentById(t.getSubId());
-                    devTask.setProcessName(pi.getProcessDefinitionName()+"_"+tPssrSubcontent.getItem());
+                    devTask.setProcessName(pi.getProcessDefinitionName()+"_"+tPssrSubcontent.getUnitDes()+"_"+tPssrSubcontent.getItem());
                     devTask.setApNo(t.getApNo());
                     devTask.setApproveObject(t);
                 }
@@ -644,10 +660,16 @@ public class TApproveDangerController extends BaseController {
                     devProcess.setApNo(t.getApNo());
                     devProcess.setApName(user.getNickName());
                     devProcess.setApproveObject(t);
-                } else if (pi.getProcessDefinitionName().contains("PSSR")) {
+                } else if (pi.getProcessDefinitionName().equals("PSSR装置经理审批")) {
+                    TPssrApprove t = tPssrApproveService.selectTPssrApproveById(Long.parseLong(pi.getBusinessKey()));
+                    TPssrAboveall tPssrAboveall = tPssrAboveallService.selectTPssrAboveallById(t.getAboveallId());
+                    devProcess.setProcessName(pi.getProcessDefinitionName()+"_"+tPssrAboveall.getUnit());
+                    devProcess.setApNo(t.getApNo());
+                    devProcess.setApproveObject(t);
+                }  else if (pi.getProcessDefinitionName().contains("PSSR")&&!pi.getProcessDefinitionName().equals("PSSR装置经理审批")) {
                     TPssrApprove t = tPssrApproveService.selectTPssrApproveById(Long.parseLong(pi.getBusinessKey()));
                     TPssrSubcontent tPssrSubcontent = tPssrSubcontentService.selectTPssrSubcontentById(t.getSubId());
-                    devProcess.setProcessName(pi.getProcessDefinitionName()+"_"+tPssrSubcontent.getItem());
+                    devProcess.setProcessName(pi.getProcessDefinitionName()+"_"+tPssrSubcontent.getUnitDes()+"_"+tPssrSubcontent.getItem());
                     SysUser user = sysUserService.selectUserById(Long.valueOf(t.getCreaterCode()));
                     devProcess.setApName(user.getNickName());
                     devProcess.setApNo(t.getApNo());

+ 54 - 5
master/src/main/java/com/ruoyi/project/patrol/patrol/controller/TPatrolPlanController.java

@@ -19,6 +19,11 @@ import com.ruoyi.project.patrol.patrol.domain.TPatrolPlan;
 import com.ruoyi.project.patrol.patrol.service.ITPatrolIssuesService;
 import com.ruoyi.project.patrol.patrol.service.ITPatrolMainService;
 import com.ruoyi.project.patrol.patrol.service.ITPatrolPlanService;
+import com.ruoyi.project.pssr.controller.TPssrApproveController;
+import com.ruoyi.project.pssr.domain.TPssrApprove;
+import com.ruoyi.project.pssr.domain.TPssrPatrol;
+import com.ruoyi.project.pssr.service.ITPssrPatrolService;
+import com.ruoyi.project.pssr.service.ITPssrSubcontentService;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -128,6 +133,15 @@ public class TPatrolPlanController extends BaseController {
     @Autowired
     private ISysUserService sysUserService;
 
+    @Autowired
+    private ITPssrPatrolService tPssrPatrolService;
+
+    @Autowired
+    private ITPssrSubcontentService tPssrSubcontentService;
+
+    @Autowired
+    private TPssrApproveController tPssrApproveController;
+
     /**
      * 查询检查计划列表
      */
@@ -140,7 +154,7 @@ public class TPatrolPlanController extends BaseController {
         for (TPatrolPlan plan : list) {
             if (StringUtils.isNotEmpty(plan.getConfirmed())) {
                 SysUser sysUser = sysUserService.selectUserById(Long.valueOf(plan.getConfirmed()));
-                if(sysUser!=null)
+                if (sysUser != null)
                     plan.setConfirmed(sysUser.getNickName());
             }
         }
@@ -163,7 +177,7 @@ public class TPatrolPlanController extends BaseController {
     public AjaxResult export(TPatrolPlan tPatrolPlan) {
         List<TPatrolPlan> list = tPatrolPlanService.selectTPatrolPlanList(tPatrolPlan);
         ExcelUtil<TPatrolPlan> util = new ExcelUtil<TPatrolPlan>(TPatrolPlan.class);
-        return util.exportExcel(list,  "检查计划数据");
+        return util.exportExcel(list, "检查计划数据");
     }
 
     /**
@@ -183,7 +197,11 @@ public class TPatrolPlanController extends BaseController {
     @Log(title = "检查计划", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody TPatrolPlan tPatrolPlan) {
-        return tPatrolPlanService.add(tPatrolPlan, String.valueOf(getUserId()));
+        TPatrolPlan add = tPatrolPlanService.add(tPatrolPlan, String.valueOf(getUserId()));
+        if (add != null)
+            return AjaxResult.success();
+        else
+            return AjaxResult.error("创建计划失败!");
     }
 
     /**
@@ -213,7 +231,38 @@ public class TPatrolPlanController extends BaseController {
             tPatrolMain.setPatrolType(tPatrolPlan.getPatrolType());
             updatePatrolMain(tPatrolPlan, tPatrolMain);
             updateDevices(tPatrolPlan);
-            return toAjax(tPatrolPlanService.updateTPatrolPlan(tPatrolPlan));
+            int i = tPatrolPlanService.updateTPatrolPlan(tPatrolPlan);
+            try {
+                // 确认计划如果有关联的pssr巡检,修改pssr巡检状态
+                TPssrPatrol tPssrPatrol = new TPssrPatrol();
+                tPssrPatrol.setPlanId(tPatrolPlan.getId());
+                Long subId = null;
+                for (TPssrPatrol pssrPatrol : tPssrPatrolService.selectTPssrPatrolList(tPssrPatrol)) {
+                    subId = pssrPatrol.getSubId();
+                    pssrPatrol.setPlanStatus(2L);
+                    pssrPatrol.setConfirmDate(new Date());
+                    pssrPatrol.setConfirmer(getUserId().toString());
+                    pssrPatrol.setUpdatedate(new Date());
+                    pssrPatrol.setUpdaterCode(getUserId().toString());
+                    tPssrPatrolService.updateTPssrPatrol(pssrPatrol);
+                }
+                tPssrPatrol = new TPssrPatrol();
+                tPssrPatrol.setSubId(subId);
+                boolean flag = true;
+                //当所有的pssr巡检都确认过后,发起申请
+                for (TPssrPatrol pssrPatrol : tPssrPatrolService.selectTPssrPatrolList(tPssrPatrol)) {
+                    if (pssrPatrol.getPlanStatus() != 2L) {
+                        flag = false;
+                        break;
+                    }
+                }
+                if (flag){
+                    tPssrApproveController.doApprove(subId);
+                }
+            } catch (Exception e) {
+                logger.error(e.getMessage(), e);
+            }
+            return toAjax(i);
         } else {
             return AjaxResult.error("有未检测的设施!请确认所有设施已检查后进行确认!");
         }
@@ -622,7 +671,7 @@ public class TPatrolPlanController extends BaseController {
             TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(id);
             if (tPatrolPlan.getPlanName().contains("固定计划")) {
                 return AjaxResult.error("固定计划不可删除!");
-            }else if (tPatrolPlan.getStatus()==1){
+            } else if (tPatrolPlan.getStatus() == 1) {
                 return AjaxResult.error("已确认的计划不可删除!");
             }
             switch (tPatrolPlan.getPatrolType()) {

+ 1 - 1
master/src/main/java/com/ruoyi/project/patrol/patrol/service/ITPatrolPlanService.java

@@ -36,7 +36,7 @@ public interface ITPatrolPlanService
      * @return 结果
      */
     public int insertTPatrolPlan(TPatrolPlan tPatrolPlan);
-    public AjaxResult add(TPatrolPlan tPatrolPlan,String userId);
+    public TPatrolPlan add(TPatrolPlan tPatrolPlan,String userId);
 
     /**
      * 修改检查计划

+ 3 - 3
master/src/main/java/com/ruoyi/project/patrol/patrol/service/impl/TPatrolPlanServiceImpl.java

@@ -225,7 +225,7 @@ public class TPatrolPlanServiceImpl implements ITPatrolPlanService {
     }
 
     @Override
-    public AjaxResult add(TPatrolPlan tPatrolPlan, String userId) {
+    public TPatrolPlan add(TPatrolPlan tPatrolPlan, String userId) {
         tPatrolPlan.setStatus(0L);
         if (insertTPatrolPlan(tPatrolPlan) > 0) {
             Calendar cd = Calendar.getInstance();
@@ -576,9 +576,9 @@ public class TPatrolPlanServiceImpl implements ITPatrolPlanService {
             tPatrolPlan.setDevNum(0L);
             tPatrolPlan.setUncheckedNum(0L);
             tPatrolPlan.setCheckedNum(0L);
-            return AjaxResult.success();
+            return tPatrolPlan;
         }
-        return AjaxResult.error("创建计划失败!");
+        return null;
     }
 
     private TFireAnnihilator getFireAnnihilator(TPatrolPlan tPatrolPlan, TDevAnnihilator annihilator, String userId) {

+ 151 - 75
master/src/main/java/com/ruoyi/project/pssr/controller/TPssrApproveController.java

@@ -155,68 +155,76 @@ public class TPssrApproveController extends BaseController {
         TPssrSubcontent tPssrSubcontent = tPssrSubcontentService.selectTPssrSubcontentById(subId);
         tPssrSubcontent.setApproveStatus(1L);
         tPssrSubcontentService.updateTPssrSubcontent(tPssrSubcontent);
-        switch (tPssrSubcontent.getSerialNumber()) {
-            case "01":
-                do01Approve(tPssrSubcontent);
+        switch (tPssrSubcontent.getForShort()) {
+            case "jxxm"://检修项目
+                doJxxmApprove(tPssrSubcontent);
                 break;
-            case "02":
+            case "kgfa"://开工方案
                 break;
-            case "03":
-                do03Approve(tPssrSubcontent);
+            case "sjbg"://设计变更
                 break;
-            case "04":
+            case "mb"://盲板
+                doMbApprove(tPssrSubcontent);
                 break;
-            case "05":
+            case "xcws"://现场卫生
                 break;
-            case "06":
+            case "rsfh"://人身防护
                 break;
-            case "07":
+            case "sbqjd"://设备清洁度
                 break;
-            case "08":
+            case "qm"://气密
                 break;
-            case "09":
+            case "sksgfmzt"://锁开锁关阀门状态
+                doSksgApprove(tPssrSubcontent);
                 break;
-            case "10":
+            case "sys"://实验室
                 break;
-            case "11":
+            case "dj"://短接
                 break;
-            case "12":
+            case "dqzh"://氮气置换
                 break;
-            case "13":
+            case "xqf"://消气防设施
+                doXqfApprove(tPssrSubcontent);
                 break;
-            case "14":
+            case "aqss"://安全设施
                 break;
-            case "15":
+            case "txjk"://通讯监控
                 break;
-            case "16":
+            case "bxsjcy"://便携式检测仪
                 break;
-            case "17":
-                do17Approve(tPssrSubcontent);
+            case "gygc"://公用工程
                 break;
-            case "18":
+            case "hbss"://环保设施
                 break;
-            case "19":
+            case "yfl"://原辅料
                 break;
-            case "20":
-                do20Approve(tPssrSubcontent);
+            case "jb"://机泵
                 break;
-            case "21":
+            case "zdj"://支吊架
                 break;
-            case "22":
+            case "tzsb"://特种设备
+                doTzsbApprove(tPssrSubcontent);
                 break;
-            case "23":
+            case "ybjy"://仪表校验
                 break;
-            case "24":
+            case "yblscs"://仪表联锁测试
                 break;
-            case "25":
+            case "bjlszqr"://报警联锁值确认
                 break;
-            case "26":
+            case "lsdy"://临时电源
                 break;
-            case "27":
+            case "djsb"://电机设备
                 break;
-            case "28":
+            case "zmdbr"://照明、电伴热
                 break;
-
+            case "jdjdkj"://静电接地、跨接
+                break;
+            case "qtjcy"://气体检测仪
+                break;
+            case "zxfxy"://在线分析仪
+                break;
+            default:
+                return AjaxResult.error("申请发起失败!");
         }
         return AjaxResult.success();
     }
@@ -295,63 +303,81 @@ public class TPssrApproveController extends BaseController {
     // pssr发起经理审批
     public void doMgrApprove(Long aboveallId) {
         String userId = getUserId().toString();
-        TPssrApprove approve = new TPssrApprove();
-        approve.setAboveallId(aboveallId);
-        approve.setApproveStatus(1L);
-        approve.setApNo(DateUtils.dateTimeNow() + userId);
-        approve.setApproveStatus(1L);
-        approve.setCreaterCode(userId);
-        approve.setCreatedate(new Date());
-        tPssrApproveService.insertTPssrApprove(approve);
-
         TPssrAboveall aboveall = tPssrAboveallService.selectTPssrAboveallById(aboveallId);
 
-
         TStaffmgr tStaffmgr = new TStaffmgr();
         tStaffmgr.setActualposts("24");//装置经理
         tStaffmgr.setDeptId(103L);
         for (SysUser user : userService.selectUserPost(tStaffmgr)) {
-            approve.setCbpMgr(user.getUserId());
-            approve.setPlantMgr(user.getUserId());
             aboveall.setPlantMgr(user.getUserId());
             aboveall.setConfirm(user.getUserId().toString());
         }
 
         tStaffmgr.setActualposts("40");//ctm经理
         for (SysUser user : userService.selectUserPost(tStaffmgr)) {
-            approve.setCtmMgr(user.getUserId());
             aboveall.setCtmMgr(user.getUserId());
         }
 
         tStaffmgr.setActualposts("42");//cta经理
         for (SysUser user : userService.selectUserPost(tStaffmgr)) {
-            approve.setCtaMgr(user.getUserId());
             aboveall.setCtaMgr(user.getUserId());
         }
         List<String> executor = new ArrayList<>();
-        executor.add(approve.getCbpMgr().toString());
-        executor.add(approve.getCtmMgr().toString());
-        executor.add(approve.getCtaMgr().toString());
-
-        tPssrApproveService.insertTPssrApprove(approve);
-        // 开始申请流程
-        long businessKey = approve.getApproveId();
-        //开始工作流、监听
-        Authentication.setAuthenticatedUserId(userId);//设置当前申请人
+        executor.add(aboveall.getPlantMgr().toString());
+        executor.add(aboveall.getCtmMgr().toString());
+        executor.add(aboveall.getCtaMgr().toString());
+
+        //设置当前申请人
         Map<String, Object> variables = new HashMap<>();
         variables.put("applyUser", userId);
         variables.put("allJlUsers", executor);
-        variables.put("jlUser", approve.getPlantMgr());
-        //采用key来启动流程定义并设置流程变量,返回流程实例
-        ProcessInstance pi = runtimeService.startProcessInstanceByKey("pssrMgrConfirm", String.valueOf(businessKey), variables);
-        approve.setProcessId(pi.getProcessInstanceId());
-        tPssrApproveService.updateTPssrApprove(approve);
+        variables.put("jlUser", aboveall.getPlantMgr());
+
+        TPssrApprove exist = tPssrApproveService.selectTPssrApproveByAboveallId(aboveallId);
+        if (exist == null) {
+
+            TPssrApprove approve = new TPssrApprove();
+            approve.setAboveallId(aboveallId);
+            approve.setApproveStatus(1L);
+            approve.setApNo(DateUtils.dateTimeNow() + userId);
+            approve.setApproveStatus(1L);
+            approve.setCreaterCode(userId);
+            approve.setCreatedate(new Date());
+            tPssrApproveService.insertTPssrApprove(approve);
+
+            // 开始申请流程
+            long businessKey = approve.getApproveId();
+            //开始工作流、监听
+            Authentication.setAuthenticatedUserId(userId);
+            //采用key来启动流程定义并设置流程变量,返回流程实例
+            ProcessInstance pi = runtimeService.startProcessInstanceByKey("pssrMgrConfirm", String.valueOf(businessKey), variables);
+            approve.setProcessId(pi.getProcessInstanceId());
+            tPssrApproveService.updateTPssrApprove(approve);
+
+        } else {
+            try {
+                runtimeService.deleteProcessInstance(exist.getProcessId(), "pssrMgrConfirm");
+                historyService.deleteHistoricProcessInstance(exist.getProcessId());
+            } catch (Exception e) {
+                logger.info("无运行时流程");
+            }
+
+            // 开始申请流程
+            long businessKey = exist.getApproveId();
+            //开始工作流、监听
+            Authentication.setAuthenticatedUserId(userId);
+            //采用key来启动流程定义并设置流程变量,返回流程实例
+            ProcessInstance pi = runtimeService.startProcessInstanceByKey("pssrMgrConfirm", String.valueOf(businessKey), variables);
+            exist.setProcessId(pi.getProcessInstanceId());
+            tPssrApproveService.updateTPssrApprove(exist);
+
+        }
         aboveall.setApproveStatus(1L);
         tPssrAboveallService.updateTPssrAboveall(aboveall);
     }
 
     @PutMapping("/handleMgrApprove")
-    public AjaxResult handleMgrApprove(DevTask devTask){
+    public AjaxResult handleMgrApprove(DevTask devTask) {
         TPssrApprove approve = devTask.gettPssrApprove();
         //使用任务服务完成任务(提交任务)
         String taskId = devTask.getTaskId();
@@ -366,21 +392,21 @@ public class TPssrApproveController extends BaseController {
         String condition = devTask.getCondition();
         TPssrAboveall aboveall = tPssrAboveallService.selectTPssrAboveallById(approve.getAboveallId());
 
-        if (taskName.equals("所有装置经理")){
-            if (condition.equals("0")){
-                if (aboveall.getPlantMgr()==getUserId()){
+        if (taskName.equals("所有装置经理")) {
+            if (condition.equals("0")) {
+                if (aboveall.getPlantMgr() == getUserId()) {
                     aboveall.setPlantConfirmdate(new Date());
-                } else if (aboveall.getCtmMgr()==getUserId()) {
+                } else if (aboveall.getCtmMgr() == getUserId()) {
                     aboveall.setCtmConfirmdate(new Date());
-                } else if (aboveall.getCtaMgr()==getUserId()) {
+                } else if (aboveall.getCtaMgr() == getUserId()) {
                     aboveall.setCtaConfirmdate(new Date());
                 }
             }
         }
-        if (taskName.equals("装置经理")){
-            if (condition.equals("0")){
+        if (taskName.equals("装置经理")) {
+            if (condition.equals("0")) {
                 aboveall.setApproveStatus(2L);
-            }else if (condition.equals("1")){
+            } else if (condition.equals("1")) {
                 aboveall.setApproveStatus(0L);
             }
         }
@@ -398,7 +424,7 @@ public class TPssrApproveController extends BaseController {
     }
 
     // 检修项目审批流程发起申请
-    public void do01Approve(TPssrSubcontent sub) {
+    public void doJxxmApprove(TPssrSubcontent sub) {
         String userId = getUserId().toString();
         //修改所有表的审批状态
         TPssrOverhaulExchanger exchanger = new TPssrOverhaulExchanger();
@@ -506,7 +532,7 @@ public class TPssrApproveController extends BaseController {
     }
 
     // 盲板审批流程发起申请
-    public void do03Approve(TPssrSubcontent sub) {
+    public void doMbApprove(TPssrSubcontent sub) {
         String userId = getUserId().toString();
         //修改状态
         TPssrBlind tPssrBlind = new TPssrBlind();
@@ -611,7 +637,7 @@ public class TPssrApproveController extends BaseController {
     }
 
     // 锁开锁关审批流程发起申请
-    public void do17Approve(TPssrSubcontent sub) {
+    public void doSksgApprove(TPssrSubcontent sub) {
         String userId = getUserId().toString();
         //修改状态
         TPssrLock tPssrLock = new TPssrLock();
@@ -699,7 +725,7 @@ public class TPssrApproveController extends BaseController {
     }
 
     // 管道审批流程发起申请
-    public void do20Approve(TPssrSubcontent sub) {
+    public void doTzsbApprove(TPssrSubcontent sub) {
         String userId = getUserId().toString();
         //修改状态
         TPssrPipe tPssrPipe = new TPssrPipe();
@@ -785,5 +811,55 @@ public class TPssrApproveController extends BaseController {
 
     }
 
+    //消气防审批流程发起申请
+    public void doXqfApprove(TPssrSubcontent sub) {
+        String userId = getUserId().toString();
+        TPssrApprove tPssrApprove = tPssrApproveService.selectTPssrApproveBySubId(sub.getId());
+        if (tPssrApprove == null) {
+            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);
+
+            // 开始申请流程
+            long businessKey = approve.getApproveId();
+            //开始工作流、监听
+            Authentication.setAuthenticatedUserId(userId);//设置当前申请人
+            Map<String, Object> variables = new HashMap<>();
+            variables.put("applyUser", userId);
+            variables.put("confirmUsers", new ArrayList<String>());
+            variables.put("chargePerson", sub.getConfirm());
+            //采用key来启动流程定义并设置流程变量,返回流程实例
+            ProcessInstance pi = runtimeService.startProcessInstanceByKey("pssr1confirm", String.valueOf(businessKey), variables);
+            approve.setProcessId(pi.getProcessInstanceId());
+            tPssrApproveService.updateTPssrApprove(approve);
+        } else {
+            try {
+                runtimeService.deleteProcessInstance(tPssrApprove.getProcessId(), "pssr1confirm");
+                historyService.deleteHistoricProcessInstance(tPssrApprove.getProcessId());
+            } catch (Exception e) {
+                logger.info("无运行时流程");
+            }
+
+            // 开始申请流程
+            long businessKey = tPssrApprove.getApproveId();
+            //开始工作流、监听
+            Authentication.setAuthenticatedUserId(userId);//设置当前申请人
+            Map<String, Object> variables = new HashMap<>();
+            variables.put("applyUser", userId);
+            variables.put("confirmUsers", new ArrayList<String>());
+            variables.put("chargePerson", sub.getConfirm());
+            //采用key来启动流程定义并设置流程变量,返回流程实例
+            ProcessInstance pi = runtimeService.startProcessInstanceByKey("pssr1confirm", String.valueOf(businessKey), variables);
+            tPssrApprove.setProcessId(pi.getProcessInstanceId());
+            tPssrApproveService.updateTPssrApprove(tPssrApprove);
+
+        }
+    }
+
 
 }

+ 47 - 29
master/src/main/java/com/ruoyi/project/pssr/controller/TPssrPatrolController.java

@@ -1,24 +1,24 @@
 package com.ruoyi.project.pssr.controller;
 
-import java.util.List;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
-import com.ruoyi.project.pssr.domain.TPssrPatrol;
-import com.ruoyi.project.pssr.service.ITPssrPatrolService;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolMain;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolPlan;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolMainService;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolPlanService;
+import com.ruoyi.project.pssr.domain.TPssrPatrol;
+import com.ruoyi.project.pssr.service.ITPssrPatrolService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
 
 /**
  * 巡检Controller
@@ -28,18 +28,20 @@ import com.ruoyi.framework.web.page.TableDataInfo;
  */
 @RestController
 @RequestMapping("/pssr/patrol")
-public class TPssrPatrolController extends BaseController
-{
+public class TPssrPatrolController extends BaseController {
     @Autowired
     private ITPssrPatrolService tPssrPatrolService;
+    @Autowired
+    private ITPatrolPlanService tPatrolPlanService;
+    @Autowired
+    private ITPatrolMainService tPatrolMainService;
 
     /**
      * 查询巡检列表
      */
     @PreAuthorize("@ss.hasPermi('pssr:patrol:list')")
     @GetMapping("/list")
-    public TableDataInfo list(TPssrPatrol tPssrPatrol)
-    {
+    public TableDataInfo list(TPssrPatrol tPssrPatrol) {
         startPage();
         List<TPssrPatrol> list = tPssrPatrolService.selectTPssrPatrolList(tPssrPatrol);
         return getDataTable(list);
@@ -51,8 +53,7 @@ public class TPssrPatrolController extends BaseController
     @PreAuthorize("@ss.hasPermi('pssr:patrol:export')")
     @Log(title = "巡检", businessType = BusinessType.EXPORT)
     @GetMapping("/export")
-    public AjaxResult export(TPssrPatrol tPssrPatrol)
-    {
+    public AjaxResult export(TPssrPatrol tPssrPatrol) {
         List<TPssrPatrol> list = tPssrPatrolService.selectTPssrPatrolList(tPssrPatrol);
         ExcelUtil<TPssrPatrol> util = new ExcelUtil<TPssrPatrol>(TPssrPatrol.class);
         return util.exportExcel(list, "patrol");
@@ -63,8 +64,7 @@ public class TPssrPatrolController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('pssr:patrol:query')")
     @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
         return AjaxResult.success(tPssrPatrolService.selectTPssrPatrolById(id));
     }
 
@@ -74,19 +74,38 @@ public class TPssrPatrolController extends BaseController
     @PreAuthorize("@ss.hasPermi('pssr:patrol:add')")
     @Log(title = "巡检", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody TPssrPatrol tPssrPatrol)
-    {
+    public AjaxResult add(@RequestBody TPssrPatrol tPssrPatrol) {
+        TPatrolPlan tPatrolPlan = new TPatrolPlan();
+        tPatrolPlan.setPatrolType(tPssrPatrol.getPlanType().toString());
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(new Date());
+        tPatrolPlan.setPlanYear((long) calendar.get(Calendar.YEAR));
+        tPatrolPlan.setPlanQuarter((long) calendar.get(Calendar.MONTH)+1);
+        tPatrolPlan.setPlanName(getPlanName(tPssrPatrol.getPlanType().toString(),calendar));
+        TPatrolPlan plan = tPatrolPlanService.add(tPatrolPlan, getUserId().toString());
+        tPssrPatrol.setPlanId(plan.getId());
+        tPssrPatrol.setApproveStatus(0L);
+        tPssrPatrol.setPlanStatus(1L);
         return toAjax(tPssrPatrolService.insertTPssrPatrol(tPssrPatrol));
     }
 
+    // 根据当年的巡检类型查询设备名称
+    private String getPlanName(String planType,Calendar calendar) {
+        TPatrolMain tPatrolMain = new TPatrolMain();
+        tPatrolMain.setPatrolType(planType);
+        tPatrolMain.setYear(String.valueOf(calendar.get(Calendar.YEAR)));
+        TPatrolMain main = tPatrolMainService.selectTPatrolMainList(tPatrolMain).get(0);
+        String planName = calendar.get(Calendar.YEAR) +"年-"+(calendar.get(Calendar.MONTH)+1) +"月-PSSR临时计划-"+main.getDevName();
+        return planName;
+    }
+
     /**
      * 修改巡检
      */
     @PreAuthorize("@ss.hasPermi('pssr:patrol:edit')")
     @Log(title = "巡检", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody TPssrPatrol tPssrPatrol)
-    {
+    public AjaxResult edit(@RequestBody TPssrPatrol tPssrPatrol) {
         return toAjax(tPssrPatrolService.updateTPssrPatrol(tPssrPatrol));
     }
 
@@ -95,9 +114,8 @@ public class TPssrPatrolController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('pssr:patrol:remove')")
     @Log(title = "巡检", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids)
-    {
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(tPssrPatrolService.deleteTPssrPatrolByIds(ids));
     }
 }

+ 10 - 1
master/src/main/java/com/ruoyi/project/pssr/controller/TPssrSubcontentController.java

@@ -58,6 +58,8 @@ public class TPssrSubcontentController extends BaseController {
     private ITPssrApproveService tPssrApproveService;
     @Autowired
     private SysUserServiceImpl sysUserService;
+    @Autowired
+    private TPssrApproveController tPssrApproveController;
 
     @Autowired
     private HistoryService historyService;
@@ -312,6 +314,13 @@ public class TPssrSubcontentController extends BaseController {
         return toAjax(tPssrSubcontentService.deleteTPssrSubcontentByIds(ids));
     }
 
+
+    /**
+     * 修改开车条件确认
+     */
+    @PreAuthorize("@ss.hasPermi('pssr:subcontent:edit')")
+    @Log(title = "开车条件确认", businessType = BusinessType.UPDATE)
+    @PutMapping("/handleApprove")
     public AjaxResult handleApprove(@RequestBody TPssrSubcontent tPssrSubcontent) {
         if (tPssrSubcontent.getIds() != null && tPssrSubcontent.getIds().size() > 0) {
             for (Long id : tPssrSubcontent.getIds()) {
@@ -363,7 +372,7 @@ public class TPssrSubcontentController extends BaseController {
                 condition = "1";
                 // 将选中的数据重新发起申请
                 for (Long id : tPssrSubcontent.getIds()) {
-                    new TPssrApproveController().doApprove(id);
+                    tPssrApproveController.doApprove(id);
                 }
             }
         }

+ 1 - 1
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFirstplanController.java

@@ -208,7 +208,7 @@ public class TTsFirstplanController extends BaseController {
             tTsFirstplan.setTrainerConfirm(getNickName());
 
 
-            TTsNew tsNew = tTsNewService.selectTTsNewById(tTsFirstplan.getNewId());
+            TTsNew tsNew = tTsNewService.selectTTsNewById(firstplan.getNewId());
             SysUser sysUser = new SysUser();
             SysUser staff = sysUserService.selectUserByStaffId(tsNew.getStaffId());
             jiGuangPushService.send("导师带徒-装置级培训", "讲师已确认您"+tTsFirstplan.getTopic()+"的成绩,请您确认成绩后继续下一项培训。", staff.getUserId().toString());

+ 6 - 0
ui/src/router/index.js

@@ -668,6 +668,12 @@ export const constantRoutes = [
         meta: { title: '开车条件检查项', noCache: true },
         hidden: true
       },
+      {
+        path: 'mgrApprove',
+        component: (resolve) => require(['@/views/approve/approveDetail/pssrMgrApprove-detail.vue'], resolve),
+        name: 'mgrApprove',
+        meta: { title: '经理审批流程', noCache: true }
+      }
     ]
   },
   {

+ 3 - 3
ui/src/views/apply/offlinevalve/index.vue

@@ -590,7 +590,7 @@ export default {
       this.executorList = response;
     });
     listUserByMgrRegion().then(response => {
-      this.confirmerList = response;
+      this.$confirmerList = response;
     });
     //设置表格高度对应屏幕高度
     this.$nextTick(() => {
@@ -657,7 +657,7 @@ export default {
       console.log(this.form.executorName)
     },
     getConfirmerName(userId) {
-      for (const item of this.confirmerList) {
+      for (const item of this.$confirmerList) {
         if (userId === item.userId) {
           this.form.confirmerName = item.nickName;
           break;
@@ -764,7 +764,7 @@ export default {
     },
     /** 新增按钮操作 */
     handleAdd() {
-      console.log(this.confirmerList)
+      console.log(this.$confirmerList)
       this.reset();
       this.open = true;
       this.title = "添加安全阀离线切出申请表";

+ 105 - 0
ui/src/views/approve/approveDetail/pssrMgrApprove-detail.vue

@@ -0,0 +1,105 @@
+<template>
+  <div>
+    <subcontent :aboveall-id="aboveallId"/>
+    <el-card shadow="always" class="mb20 mt20 mr20 m20">
+      <div slot="header" class="clearfix">
+        <span>流转详情</span>
+      </div>
+      <el-table :data="historyList" border v-loading="historyLoading" style="width: 100%;">
+        <el-table-column prop="taskName" header-align="center" align="center"
+                         :label="$t('流程进度')"></el-table-column>
+        <el-table-column prop="userName" header-align="center" align="center" :label="$t('姓名')"></el-table-column>
+        <el-table-column prop="taskCreateTime" header-align="center" align="center"
+                         :label="$t('开始时间')"></el-table-column>
+        <el-table-column prop="taskEndTime" header-align="center" align="center"
+                         :label="$t('结束时间')"></el-table-column>
+        <el-table-column prop="comment" header-align="center" align="center"
+                         :label="$t('审批意见')"></el-table-column>
+      </el-table>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import {getHistorylist} from "@/api/ehs/approvedanger";
+import {handlePssrApprove, listApprove} from "@/api/pssr/approve";
+import Subcontent from "@/views/pssr/subcontent/index.vue";
+
+export default {
+  name: "pssrMgrApprove-detail",
+  components: {Subcontent},
+  data() {
+    return {
+      //label样式
+      labelStyle: {'width': '200px'},
+      isApprove: 1,//0-显示新增等按钮;1-确认人查询(我的待办);2-28项负责人查询(我的待办);3-无按钮;4-确认人1;5-确认人2;6-确认人3;
+      //流转列表
+      historyList: [],
+      historyLoading: true,
+      submitDisabled: false,
+      taskName: '',
+      visible: false,
+      aboveallId: null,
+      sn: '',
+      taskForm: {
+        comment: '',
+        taskId: '',
+        processId: '',
+        condition: '',
+        taskName: '',
+        processName: '',
+        businessKey: '',
+        tPssrApprove: {}
+      },
+      devList: [],
+      dataForm: {},
+      form: {},
+      rules: {},
+      flag: false
+    }
+  },
+  created() {
+    console.log(this.$route)
+    this.init(this.$route.query.aboveallId,this.$route.query.taskId,this.$route.query.processId, this.$route.query.taskName)
+  },
+  methods: {
+    init(id, taskId, processId, taskName) {
+      this.aboveallId = id;
+      this.taskForm.taskId = taskId
+      this.taskForm.processId = processId
+      this.taskForm.taskName = taskName
+      console.log(this.sn)
+      this.visible = true;
+      this.getHistorylist();
+      listApprove({aboveallId: id}).then(res => {
+        this.taskForm.tPssrApprove = res.rows[0];
+        console.log(this.taskForm)
+      })
+      console.log(this.isApprove)
+    },
+    getHistorylist() {
+      getHistorylist({processId: this.taskForm.processId}).then(response => {
+        this.historyLoading = false
+        this.historyList = response.rows;
+      });
+    },
+    afterConfirm() {
+      this.visible = false;
+      this.$emit('refreshDataList')
+    },
+    dataFormSubmit(val) {
+      this.taskForm.condition = val;
+      handlePssrApprove(this.taskForm).then(res => {
+        this.msgSuccess("审核成功");
+        this.visible = false;
+        this.$emit('refreshDataList')
+      })
+    },
+  }
+
+}
+</script>
+
+<style scoped>
+
+</style>

+ 7 - 1
ui/src/views/approve/myapprove/index.vue

@@ -61,6 +61,7 @@
     <dsdt-training-detail v-if="dsdtTrainingDetailVisible" ref="dsdtTrainingDetail" @refreshDataList="getList"></dsdt-training-detail>
     <dsdt-nopass-detail v-if="dsdtNopassDetailVisible" ref="dsdtNopassDetail" @refreshDataList="getList"></dsdt-nopass-detail>
     <pssr-approve-detail v-if="pssrApproveDetailVisible" ref="pssrApproveDetail" @refreshDataList="getList"></pssr-approve-detail>
+    <pssr-mgr-approve-detail v-if="pssrMgrApproveDetailVisible" ref="pssrMgrApproveDetail" @refreshDataList="getList"></pssr-mgr-approve-detail>
 
   </div>
 </template>
@@ -85,10 +86,12 @@
   import DsdtTrainingDetail from "@/views/approve/approveDetail/dsdtTraining-detail.vue";
   import DsdtNopassDetail from "@/views/approve/approveDetail/dsdtNoPass-detail.vue";
   import PssrApproveDetail from "@/views/approve/approveDetail/pssrApprove-detail.vue";
+  import PssrMgrApproveDetail from "@/views/approve/approveDetail/pssrMgrApprove-detail.vue";
 
   export default {
     name: "Myapprove",
     components: {
+      PssrMgrApproveDetail,
       PssrApproveDetail,
       DsdtNopassDetail,
       DsdtTrainingDetail,
@@ -116,6 +119,7 @@
         dsdtTrainingDetailVisible: false,
         dsdtNopassDetailVisible: false,
         pssrApproveDetailVisible: false,
+        pssrMgrApproveDetailVisible: false,
         // 选中数组
         ids: [],
         // 非单个禁用
@@ -276,7 +280,9 @@
           this.$nextTick(() => {
             this.$refs.dsdtNopassDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
           })
-        } else if (row.processName.includes("PSSR")) {
+        } else if (row.processName.includes("PSSR装置经理审批")) {
+          this.$router.push({name: 'mgrApprove', query: {aboveallId:row.approveObject.aboveallId, taskId:row.taskId, processId:row.processId, taskName:row.taskName}});
+        } else if (row.processName.includes("PSSR") && !row.processName.includes("PSSR装置经理审批")) {
           this.pssrApproveDetailVisible = true
           this.$nextTick(() => {
             this.$refs.pssrApproveDetail.init(row.approveObject.subId, row.taskId, row.processId, row.taskName)

+ 33 - 24
ui/src/views/approve/pending/index.vue

@@ -136,36 +136,39 @@
     <dsdt-training-detail v-if="dsdtTrainingDetailVisible" ref="dsdtTrainingDetail" @refreshDataList="getList"></dsdt-training-detail>
     <dsdt-nopass-detail v-if="dsdtNopassDetailVisible" ref="dsdtNopassDetail" @refreshDataList="getList"></dsdt-nopass-detail>
     <pssr-approve-detail v-if="pssrApproveDetailVisible" ref="pssrApproveDetail" @refreshDataList="getList"></pssr-approve-detail>
+    <pssr-mgr-approve-detail v-if="pssrMgrApproveDetailVisible" ref="pssrMgrApproveDetail" @refreshDataList="getList"></pssr-mgr-approve-detail>
 
   </div>
 </template>
 
 <script>
-  import {getPendinglist, handleApprovedanger} from "@/api/ehs/approvedanger";
-  import AddOrUpdate from './spec-detail';
-  import SpecModify from './specModify-deal';
-  import SpecTrainingPlan from './specTrainingPlan-deal';
-  import IntactResolve from '../approveDetail/intact-resolve';
-  import Accident from '../approveaccidentDetail/index';
-  import ProcessImg from '../processImg/index';
-  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 SpecMaintenance from "@/views/approve/pending/specMaintenance-deal";
-  import KekaoResolve from '../approveDetail/kekao-resolve';
-  import InvoiceDetail from "@/views/approve/approveDetail/invoice-detail";
-  import OfflinevalveDetail from "@/views/approve/approveDetail/offlinevalve-detail";
-  import SafetychangeDetail from "@/views/approve/approveDetail/safetychange-detail";
-  import SaiApplyDetail from "@/views/approve/approveDetail/sai-apply-detail";
-  import SemsWeekCheckDetail from "@/views/approve/approveDetail/semsWeekCheck-detail";
-  import DsdtTrainingDetail from "@/views/approve/approveDetail/dsdtTraining-detail.vue";
-  import DsdtNopassDetail from "@/views/approve/approveDetail/dsdtNoPass-detail.vue";
-  import PssrApproveDetail from "@/views/approve/approveDetail/pssrApprove-detail.vue";
+import {getPendinglist, handleApprovedanger} from "@/api/ehs/approvedanger";
+import AddOrUpdate from './spec-detail';
+import SpecModify from './specModify-deal';
+import SpecTrainingPlan from './specTrainingPlan-deal';
+import IntactResolve from '../approveDetail/intact-resolve';
+import Accident from '../approveaccidentDetail/index';
+import ProcessImg from '../processImg/index';
+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 SpecMaintenance from "@/views/approve/pending/specMaintenance-deal";
+import KekaoResolve from '../approveDetail/kekao-resolve';
+import InvoiceDetail from "@/views/approve/approveDetail/invoice-detail";
+import OfflinevalveDetail from "@/views/approve/approveDetail/offlinevalve-detail";
+import SafetychangeDetail from "@/views/approve/approveDetail/safetychange-detail";
+import SaiApplyDetail from "@/views/approve/approveDetail/sai-apply-detail";
+import SemsWeekCheckDetail from "@/views/approve/approveDetail/semsWeekCheck-detail";
+import DsdtTrainingDetail from "@/views/approve/approveDetail/dsdtTraining-detail.vue";
+import DsdtNopassDetail from "@/views/approve/approveDetail/dsdtNoPass-detail.vue";
+import PssrApproveDetail from "@/views/approve/approveDetail/pssrApprove-detail.vue";
+import PssrMgrApproveDetail from "@/views/approve/approveDetail/pssrMgrApprove-detail.vue";
 
-  export default {
+export default {
     name: "Pending",
     components: {
+      PssrMgrApproveDetail,
       PssrApproveDetail,
       DsdtNopassDetail,
       DsdtTrainingDetail,
@@ -205,6 +208,7 @@
         dsdtTrainingDetailVisible: false,
         dsdtNopassDetailVisible: false,
         pssrApproveDetailVisible: false,
+        pssrMgrApproveDetailVisible: false,
         // 选中数组
         ids: [],
         // 非单个禁用
@@ -453,10 +457,15 @@
           this.$nextTick(() => {
             this.$refs.dsdtNopassDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
           })
-        }  else if (row.processName.includes('PSSR')) {
+        } else if (row.processName.includes("PSSR装置经理审批")) {
+          this.pssrMgrApproveDetailVisible = true
+          this.$nextTick(() => {
+            this.$refs.pssrMgrApproveDetail.init(row.approveObject.aboveallId, row.taskId, row.processId, row.taskName)
+          })
+        } else if (row.processName.includes("PSSR") && !row.processName.includes("PSSR装置经理审批")) {
           this.pssrApproveDetailVisible = true
           this.$nextTick(() => {
-            this.$refs.pssrApproveDetail.init(row.approveObject.subId, row.taskId, row.processId, row.taskName,row.processName)
+            this.$refs.pssrApproveDetail.init(row.approveObject.subId, row.taskId, row.processId, row.taskName)
           })
         } else {
           this.approveInfo = row;

+ 11 - 2
ui/src/views/approve/taskdone/index.vue

@@ -65,6 +65,7 @@
     <dsdt-training-detail v-if="dsdtTrainingDetailVisible" ref="dsdtTrainingDetail" @refreshDataList="getList"></dsdt-training-detail>
     <dsdt-nopass-detail v-if="dsdtNopassDetailVisible" ref="dsdtNopassDetail" @refreshDataList="getList"></dsdt-nopass-detail>
     <pssr-approve-detail v-if="pssrApproveDetailVisible" ref="pssrApproveDetail" @refreshDataList="getList"></pssr-approve-detail>
+    <pssr-mgr-approve-detail v-if="pssrMgrApproveDetailVisible" ref="pssrMgrApproveDetail" @refreshDataList="getList"></pssr-mgr-approve-detail>
 
   </div>
 </template>
@@ -90,10 +91,12 @@
   import DsdtTrainingDetail from "@/views/approve/approveDetail/dsdtTraining-detail.vue";
   import DsdtNopassDetail from "@/views/approve/approveDetail/dsdtNoPass-detail.vue";
   import PssrApproveDetail from "@/views/approve/approveDetail/pssrApprove-detail.vue";
+  import PssrMgrApproveDetail from "@/views/approve/approveDetail/pssrMgrApprove-detail.vue";
 
   export default {
     name: "Taskdone",
     components: {
+      PssrMgrApproveDetail,
       PssrApproveDetail,
       DsdtNopassDetail,
       DsdtTrainingDetail,
@@ -122,6 +125,7 @@
         dsdtTrainingDetailVisible: false,
         dsdtNopassDetailVisible: false,
         pssrApproveDetailVisible: false,
+        pssrMgrApproveDetailVisible: false,
         // 选中数组
         ids: [],
         // 非单个禁用
@@ -288,12 +292,17 @@
           this.$nextTick(() => {
             this.$refs.dsdtNopassDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
           })
-        } else if (row.processName.includes('PSSR')) {
+        } else if (row.processName.includes("PSSR装置经理审批")) {
+          this.pssrMgrApproveDetailVisible = true
+          this.$nextTick(() => {
+            this.$refs.pssrMgrApproveDetail.init(row.approveObject.aboveallId, row.taskId, row.processId, row.taskName)
+          })
+        } else if (row.processName.includes("PSSR") && !row.processName.includes("PSSR装置经理审批")) {
           this.pssrApproveDetailVisible = true
           this.$nextTick(() => {
             this.$refs.pssrApproveDetail.init(row.approveObject.subId, row.taskId, row.processId, row.taskName)
           })
-        } else {
+        }  else {
           this.approveInfo = row;
           this.infoTaskName = row.taskName;
           this.infoprocessName = row.processName;

+ 1 - 1
ui/src/views/patrol/commonuse/bicycle/index.vue

@@ -436,7 +436,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除自行车编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除自行车编号为"' + ids + '"的数据项?').then(function() {
         return delBicycle(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/commonuse/cover/index.vue

@@ -351,7 +351,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除地井盖编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除地井盖编号为"' + ids + '"的数据项?').then(function() {
         return delCover(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/commonuse/downspout/index.vue

@@ -346,7 +346,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除落水管编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除落水管编号为"' + ids + '"的数据项?').then(function() {
         return delDownspout(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/commonuse/earplug/index.vue

@@ -353,7 +353,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除耳塞分配器检查记录编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除耳塞分配器检查记录编号为"' + ids + '"的数据项?').then(function() {
         return delEarplug(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/commonuse/movement/index.vue

@@ -367,7 +367,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除移动平台及移动梯编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除移动平台及移动梯编号为"' + ids + '"的数据项?').then(function() {
         return delMovement(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/commonuse/pump/index.vue

@@ -357,7 +357,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除水泵接合器编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除水泵接合器编号为"' + ids + '"的数据项?').then(function() {
         return delPump(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/commonuse/safetyBelt/index.vue

@@ -364,7 +364,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除安全带编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除安全带编号为"' + ids + '"的数据项?').then(function() {
         return delSafetyBelt(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/commonuse/tester/index.vue

@@ -457,7 +457,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除检测仪检查记录编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除检测仪检查记录编号为"' + ids + '"的数据项?').then(function() {
         return delTester(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/commonuse/walkitTalkie/index.vue

@@ -360,7 +360,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除对讲机编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除对讲机编号为"' + ids + '"的数据项?').then(function() {
         return delWalkitTalkie(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/alarm/index.vue

@@ -314,7 +314,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除现场可燃气体检测器/火灾报警系统编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除现场可燃气体检测器/火灾报警系统编号为"' + ids + '"的数据项?').then(function() {
         return delAlarm(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/annihilator/index.vue

@@ -364,7 +364,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除灭火器材编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除灭火器材编号为"' + ids + '"的数据项?').then(function() {
         return delAnnihilator(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/bicycle/index.vue

@@ -292,7 +292,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除自行车编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除自行车编号为"' + ids + '"的数据项?').then(function() {
         return delBicycle(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/cabinet/index.vue

@@ -412,7 +412,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除应急事故柜编号为"' + ids + '"的数据项?').then(function () {
+      this.$confirm('是否确认删除应急事故柜编号为"' + ids + '"的数据项?').then(function () {
         return delCabinet(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/cannon/index.vue

@@ -307,7 +307,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除消防水炮检查记录编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除消防水炮检查记录编号为"' + ids + '"的数据项?').then(function() {
         return delCannon(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/cctv/index.vue

@@ -295,7 +295,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除CCTV系统编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除CCTV系统编号为"' + ids + '"的数据项?').then(function() {
         return delCctv(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/cofferdam/index.vue

@@ -303,7 +303,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除蒸汽裂解装置各区域围堰编号为"' + ids + '"的数据项?').then(function () {
+      this.$confirm('是否确认删除蒸汽裂解装置各区域围堰编号为"' + ids + '"的数据项?').then(function () {
         return delCofferdam(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/cover/index.vue

@@ -309,7 +309,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除地井盖编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除地井盖编号为"' + ids + '"的数据项?').then(function() {
         return delCover(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/curtain/index.vue

@@ -295,7 +295,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除蒸汽幕编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除蒸汽幕编号为"' + ids + '"的数据项?').then(function() {
         return delCurtain(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/door/index.vue

@@ -347,7 +347,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除常闭式防爆门/防火门编号为"' + ids + '"的数据项?').then(function () {
+      this.$confirm('是否确认删除常闭式防爆门/防火门编号为"' + ids + '"的数据项?').then(function () {
         return delDoor(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/downspout/index.vue

@@ -295,7 +295,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除落水管编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除落水管编号为"' + ids + '"的数据项?').then(function() {
         return delDownspout(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/earplug/index.vue

@@ -309,7 +309,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除耳塞分配器编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除耳塞分配器编号为"' + ids + '"的数据项?').then(function() {
         return delEarplug(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/eyewash/index.vue

@@ -308,7 +308,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除洗眼器编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除洗眼器编号为"' + ids + '"的数据项?').then(function() {
         return delEyewash(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/hoseBox/index.vue

@@ -316,7 +316,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除消防水带箱检查记录编号为"' + ids + '"的数据项?').then(function () {
+      this.$confirm('是否确认删除消防水带箱检查记录编号为"' + ids + '"的数据项?').then(function () {
         return delHoseBox(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/movement/index.vue

@@ -335,7 +335,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除移动平台及移动梯编号为"' + ids + '"的数据项?').then(function () {
+      this.$confirm('是否确认删除移动平台及移动梯编号为"' + ids + '"的数据项?').then(function () {
         return delMovement(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/paga/index.vue

@@ -309,7 +309,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除PAGA编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除PAGA编号为"' + ids + '"的数据项?').then(function() {
         return delPaga(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/postFire/index.vue

@@ -309,7 +309,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除地上消火栓检查记录编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除地上消火栓检查记录编号为"' + ids + '"的数据项?').then(function() {
         return delPostFire(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/pump/index.vue

@@ -312,7 +312,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除水泵接合器编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除水泵接合器编号为"' + ids + '"的数据项?').then(function() {
         return delPump(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/safetyBelt/index.vue

@@ -320,7 +320,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除安全带编号为"' + ids + '"的数据项?').then(function () {
+      this.$confirm('是否确认删除安全带编号为"' + ids + '"的数据项?').then(function () {
         return delSafetyBelt(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/sandbox/index.vue

@@ -309,7 +309,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除应急沙箱编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除应急沙箱编号为"' + ids + '"的数据项?').then(function() {
         return delSandbox(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/shield/index.vue

@@ -297,7 +297,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除CO2气体保护系统编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除CO2气体保护系统编号为"' + ids + '"的数据项?').then(function() {
         return delShield(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/sprinkler/index.vue

@@ -309,7 +309,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除自动喷淋灭火系统编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除自动喷淋灭火系统编号为"' + ids + '"的数据项?').then(function() {
         return delSprinkler(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/standpipe/index.vue

@@ -309,7 +309,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除消防竖管编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除消防竖管编号为"' + ids + '"的数据项?').then(function() {
         return delStandpipe(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/tester/index.vue

@@ -326,7 +326,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除检测仪编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除检测仪编号为"' + ids + '"的数据项?').then(function() {
         return delTester(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/walkieTalkie/index.vue

@@ -295,7 +295,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除对讲机编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除对讲机编号为"' + ids + '"的数据项?').then(function() {
         return delWalkieTalkie(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/dev/weathervane/index.vue

@@ -326,7 +326,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除风向标/风向袋/新风系统正压计编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除风向标/风向袋/新风系统正压计编号为"' + ids + '"的数据项?').then(function() {
         return delWeathervane(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/emergency/cabinet/index.vue

@@ -453,7 +453,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除应急事故柜编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除应急事故柜编号为"' + ids + '"的数据项?').then(function() {
         return delCabinet(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/emergency/cctv/index.vue

@@ -359,7 +359,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除CCTV系统编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除CCTV系统编号为"' + ids + '"的数据项?').then(function() {
         return delCctv(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/emergency/cofferdam/index.vue

@@ -357,7 +357,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除蒸汽裂解装置各区域围堰编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除蒸汽裂解装置各区域围堰编号为"' + ids + '"的数据项?').then(function() {
         return delCofferdam(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/emergency/eyewash/index.vue

@@ -540,7 +540,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除洗眼器检查记录编号为"' + ids + '"的数据项?').then(function () {
+      this.$confirm('是否确认删除洗眼器检查记录编号为"' + ids + '"的数据项?').then(function () {
         return delEyewash(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/emergency/paga/index.vue

@@ -488,7 +488,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除PAGA系统编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除PAGA系统编号为"' + ids + '"的数据项?').then(function() {
         return delPaga(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/fire/alarm/index.vue

@@ -460,7 +460,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除现场可燃气体检测器/火灾报警系统编号为"' + ids + '"的数据项?').then(function () {
+      this.$confirm('是否确认删除现场可燃气体检测器/火灾报警系统编号为"' + ids + '"的数据项?').then(function () {
         return delAlarm(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/fire/annihilator/index.vue

@@ -577,7 +577,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除手提式/小推车式灭火器/灭火器材箱编号为"' + ids + '"的数据项?').then(function () {
+      this.$confirm('是否确认删除手提式/小推车式灭火器/灭火器材箱编号为"' + ids + '"的数据项?').then(function () {
         return delAnnihilator(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/fire/cannon/index.vue

@@ -431,7 +431,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除消防水炮检查记录编号为"' + ids + '"的数据项?').then(function () {
+      this.$confirm('是否确认删除消防水炮检查记录编号为"' + ids + '"的数据项?').then(function () {
         return delCannon(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/fire/curtain/index.vue

@@ -354,7 +354,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除蒸汽幕检查记录编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除蒸汽幕检查记录编号为"' + ids + '"的数据项?').then(function() {
         return delCurtain(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/fire/door/index.vue

@@ -429,7 +429,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除常闭式防爆门/防火门编号为"' + ids + '"的数据项?').then(function () {
+      this.$confirm('是否确认删除常闭式防爆门/防火门编号为"' + ids + '"的数据项?').then(function () {
         return delDoor(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/fire/hoseBox/index.vue

@@ -503,7 +503,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除消防水带箱检查记录编号为"' + ids + '"的数据项?').then(function () {
+      this.$confirm('是否确认删除消防水带箱检查记录编号为"' + ids + '"的数据项?').then(function () {
         return delHoseBox(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/fire/postFire/index.vue

@@ -498,7 +498,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除地上消火栓检查记录编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除地上消火栓检查记录编号为"' + ids + '"的数据项?').then(function() {
         return delPostFire(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/fire/sandbox/index.vue

@@ -478,7 +478,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除应急沙箱编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除应急沙箱编号为"' + ids + '"的数据项?').then(function() {
         return delSandbox(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/fire/shield/index.vue

@@ -531,7 +531,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除CO2气体保护系统编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除CO2气体保护系统编号为"' + ids + '"的数据项?').then(function() {
         return delShield(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/fire/sprinkler/index.vue

@@ -485,7 +485,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除自动喷淋灭火系统检查记录编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除自动喷淋灭火系统检查记录编号为"' + ids + '"的数据项?').then(function() {
         return delSprinkler(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/fire/standpipe/index.vue

@@ -488,7 +488,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除消防竖管编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除消防竖管编号为"' + ids + '"的数据项?').then(function() {
         return delStandpipe(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/fire/weathervane/index.vue

@@ -372,7 +372,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除风向标/风向袋/新风系统正压计编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除风向标/风向袋/新风系统正压计编号为"' + ids + '"的数据项?').then(function() {
         return delWeathervane(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/patrol/file/index.vue

@@ -392,7 +392,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认删除附件编号为"' + ids + '"的数据项?').then(function() {
+      this.$confirm('是否确认删除附件编号为"' + ids + '"的数据项?').then(function() {
         return delFile(ids);
       }).then(() => {
         this.getList();

+ 1 - 1
ui/src/views/patrol/patrol/main/index.vue

@@ -569,7 +569,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.confirm('是否确认数据项?').then(function () {
+      this.$confirm('是否确认数据项?').then(function () {
         return delMain(ids);
       }).then(() => {
         this.getList();

+ 2 - 2
ui/src/views/patrol/patrol/plan/index.vue

@@ -99,7 +99,7 @@
         <template slot-scope="scope">
             <div style="display: flex;width: 100%">
                 <el-progress :stroke-width="28" :text-inside="true"
-                             :percentage="(scope.row.checkedNum/scope.row.devNum*100).toFixed(2)" style="width: 80%;"
+                             :percentage="parseFloat((scope.row.checkedNum/scope.row.devNum*100).toFixed(2))" style="width: 80%;"
                              status="success"></el-progress>
                 <span style="width: 20%;">{{ scope.row.checkedNum }}/{{ scope.row.devNum }}</span></div>
         </template>
@@ -453,7 +453,7 @@ export default {
       }
     },
     handleConform(row) {
-      this.confirm('是否确认检查计划已完成?').then(function () {
+      this.$confirm('是否确认检查计划已完成?').then(function () {
         return conformPlan(row);
       }).then(() => {
         this.getList();

+ 2 - 2
ui/src/views/production/accident/index.vue

@@ -520,7 +520,7 @@
         this.statusOptions = response.data;
       });
       this.getDicts("CONFIRM_LEVEL").then(response => {
-        this.confirmOptions = response.data;
+        this.$confirmOptions = response.data;
       });
     },
     methods: {
@@ -559,7 +559,7 @@
       },
       // 分级确认字典翻译
       confirmFormat(row, column) {
-        return this.selectDictLabel(this.confirmOptions, row.confirm);
+        return this.selectDictLabel(this.$confirmOptions, row.confirm);
       },
       //获取人员表
       getStaffmar() {

+ 5 - 5
ui/src/views/pssr/aboveall/index.vue

@@ -36,7 +36,7 @@
         >新增
         </el-button>
       </el-col>
-      <el-col :span="1.5">
+      <!--<el-col :span="1.5">
         <el-button
           type="success"
           icon="el-icon-edit"
@@ -46,7 +46,7 @@
           v-hasPermi="['pssr:aboveall:edit']"
         >修改
         </el-button>
-      </el-col>
+      </el-col>-->
       <el-col :span="1.5">
         <el-button
           type="danger"
@@ -100,14 +100,14 @@
       <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true"/>
       <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
         <template slot-scope="scope">
-          <el-button
+<!--          <el-button
             size="mini"
             type="text"
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['pssr:aboveall:edit']"
           >修改
-          </el-button>
+          </el-button>-->
           <el-button
             size="mini"
             type="text"
@@ -502,7 +502,7 @@ export default {
           item.status=1;
         })
         this.subcontents = res.rows;
-        this.subloading = true;
+        this.subloading = false;
       })
       getAboveall(id).then(response => {
         this.form = response.data;

+ 194 - 337
ui/src/views/pssr/patrol/index.vue

@@ -1,118 +1,5 @@
 <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="巡检计划id" prop="planId">
-        <el-input
-          v-model="queryParams.planId"
-          placeholder="请输入巡检计划id"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="巡检类型" prop="planType">
-        <el-select v-model="queryParams.planType" placeholder="请选择巡检类型" clearable size="small">
-          <el-option label="请选择字典生成" value="" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="巡检状态" prop="planStatus">
-        <el-select v-model="queryParams.planStatus" placeholder="请选择巡检状态" clearable size="small">
-          <el-option label="请选择字典生成" value="" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="确认人" prop="confirmer">
-        <el-input
-          v-model="queryParams.confirmer"
-          placeholder="请输入确认人"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="确认时间" prop="confirmDate">
-        <el-date-picker clearable size="small" style="width: 200px"
-          v-model="queryParams.confirmDate"
-          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>
-      <el-form-item>
-        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
@@ -121,7 +8,8 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['pssr:patrol:add']"
-        >新增</el-button>
+        >新增
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -131,7 +19,8 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['pssr:patrol:edit']"
-        >修改</el-button>
+        >修改
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -141,17 +30,19 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['pssr:patrol:remove']"
-        >删除</el-button>
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="info"
+          icon="el-icon-upload2"
+          size="mini"
+          @click="handleImport"
+          v-hasPermi="['pssr:patrol:edit']"
+        >导入
+        </el-button>
       </el-col>
-        <el-col :span="1.5">
-            <el-button
-                    type="info"
-                    icon="el-icon-upload2"
-                    size="mini"
-                    @click="handleImport"
-                    v-hasPermi="['pssr:patrol:edit']"
-            >导入</el-button>
-        </el-col>
       <el-col :span="1.5">
         <el-button
           type="warning"
@@ -159,57 +50,47 @@
           size="mini"
           @click="handleExport"
           v-hasPermi="['pssr:patrol:export']"
-        >导出</el-button>
+        >导出
+        </el-button>
       </el-col>
-	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="patrolList" @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"/>
-      <el-table-column label="巡检计划id" align="center" prop="planId" :show-overflow-tooltip="true"/>
-      <el-table-column label="巡检类型" align="center" prop="planType" :show-overflow-tooltip="true"/>
-      <el-table-column label="巡检状态" align="center" prop="planStatus" :show-overflow-tooltip="true"/>
-      <el-table-column label="确认人" align="center" prop="confirmer" :show-overflow-tooltip="true"/>
-      <el-table-column label="确认时间" align="center" prop="confirmDate" width="100">
+    <el-table v-loading="loading" :data="patrolList" @selection-change="handleSelectionChange" :height="clientHeight"
+              border>
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="巡检类型" align="center" prop="planType" :show-overflow-tooltip="true" :formatter="patrolTypeFormatter"/>
+      <el-table-column label="巡检状态" align="center" prop="planStatus" :show-overflow-tooltip="true" >
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.confirmDate, '{y}-{m}-{d}') }}</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">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.createdate, '{y}-{m}-{d}') }}</span>
+          <el-tag v-if="scope.row.planStatus==1">待确认</el-tag>
+          <el-tag v-if="scope.row.planStatus==2">已确认</el-tag>
         </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="confirmer" :show-overflow-tooltip="true"/>
+      <el-table-column label="确认时间" align="center" prop="confirmDate">
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.updatedate, '{y}-{m}-{d}') }}</span>
+          <span>{{ parseTime(scope.row.confirmDate, '{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">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['pssr:patrol:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['pssr:patrol:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
+      <!--      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">-->
+      <!--        <template slot-scope="scope">-->
+      <!--          <el-button-->
+      <!--            size="mini"-->
+      <!--            type="text"-->
+      <!--            icon="el-icon-edit"-->
+      <!--            @click="handleUpdate(scope.row)"-->
+      <!--            v-hasPermi="['pssr:patrol:edit']"-->
+      <!--          >修改</el-button>-->
+      <!--          <el-button-->
+      <!--            size="mini"-->
+      <!--            type="text"-->
+      <!--            icon="el-icon-delete"-->
+      <!--            @click="handleDelete(scope.row)"-->
+      <!--            v-hasPermi="['pssr:patrol:remove']"-->
+      <!--          >删除</el-button>-->
+      <!--        </template>-->
+      <!--      </el-table-column>-->
     </el-table>
 
     <pagination
@@ -223,120 +104,80 @@
     <!-- 添加或修改巡检对话框 -->
     <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="巡检计划id" prop="planId">
-          <el-input v-model="form.planId" placeholder="请输入巡检计划id" />
-        </el-form-item>
         <el-form-item label="巡检类型" prop="planType">
           <el-select v-model="form.planType" placeholder="请选择巡检类型">
-            <el-option label="请选择字典生成" value="" />
+            <el-option
+              v-for="item in mainList"
+              :key="item.patrolType"
+              :label="item.devName"
+              :value="item.patrolType"
+            />
           </el-select>
         </el-form-item>
-        <el-form-item label="巡检状态">
-          <el-radio-group v-model="form.planStatus">
-            <el-radio label="1">请选择字典生成</el-radio>
-          </el-radio-group>
-        </el-form-item>
-        <el-form-item label="确认人" prop="confirmer">
-          <el-input v-model="form.confirmer" placeholder="请输入确认人" />
-        </el-form-item>
-        <el-form-item label="确认时间" prop="confirmDate">
-          <el-date-picker clearable size="small" style="width: 200px"
-            v-model="form.confirmDate"
-            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-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 { listPatrol, getPatrol, delPatrol, addPatrol, updatePatrol, exportPatrol, importTemplate} from "@/api/pssr/patrol";
-import { treeselect } from "@/api/system/dept";
-import { getToken } from "@/utils/auth";
+import {
+  addPatrol,
+  delPatrol,
+  exportPatrol,
+  getPatrol,
+  importTemplate,
+  listPatrol,
+  updatePatrol
+} from "@/api/pssr/patrol";
+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 {listAllMain} from "@/api/patrol/patrol/main";
 
 export default {
-  dicts:['pssr_approve_status'],
+  dicts: ['pssr_approve_status'],
   name: "Patrol",
-  components: { Treeselect },
+  components: {Treeselect},
   props: {
     subId: {
       type: Number,
@@ -363,28 +204,29 @@ export default {
       total: 0,
       // 巡检表格数据
       patrolList: [],
+      mainList: [],
       // 弹出层标题
       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/patrol/importData"
-        },
+      // 用户导入参数
+      upload: {
+        // 是否显示弹出层(用户导入)
+        open: false,
+        // 弹出层标题(用户导入)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        headers: {Authorization: "Bearer " + getToken()},
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/pssr/patrol/importData"
+      },
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -406,25 +248,40 @@ export default {
       // 表单参数
       form: {},
       // 表单校验
-      rules: {
-      }
+      rules: {}
     };
   },
   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();
+    this.getMainList();
   },
   methods: {
+    patrolTypeFormatter(row){
+      let devName = "";
+      this.mainList.forEach(item=>{
+        if (row.planType==item.patrolType){
+          devName= item.devName
+        }
+      })
+      return devName;
+    },
+    getMainList() {
+      let year = new Date().getFullYear();
+      listAllMain({year: year}).then(response => {
+        this.mainList = response.data;
+      });
+    },
     /** 查询巡检列表 */
     getList() {
       this.loading = true;
@@ -434,12 +291,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;
@@ -479,7 +336,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
     },
     /** 新增按钮操作 */
@@ -522,56 +379,56 @@ export default {
     handleDelete(row) {
       const ids = row.id || this.ids;
       this.$confirm('是否确认删除?', "警告", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        }).then(function() {
-          return delPatrol(ids);
-        }).then(() => {
-          this.getList();
-          this.msgSuccess("删除成功");
-        })
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function () {
+        return delPatrol(ids);
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("删除成功");
+      })
     },
     /** 导出按钮操作 */
     handleExport() {
       const queryParams = this.queryParams;
       this.$confirm('是否确认导出所有巡检数据项?', "警告", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        }).then(function() {
-          return exportPatrol(queryParams);
-        }).then(response => {
-          this.download(response.msg);
-        })
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function () {
+        return exportPatrol(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();
-      }
+    /** 导入按钮操作 */
+    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();
+    }
   }
 };
 </script>

+ 4 - 5
ui/src/views/pssr/subcontent/index.vue

@@ -95,8 +95,8 @@
       <el-table-column type="selection" width="55" align="center"/>
       <el-table-column label="序号" align="center" prop="serialNumber" :show-overflow-tooltip="true" width="80"/>
       <el-table-column label="项目" align="center" prop="item" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="开车条件检查内容" align="center" prop="content" :show-overflow-tooltip="true"/>
-      <el-table-column label="审批状态" align="center" prop="approveStatus" :show-overflow-tooltip="true">
+      <el-table-column label="开车条件检查内容" align="center" prop="content" :show-overflow-tooltip="true" width="480"/>
+      <el-table-column label="审批状态" align="center" prop="approveStatus" :show-overflow-tooltip="true" width="110">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.pssr_approve_status" :value="scope.row.approveStatus"
                     :show-type="getTagType(scope.row.approveStatus)"/>
@@ -228,7 +228,7 @@ export default {
   components: {Treeselect},
   // components: { Editor },
   props: {
-    subId: {
+    aboveallId: {
       type: Number,
       default: 0
     },
@@ -244,7 +244,6 @@ export default {
       loading: true,
       // 选中数组
       ids: [],
-      aboveallId: null,
       // 非单个禁用
       single: true,
       // 非多个禁用
@@ -312,7 +311,7 @@ export default {
     this.$nextTick(() => {
       this.clientHeight = document.body.clientHeight - 250
     })
-    const id = this.$route.params.aboveallId
+    const id = this.$route.params.aboveallId || this.aboveallId
     if (typeof id !== 'undefined') {
       this.queryParams.aboveallId = id
     }

+ 1 - 1
ui/src/views/pssr/subitem/index.vue

@@ -68,7 +68,7 @@
     <div v-if="sn=='dj'">
       <circuit :sub-id="Number(si)" :is-approve="Number(isApprove)"/>
     </div>
-    <div v-if="sn=='xqfss'">
+    <div v-if="sn=='xqf'">
       <patrol :sub-id="Number(si)" :is-approve="Number(isApprove)"/>
     </div>
     <div v-if="sn=='txjk'">