Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/master'

wangggziwen 3 anni fa
parent
commit
0d103d60ec

+ 391 - 0
master/src/main/java/com/ruoyi/project/intact/controller/TIntactApproveController.java

@@ -0,0 +1,391 @@
+package com.ruoyi.project.intact.controller;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ruoyi.project.approve.damain.DevTask;
+import com.ruoyi.project.intact.domain.*;
+import com.ruoyi.project.intact.mapper.TIntactApproveMapper;
+import com.ruoyi.project.intact.service.*;
+import com.ruoyi.project.listener.semsApprove.*;
+import com.ruoyi.project.sems.domain.*;
+import com.ruoyi.project.sems.mapper.TApproveMapper;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.service.ISysUserService;
+import org.activiti.engine.*;
+import org.activiti.engine.history.HistoricProcessInstance;
+import org.activiti.engine.history.HistoricTaskInstance;
+import org.activiti.engine.history.HistoricTaskInstanceQuery;
+import org.activiti.engine.impl.identity.Authentication;
+import org.activiti.engine.runtime.ProcessInstance;
+import org.activiti.engine.task.Comment;
+import org.activiti.engine.task.Task;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+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 javax.annotation.Resource;
+
+/**
+ * 设备完整性申请Controller
+ *
+ * @author ruoyi
+ * @date 2022-06-24
+ */
+@RestController
+@RequestMapping("/intact/approve")
+public class TIntactApproveController extends BaseController
+{
+    @Autowired
+    private ITIntactApproveService tIntactApproveService;
+    @Autowired
+    private RuntimeService runtimeService;
+    @Autowired
+    private HistoryService historyService;
+    @Autowired
+    private ITIntactGjService tIntactGjService;
+    @Autowired
+    private ITIntactGylService  tIntactGylService;
+    @Autowired
+    private ITIntactPumpService tIntactPumpService;
+    @Autowired
+    private ITIntactYsjService tIntactYsjService;
+    @Autowired
+    private TaskService taskService;
+    @Resource
+    private TIntactApproveMapper tIntactApproveMapper;
+    @Autowired
+    private ISysUserService sysUserService;
+    /**
+     * 查询设备完整性申请列表
+     */
+    @PreAuthorize("@ss.hasPermi('intact:approve:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TIntactApprove tIntactApprove)
+    {
+        startPage();
+        List<TIntactApprove> list = tIntactApproveService.selectTIntactApproveList(tIntactApprove);
+        return getDataTable(list);
+    }
+
+    /**
+     * 历史申请列表
+     */
+    @RequestMapping("/hisApprovelist")
+    public AjaxResult hisTintactApprovelist(@RequestParam Map<String, Object> params) {
+        String sql = params.get("devId") + " in (SELECT REGEXP_SUBSTR (DEV_ID, '[^,]+', 1,rownum) from dual connect by rownum<=LENGTH (DEV_ID) - LENGTH (regexp_replace(DEV_ID, ',', ''))+1 )";
+        List<TIntactApprove> list = tIntactApproveMapper.selectList(new QueryWrapper<TIntactApprove>().apply(sql).orderByDesc("CREATTIME")
+        );
+        for (TIntactApprove t : list
+        ) {
+            SysUser userEntity = sysUserService.selectUserById(t.getUserId());
+            t.setUserName(userEntity.getNickName());
+        }
+        return AjaxResult.success(list);
+    }
+
+
+    /**
+     * 导出设备完整性申请列表
+     */
+    @PreAuthorize("@ss.hasPermi('intact:approve:export')")
+    @Log(title = "设备完整性申请", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TIntactApprove tIntactApprove)
+    {
+        List<TIntactApprove> list = tIntactApproveService.selectTIntactApproveList(tIntactApprove);
+        ExcelUtil<TIntactApprove> util = new ExcelUtil<TIntactApprove>(TIntactApprove.class);
+        return util.exportExcel(list, "approve");
+    }
+
+    /**
+     * 获取设备完整性申请详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('intact:approve:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tIntactApproveService.selectTIntactApproveById(id));
+    }
+
+    /**
+     * 新增设备完整性申请
+     */
+
+    @Log(title = "设备完整性申请", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TIntactApprove tIntactApprove)
+    {
+        logger.info(JSON.toJSONString(tIntactApprove));
+        Long userid = getUserId();
+        tIntactApprove.setUserId(userid);
+        //审批编号
+        Date dt = new Date();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
+        String data = sdf.format(dt) + userid;
+        tIntactApprove.setApNo(data);
+        tIntactApproveService.insertTIntactApprove(tIntactApprove);
+       /* if (tIntactApprove.getFiles().size() > 0) {
+            for (TApproverFile t : tIntactApprove.getFiles()
+            ) {
+                t.setApproveId(tIntactApprove.getId());
+                t.setFileType(1l);
+                tIntactApproveService.save(t);
+            }    设备变更提交文件,暂时不用
+        }*/
+        String[] ids = tIntactApprove.getDevId().split(",");
+        switch (Integer.parseInt(tIntactApprove.getDevType().toString())) {
+            case 1:
+                for (String i : ids
+                ) {
+                    TIntactPump pumpEntity = tIntactPumpService.getById(i);
+                    pumpEntity.setApproveStatus(tIntactApprove.getApproveType());
+                    pumpEntity.setApproveTime(new Date());
+                    tIntactPumpService.updateById(pumpEntity);
+                }
+                break;
+            case 2:
+                for (String i : ids
+                ) {
+                    TIntactGj gjEntity = tIntactGjService.getById(i);
+                    gjEntity.setApproveStatus(tIntactApprove.getApproveType());
+                    gjEntity.setApproveTime(new Date());
+                    tIntactGjService.updateById(gjEntity);
+                }
+                break;
+            case 3:
+                for (String i : ids
+                ) {
+                    TIntactYsj ysjEntity = tIntactYsjService.getById(i);
+                    ysjEntity.setApproveStatus(tIntactApprove.getApproveType());
+                    ysjEntity.setApproveTime(new Date());
+                    tIntactYsjService.updateById(ysjEntity);
+                }
+                break;
+            case 4:
+                for (String i : ids
+                ) {
+                    TIntactGyl gylEntity = tIntactGylService.getById(i);
+                    gylEntity.setApproveStatus(tIntactApprove.getApproveType());
+                    gylEntity.setApproveTime(new Date());
+                    tIntactGylService.updateById(gylEntity);
+                }
+                break;
+
+        }
+        long bussniseeKey = tIntactApprove.getId();
+        Authentication.setAuthenticatedUserId(userid.toString());
+        //开始工作流、监听
+        Map<String, Object> variables = new HashMap<>();
+        variables.put("applyUser", userid.toString());
+        variables.put("gyzjusers", tIntactApprove.getGyzj().toString());
+     /*   variables.put("specEndSucessListener", new SpecEndSucessListener());
+        variables.put("specEndFaileListener", new SpecEndFaileListener());
+        variables.put("gyzjTaskCreateListener", new GyzjTaskCreateListener());
+        variables.put("ctmTaskCreateListener", new CtmTaskCreateListener());*/
+
+        //采用key来启动流程定义并设置流程变量,返回流程实例
+        ProcessInstance pi = runtimeService.startProcessInstanceByKey("intactChangeApplicationProcess", String.valueOf(bussniseeKey), variables);
+        logger.info("流程部署id:" + pi.getDeploymentId());
+        logger.info("流程定义id:" + pi.getProcessDefinitionId());
+        logger.info("流程实例id:" + pi.getProcessInstanceId());
+        tIntactApprove.setProcessId(pi.getProcessInstanceId());
+        tIntactApproveService.updateTIntactApprove(tIntactApprove);
+        return AjaxResult.success();
+    }
+
+    /**
+     * 任务详情
+     */
+    @RequestMapping("/info/{id}")
+//    @RequiresPermissions("approve:tapprove:info")
+    public AjaxResult info(@PathVariable("id") Long id) {
+        TIntactApprove tIntactApprove = tIntactApproveService.selectTIntactApproveById(id);
+      /*  List<TApproverFile> files = tApproverFileService.list(new QueryWrapper<TApproverFile>().eq("APPROVE_ID", id).eq("FILE_TYPE", 1));
+        tApprove.setFiles(files);
+        List<TApproverFile> govfiles = tApproverFileService.list(new QueryWrapper<TApproverFile>().eq("APPROVE_ID", id).eq("FILE_TYPE", 2));
+        tApprove.setGovFiles(govfiles);*/
+        String[] ids = null;
+        if (tIntactApprove.getApproveType() == 7) {
+            ids = tIntactApprove.getReportId().split(",");
+        }else if (tIntactApprove.getApproveType() == 8) {
+            ids = tIntactApprove.getMonthId().split(",");
+        }else {
+            ids = tIntactApprove.getDevId().split(",");
+        }
+        List<Object> devList = new ArrayList<>();
+        if (tIntactApprove.getDevType() != null && tIntactApprove.getApproveType() != 7) {
+            switch (Integer.parseInt(tIntactApprove.getDevType().toString())) {
+                case 1:
+                    for (String i : ids
+                    ) {
+                        TIntactPump pumpEntity = tIntactPumpService.getById(i);
+                        devList.add(pumpEntity);
+                    }
+                    break;
+                case 2:
+                    for (String i : ids
+                    ) {
+                        TIntactGj gjEntity = tIntactGjService.getById(i);
+                        devList.add(gjEntity);
+                    }
+                    break;
+                case 3:
+                    for (String i : ids
+                    ) {
+                        TIntactYsj dysjEntity = tIntactYsjService.getById(i);
+                        devList.add(dysjEntity);
+                    }
+                    break;
+                case 4:
+                    for (String i : ids
+                    ) {
+                        TIntactGyl gylntity = tIntactGylService.getById(i);
+                        devList.add(gylntity);
+                    }
+                    break;
+
+            }
+        }
+      /*  switch (Integer.parseInt(tIntactApprove.getApproveType().toString())) {
+            case 7:
+                switch (tIntactApprove.getDevType().toString()) {
+                    case "1":
+                        for (String i : ids
+                        ) {
+                            TReportYlrq reportYlrqEntity = tReportYlrqService.selectTReportYlrqById(Long.parseLong(i));
+                            reportYlrqEntity.setDevEntity(tSpecdevYlrqService.getById(reportYlrqEntity.getDevId()));
+                            devList.add(reportYlrqEntity);
+                        }
+                        break;
+                    case "2":
+                        for (String i : ids
+                        ) {
+                            TReportYlgd reportYlgdEntity = tReportYlgdService.selectTReportYlgdById(Long.parseLong(i));
+                            reportYlgdEntity.setDevEntity(tSpecdevYlgdService.getById(reportYlgdEntity.getDevId()));
+                            devList.add(reportYlgdEntity);
+                        }
+                }
+                break;
+            case 8:
+                for (String i : ids
+                ) {
+                    TReportMonth reportMonthEntity = tReportMonthService.selectTReportMonthById(Long.parseLong(i));
+                    devList.add(reportMonthEntity);
+                    tApprove.setDevType(0l);
+                }
+        }*/
+        tIntactApprove.setDevList(devList);
+        return AjaxResult.success(tIntactApprove);
+    }
+
+    /**
+     * 审核处理
+     */
+    @Log(title = "设备完整性变更提交审核处理", businessType = BusinessType.UPDATE)
+    @PutMapping("/handle")
+    public AjaxResult handle(@RequestBody DevTask devTask) {
+        Map<String, Object> param = new HashMap<>();
+        //流程审批意见
+        String symbol= "";
+        if (devTask.getComment() != "") {
+            symbol = ",";
+        }
+        if (devTask.getCondition().equals("1")) {
+            /* devTask.setComment("通过" + symbol + devTask.getComment());*/
+            devTask.setComment("批准" + symbol + devTask.getComment());
+        }else if (devTask.getCondition().equals("0")) {
+            devTask.setComment("未通过" + symbol + devTask.getComment());
+        }
+        //使用任务服务完成任务(提交任务)
+        String taskId = devTask.getTaskId();
+        // 使用任务id,获取任务对象,获取流程实例id
+        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
+        //利用任务对象,获取流程实例id
+        String processInstancesId = task.getProcessInstanceId();
+        System.out.println(processInstancesId);
+        //年度报告申请检查人员会签判断
+        if (task.getName().equals("维修经理")) {
+            //获取当前任务流转列表
+            HistoricTaskInstanceQuery htiq = historyService.createHistoricTaskInstanceQuery();
+            List<HistoricTaskInstance> htiLists = htiq.processInstanceId(processInstancesId).finished().orderByHistoricTaskInstanceEndTime().asc().list();
+            List<DevTask> devTaskList = new ArrayList<>();
+            if (htiLists.size() > 0) {
+                for (HistoricTaskInstance hi : htiLists
+                ) {
+                    List<Comment> commentList = taskService.getTaskComments(hi.getId());
+                    DevTask dev = new DevTask();
+                    if (commentList.size() > 0) {
+                        dev.setComment(commentList.get(0).getFullMessage());
+                    }
+                    devTaskList.add(dev);
+                }
+            }
+            if (devTaskList.size() == 2) {
+                for (DevTask d : devTaskList) {
+                    if (d.getComment().substring(0, 1).equals("未")) {
+                        devTask.setCondition("0");
+                    }
+                }
+            }
+        }
+        param.put("condition", devTask.getCondition());
+        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
+        TaskService taskService = processEngine.getTaskService();
+        //认领任务
+        processEngine.getTaskService()//
+                .claim(taskId, getUserId().toString());
+//        Authentication.setAuthenticatedUserId("cmc"); // 添加批注时候的审核人
+        taskService.addComment(taskId, processInstancesId, devTask.getComment());
+        //业务监听处理
+//        tApproveService.handleApprove(task ,devTask);
+        taskService.complete(taskId, param);
+
+        //添加回执信息
+        if (devTask.getGovFiles().size() > 0) {
+            HistoricProcessInstance pi = processEngine.getHistoryService()
+                    .createHistoricProcessInstanceQuery().processInstanceId(processInstancesId).singleResult();
+            String approveId = pi.getBusinessKey();
+            TIntactApprove approveEntity = tIntactApproveService.selectTIntactApproveById(Long.parseLong(approveId));
+            approveEntity.setGovDate(devTask.getGovDate());
+            tIntactApproveService.updateTIntactApprove(approveEntity);
+           /* for (TApproverFile t : devTask.getGovFiles()
+            ) {
+                t.setApproveId(Long.parseLong(approveId));
+                t.setFileType(2l);
+                tApproverFileService.save(t);
+            }*/
+        }
+        return AjaxResult.success();
+    }
+
+    /**
+     * 修改设备完整性申请
+     */
+    @PreAuthorize("@ss.hasPermi('intact:approve:edit')")
+    @Log(title = "设备完整性申请", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TIntactApprove tIntactApprove)
+    {
+        return toAjax(tIntactApproveService.updateTIntactApprove(tIntactApprove));
+    }
+
+    /**
+     * 删除设备完整性申请
+     */
+    @PreAuthorize("@ss.hasPermi('intact:approve:remove')")
+    @Log(title = "设备完整性申请", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tIntactApproveService.deleteTIntactApproveByIds(ids));
+    }
+}

+ 432 - 0
master/src/main/java/com/ruoyi/project/intact/domain/TIntactApprove.java

@@ -0,0 +1,432 @@
+package com.ruoyi.project.intact.domain;
+
+import java.util.Date;
+import java.util.List;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import com.ruoyi.project.sems.domain.TApproverFile;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 设备完整性申请对象 t_intact_approve
+ *
+ * @author ruoyi
+ * @date 2022-06-24
+ */
+public class TIntactApprove extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** 申请人id */
+    @Excel(name = "申请人id")
+    private Long userId;
+
+    /** 设备ids */
+    @Excel(name = "设备ids")
+    private String devId;
+
+    /** 设备类型: */
+    @Excel(name = "设备类型:")
+    private Long devType;
+
+    /** 审批类型 */
+    @Excel(name = "审批类型")
+    private Long approveType;
+
+    /** 内容 */
+    @Excel(name = "内容")
+    private String content;
+
+    /** 附件url */
+    @Excel(name = "附件url")
+    private String fileUrls;
+
+    /** 回执url */
+    @Excel(name = "回执url")
+    private String reUrls;
+
+    /** 申请状态 0:审批中 1-通过 2-拒绝 */
+    @Excel(name = "申请状态 0:审批中 1-通过 2-拒绝")
+    private Long status;
+
+    /** 开始时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date creattime;
+
+    /** 结束时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date endtime;
+
+    /** 流程id */
+    @Excel(name = "流程id")
+    private String processId;
+
+    /** 政府回执时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "政府回执时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date govDate;
+
+    /** 延期日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "延期日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date delayDate;
+
+    /** 延期原因 */
+    @Excel(name = "延期原因")
+    private String delayReason;
+
+    /** 延期措施 */
+    @Excel(name = "延期措施")
+    private String delayMeasure;
+
+    /** 延期安全声明 */
+    @Excel(name = "延期安全声明")
+    private String delayNotice;
+
+    /** 申请编号(唯一) */
+    @Excel(name = "申请编号", readConverterExp = "唯=一")
+    private String apNo;
+
+    /** 检查日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "检查日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date checkDate;
+
+    /** 报告ids */
+    @Excel(name = "报告ids")
+    private String reportId;
+
+    /** 月报告ids */
+    @Excel(name = "月报告ids")
+    private String monthId;
+
+    /** 删除标识 */
+    private Long delFlag;
+
+    /** 部门id */
+    @Excel(name = "部门id")
+    private Long deptId;
+
+    @TableField(exist = false)
+    private List<Object> devList;
+
+    @TableField(exist = false)
+    private List<TIntactApprove> files;
+
+    @TableField(exist = false)
+    private String userName;
+
+    /**
+     * 审核人员
+     */
+    @TableField(exist = false)
+    private Long auditor;
+
+    /**
+     * 审批人员
+     */
+    @TableField(exist = false)
+    private Long approver;
+    /**
+     * 工艺总监
+     */
+    @TableField(exist = false)
+    private Long gyzj;
+
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setUserId(Long userId)
+    {
+        this.userId = userId;
+    }
+
+    public Long getUserId()
+    {
+        return userId;
+    }
+    public void setDevId(String devId)
+    {
+        this.devId = devId;
+    }
+
+    public String getDevId()
+    {
+        return devId;
+    }
+    public void setDevType(Long devType)
+    {
+        this.devType = devType;
+    }
+
+    public Long getDevType()
+    {
+        return devType;
+    }
+    public void setApproveType(Long approveType)
+    {
+        this.approveType = approveType;
+    }
+
+    public Long getApproveType()
+    {
+        return approveType;
+    }
+    public void setContent(String content)
+    {
+        this.content = content;
+    }
+
+    public String getContent()
+    {
+        return content;
+    }
+    public void setFileUrls(String fileUrls)
+    {
+        this.fileUrls = fileUrls;
+    }
+
+    public String getFileUrls()
+    {
+        return fileUrls;
+    }
+    public void setReUrls(String reUrls)
+    {
+        this.reUrls = reUrls;
+    }
+
+    public String getReUrls()
+    {
+        return reUrls;
+    }
+    public void setStatus(Long status)
+    {
+        this.status = status;
+    }
+
+    public Long getStatus()
+    {
+        return status;
+    }
+    public void setCreattime(Date creattime)
+    {
+        this.creattime = creattime;
+    }
+
+    public Date getCreattime()
+    {
+        return creattime;
+    }
+    public void setEndtime(Date endtime)
+    {
+        this.endtime = endtime;
+    }
+
+    public Date getEndtime()
+    {
+        return endtime;
+    }
+    public void setProcessId(String processId)
+    {
+        this.processId = processId;
+    }
+
+    public String getProcessId()
+    {
+        return processId;
+    }
+    public void setGovDate(Date govDate)
+    {
+        this.govDate = govDate;
+    }
+
+    public Date getGovDate()
+    {
+        return govDate;
+    }
+    public void setDelayDate(Date delayDate)
+    {
+        this.delayDate = delayDate;
+    }
+
+    public Date getDelayDate()
+    {
+        return delayDate;
+    }
+    public void setDelayReason(String delayReason)
+    {
+        this.delayReason = delayReason;
+    }
+
+    public String getDelayReason()
+    {
+        return delayReason;
+    }
+    public void setDelayMeasure(String delayMeasure)
+    {
+        this.delayMeasure = delayMeasure;
+    }
+
+    public String getDelayMeasure()
+    {
+        return delayMeasure;
+    }
+    public void setDelayNotice(String delayNotice)
+    {
+        this.delayNotice = delayNotice;
+    }
+
+    public String getDelayNotice()
+    {
+        return delayNotice;
+    }
+    public void setApNo(String apNo)
+    {
+        this.apNo = apNo;
+    }
+
+    public String getApNo()
+    {
+        return apNo;
+    }
+    public void setCheckDate(Date checkDate)
+    {
+        this.checkDate = checkDate;
+    }
+
+    public Date getCheckDate()
+    {
+        return checkDate;
+    }
+    public void setReportId(String reportId)
+    {
+        this.reportId = reportId;
+    }
+
+    public String getReportId()
+    {
+        return reportId;
+    }
+    public void setMonthId(String monthId)
+    {
+        this.monthId = monthId;
+    }
+
+    public String getMonthId()
+    {
+        return monthId;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+
+    public List<Object> getDevList() {
+        return devList;
+    }
+
+    public void setDevList(List<Object> devList) {
+        this.devList = devList;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public List<TIntactApprove> getFiles() {
+        return files;
+    }
+
+    public void setFiles(List<TIntactApprove> files) {
+        this.files = files;
+    }
+
+    public Long getAuditor() {
+        return auditor;
+    }
+
+    public void setAuditor(Long auditor) {
+        this.auditor = auditor;
+    }
+
+    public Long getApprover() {
+        return approver;
+    }
+
+    public void setApprover(Long approver) {
+        this.approver = approver;
+    }
+
+    public Long getGyzj() {
+        return gyzj;
+    }
+
+    public void setGyzj(Long gyzj) {
+        this.gyzj = gyzj;
+    }
+
+
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("userId", getUserId())
+            .append("devId", getDevId())
+            .append("devType", getDevType())
+            .append("approveType", getApproveType())
+            .append("content", getContent())
+            .append("fileUrls", getFileUrls())
+            .append("reUrls", getReUrls())
+            .append("status", getStatus())
+            .append("creattime", getCreattime())
+            .append("endtime", getEndtime())
+            .append("processId", getProcessId())
+            .append("govDate", getGovDate())
+            .append("delayDate", getDelayDate())
+            .append("delayReason", getDelayReason())
+            .append("delayMeasure", getDelayMeasure())
+            .append("delayNotice", getDelayNotice())
+            .append("apNo", getApNo())
+            .append("checkDate", getCheckDate())
+            .append("reportId", getReportId())
+            .append("monthId", getMonthId())
+            .append("delFlag", getDelFlag())
+            .append("deptId", getDeptId())
+            .toString();
+    }
+}

+ 66 - 0
master/src/main/java/com/ruoyi/project/intact/mapper/TIntactApproveMapper.java

@@ -0,0 +1,66 @@
+package com.ruoyi.project.intact.mapper;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
+import com.ruoyi.project.intact.domain.TIntactApprove;
+import com.ruoyi.project.sems.domain.TApprove;
+
+/**
+ * 设备完整性申请Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2022-06-24
+ */
+public interface TIntactApproveMapper extends BaseMapper<TIntactApprove>
+{
+    /**
+     * 查询设备完整性申请
+     * 
+     * @param id 设备完整性申请ID
+     * @return 设备完整性申请
+     */
+    public TIntactApprove selectTIntactApproveById(Long id);
+
+    /**
+     * 查询设备完整性申请列表
+     * 
+     * @param tIntactApprove 设备完整性申请
+     * @return 设备完整性申请集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TIntactApprove> selectTIntactApproveList(TIntactApprove tIntactApprove);
+
+    /**
+     * 新增设备完整性申请
+     * 
+     * @param tIntactApprove 设备完整性申请
+     * @return 结果
+     */
+    public int insertTIntactApprove(TIntactApprove tIntactApprove);
+
+    /**
+     * 修改设备完整性申请
+     * 
+     * @param tIntactApprove 设备完整性申请
+     * @return 结果
+     */
+    public int updateTIntactApprove(TIntactApprove tIntactApprove);
+
+    /**
+     * 删除设备完整性申请
+     * 
+     * @param id 设备完整性申请ID
+     * @return 结果
+     */
+    public int deleteTIntactApproveById(Long id);
+
+    /**
+     * 批量删除设备完整性申请
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTIntactApproveByIds(Long[] ids);
+}

+ 64 - 0
master/src/main/java/com/ruoyi/project/intact/service/ITIntactApproveService.java

@@ -0,0 +1,64 @@
+package com.ruoyi.project.intact.service;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.project.intact.domain.TIntactApprove;
+import com.ruoyi.project.sems.domain.TApprove;
+
+/**
+ * 设备完整性申请Service接口
+ * 
+ * @author ruoyi
+ * @date 2022-06-24
+ */
+public interface ITIntactApproveService  extends IService<TIntactApprove>
+{
+    /**
+     * 查询设备完整性申请
+     * 
+     * @param id 设备完整性申请ID
+     * @return 设备完整性申请
+     */
+    public TIntactApprove selectTIntactApproveById(Long id);
+
+    /**
+     * 查询设备完整性申请列表
+     * 
+     * @param tIntactApprove 设备完整性申请
+     * @return 设备完整性申请集合
+     */
+    public List<TIntactApprove> selectTIntactApproveList(TIntactApprove tIntactApprove);
+
+    /**
+     * 新增设备完整性申请
+     * 
+     * @param tIntactApprove 设备完整性申请
+     * @return 结果
+     */
+    public int insertTIntactApprove(TIntactApprove tIntactApprove);
+
+    /**
+     * 修改设备完整性申请
+     * 
+     * @param tIntactApprove 设备完整性申请
+     * @return 结果
+     */
+    public int updateTIntactApprove(TIntactApprove tIntactApprove);
+
+    /**
+     * 批量删除设备完整性申请
+     * 
+     * @param ids 需要删除的设备完整性申请ID
+     * @return 结果
+     */
+    public int deleteTIntactApproveByIds(Long[] ids);
+
+    /**
+     * 删除设备完整性申请信息
+     * 
+     * @param id 设备完整性申请ID
+     * @return 结果
+     */
+    public int deleteTIntactApproveById(Long id);
+}

+ 97 - 0
master/src/main/java/com/ruoyi/project/intact/service/impl/TIntactApproveServiceImpl.java

@@ -0,0 +1,97 @@
+package com.ruoyi.project.intact.service.impl;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.project.sems.domain.TApprove;
+import com.ruoyi.project.sems.mapper.TApproveMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.intact.mapper.TIntactApproveMapper;
+import com.ruoyi.project.intact.domain.TIntactApprove;
+import com.ruoyi.project.intact.service.ITIntactApproveService;
+
+/**
+ * 设备完整性申请Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2022-06-24
+ */
+@Service
+public class TIntactApproveServiceImpl extends ServiceImpl<TIntactApproveMapper, TIntactApprove> implements ITIntactApproveService
+{
+    @Autowired
+    private TIntactApproveMapper tIntactApproveMapper;
+
+    /**
+     * 查询设备完整性申请
+     *
+     * @param id 设备完整性申请ID
+     * @return 设备完整性申请
+     */
+    @Override
+    public TIntactApprove selectTIntactApproveById(Long id)
+    {
+        return tIntactApproveMapper.selectTIntactApproveById(id);
+    }
+
+    /**
+     * 查询设备完整性申请列表
+     *
+     * @param tIntactApprove 设备完整性申请
+     * @return 设备完整性申请
+     */
+    @Override
+    public List<TIntactApprove> selectTIntactApproveList(TIntactApprove tIntactApprove)
+    {
+        return tIntactApproveMapper.selectTIntactApproveList(tIntactApprove);
+    }
+
+    /**
+     * 新增设备完整性申请
+     *
+     * @param tIntactApprove 设备完整性申请
+     * @return 结果
+     */
+    @Override
+    public int insertTIntactApprove(TIntactApprove tIntactApprove)
+    {
+        return tIntactApproveMapper.insertTIntactApprove(tIntactApprove);
+    }
+
+    /**
+     * 修改设备完整性申请
+     *
+     * @param tIntactApprove 设备完整性申请
+     * @return 结果
+     */
+    @Override
+    public int updateTIntactApprove(TIntactApprove tIntactApprove)
+    {
+        return tIntactApproveMapper.updateTIntactApprove(tIntactApprove);
+    }
+
+    /**
+     * 批量删除设备完整性申请
+     *
+     * @param ids 需要删除的设备完整性申请ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTIntactApproveByIds(Long[] ids)
+    {
+        return tIntactApproveMapper.deleteTIntactApproveByIds(ids);
+    }
+
+    /**
+     * 删除设备完整性申请信息
+     *
+     * @param id 设备完整性申请ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTIntactApproveById(Long id)
+    {
+        return tIntactApproveMapper.deleteTIntactApproveById(id);
+    }
+}

+ 171 - 0
master/src/main/resources/mybatis/intact/TIntactApproveMapper.xml

@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.intact.mapper.TIntactApproveMapper">
+    
+    <resultMap type="TIntactApprove" id="TIntactApproveResult">
+        <result property="id"    column="id"    />
+        <result property="userId"    column="user_id"    />
+        <result property="devId"    column="dev_id"    />
+        <result property="devType"    column="dev_type"    />
+        <result property="approveType"    column="approve_type"    />
+        <result property="content"    column="content"    />
+        <result property="fileUrls"    column="file_urls"    />
+        <result property="reUrls"    column="re_urls"    />
+        <result property="status"    column="status"    />
+        <result property="creattime"    column="creattime"    />
+        <result property="endtime"    column="endtime"    />
+        <result property="processId"    column="process_id"    />
+        <result property="govDate"    column="gov_date"    />
+        <result property="delayDate"    column="delay_date"    />
+        <result property="delayReason"    column="delay_reason"    />
+        <result property="delayMeasure"    column="delay_measure"    />
+        <result property="delayNotice"    column="delay_notice"    />
+        <result property="apNo"    column="ap_no"    />
+        <result property="checkDate"    column="check_date"    />
+        <result property="reportId"    column="report_id"    />
+        <result property="monthId"    column="month_id"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="deptName" column="dept_name" />
+    </resultMap>
+
+    <sql id="selectTIntactApproveVo">
+        select d.id, d.user_id, d.dev_id, d.dev_type, d.approve_type, d.content, d.file_urls, d.re_urls, d.status, d.creattime, d.endtime, d.process_id, d.gov_date, d.delay_date, d.delay_reason, d.delay_measure, d.delay_notice, d.ap_no, d.check_date, d.report_id, d.month_id, d.del_flag, d.dept_id ,s.dept_name from t_intact_approve d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTIntactApproveList" parameterType="TIntactApprove" resultMap="TIntactApproveResult">
+        <include refid="selectTIntactApproveVo"/>
+        <where>  
+            <if test="userId != null "> and user_id = #{userId}</if>
+            <if test="devId != null  and devId != ''"> and dev_id = #{devId}</if>
+            <if test="devType != null "> and dev_type = #{devType}</if>
+            <if test="approveType != null "> and approve_type = #{approveType}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="fileUrls != null  and fileUrls != ''"> and file_urls = #{fileUrls}</if>
+            <if test="reUrls != null  and reUrls != ''"> and re_urls = #{reUrls}</if>
+            <if test="status != null "> and status = #{status}</if>
+            <if test="creattime != null "> and creattime = #{creattime}</if>
+            <if test="endtime != null "> and endtime = #{endtime}</if>
+            <if test="processId != null  and processId != ''"> and process_id = #{processId}</if>
+            <if test="govDate != null "> and gov_date = #{govDate}</if>
+            <if test="delayDate != null "> and delay_date = #{delayDate}</if>
+            <if test="delayReason != null  and delayReason != ''"> and delay_reason = #{delayReason}</if>
+            <if test="delayMeasure != null  and delayMeasure != ''"> and delay_measure = #{delayMeasure}</if>
+            <if test="delayNotice != null  and delayNotice != ''"> and delay_notice = #{delayNotice}</if>
+            <if test="apNo != null  and apNo != ''"> and ap_no = #{apNo}</if>
+            <if test="checkDate != null "> and check_date = #{checkDate}</if>
+            <if test="reportId != null  and reportId != ''"> and report_id = #{reportId}</if>
+            <if test="monthId != null  and monthId != ''"> and month_id = #{monthId}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+    
+    <select id="selectTIntactApproveById" parameterType="Long" resultMap="TIntactApproveResult">
+        <include refid="selectTIntactApproveVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertTIntactApprove" parameterType="TIntactApprove">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT seq_t_intact_approve.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_intact_approve
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="userId != null">user_id,</if>
+            <if test="devId != null">dev_id,</if>
+            <if test="devType != null">dev_type,</if>
+            <if test="approveType != null">approve_type,</if>
+            <if test="content != null">content,</if>
+            <if test="fileUrls != null">file_urls,</if>
+            <if test="reUrls != null">re_urls,</if>
+            <if test="status != null">status,</if>
+            <if test="creattime != null">creattime,</if>
+            <if test="endtime != null">endtime,</if>
+            <if test="processId != null">process_id,</if>
+            <if test="govDate != null">gov_date,</if>
+            <if test="delayDate != null">delay_date,</if>
+            <if test="delayReason != null">delay_reason,</if>
+            <if test="delayMeasure != null">delay_measure,</if>
+            <if test="delayNotice != null">delay_notice,</if>
+            <if test="apNo != null">ap_no,</if>
+            <if test="checkDate != null">check_date,</if>
+            <if test="reportId != null">report_id,</if>
+            <if test="monthId != null">month_id,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="deptId != null">dept_id,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="userId != null">#{userId},</if>
+            <if test="devId != null">#{devId},</if>
+            <if test="devType != null">#{devType},</if>
+            <if test="approveType != null">#{approveType},</if>
+            <if test="content != null">#{content},</if>
+            <if test="fileUrls != null">#{fileUrls},</if>
+            <if test="reUrls != null">#{reUrls},</if>
+            <if test="status != null">#{status},</if>
+            <if test="creattime != null">#{creattime},</if>
+            <if test="endtime != null">#{endtime},</if>
+            <if test="processId != null">#{processId},</if>
+            <if test="govDate != null">#{govDate},</if>
+            <if test="delayDate != null">#{delayDate},</if>
+            <if test="delayReason != null">#{delayReason},</if>
+            <if test="delayMeasure != null">#{delayMeasure},</if>
+            <if test="delayNotice != null">#{delayNotice},</if>
+            <if test="apNo != null">#{apNo},</if>
+            <if test="checkDate != null">#{checkDate},</if>
+            <if test="reportId != null">#{reportId},</if>
+            <if test="monthId != null">#{monthId},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="deptId != null">#{deptId},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTIntactApprove" parameterType="TIntactApprove">
+        update t_intact_approve
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="userId != null">user_id = #{userId},</if>
+            <if test="devId != null">dev_id = #{devId},</if>
+            <if test="devType != null">dev_type = #{devType},</if>
+            <if test="approveType != null">approve_type = #{approveType},</if>
+            <if test="content != null">content = #{content},</if>
+            <if test="fileUrls != null">file_urls = #{fileUrls},</if>
+            <if test="reUrls != null">re_urls = #{reUrls},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="creattime != null">creattime = #{creattime},</if>
+            <if test="endtime != null">endtime = #{endtime},</if>
+            <if test="processId != null">process_id = #{processId},</if>
+            <if test="govDate != null">gov_date = #{govDate},</if>
+            <if test="delayDate != null">delay_date = #{delayDate},</if>
+            <if test="delayReason != null">delay_reason = #{delayReason},</if>
+            <if test="delayMeasure != null">delay_measure = #{delayMeasure},</if>
+            <if test="delayNotice != null">delay_notice = #{delayNotice},</if>
+            <if test="apNo != null">ap_no = #{apNo},</if>
+            <if test="checkDate != null">check_date = #{checkDate},</if>
+            <if test="reportId != null">report_id = #{reportId},</if>
+            <if test="monthId != null">month_id = #{monthId},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTIntactApproveById" parameterType="Long">
+        update t_intact_approve set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTIntactApproveByIds" parameterType="String">
+        update t_intact_approve set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+    
+</mapper>

+ 80 - 0
ui/src/api/intact/approve_dev.js

@@ -0,0 +1,80 @@
+import request from '@/utils/request'
+
+// 查询设备完整性申请列表
+export function listApprove(query) {
+  return request({
+    url: '/intact/approve/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询特种设备申请列表
+export function listHisApprove(query) {
+  return request({
+    url: '/intact/approve/hisApprovelist',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询设备完整性申请详细
+export function getApprove(id) {
+  return request({
+    url: '/intact/approve/' + id,
+    method: 'get'
+  })
+}
+
+// 查询特种设备申请详细
+export function getApproveInfo(id) {
+  return request({
+    url: '/intact/approve/info/' + id,
+    method: 'get'
+  })
+}
+
+// 新增设备完整性申请
+export function addApprove(data) {
+  return request({
+    url: '/intact/approve',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改设备完整性申请
+export function updateApprove(data) {
+  return request({
+    url: '/intact/approve',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除设备完整性申请
+export function delApprove(id) {
+  return request({
+    url: '/intact/approve/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出设备完整性申请
+export function exportApprove(query) {
+  return request({
+    url: '/intact/approve/export',
+    method: 'get',
+    params: query
+  })
+}
+
+
+// 设备变更申请
+export function handleApprove(data) {
+  return request({
+    url: '/intact/approve/handle',
+    data: data,
+    method: 'put'
+  })
+}

+ 1695 - 0
ui/src/views/approve/approveDetail/intact-detail.vue

@@ -0,0 +1,1695 @@
+<template>
+  <el-dialog
+    :title="!this.taskForm.taskId == '' ? $t('处理') : $t('详情')"
+    :close-on-click-modal="false"
+    :visible.sync="visible" append-to-body>
+    <el-form :model="taskForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="" label-width="80px">
+      <el-form-item :label="$t('设备')">
+        <el-table
+          v-show="dataForm.approveType == 8"
+          :data="devList"
+          border
+          style="width: 100%;">
+          <el-table-column :label="$t('装置名称')" align="center" prop="plantCode" :show-overflow-tooltip="true"/>
+          <el-table-column :label="$t('检查年月')" align="center" prop="checkMonth" width="100">
+          </el-table-column>
+          <el-table-column header-align="center" align="center" :label="$t('压力容器')">
+            <el-table-column :label="$t('容器单元')" align="center" prop="rqUnit" :show-overflow-tooltip="true"/>
+            <el-table-column :label="$t('容器本体')" align="center" prop="rqSelf" :formatter="rqSelfFormat" />
+            <el-table-column :label="$t('安全附件')" align="center" prop="rqSafe" :formatter="rqSafeFormat" />
+            <el-table-column :label="$t('安全保护装置')" align="center" prop="rqProtect" :formatter="rqProtectFormat" />
+            <el-table-column :label="$t('测量调控装置,紧急切断阀')" align="center" prop="rqControl" :formatter="rqControlFormat" />
+            <el-table-column :label="$t('附属仪器仪表')" align="center" prop="rqIns" :formatter="rqInsFormat" />
+            <el-table-column :label="$t('有无泄漏')" align="center" prop="rqOut" :formatter="rqOutFormat" />
+            <el-table-column :label="$t('其它情况描述')" align="center" prop="rqOther" :show-overflow-tooltip="true"/>
+            <el-table-column :label="$t('容器备注')" align="center" prop="rqRemark" :show-overflow-tooltip="true"/>
+          </el-table-column>
+          <el-table-column header-align="center" align="center" :label="$t('压力管道')">
+            <el-table-column :label="$t('管道区域/单元')" align="center" prop="gdUnit" :show-overflow-tooltip="true"/>
+            <el-table-column :label="$t('管道宏观')" align="center" prop="gdSelf" :formatter="gdSelfFormat" />
+            <el-table-column :label="$t('安全附件')" align="center" prop="gdSafe" :formatter="gdSafeFormat" />
+            <el-table-column :label="$t('测量调控装置')" align="center" prop="gdControl" :formatter="gdControlFormat" />
+            <el-table-column :label="$t('附属仪器仪表')" align="center" prop="gdIns" :formatter="gdInsFormat" />
+            <el-table-column :label="$t('有无泄漏')" align="center" prop="gdOut" :formatter="gdOutFormat" />
+            <el-table-column :label="$t('其它情况描述')" align="center" prop="gdOther" :show-overflow-tooltip="true"/>
+            <el-table-column :label="$t('管道备注')" align="center" prop="gdRemark" :show-overflow-tooltip="true"/>
+          </el-table-column>
+          <el-table-column header-align="center" align="center" :label="$t('锅炉')">
+            <el-table-column :label="$t('锅炉区域/单元')" align="center" prop="glUnit" :show-overflow-tooltip="true"/>
+            <el-table-column :label="$t('承压部件')" align="center" prop="glPressure" :formatter="glPressureFormat" />
+            <el-table-column :label="$t('安全附件')" align="center" prop="glSafe" :formatter="glSafeFormat" />
+            <el-table-column :label="$t('仪表及联锁保护装置')" align="center" prop="glIns" :formatter="glInsFormat" />
+            <el-table-column :label="$t('燃烧器')" align="center" prop="glBurn" :formatter="glBurnFormat" />
+            <el-table-column :label="$t('人员')+$t('证书')" align="center" prop="glCer" :formatter="glCerFormat" />
+            <el-table-column :label="$t('水质化验')" align="center" prop="glWater" :formatter="glWaterFormat" />
+            <el-table-column :label="$t('其它情况描述')" align="center" prop="glOther" :show-overflow-tooltip="true"/>
+            <el-table-column :label="$t('锅炉')+$t('备注')" align="center" prop="glRemark" :show-overflow-tooltip="true"/>
+          </el-table-column>
+        </el-table>
+        <el-table
+          v-show="dataForm.approveType == 7 && dataForm.devType == 1"
+          :data="devList"
+          border
+          style="width: 100%;">
+          <el-table-column :label="$t('装置')" align="center" fixed="left" prop="plantCode" :show-overflow-tooltip="true"/>
+          <el-table-column :label="$t('单元')" align="center" fixed="left" prop="unit" :show-overflow-tooltip="true"/>
+          <el-table-column :label="$t('位号')" align="center" fixed="left" prop="devno" :show-overflow-tooltip="true"/>
+          <el-table-column :label="$t('设备名称')" align="center" prop="devname" width="200" :show-overflow-tooltip="true"/>
+          <el-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
+          <el-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+          <el-table-column :label="$t('介质')" align="center" prop="medium" :show-overflow-tooltip="true" :render-header="renderHeader">
+          </el-table-column>
+          <el-table-column :label="$t('设计压力')+'(MPa)'" align="center" prop="desPressure" :show-overflow-tooltip="true" :render-header="renderHeader">
+          </el-table-column>
+          <el-table-column :label="$t('设计温度')+'(℃)'" align="center" prop="desTemp" :show-overflow-tooltip="true" :render-header="renderHeader">
+          </el-table-column>
+          <el-table-column :label="$t('操作压力')+'(MPa)'" align="center" prop="optPressure" :show-overflow-tooltip="true" :render-header="renderHeader">
+          </el-table-column>
+          <el-table-column :label="$t('操作温度')+'(℃)'" align="center" prop="optTemp" :show-overflow-tooltip="true" :render-header="renderHeader">
+          </el-table-column>
+          <el-table-column :label="$t('安全状况等级')" align="center" prop="safeClass" :show-overflow-tooltip="true"/>
+          <el-table-column :label="$t('下次定期检验日期')" align="center" prop="nextWarnDate" width="100">
+          </el-table-column>
+          <el-table-column  :label="$t('容器管理')" header-align="center">
+            <el-table-column
+              prop="pj1"
+              header-align="center"
+              align="center"
+              label="1">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('管理制度、操作规程、运行记录')" placement="top">
+                  <span>1</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj2"
+              header-align="center"
+              align="center"
+              label="2">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('设计文件、竣工图样、产品合格证、质量证明文件、安装使用说明')" placement="top">
+                  <span>2</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj3"
+              header-align="center"
+              align="center"
+              label="3">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('监督检验证书以及安装、改造、修理等资料')" placement="top">
+                  <span>3</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj4"
+              header-align="center"
+              align="center"
+              label="4">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('使用登记证,使用登记表是否与实际相符')" placement="top">
+                  <span>4</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj5"
+              header-align="center"
+              align="center"
+              label="5">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('日常维护保养、定期安全检查记录')" placement="top">
+                  <span>5</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj6"
+              header-align="center"
+              align="center"
+              label="6">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('年度检查、定期检验报告齐全,报告中问题解决')" placement="top">
+                  <span>6</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj7"
+              header-align="center"
+              align="center"
+              label="7">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('作业人员定期培训情况')" placement="top">
+                  <span>7</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+          </el-table-column>
+          <el-table-column  :label="$t('容器本体及运行情况')" header-align="center">
+            <el-table-column
+              prop="pj8"
+              header-align="center"
+              align="center"
+              label="8">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('设备铭牌、漆色、标志、使用证号码')" placement="top">
+                  <span>8</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj9"
+              header-align="center"
+              align="center"
+              label="9">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('本体裂、过热、变形、泄漏、损伤情况')" placement="top">
+                  <span>9</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj10"
+              header-align="center"
+              align="center"
+              label="10">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('接口部位、焊接接头等裂纹、泄漏、损伤情况')" placement="top">
+                  <span>10</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj11"
+              header-align="center"
+              align="center"
+              label="11">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('外表面腐蚀、异常结霜、结露情况')" placement="top">
+                  <span>11</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj12"
+              header-align="center"
+              align="center"
+              label="12">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('保温层、隔热层、衬里情况')" placement="top">
+                  <span>12</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj13"
+              header-align="center"
+              align="center"
+              label="13">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('检漏孔、信号孔')" placement="top">
+                  <span>13</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj14"
+              header-align="center"
+              align="center"
+              label="14">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('容器与相邻管道、构件间异常振动、响声、摩擦')" placement="top">
+                  <span>14</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj15"
+              header-align="center"
+              align="center"
+              label="15">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('支承、支座、基础、紧固螺栓')" placement="top">
+                  <span>15</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj16"
+              header-align="center"
+              align="center"
+              label="16">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('遮阳罩、操作台紧固')" placement="top">
+                  <span>16</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj17"
+              header-align="center"
+              align="center"
+              label="17">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('罐体与底盘等连接')" placement="top">
+                  <span>17</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj18"
+              header-align="center"
+              align="center"
+              label="18">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('波板、罐内扶梯与罐体连接')" placement="top">
+                  <span>18</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj19"
+              header-align="center"
+              align="center"
+              label="19">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('罐车拉紧带、鞍座、中间支座')" placement="top">
+                  <span>19</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj20"
+              header-align="center"
+              align="center"
+              label="20">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('气液相管及其它管路')" placement="top">
+                  <span>20</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj21"
+              header-align="center"
+              align="center"
+              label="21">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('疏水、排放、排污装置')" placement="top">
+                  <span>21</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj22"
+              header-align="center"
+              align="center"
+              label="22">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('设备运行稳定情况')" placement="top">
+                  <span>22</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj23"
+              header-align="center"
+              align="center"
+              label="23">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('接地装置')" placement="top">
+                  <span>23</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj24"
+              header-align="center"
+              align="center"
+              label="24">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('安全状况等级为4级的压力容器的监控措施')" placement="top">
+                  <span>24</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+          </el-table-column>
+          <el-table-column :label="$t('安全附件或设施')" header-align="center">
+            <el-table-column
+              prop="pj25"
+              header-align="center"
+              align="center"
+              label="25">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('安全阀')" placement="top">
+                  <span>25</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj26"
+              header-align="center"
+              align="center"
+              label="26">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('压力表')" placement="top">
+                  <span>26</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj27"
+              header-align="center"
+              align="center"
+              label="27">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('爆破片')" placement="top">
+                  <span>27</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj28"
+              header-align="center"
+              align="center"
+              label="28">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('测温仪表')" placement="top">
+                  <span>28</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj29"
+              header-align="center"
+              align="center"
+              label="29">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('液位计')" placement="top">
+                  <span>29</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj30"
+              header-align="center"
+              align="center"
+              label="30">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('快开门安全联锁装置')" placement="top">
+                  <span>30</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj31"
+              header-align="center"
+              align="center"
+              label="31">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('紧急切断装置')" placement="top">
+                  <span>31</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+          </el-table-column>
+          <el-table-column :label="$t('其他')" header-align="center">
+            <el-table-column
+              prop="pj32"
+              header-align="center"
+              align="center"
+              label="32">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('装卸软管、装卸阀门')" placement="top">
+                  <span>32</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+          </el-table-column>
+          <el-table-column
+            prop="checkDate"
+            header-align="center"
+            align="center"
+            :label="$t('检查日期')">
+          </el-table-column>
+          <el-table-column
+            prop="problem"
+            header-align="center"
+            align="center"
+            :label="$t('问题及处理')">
+          </el-table-column>
+          <el-table-column
+            prop="con"
+            header-align="center"
+            align="center"
+            :label="$t('结论')"
+            :formatter="conFormat">
+          </el-table-column>
+          <el-table-column
+            prop="remarks"
+            header-align="center"
+            align="center"
+            :label="$t('备注')">
+          </el-table-column>
+        </el-table>
+        <el-table
+          v-show="dataForm.approveType == 7 && dataForm.devType == 2"
+          :data="devList"
+          border
+          style="width: 100%;">
+          <el-table-column
+            prop="devEntity.plantCode"
+            header-align="center"
+            align="center"
+            :label="$t('装置名称')">
+          </el-table-column>
+          <el-table-column
+            prop="devEntity.unit"
+            header-align="center"
+            align="center"
+            :label="$t('单元')">
+          </el-table-column>
+          <el-table-column
+            prop="devEntity.devname"
+            header-align="center"
+            align="center"
+            :label="$t('管道名称')">
+          </el-table-column>
+          <el-table-column
+            prop="devEntity.devno"
+            header-align="center"
+            align="center"
+            :label="$t('管道编号')">
+          </el-table-column>
+          <el-table-column
+            prop="devEntity.nextWarnDate"
+            header-align="center"
+            align="center"
+            :label="$t('下次定期检验日期')">
+          </el-table-column>
+          <el-table-column
+            prop="grade"
+            header-align="center"
+            align="center"
+            :label="$t('管道级别')">
+          </el-table-column>
+          <el-table-column
+            :label="$t('允许使用参数')"
+            align="center">
+            <el-table-column
+              prop="medium"
+              header-align="center"
+              align="center"
+              :label="$t('介质')">
+            </el-table-column>
+            <el-table-column
+              prop="desPressure"
+              header-align="center"
+              align="center"
+              :label="$t('设计压力')">
+            </el-table-column>
+            <el-table-column
+              prop="desTemp"
+              header-align="center"
+              align="center"
+              :label="$t('设计温度')">
+            </el-table-column>
+            <el-table-column
+              prop="optPressure"
+              header-align="center"
+              align="center"
+              :label="$t('操作压力')">
+            </el-table-column>
+            <el-table-column
+              prop="optTemp"
+              header-align="center"
+              align="center"
+              :label="$t('操作温度')">
+            </el-table-column>
+          </el-table-column>
+          <el-table-column
+            prop="checkUnit"
+            header-align="center"
+            align="center"
+            :label="$t('检验单位')">
+          </el-table-column>
+          <el-table-column
+            prop="yearReportNo"
+            header-align="center"
+            align="center"
+            :label="$t('报告编号')">
+          </el-table-column>
+          <el-table-column
+            prop="safeClass"
+            header-align="center"
+            align="center"
+            :label="$t('安全等级')">
+          </el-table-column>
+          <el-table-column
+            prop="pj1"
+            header-align="center"
+            align="center"
+            label="1">
+            <template slot-scope="scope" slot="header">
+              <el-tooltip effect="dark" :content="$t('安全管理情况')" placement="top">
+                <span>1</span>
+              </el-tooltip>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="pj2"
+            header-align="center"
+            align="center"
+            label="2">
+            <template slot-scope="scope" slot="header">
+              <el-tooltip effect="dark" :content="$t('设计图纸文档、维修记录、质量证明等资料')" placement="top">
+                <span>2</span>
+              </el-tooltip>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="pj3"
+            header-align="center"
+            align="center"
+            label="3">
+            <template slot-scope="scope" slot="header">
+              <el-tooltip effect="dark" :content="$t('作业人员定期培训情况')" placement="top">
+                <span>3</span>
+              </el-tooltip>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="pj4"
+            header-align="center"
+            align="center"
+            label="4">
+            <template slot-scope="scope" slot="header">
+              <el-tooltip effect="dark" :content="$t('管道本体及支架')" placement="top">
+                <span>4</span>
+              </el-tooltip>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="pj5"
+            header-align="center"
+            align="center"
+            label="5">
+            <template slot-scope="scope" slot="header">
+              <el-tooltip effect="dark" :content="$t('管道运行情况')" placement="top">
+                <span>5</span>
+              </el-tooltip>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="安全附件及仪表"
+            align="center"
+          >
+            <el-table-column
+              prop="pj6"
+              header-align="center"
+              align="center"
+              label="6">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('安全阀')" placement="top">
+                  <span>6</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj7"
+              header-align="center"
+              align="center"
+              label="7">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('爆破片装置')" placement="top">
+                  <span>7</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj8"
+              header-align="center"
+              align="center"
+              label="8">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('阻火器装置')" placement="top">
+                  <span>8</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj9"
+              header-align="center"
+              align="center"
+              label="9">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('紧急切断阀')" placement="top">
+                  <span>9</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj10"
+              header-align="center"
+              align="center"
+              label="10">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('压力表')" placement="top">
+                  <span>10</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="pj11"
+              header-align="center"
+              align="center"
+              label="11">
+              <template slot-scope="scope" slot="header">
+                <el-tooltip effect="dark" :content="$t('测温仪表')" placement="top">
+                  <span>11</span>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+          </el-table-column>
+          <el-table-column
+            prop="pj12"
+            header-align="center"
+            align="center"
+            label="12">
+            <template slot-scope="scope" slot="header">
+              <el-tooltip effect="dark" :content="$t('电阻值测量')" placement="top">
+                <span>12</span>
+              </el-tooltip>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="pj13"
+            header-align="center"
+            align="center"
+            label="13">
+            <template slot-scope="scope" slot="header">
+              <el-tooltip effect="dark" :content="$t('壁厚测定')" placement="top">
+                <span>13</span>
+              </el-tooltip>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="checkDate"
+            header-align="center"
+            align="center"
+            :label="$t('检查日期')">
+          </el-table-column>
+          <el-table-column
+            prop="nextCheckDate"
+            header-align="center"
+            align="center"
+            :label="$t('下次年检时间')">
+          </el-table-column>
+          <el-table-column
+            prop="problem"
+            header-align="center"
+            align="center"
+            :label="$t('问题及处理')">
+          </el-table-column>
+          <el-table-column
+            prop="con"
+            header-align="center"
+            align="center"
+            :label="$t('结论')"
+            :formatter="conFormat">
+          </el-table-column>
+        </el-table>
+        <el-table
+          v-show="dataForm.approveType != 7 && dataForm.devType == 1"
+          :data="devList"
+          border
+          style="width: 100%; height: 95px">
+          <el-table-column
+            prop="plantCode"
+            header-align="center"
+            align="center"
+            :label="$t('装置名称')">
+          </el-table-column>
+          <el-table-column
+            prop="devno"
+            header-align="center"
+            align="center"
+            :label="$t('位号')">
+          </el-table-column>
+          <el-table-column
+            prop="devname"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="150"
+            :label="$t('设备名称')">
+          </el-table-column>
+          <el-table-column
+            prop="useno"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('使用证编号')">
+          </el-table-column>
+          <el-table-column
+            prop="medium"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('介质')">
+          </el-table-column>
+          <el-table-column
+            prop="desPressure"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('设计压力')+'(MPa)'">
+          </el-table-column>
+          <el-table-column
+            prop="desTemp"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('设计温度')+'(℃)'">
+          </el-table-column>
+        </el-table>
+        <el-table
+          v-show="dataForm.approveType != 7 && dataForm.devType == 2"
+          :data="devList"
+          border
+          style="width: 100%;  height: 95px">
+          <el-table-column
+            prop="plantCode"
+            header-align="center"
+            align="center"
+            width="100"
+            :label="$t('装置名称')">
+          </el-table-column>
+          <el-table-column
+            prop="devno"
+            header-align="center"
+            align="center"
+            width="120"
+            :label="$t('位号')">
+          </el-table-column>
+          <el-table-column
+            prop="starting"
+            header-align="center"
+            align="center"
+            width="100"
+            :show-overflow-tooltip="true"
+            :label="$t('起点')">
+          </el-table-column>
+          <el-table-column
+            prop="ending"
+            header-align="center"
+            align="center"
+            width="100"
+            :show-overflow-tooltip="true"
+            :label="$t('终点')">
+          </el-table-column>
+          <el-table-column
+            prop="medium"
+            header-align="center"
+            align="center"
+            width="100"
+            :show-overflow-tooltip="true"
+            :label="$t('介质')">
+          </el-table-column>
+          <el-table-column
+            prop="desPressure"
+            header-align="center"
+            align="center"
+            :label="$t('设计压力')">
+          </el-table-column>
+          <el-table-column
+            prop="desTemp"
+            header-align="center"
+            align="center"
+            :label="$t('设计温度')">
+          </el-table-column>
+          <el-table-column
+            prop="optPressure"
+            header-align="center"
+            align="center"
+            :label="$t('工作压力')">
+          </el-table-column>
+          <el-table-column
+            prop="optTemp"
+            header-align="center"
+            align="center"
+            width="100"
+            :show-overflow-tooltip="true"
+            :label="$t('工作温度')">
+          </el-table-column>
+        </el-table>
+        <el-table
+          v-show="dataForm.devType == 3"
+          :data="devList"
+          border
+          style="width: 100%; height: 95px">
+          <el-table-column
+            prop="plantCode"
+            header-align="center"
+            align="center"
+            :label="$t('装置名称')">
+          </el-table-column>
+          <el-table-column
+            prop="docno"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('档案号')">
+          </el-table-column>
+          <el-table-column
+            prop="devname"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="150"
+            :label="$t('设备名称')">
+          </el-table-column>
+          <el-table-column
+            prop="capacity"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('起吊重量')+'(ton)'">
+          </el-table-column>
+          <el-table-column
+            prop="location"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('使用地点')">
+          </el-table-column>
+        </el-table>
+        <el-table
+          v-show="dataForm.devType == 4"
+          :data="devList"
+          border
+          style="width: 100%; height: 95px">
+          <el-table-column
+            prop="plantCode"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('装置名称')">
+          </el-table-column>
+          <el-table-column
+            prop="devno"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('位号')">
+          </el-table-column>
+          <el-table-column
+            prop="devname"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="120"
+            :label="$t('设备名称')">
+          </el-table-column>
+          <el-table-column
+            prop="useno"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('使用证编号')">
+          </el-table-column>
+          <el-table-column
+            prop="desTemp"
+            header-align="center"
+            align="center"
+            :label="$t('设计温度')+'(℃)'">
+          </el-table-column>
+          <el-table-column
+            prop="desPressure"
+            header-align="center"
+            align="center"
+            :label="$t('设计压力')+'(MPa)'">
+          </el-table-column>
+        </el-table>
+        <el-table
+          v-show="dataForm.devType == 5"
+          :data="devList"
+          border
+          style="width: 100%; height: 95px">
+          <el-table-column
+            prop="plantCode"
+            header-align="center"
+            align="center"
+            :label="$t('装置名称')">
+          </el-table-column>
+          <el-table-column
+            prop="docno"
+            header-align="center"
+            align="center"
+            :label="$t('docNo')">
+          </el-table-column>
+          <el-table-column
+            prop="devname"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="150"
+            :label="$t('设备名称')">
+          </el-table-column>
+          <el-table-column
+            prop="model"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="120"
+            :label="$t('型号')">
+          </el-table-column>
+          <el-table-column
+            prop="location"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('使用地点')">
+          </el-table-column>
+        </el-table>
+        <el-table
+          v-show="dataForm.devType == 6"
+          :data="devList"
+          border
+          style="width: 100%; height: 95px">
+          <el-table-column
+            prop="plantCode"
+            header-align="center"
+            align="center"
+            :label="$t('装置名称')">
+          </el-table-column>
+          <el-table-column
+            prop="useDept"
+            header-align="center"
+            align="center"
+            :label="$t('dept')">
+          </el-table-column>
+          <el-table-column
+            prop="carNo"
+            header-align="center"
+            align="center"
+            :label="$t('plateNo')">
+          </el-table-column>
+          <el-table-column
+            prop="docno"
+            header-align="center"
+            align="center"
+            :label="$t('docNo')">
+          </el-table-column>
+          <el-table-column
+            prop="model"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="120"
+            :label="$t('model')">
+          </el-table-column>
+        </el-table>
+        <el-table
+          v-show="dataForm.devType == 7"
+          :data="devList"
+          border
+          style="width: 100%; height: 95px">
+          <el-table-column
+            prop="plantCode"
+            header-align="center"
+            align="center"
+            :label="$t('装置名称')">
+          </el-table-column>
+          <el-table-column
+            prop="unit"
+            header-align="center"
+            align="center"
+            :label="$t('单元')">
+          </el-table-column>
+          <el-table-column
+            prop="devno"
+            header-align="center"
+            align="center"
+            :label="$t('位号')">
+          </el-table-column>
+          <el-table-column
+            prop="devname"
+            header-align="center"
+            align="center"
+            :label="$t('名称')">
+          </el-table-column>
+          <el-table-column
+            prop="createno"
+            header-align="center"
+            align="center"
+            :label="$t('制造编号')">
+          </el-table-column>
+          <el-table-column
+            prop="indiameter"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="120"
+            :label="$t('内径')+' mm'">
+          </el-table-column>
+          <el-table-column
+            prop="height"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="120"
+            :label="$t('高(长)')+' mm'">
+          </el-table-column>
+          <el-table-column
+            prop="chickness"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="120"
+            :label="$t('壁厚(mm)')">
+          </el-table-column>
+          <el-table-column
+            prop="volume"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="120"
+            :label="$t('容积mm³')">
+          </el-table-column>
+          <el-table-column
+            prop="medium"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="120"
+            :label="$t('介质')">
+          </el-table-column>
+          <el-table-column
+            prop="material"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="120"
+            :label="$t('材料')">
+          </el-table-column>
+        </el-table>
+        <el-button @click="recordHandle(devList,dataForm)" type="text" v-if="devList.length >1">{{$t('更多条目')}}</el-button>
+      </el-form-item>
+      <el-row>
+        <el-col :span="8" v-if="dataForm.approveType != 8">
+          <el-form-item :label="$t('设备类型')" prop="devType">
+            <el-select v-model="dataForm.devType" :placeholder="$t('message.select')" disabled>
+              <el-option
+                v-for="dict in devTypeOption"
+                :key="dict.dictValue"
+                :label="dict.dictLabel"
+                :value="parseInt(dict.dictValue)">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item :label="$t('审批类型')" prop="approveType">
+            <el-select v-model="dataForm.approveType" :placeholder="$t('message.select')" disabled>
+              <el-option
+                v-for="dict in approveOption"
+                :key="dict.dictValue"
+                :label="dict.dictLabel"
+                :value="parseInt(dict.dictValue)">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-form-item :label="$t('申请时间')" prop="creattime">
+        <el-input v-model="dataForm.creattime" disabled></el-input>
+      </el-form-item>
+      <el-form-item v-if="[5,7].includes(dataForm.approveType)" :label="$t('原因描述')" prop="content">
+        <el-input type="textarea" :placeholder="$t('原因描述')"
+                  v-model="dataForm.content"
+                  maxlength="200"
+                  :autosize="{ minRows: 2, maxRows: 10}" disabled></el-input>
+      </el-form-item>
+      <template v-if="dataForm.approveType == 5">
+        <el-form-item :label="$t('延期日期')" prop="delayDate">
+          <el-form-item prop="endTime">
+            <el-date-picker
+              v-model="dataForm.delayDate"
+              type="date"
+              value-format="yyyy-MM-dd"
+              :placeholder="$t('selectDate')" disabled>
+            </el-date-picker>
+          </el-form-item>
+        </el-form-item>
+        <el-form-item :label="$t('延期原因')" prop="delayReason">
+          <el-input type="textarea" :placeholder="$t('延期原因')"
+                    v-model="dataForm.delayReason"
+                    :autosize="{ minRows: 2, maxRows: 50}" disabled></el-input>
+        </el-form-item>
+        <el-form-item :label="$t('延期措施')" prop="delayMeasure">
+          <el-input type="textarea" :placeholder="$t('延期措施')"
+                    v-model="dataForm.delayMeasure"
+                    :autosize="{ minRows: 2, maxRows: 50}" disabled></el-input>
+        </el-form-item>
+        <el-form-item :label="$t('延期责任安全声明')" prop="delayNotice">
+          <el-input type="textarea" :placeholder="$t('延期责任安全声明')"
+                    v-model="dataForm.delayNotice"
+                    :autosize="{ minRows: 2, maxRows: 50}" disabled></el-input>
+        </el-form-item>
+      </template>
+
+      <el-form-item :label="$t('附件')" prop="fileUrls" v-if="[-1,1,2,3,4,5,6].includes(dataForm.approveType)">
+        <template v-for="item in this.dataForm.files">
+          <a style="margin-right: 40px" class='download' :href='getUrl(item.fileUrl)' download="" target="_blank" :title="$t('download')">{{item.fileName}}</a>
+        </template>
+      </el-form-item >
+      <el-form-item :label="$t('政府回执')" prop="fileUrls" v-if="[-1,1,2,3,4,5,6].includes(dataForm.approveType)">
+        <template v-for="item in this.dataForm.govFiles">
+          <a style="margin-right: 40px" class='download' :href='getUrl(item.fileUrl)' download="" target="_blank" :title="$t('download')">{{item.fileName}}</a>
+        </template>
+      </el-form-item >
+      <el-form-item :label="$t('回执日期')" v-if="[-1,1,2,3,4,5,6].includes(dataForm.approveType)" prop="govDate">
+        <el-input v-model="dataForm.govDate" disabled></el-input>
+      </el-form-item>
+    </el-form>
+    <span v-if="this.taskName == '政府回执'" slot="footer" class="dialog-footer">
+      <el-button v-if="this.dataForm.approveType == 5" type="text" size="small" @click="recordLetter()">{{$t('downloadLetter')}}</el-button>
+      <el-button v-if="!this.taskForm.taskId == ''" type="primary" @click="dataFormSubmit(1)" :disabled="submitDisabled">{{$t('submitReceipt')}}</el-button>
+    </span>
+    <span slot="footer" class="dialog-footer" v-else>
+      <el-button v-if="this.taskForm.taskId == ''" @click="visible = false">{{$t('message.return')}}</el-button>
+      <el-button v-if="!this.taskForm.taskId == ''" type="primary" @click="dataFormSubmit(1)" :disabled="submitDisabled">{{$t('通过')}}</el-button>
+      <el-button v-if="!this.taskForm.taskId == ''" type="danger" @click="dataFormSubmit(0)" :disabled="submitDisabled">{{$t('拒绝')}}</el-button>
+    </span>
+    <div>
+      <span>{{$t('流转详情')}}</span>
+      <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>
+    </div>
+    <record v-if="recordVisible" ref="recordDeal"></record>
+  </el-dialog>
+</template>
+
+<script>
+  import record from "./spec-itemDetail";
+  import {getToken} from "@/utils/auth";
+  import {getApprove, getApproveInfo, handleApprove} from "@/api/intact/approve_dev";
+  import {getHistorylist} from "@/api/ehs/approvedanger";
+
+
+  export default {
+  name: "spec-deal",
+  components: {record},
+  data() {
+    return {
+      loading: true,
+      // 总条数
+      total: 0,
+      approvedangerList: [],
+      recordVisible: false,
+      // 遮罩层
+      historyLoading: false,
+      //流转列表
+      historyList: [],
+      visible: false,
+      devList: [],
+      dataList: [],
+      fileTips: '',
+      showDelay: false,
+      submitDisabled: false,
+      dataListLoading:true,
+      taskName: '',
+      dataForm: {
+        id: 0,
+        userId: '',
+        devId: '',
+        devType: '',
+        approveType: '',
+        content: '',
+        fileUrls: '',
+        reUrls: '',
+        status: '',
+        creattime: '',
+        plantCode: '',
+        unit: '',
+        devname: '',
+        devno: '',
+        files: [],
+        govFiles: [],
+        delayDate: '',
+        delayReason: '',
+        delayMeasure: '',
+        delayNotice: '',
+        govDate: '',
+      },
+      taskForm: {
+        comment: '',
+        taskId: '',
+        files: '',
+        govDate: '',
+        govFileList: []
+      },
+      // 查询参数
+      queryParams: {
+        processId: null,
+      },
+      doc: {
+        file: "",
+        // 是否显示弹出层(报告附件)
+        open: false,
+        // 弹出层标题(报告附件)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 报告附件上传位置编号
+        ids: 0,
+        // 设置上传的请求头部
+        headers: { Authorization: "Bearer " + getToken() },
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/sems/specfile/uploadFile",
+        commonfileList: null,
+        pType: 'traning',
+        pId: null
+      },
+      dataRule: {
+      },
+      // 容器本体字典
+      rqSelfOptions: [],
+      // 安全附件字典
+      rqSafeOptions: [],
+      // 安全保护装置字典
+      rqProtectOptions: [],
+      // 测量调控装置,紧急切断阀字典
+      rqControlOptions: [],
+      // 附属仪器仪表字典
+      rqInsOptions: [],
+      // 有无泄漏字典
+      rqOutOptions: [],
+      // 管道宏观字典
+      gdSelfOptions: [],
+      // 安全附件字典
+      gdSafeOptions: [],
+      // 测量调控装置字典
+      gdControlOptions: [],
+      // 附属仪器仪表字典
+      gdInsOptions: [],
+      // 有无泄漏字典
+      gdOutOptions: [],
+      // 承压部件字典
+      glPressureOptions: [],
+      // 安全附件字典
+      glSafeOptions: [],
+      // 仪表及联锁保护装置字典
+      glInsOptions: [],
+      // 燃烧器字典
+      glBurnOptions: [],
+      // 人员证书字典
+      glCerOptions: [],
+      // 水质化验字典
+      glWaterOptions: [],
+      approveOption: [],
+      devTypeOption: [],
+      conOptions: [],
+      belong: '',
+      fileList: [],
+    };
+  },
+  watch: {
+    // 根据名称筛选部门树
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
+  created() {
+    this.getDicts("REPORT_CON").then(response => {
+      this.conOptions = response.data;
+    });
+    this.getDicts("ABNORMALITY").then(response => {
+      this.rqSelfOptions = response.data;
+    });
+    this.getDicts("CONFORM").then(response => {
+      this.rqSafeOptions = response.data;
+    });
+    this.getDicts("CONFORM").then(response => {
+      this.rqProtectOptions = response.data;
+    });
+    this.getDicts("INTACT").then(response => {
+      this.rqControlOptions = response.data;
+    });
+    this.getDicts("INTACT").then(response => {
+      this.rqInsOptions = response.data;
+    });
+    this.getDicts("WITH_WITHOUT").then(response => {
+      this.rqOutOptions = response.data;
+    });
+    this.getDicts("ABNORMALITY").then(response => {
+      this.gdSelfOptions = response.data;
+    });
+    this.getDicts("CONFORM").then(response => {
+      this.gdSafeOptions = response.data;
+    });
+    this.getDicts("CONFORM").then(response => {
+      this.gdControlOptions = response.data;
+    });
+    this.getDicts("INTACT").then(response => {
+      this.gdInsOptions = response.data;
+    });
+    this.getDicts("WITH_WITHOUT").then(response => {
+      this.gdOutOptions = response.data;
+    });
+    this.getDicts("ABNORMALITY").then(response => {
+      this.glPressureOptions = response.data;
+    });
+    this.getDicts("CONFORM").then(response => {
+      this.glSafeOptions = response.data;
+    });
+    this.getDicts("CONFORM").then(response => {
+      this.glInsOptions = response.data;
+    });
+    this.getDicts("INTACT").then(response => {
+      this.glBurnOptions = response.data;
+    });
+    this.getDicts("CONFORM").then(response => {
+      this.glCerOptions = response.data;
+    });
+    this.getDicts("CONFORM").then(response => {
+      this.glWaterOptions = response.data;
+    });
+  },
+  methods: {
+    init (id, taskId, processId,taskName) {
+      this.taskForm.govFileList = []
+      this.getDicts("INTACT_APPROVE_TYPE").then(response => {
+        this.approveOption = response.data;
+      });
+      this.getDicts("INTACT_DEVTYPE").then(response => {
+        this.devTypeOption = response.data;
+      });
+
+      this.dataForm.processId = processId
+      this.taskName = taskName
+      this.taskForm.taskId = taskId
+      this.dataForm.id = id || 0
+      this.visible = true
+      this.queryParams.processId = processId;
+      getHistorylist(this.queryParams).then(response => {
+        this.historyList = response.rows;
+        this.historyLoading = false
+      });
+      getApproveInfo(id).then(response => {
+        this.dataForm.userId = response.data.userId
+        this.dataForm.devId = response.data.devId
+        this.dataForm.devType = response.data.devType
+        this.dataForm.approveType = response.data.approveType
+        this.dataForm.content = response.data.content
+        this.dataForm.fileUrls = response.data.fileUrls
+        this.dataForm.reUrls = response.data.reUrls
+        this.dataForm.status = response.data.status
+        this.dataForm.creattime = response.data.creattime
+        this.dataForm.plantCode = response.data.plantCode
+        this.dataForm.unit = response.data.unit
+        this.dataForm.devname = response.data.devname
+        this.dataForm.devno = response.data.devno
+        this.dataForm.files = response.data.files
+        this.dataForm.govFiles = response.data.govFiles
+        this.devList = response.data.devList
+        this.dataForm.delayDate = response.data.delayDate
+        this.dataForm.delayReason = response.data.delayReason
+        this.dataForm.delayMeasure = response.data.delayMeasure
+        this.dataForm.delayNotice = response.data.delayNotice
+        this.dataForm.govDate = response.data.govDate
+      });
+    },
+    recordLetter(){
+      var name = row.fileName;
+      var url = row.fileUrl;
+      var suffix = url.substring(url.lastIndexOf("."), url.length);
+      const a = document.createElement('a')
+      a.setAttribute('download', name)
+      a.setAttribute('target', '_blank')
+      a.setAttribute('href', process.env.VUE_APP_BASE_API + url)
+      a.click()
+    },
+    // 设备类型:字典翻译
+    devTypeFormat(row, column) {
+      return this.selectDictLabel(this.devTypeOptions, row.devType);
+    },
+    // 审批类型字典翻译
+    approveTypeFormat(row, column) {
+      return this.selectDictLabel(this.approveTypeOptions, row.approveType);
+    },
+    // 检查结论字典翻译
+    conFormat(row, column) {
+      return this.selectDictLabel(this.conOptions, row.con);
+    },
+    // 容器本体字典翻译
+    rqSelfFormat(row, column) {
+      return this.selectDictLabel(this.rqSelfOptions, row.rqSelf);
+    },
+    // 安全附件字典翻译
+    rqSafeFormat(row, column) {
+      return this.selectDictLabel(this.rqSafeOptions, row.rqSafe);
+    },
+    // 安全保护装置字典翻译
+    rqProtectFormat(row, column) {
+      return this.selectDictLabel(this.rqProtectOptions, row.rqProtect);
+    },
+    // 测量调控装置,紧急切断阀字典翻译
+    rqControlFormat(row, column) {
+      return this.selectDictLabel(this.rqControlOptions, row.rqControl);
+    },
+    // 附属仪器仪表字典翻译
+    rqInsFormat(row, column) {
+      return this.selectDictLabel(this.rqInsOptions, row.rqIns);
+    },
+    // 有无泄漏字典翻译
+    rqOutFormat(row, column) {
+      return this.selectDictLabel(this.rqOutOptions, row.rqOut);
+    },
+    // 管道宏观字典翻译
+    gdSelfFormat(row, column) {
+      return this.selectDictLabel(this.gdSelfOptions, row.gdSelf);
+    },
+    // 安全附件字典翻译
+    gdSafeFormat(row, column) {
+      return this.selectDictLabel(this.gdSafeOptions, row.gdSafe);
+    },
+    // 测量调控装置字典翻译
+    gdControlFormat(row, column) {
+      return this.selectDictLabel(this.gdControlOptions, row.gdControl);
+    },
+    // 附属仪器仪表字典翻译
+    gdInsFormat(row, column) {
+      return this.selectDictLabel(this.gdInsOptions, row.gdIns);
+    },
+    // 有无泄漏字典翻译
+    gdOutFormat(row, column) {
+      return this.selectDictLabel(this.gdOutOptions, row.gdOut);
+    },
+    // 承压部件字典翻译
+    glPressureFormat(row, column) {
+      return this.selectDictLabel(this.glPressureOptions, row.glPressure);
+    },
+    // 安全附件字典翻译
+    glSafeFormat(row, column) {
+      return this.selectDictLabel(this.glSafeOptions, row.glSafe);
+    },
+    // 仪表及联锁保护装置字典翻译
+    glInsFormat(row, column) {
+      return this.selectDictLabel(this.glInsOptions, row.glIns);
+    },
+    // 燃烧器字典翻译
+    glBurnFormat(row, column) {
+      return this.selectDictLabel(this.glBurnOptions, row.glBurn);
+    },
+    // 人员证书字典翻译
+    glCerFormat(row, column) {
+      return this.selectDictLabel(this.glCerOptions, row.glCer);
+    },
+    // 水质化验字典翻译
+    glWaterFormat(row, column) {
+      return this.selectDictLabel(this.glWaterOptions, row.glWater);
+    },
+    // 取消按钮
+    cancel() {
+      this.visible = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        userId: null,
+        devId: null,
+        devType: null,
+        approveType: null,
+        content: null,
+        fileUrls: null,
+        reUrls: null,
+        status: 0,
+        creattime: null,
+        endtime: null,
+        processId: null,
+        govDate: null,
+        delayDate: null,
+        delayReason: null,
+        delayMeasure: null,
+        delayNotice: null,
+        apNo: null,
+        checkDate: null,
+        reportId: null,
+        monthId: null,
+        delFlag: null,
+        deptId: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = this.$t('添加特种设备申请');
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getApprove(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = this.$t('修改特种设备申请');;
+      });
+    },
+    //附件上传中处理
+    handleFileDocProgress(event, file, fileList) {
+    },
+    handleRemove (file, fileList) {
+      this.taskForm.govFileList = fileList
+    },
+    //附件上传成功处理
+    handleFileDocSuccess(response, file, fileList) {
+      this.taskForm.govFileList = fileList
+      if (response.code == 200){
+        this.$alert(this.$t('导入成功'), this.$t('导入结果'), { dangerouslyUseHTMLString: true });
+      }else {
+        this.$alert(response.msg, this.$t('导入结果'), { dangerouslyUseHTMLString: true });
+      }
+    },
+    /** 提交按钮 */
+    // 表单提交
+    dataFormSubmit (val) {
+      this.submitDisabled = true
+      console.log(this.taskForm.govFileList)
+      this.dataForm.files = []
+      if (this.taskForm.govFileList.length > 0) {
+        for (let i = 0; i < this.taskForm.govFileList.length; i++) {
+          let obj = {}
+          obj.fileName = this.taskForm.govFileList[i].response.fileName
+          obj.fileUrl = this.taskForm.govFileList[i].response.url
+          this.dataForm.files.push(obj)
+        }
+      }
+      this.taskForm.condition = val
+      this.taskForm.govFiles = this.dataForm.files
+      handleApprove(this.taskForm).then(response => {
+        this.msgSuccess(this.$t('处理成功'));
+        this.visible = false;
+        this.getList();
+      });
+      this.$nextTick(function () {
+        this.comment = ''
+      })
+    },
+    handleChange(value) {
+      this.showDelay = false
+      if (value == -1) {
+        this.fileTips = '提示:请提供相关支持文件'
+      }else if (value == 1) {
+        this.fileTips = '提示:请提供启用前检查报告'
+      }else if (value == 2) {
+        this.fileTips = ''
+      }else if (value == 3) {
+        this.fileTips = '提示:请提供设备主体破坏后的照片,防止被其他单位买走重新使用'
+      }else if (value == 4) {
+        this.fileTips = '提示:请提供相关支持文件'
+      }else if (value == 5) {
+        this.showDelay = true
+        this.fileTips = '提示:延期发起的会议纪要等背景情况'
+        this.dataForm.delayReason=
+          '根据2015年压力管道检验报告,清单中的相关管道材质中度球化,安全等级定为3级,下次检验日期定为2018年5月。\n' +
+          '由于这些管道连接电厂蒸汽母管,无法单独隔绝,只有在2020年扬巴大修期间才有机会停车检验,因此提出延期申请。\n'
+        this.dataForm.delayMeasure=
+          '(生产部门,应该根据实际情况,组织机械,电仪各专业,制定具体的运行监控措施描述)\n' +
+          '\n' +
+          '工艺部门:\n' +
+          '维持相关管道操作稳定\n' +
+          '持续监控相关管道操作压力和温度\n' +
+          '按照法规要求,定期开展应急演练\n' +
+          '\n' +
+          '\n' +
+          '机修部门:\n' +
+          '每月对相关管道进行走线巡检,对管道支吊架,保温目视检查。如有问题,记录在巡检记录中\n' +
+          '及时报告管道使用情况及需要解决的问题\n' +
+          '发生事故及时组织调查处理,并配合写出事故报告书\n' +
+          '\n' +
+          '电仪部门:\n' +
+          'XXXXXXXXXXX描述电仪方面的维护或监控措施\n'
+        this.dataForm.delayNotice=
+          '我单位/装置,已制定相应预防措施和应急预案,并保证落实安全管理责任、操作人员持证上岗、安全附件和安全保护装置在有效期内。在检验延期期间,将对以上设备加强巡查和实施有效安全监控,做好监控记录,对延期期间的设备安全负完全责任;在延期期满前,我单位将申报并安排以上设备实施定期检验。'
+      }else if (value == 6) {
+        this.fileTips = '提示:请提供安全评估报告'
+      }else {
+        this.fileTips = ''
+      }
+    },
+    recordHandle(devList,dataForm){
+      this.recordVisible = true
+      this.$nextTick(() => {
+        this.$refs.recordDeal.init(devList,dataForm);
+      })
+    },
+    getUrl(url) {
+      return process.env.VUE_APP_BASE_API + url
+    },
+}
+}
+
+
+</script>
+
+<style>
+.el-textarea.is-disabled .el-textarea__inner {
+  color: #404040;
+}
+.el-input.is-disabled .el-input__inner {
+  color: #404040;
+}
+</style>

+ 670 - 0
ui/src/views/approve/approveDetail/intact-resolve.vue

@@ -0,0 +1,670 @@
+<template>
+  <el-dialog
+    :title="!this.taskForm.taskId == '' ? $t('处理') : $t('详情')"
+    :close-on-click-modal="false"
+    :visible.sync="visible">
+    <el-form :model="taskForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="" label-width="80px">
+      <el-form-item :label="$t('设备')">
+        <el-table
+          v-show="dataForm.approveType != 7 && dataForm.devType == 1"
+          :data="devList"
+          border
+          style="width: 100%; height: 95px" >
+          <el-table-column
+            prop="plantCode"
+            header-align="center"
+            align="center"
+            :label="$t('装置名称')">
+          </el-table-column>
+          <el-table-column
+            prop="devno"
+            header-align="center"
+            align="center"
+            :label="$t('位号')">
+          </el-table-column>
+          <el-table-column
+            prop="devname"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="150"
+            :label="$t('设备名称')">
+          </el-table-column>
+          <el-table-column
+            prop="useno"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('使用证编号')">
+          </el-table-column>
+          <el-table-column
+            prop="medium"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('介质')">
+          </el-table-column>
+          <el-table-column
+            prop="desPressure"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('设计压力')+'(MPa)'">
+          </el-table-column>
+          <el-table-column
+            prop="desTemp"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('设计温度')+'(℃)'">
+          </el-table-column>
+        </el-table>
+        <el-table
+          v-show="dataForm.approveType != 7 && dataForm.devType == 2"
+          :data="devList"
+          border
+          style="width: 100%; height: 95px">
+          <el-table-column
+            prop="plantCode"
+            header-align="center"
+            align="center"
+            width="100"
+            :label="$t('装置名称')">
+          </el-table-column>
+          <el-table-column
+            prop="devno"
+            header-align="center"
+            align="center"
+            width="120"
+            :label="$t('位号')">
+          </el-table-column>
+<!--          <el-table-column-->
+<!--            prop="starting"-->
+<!--            header-align="center"-->
+<!--            align="center"-->
+<!--            width="100"-->
+<!--            :show-overflow-tooltip="true"-->
+<!--            :label="$t('起点')">-->
+<!--          </el-table-column>-->
+<!--          <el-table-column-->
+<!--            prop="ending"-->
+<!--            header-align="center"-->
+<!--            align="center"-->
+<!--            width="100"-->
+<!--            :show-overflow-tooltip="true"-->
+<!--            :label="$t('终点')">-->
+<!--          </el-table-column>-->
+          <el-table-column
+            prop="medium"
+            header-align="center"
+            align="center"
+            width="100"
+            :show-overflow-tooltip="true"
+            :label="$t('介质')">
+          </el-table-column>
+          <el-table-column
+            prop="desPressure"
+            header-align="center"
+            align="center"
+            :label="$t('设计压力')">
+          </el-table-column>
+          <el-table-column
+            prop="desTemp"
+            header-align="center"
+            align="center"
+            :label="$t('设计温度')">
+          </el-table-column>
+          <el-table-column
+            prop="optPressure"
+            header-align="center"
+            align="center"
+            :label="$t('工作压力')">
+          </el-table-column>
+          <el-table-column
+            prop="optTemp"
+            header-align="center"
+            align="center"
+            width="100"
+            :show-overflow-tooltip="true"
+            :label="$t('工作温度')">
+          </el-table-column>
+        </el-table>
+        <el-table
+          v-show="dataForm.devType == 3"
+          :data="devList"
+          border
+          style="width: 100%; height: 95px">
+          <el-table-column
+            prop="plantCode"
+            header-align="center"
+            align="center"
+            :label="$t('装置名称')">
+          </el-table-column>
+          <el-table-column
+            prop="docno"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('档案号')">
+          </el-table-column>
+          <el-table-column
+            prop="devname"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="150"
+            :label="$t('设备名称')">
+          </el-table-column>
+          <el-table-column
+            prop="capacity"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('起吊重量')+'(ton)'">
+          </el-table-column>
+          <el-table-column
+            prop="location"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('使用地点')">
+          </el-table-column>
+        </el-table>
+        <el-table
+          v-show="dataForm.devType == 4"
+          :data="devList"
+          border
+          style="width: 100%; height: 95px">
+          <el-table-column
+            prop="plantCode"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('装置名称')">
+          </el-table-column>
+          <el-table-column
+            prop="devno"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('位号')">
+          </el-table-column>
+          <el-table-column
+            prop="devname"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="120"
+            :label="$t('设备名称')">
+          </el-table-column>
+          <el-table-column
+            prop="useno"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('使用证编号')">
+          </el-table-column>
+          <el-table-column
+            prop="desTemp"
+            header-align="center"
+            align="center"
+            :label="$t('设计温度')+'(℃)'">
+          </el-table-column>
+          <el-table-column
+            prop="desPressure"
+            header-align="center"
+            align="center"
+            :label="$t('设计压力')+'(MPa)'">
+          </el-table-column>
+        </el-table>
+        <el-table
+          v-show="dataForm.devType == 5"
+          :data="devList"
+          border
+          style="width: 100%; height: 95px">
+          <el-table-column
+            prop="plantCode"
+            header-align="center"
+            align="center"
+            :label="$t('装置名称')">
+          </el-table-column>
+          <el-table-column
+            prop="docno"
+            header-align="center"
+            align="center"
+            :label="$t('docNo')">
+          </el-table-column>
+          <el-table-column
+            prop="devname"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="150"
+            :label="$t('设备名称')">
+          </el-table-column>
+          <el-table-column
+            prop="model"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="120"
+            :label="$t('型号')">
+          </el-table-column>
+          <el-table-column
+            prop="location"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            :label="$t('使用地点')">
+          </el-table-column>
+        </el-table>
+        <el-table
+          v-show="dataForm.devType == 6"
+          :data="devList"
+          border
+          style="width: 100%; height: 95px">
+          <el-table-column
+            prop="plantCode"
+            header-align="center"
+            align="center"
+            :label="$t('装置名称')">
+          </el-table-column>
+          <el-table-column
+            prop="useDept"
+            header-align="center"
+            align="center"
+            :label="$t('dept')">
+          </el-table-column>
+          <el-table-column
+            prop="carNo"
+            header-align="center"
+            align="center"
+            :label="$t('plateNo')">
+          </el-table-column>
+          <el-table-column
+            prop="docno"
+            header-align="center"
+            align="center"
+            :label="$t('docNo')">
+          </el-table-column>
+          <el-table-column
+            prop="model"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="120"
+            :label="$t('model')">
+          </el-table-column>
+        </el-table>
+        <el-table
+          v-show="dataForm.devType == 7"
+          :data="devList"
+          border
+          style="width: 100%; height: 95px">
+          <el-table-column
+            prop="plantCode"
+            header-align="center"
+            align="center"
+            :label="$t('装置名称')">
+          </el-table-column>
+          <el-table-column
+            prop="unit"
+            header-align="center"
+            align="center"
+            :label="$t('单元')">
+          </el-table-column>
+          <el-table-column
+            prop="devno"
+            header-align="center"
+            align="center"
+            :label="$t('位号')">
+          </el-table-column>
+          <el-table-column
+            prop="devname"
+            header-align="center"
+            align="center"
+            :label="$t('名称')">
+          </el-table-column>
+          <el-table-column
+            prop="createno"
+            header-align="center"
+            align="center"
+            :label="$t('制造编号')">
+          </el-table-column>
+          <el-table-column
+            prop="indiameter"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="120"
+            :label="$t('内径')+' mm'">
+          </el-table-column>
+          <el-table-column
+            prop="height"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="120"
+            :label="$t('高(长)')+' mm'">
+          </el-table-column>
+          <el-table-column
+            prop="chickness"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="120"
+            :label="$t('壁厚(mm)')">
+          </el-table-column>
+          <el-table-column
+            prop="volume"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="120"
+            :label="$t('容积mm³')">
+          </el-table-column>
+          <el-table-column
+            prop="medium"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="120"
+            :label="$t('介质')">
+          </el-table-column>
+          <el-table-column
+            prop="material"
+            header-align="center"
+            align="center"
+            :show-overflow-tooltip="true"
+            width="120"
+            :label="$t('材料')">
+          </el-table-column>
+        </el-table>
+        <el-button @click="recordHandle(devList,dataForm)" type="text" v-if="devList.length >1">{{$t('更多条目')}}</el-button>
+      </el-form-item>
+      <el-row>
+        <el-col :span="8" v-if="dataForm.approveType != 8">
+          <el-form-item :label="$t('设备类型')" prop="devType">
+            <el-select v-model="dataForm.devType" :placeholder="$t('message.select')" disabled>
+              <el-option
+                v-for="dict in devTypeOption"
+                :key="dict.dictValue"
+                :label="dict.dictLabel"
+                :value="parseInt(dict.dictValue)">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item :label="$t('申请类型')" prop="approveType">
+            <el-select v-model="dataForm.approveType" :placeholder="$t('message.select')" disabled>
+              <el-option>
+                维修
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-form-item :label="$t('申请时间')" prop="creattime">
+        <el-input v-model="dataForm.creattime" disabled></el-input>
+      </el-form-item>
+    </el-form>
+    <form ref="downloadForm" :action="downloadAction" target="FORMSUBMIT">
+      <input name="approveId" v-model="dataForm.id"  hidden  />
+      <input name="processId" v-model="dataForm.processId"  hidden  />
+    </form>
+    <span slot="footer" class="dialog-footer">
+      <el-button v-if="this.taskForm.taskId == ''" @click="visible = false">{{$t('message.return')}}</el-button>
+      <el-button v-if="!this.taskForm.taskId == ''" type="primary" @click="dataFormSubmit(1)" :disabled="submitDisabled">{{$t('通过')}}</el-button>
+      <el-button v-if="!this.taskForm.taskId == ''" type="danger" @click="dataFormSubmit(0)" :disabled="submitDisabled">{{$t('拒绝')}}</el-button>
+    </span>
+<!--    <div>-->
+<!--      <span>{{$t('流转详情')}}</span>-->
+<!--      <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>-->
+<!--    </div>-->
+    <record v-if="recordVisible" ref="recordDeal"></record>
+  </el-dialog>
+</template>
+
+<script>
+  import {getToken} from "@/utils/auth";
+  import {getHistorylist} from "@/api/ehs/approvedanger";
+  import {getApproveInfo, handleApprove} from "@/api/intact/approve_dev";
+  import record from "./spec-itemDetail";
+
+
+  export default {
+  name: "spec-maintenance",
+  components: {record},
+  data() {
+    return {
+      loading: true,
+      // 总条数
+      total: 0,
+      approvedangerList: [],
+      recordVisible: false,
+      // 遮罩层
+      historyLoading: false,
+      //显示详细列表
+      IfDataIndex: false,
+      //流转列表
+      historyList: [],
+      visible: false,
+      devList: [],
+      recordList: [],
+      dataList: [],
+      fileTips: '',
+      showDelay: false,
+      submitDisabled: false,
+      dataListLoading:true,
+      taskName: '',
+      dataForm: {
+        id: 0,
+        userId: '',
+        devId: '',
+        devType: '',
+        approveType: '',
+        content: '',
+        fileUrls: '',
+        reUrls: '',
+        status: '',
+        creattime: '',
+        plantCode: '',
+        unit: '',
+        devname: '',
+        devno: '',
+        files: [],
+        delayDate: '',
+        delayReason: '',
+        delayMeasure: '',
+        delayNotice: ''
+      },
+      taskForm: {
+        comment: '',
+        taskId: '',
+        files: '',
+        govDate: '',
+        govFileList: []
+      },
+      // 查询参数
+      queryParams: {
+        processId: null,
+      },
+      doc: {
+        file: "",
+        // 是否显示弹出层(报告附件)
+        open: false,
+        // 弹出层标题(报告附件)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 报告附件上传位置编号
+        ids: 0,
+        // 设置上传的请求头部
+        headers: { Authorization: "Bearer " + getToken() },
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/sems/specfile/uploadFile",
+        commonfileList: null,
+        pType: 'traning',
+        pId: null
+      },
+      dataRule: {
+        approveType: [
+          { required: true, message: this.$t('approveType') + this.$t('notEmpty'), trigger: 'blur' }
+        ],
+        content: [
+          { required: true, message: this.$t('content') + this.$t('notEmpty'), trigger: 'blur' }
+        ]
+      },
+      downloadAction: process.env.VUE_APP_BASE_API +'/sems/approve/exportPDF',
+      approveOption: [],
+      devTypeOption: [{dictValue:1,dictLabel:'工业炉'},{dictValue:2,dictLabel:'压缩机'},{},{}],
+      belong: '',
+      fileList: [],
+    };
+  },
+  watch: {
+    // 根据名称筛选部门树
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
+  created() {
+
+  },
+  methods: {
+    init (id, taskId, processId,taskName) {
+      this.getDicts("INTACT_APPROVE_TYPE").then(response => {
+        this.approveOption = response.data;
+      });
+      this.getDicts("INTACT_DEVTYPE").then(response => {
+        // this.devTypeOption = response.data;
+      });
+      this.dataForm.processId = processId
+      this.taskName = taskName
+      this.taskForm.taskId = taskId
+      this.dataForm.id = id || 0
+      this.visible = true
+      this.queryParams.processId = processId;
+      getHistorylist(this.queryParams).then(response => {
+        this.historyList = response.rows;
+        this.historyLoading = false
+      });
+      getApproveInfo(id).then(response => {
+        this.taskForm.businessKey = response.data.id
+        this.dataForm.userId = response.data.userId
+        this.dataForm.devId = response.data.devId
+        this.dataForm.devType = response.data.devType
+         this.dataForm.approveType = response.data.approveType
+
+        this.dataForm.content = response.data.content
+        this.dataForm.fileUrls = response.data.fileUrls
+        this.dataForm.reUrls = response.data.reUrls
+        this.dataForm.status = response.data.status
+        this.dataForm.creattime = response.data.creattime
+        this.dataForm.plantCode = response.data.plantCode
+        this.dataForm.unit = response.data.unit
+        this.dataForm.devname = response.data.devname
+        this.dataForm.devno = response.data.devno
+        this.dataForm.files = response.data.files
+        this.devList = response.data.devList
+        this.dataForm.delayDate = response.data.delayDate
+        this.dataForm.delayReason = response.data.delayReason
+        this.dataForm.delayMeasure = response.data.delayMeasure
+        this.dataForm.delayNotice = response.data.delayNotice
+      });
+
+    },
+    // 设备类型:字典翻译
+    devTypeFormat(row, column) {
+      // return this.selectDictLabel(this.devTypeOptions, row.devType);
+    },
+    // 审批类型字典翻译
+    approveTypeFormat(row, column) {
+      return this.selectDictLabel(this.approveTypeOptions, row.approveType);
+    },
+
+    // 取消按钮
+    cancel() {
+      this.visible = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        userId: null,
+        devId: null,
+        devType: null,
+        approveType: null,
+        content: null,
+        fileUrls: null,
+        reUrls: null,
+        status: 0,
+        creattime: null,
+        endtime: null,
+        processId: null,
+        govDate: null,
+        delayDate: null,
+        delayReason: null,
+        delayMeasure: null,
+        delayNotice: null,
+        apNo: null,
+        checkDate: null,
+        reportId: null,
+        monthId: null,
+        delFlag: null,
+        deptId: null
+      };
+      this.resetForm("form");
+    },
+
+    /** 提交按钮 */
+    // 表单提交
+    dataFormSubmit (val) {
+      this.submitDisabled = true
+      console.log(this.taskForm.govFileList)
+      this.dataForm.files = []
+      if (this.taskForm.govFileList.length > 0) {
+        for (let i = 0; i < this.taskForm.govFileList.length; i++) {
+          let obj = {}
+          obj.fileName = this.taskForm.govFileList[i].response.fileName
+          obj.fileUrl = this.taskForm.govFileList[i].response.url
+          this.dataForm.files.push(obj)
+        }
+      }
+      this.taskForm.condition = val
+      this.taskForm.govFiles = this.dataForm.files
+      handleApprove(this.taskForm).then(response => {
+        this.submitDisabled = false
+        this.msgSuccess(this.$t('处理成功'));
+        this.visible = false;
+        this.$emit('refreshDataList')
+      });
+      this.$nextTick(function () {
+        this.comment = ''
+      })
+    },
+    recordHandle(devList,dataForm){
+      this.recordVisible = true
+      this.$nextTick(() => {
+        this.$refs.recordDeal.init(devList,dataForm);
+      })
+    },
+}
+}
+
+
+</script>
+
+<style scoped>
+
+</style>