ly пре 1 година
родитељ
комит
c915312162

+ 2 - 1
master/src/main/java/com/ruoyi/project/plant/controller/TStaffmgrController.java

@@ -287,7 +287,7 @@ public class TStaffmgrController extends BaseController
         }
         logger.info("selectTime:" + list.size());
         List<TTrainingParticipants> tTrainingParticipants = tTrainingParticipantsService.selectTTrainingParticipantsList(new TTrainingParticipants());
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
+
         //线程池
         ExecutorService executorService = Executors.newFixedThreadPool(10);
         final CountDownLatch latch = new CountDownLatch(list.size()); //相同线程数量的计数
@@ -295,6 +295,7 @@ public class TStaffmgrController extends BaseController
             int finalI = i;
             executorService.execute(() -> {
                 try {
+                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
                     double time = 0;
                     for (TTrainingParticipants t : tTrainingParticipants) {
                         if (t.getStaffId().equals(list.get(finalI).getStaffid())) {

+ 134 - 0
master/src/main/java/com/ruoyi/project/training/controller/TWorkcertificateCbpsController.java

@@ -0,0 +1,134 @@
+package com.ruoyi.project.training.controller;
+
+import java.util.List;
+
+import com.ruoyi.project.plant.domain.TStaffmgr;
+import com.ruoyi.project.plant.mapper.TStaffmgrMapper;
+import com.ruoyi.project.training.mapper.TWorkcertificateCbpsMapper;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.project.training.domain.TWorkcertificateCbps;
+import com.ruoyi.project.training.service.ITWorkcertificateCbpsService;
+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 2023-07-14
+ */
+@RestController
+@RequestMapping("/training/workcertificateCbps")
+public class TWorkcertificateCbpsController extends BaseController
+{
+    @Autowired
+    private ITWorkcertificateCbpsService tWorkcertificateCbpsService;
+    @Resource
+    private TWorkcertificateCbpsMapper tWorkcertificateCbpsMapper;
+    @Resource
+    private TStaffmgrMapper tStaffmgrMapper;
+
+    /**
+     * 查询作业证书一览列表
+     */
+    @PreAuthorize("@ss.hasPermi('training:workcertificate:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TWorkcertificateCbps tWorkcertificateCbps)
+    {
+        syncData();
+        startPage();
+        List<TWorkcertificateCbps> list = tWorkcertificateCbpsService.selectTWorkcertificateCbpsList(tWorkcertificateCbps);
+        return getDataTable(list);
+    }
+
+    public AjaxResult syncData() {
+        List<String> delList = tWorkcertificateCbpsMapper.queryNeedDeleteIds();
+
+        List<String> addList = tWorkcertificateCbpsMapper.queryNeedInsertIds();
+        if (addList.size() > 0) {
+            for (String id: addList
+                 ) {
+                TStaffmgr staffmgr = tStaffmgrMapper.selectTStaffmgrByStaffId(id);
+                TWorkcertificateCbps t = new TWorkcertificateCbps();
+                t.setEmployeeid(staffmgr.getStaffid());
+                t.setClasses(staffmgr.getTeam());
+                t.setName(staffmgr.getName());
+                t.setDeptId(staffmgr.getDeptId());
+                t.setPlantCode(staffmgr.getPlantCode());
+                tWorkcertificateCbpsMapper.insertTWorkcertificateCbps(t);
+            }
+        }
+        return AjaxResult.success();
+    }
+
+    /**
+     * 导出作业证书一览列表
+     */
+    @PreAuthorize("@ss.hasPermi('training:workcertificate:export')")
+    @Log(title = "作业证书一览", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TWorkcertificateCbps tWorkcertificateCbps)
+    {
+        List<TWorkcertificateCbps> list = tWorkcertificateCbpsService.selectTWorkcertificateCbpsList(tWorkcertificateCbps);
+        ExcelUtil<TWorkcertificateCbps> util = new ExcelUtil<TWorkcertificateCbps>(TWorkcertificateCbps.class);
+        return util.exportExcel(list, "workcertificateCbps");
+    }
+
+    /**
+     * 获取作业证书一览详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('training:workcertificate:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tWorkcertificateCbpsService.selectTWorkcertificateCbpsById(id));
+    }
+
+    /**
+     * 新增作业证书一览
+     */
+    @PreAuthorize("@ss.hasPermi('training:workcertificate:add')")
+    @Log(title = "作业证书一览", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TWorkcertificateCbps tWorkcertificateCbps)
+    {
+        return toAjax(tWorkcertificateCbpsService.insertTWorkcertificateCbps(tWorkcertificateCbps));
+    }
+
+    /**
+     * 修改作业证书一览
+     */
+    @PreAuthorize("@ss.hasPermi('training:workcertificate:edit')")
+    @Log(title = "作业证书一览", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TWorkcertificateCbps tWorkcertificateCbps)
+    {
+        return toAjax(tWorkcertificateCbpsService.updateTWorkcertificateCbps(tWorkcertificateCbps));
+    }
+
+    /**
+     * 删除作业证书一览
+     */
+    @PreAuthorize("@ss.hasPermi('training:workcertificate:remove')")
+    @Log(title = "作业证书一览", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tWorkcertificateCbpsService.deleteTWorkcertificateCbpsByIds(ids));
+    }
+}

+ 551 - 0
master/src/main/java/com/ruoyi/project/training/domain/TWorkcertificateCbps.java

@@ -0,0 +1,551 @@
+package com.ruoyi.project.training.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 作业证书一览对象 t_workcertificate_cbps
+ *
+ * @author ruoyi
+ * @date 2023-07-14
+ */
+public class TWorkcertificateCbps extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /** 装置名称 */
+    @Excel(name = "装置名称")
+    private String plantCode;
+
+    /** 姓名 */
+    @Excel(name = "姓名")
+    private String name;
+
+    /** 员工号 */
+    private String employeeid;
+
+    /** 班组 */
+    @Excel(name = "班组")
+    private String classes;
+
+    /** 压力容器 */
+    @Excel(name = "压力容器")
+    private String container;
+
+    /** 压力容器取证日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "压力容器取证日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date containerDate;
+
+    /** 压力容器证有效期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "压力容器证有效期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date containerLifespan;
+
+    /** 压力管道 */
+    @Excel(name = "压力管道")
+    private String pipe;
+
+    /** 压力管道取证日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "压力管道取证日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date pipeDate;
+
+    /** 压力管道证有效期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "压力管道证有效期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date pipeLifespan;
+
+    /** 技术工人上岗证 */
+    @Excel(name = "技术工人上岗证")
+    private String worker;
+
+    /** 技术工人上岗证取证日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "技术工人上岗证取证日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date workerDate;
+
+    /** 技术工人上岗证有效期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "技术工人上岗证有效期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date workerLifespan;
+
+    /** 班组长安全培训 */
+    @Excel(name = "班组长安全培训")
+    private String foreman;
+
+    /** 班组长安全培训取证日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "班组长安全培训取证日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date foremanDate;
+
+    /** 班组长安全培训有效期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "班组长安全培训有效期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date foremanLifespan;
+
+    /** 制冷与空调 */
+    @Excel(name = "制冷与空调")
+    private String ac;
+
+    /** 制冷与空调取证日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "制冷与空调取证日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date acDate;
+
+    /** 制冷与空调有效期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "制冷与空调有效期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date acLifespan;
+
+    /** 建筑物消防员职业资格证 */
+    @Excel(name = "建筑物消防员职业资格证")
+    private String firefighter;
+
+    /** 建筑物消防员取证日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "建筑物消防员取证日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date firefighterDate;
+
+    /** 建筑物消防员有效期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "建筑物消防员有效期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date firefighterLifespan;
+
+    /** 专职安全管理人员 */
+    @Excel(name = "专职安全管理人员")
+    private String safety;
+
+    /** 安全员取证日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "安全员取证日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date safetyDate;
+
+    /** 安全员有效期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "安全员有效期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date safetyLifespan;
+
+    /** TDS */
+    @Excel(name = "TDS")
+    private String tds;
+
+    /** TDS取证日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "TDS取证日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date tdsDate;
+
+    /** TDS有效期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "TDS有效期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date tdsLifespan;
+
+    /** 删除状态 */
+    private Long delFlag;
+
+    /** 创建人 */
+    private String createrCode;
+
+    /** 创建时间 */
+    private Date createdate;
+
+    /** 修改人 */
+    private String updaterCode;
+
+    /** 修改时间 */
+    private Date updatedate;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /** 部门名称 */
+    @Excel(name = "部门名称")
+    private String deptName;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPlantCode(String plantCode)
+    {
+        this.plantCode = plantCode;
+    }
+
+    public String getPlantCode()
+    {
+        return plantCode;
+    }
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+    public void setEmployeeid(String employeeid)
+    {
+        this.employeeid = employeeid;
+    }
+
+    public String getEmployeeid()
+    {
+        return employeeid;
+    }
+    public void setClasses(String classes)
+    {
+        this.classes = classes;
+    }
+
+    public String getClasses()
+    {
+        return classes;
+    }
+    public void setContainer(String container)
+    {
+        this.container = container;
+    }
+
+    public String getContainer()
+    {
+        return container;
+    }
+    public void setContainerDate(Date containerDate)
+    {
+        this.containerDate = containerDate;
+    }
+
+    public Date getContainerDate()
+    {
+        return containerDate;
+    }
+    public void setContainerLifespan(Date containerLifespan)
+    {
+        this.containerLifespan = containerLifespan;
+    }
+
+    public Date getContainerLifespan()
+    {
+        return containerLifespan;
+    }
+    public void setPipe(String pipe)
+    {
+        this.pipe = pipe;
+    }
+
+    public String getPipe()
+    {
+        return pipe;
+    }
+    public void setPipeDate(Date pipeDate)
+    {
+        this.pipeDate = pipeDate;
+    }
+
+    public Date getPipeDate()
+    {
+        return pipeDate;
+    }
+    public void setPipeLifespan(Date pipeLifespan)
+    {
+        this.pipeLifespan = pipeLifespan;
+    }
+
+    public Date getPipeLifespan()
+    {
+        return pipeLifespan;
+    }
+    public void setWorker(String worker)
+    {
+        this.worker = worker;
+    }
+
+    public String getWorker()
+    {
+        return worker;
+    }
+    public void setWorkerDate(Date workerDate)
+    {
+        this.workerDate = workerDate;
+    }
+
+    public Date getWorkerDate()
+    {
+        return workerDate;
+    }
+    public void setWorkerLifespan(Date workerLifespan)
+    {
+        this.workerLifespan = workerLifespan;
+    }
+
+    public Date getWorkerLifespan()
+    {
+        return workerLifespan;
+    }
+    public void setForeman(String foreman)
+    {
+        this.foreman = foreman;
+    }
+
+    public String getForeman()
+    {
+        return foreman;
+    }
+    public void setForemanDate(Date foremanDate)
+    {
+        this.foremanDate = foremanDate;
+    }
+
+    public Date getForemanDate()
+    {
+        return foremanDate;
+    }
+    public void setForemanLifespan(Date foremanLifespan)
+    {
+        this.foremanLifespan = foremanLifespan;
+    }
+
+    public Date getForemanLifespan()
+    {
+        return foremanLifespan;
+    }
+    public void setAc(String ac)
+    {
+        this.ac = ac;
+    }
+
+    public String getAc()
+    {
+        return ac;
+    }
+    public void setAcDate(Date acDate)
+    {
+        this.acDate = acDate;
+    }
+
+    public Date getAcDate()
+    {
+        return acDate;
+    }
+    public void setAcLifespan(Date acLifespan)
+    {
+        this.acLifespan = acLifespan;
+    }
+
+    public Date getAcLifespan()
+    {
+        return acLifespan;
+    }
+    public void setFirefighter(String firefighter)
+    {
+        this.firefighter = firefighter;
+    }
+
+    public String getFirefighter()
+    {
+        return firefighter;
+    }
+    public void setFirefighterDate(Date firefighterDate)
+    {
+        this.firefighterDate = firefighterDate;
+    }
+
+    public Date getFirefighterDate()
+    {
+        return firefighterDate;
+    }
+    public void setFirefighterLifespan(Date firefighterLifespan)
+    {
+        this.firefighterLifespan = firefighterLifespan;
+    }
+
+    public Date getFirefighterLifespan()
+    {
+        return firefighterLifespan;
+    }
+    public void setSafety(String safety)
+    {
+        this.safety = safety;
+    }
+
+    public String getSafety()
+    {
+        return safety;
+    }
+    public void setSafetyDate(Date safetyDate)
+    {
+        this.safetyDate = safetyDate;
+    }
+
+    public Date getSafetyDate()
+    {
+        return safetyDate;
+    }
+    public void setSafetyLifespan(Date safetyLifespan)
+    {
+        this.safetyLifespan = safetyLifespan;
+    }
+
+    public Date getSafetyLifespan()
+    {
+        return safetyLifespan;
+    }
+    public void setTds(String tds)
+    {
+        this.tds = tds;
+    }
+
+    public String getTds()
+    {
+        return tds;
+    }
+    public void setTdsDate(Date tdsDate)
+    {
+        this.tdsDate = tdsDate;
+    }
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public Date getTdsDate()
+    {
+        return tdsDate;
+    }
+    public void setTdsLifespan(Date tdsLifespan)
+    {
+        this.tdsLifespan = tdsLifespan;
+    }
+
+    public Date getTdsLifespan()
+    {
+        return tdsLifespan;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("plantCode", getPlantCode())
+            .append("name", getName())
+            .append("employeeid", getEmployeeid())
+            .append("classes", getClasses())
+            .append("container", getContainer())
+            .append("containerDate", getContainerDate())
+            .append("containerLifespan", getContainerLifespan())
+            .append("pipe", getPipe())
+            .append("pipeDate", getPipeDate())
+            .append("pipeLifespan", getPipeLifespan())
+            .append("worker", getWorker())
+            .append("workerDate", getWorkerDate())
+            .append("workerLifespan", getWorkerLifespan())
+            .append("foreman", getForeman())
+            .append("foremanDate", getForemanDate())
+            .append("foremanLifespan", getForemanLifespan())
+            .append("ac", getAc())
+            .append("acDate", getAcDate())
+            .append("acLifespan", getAcLifespan())
+            .append("firefighter", getFirefighter())
+            .append("firefighterDate", getFirefighterDate())
+            .append("firefighterLifespan", getFirefighterLifespan())
+            .append("safety", getSafety())
+            .append("safetyDate", getSafetyDate())
+            .append("safetyLifespan", getSafetyLifespan())
+            .append("tds", getTds())
+            .append("tdsDate", getTdsDate())
+            .append("tdsLifespan", getTdsLifespan())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("remarks", getRemarks())
+            .append("deptId", getDeptId())
+            .toString();
+    }
+}

+ 67 - 0
master/src/main/java/com/ruoyi/project/training/mapper/TWorkcertificateCbpsMapper.java

@@ -0,0 +1,67 @@
+package com.ruoyi.project.training.mapper;
+
+import java.util.List;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
+import com.ruoyi.project.training.domain.TWorkcertificateCbps;
+
+/**
+ * 作业证书一览Mapper接口
+ *
+ * @author ruoyi
+ * @date 2023-07-14
+ */
+public interface TWorkcertificateCbpsMapper
+{
+    /**
+     * 查询作业证书一览
+     *
+     * @param id 作业证书一览ID
+     * @return 作业证书一览
+     */
+    public TWorkcertificateCbps selectTWorkcertificateCbpsById(Long id);
+
+    /**
+     * 查询作业证书一览列表
+     *
+     * @param tWorkcertificateCbps 作业证书一览
+     * @return 作业证书一览集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TWorkcertificateCbps> selectTWorkcertificateCbpsList(TWorkcertificateCbps tWorkcertificateCbps);
+
+    /**
+     * 新增作业证书一览
+     *
+     * @param tWorkcertificateCbps 作业证书一览
+     * @return 结果
+     */
+    public int insertTWorkcertificateCbps(TWorkcertificateCbps tWorkcertificateCbps);
+
+    /**
+     * 修改作业证书一览
+     *
+     * @param tWorkcertificateCbps 作业证书一览
+     * @return 结果
+     */
+    public int updateTWorkcertificateCbps(TWorkcertificateCbps tWorkcertificateCbps);
+
+    /**
+     * 删除作业证书一览
+     *
+     * @param id 作业证书一览ID
+     * @return 结果
+     */
+    public int deleteTWorkcertificateCbpsById(Long id);
+
+    /**
+     * 批量删除作业证书一览
+     *
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTWorkcertificateCbpsByIds(Long[] ids);
+
+    List<String> queryNeedDeleteIds();
+
+    List<String> queryNeedInsertIds();
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/training/service/ITWorkcertificateCbpsService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.training.service;
+
+import java.util.List;
+import com.ruoyi.project.training.domain.TWorkcertificateCbps;
+
+/**
+ * 作业证书一览Service接口
+ * 
+ * @author ruoyi
+ * @date 2023-07-14
+ */
+public interface ITWorkcertificateCbpsService 
+{
+    /**
+     * 查询作业证书一览
+     * 
+     * @param id 作业证书一览ID
+     * @return 作业证书一览
+     */
+    public TWorkcertificateCbps selectTWorkcertificateCbpsById(Long id);
+
+    /**
+     * 查询作业证书一览列表
+     * 
+     * @param tWorkcertificateCbps 作业证书一览
+     * @return 作业证书一览集合
+     */
+    public List<TWorkcertificateCbps> selectTWorkcertificateCbpsList(TWorkcertificateCbps tWorkcertificateCbps);
+
+    /**
+     * 新增作业证书一览
+     * 
+     * @param tWorkcertificateCbps 作业证书一览
+     * @return 结果
+     */
+    public int insertTWorkcertificateCbps(TWorkcertificateCbps tWorkcertificateCbps);
+
+    /**
+     * 修改作业证书一览
+     * 
+     * @param tWorkcertificateCbps 作业证书一览
+     * @return 结果
+     */
+    public int updateTWorkcertificateCbps(TWorkcertificateCbps tWorkcertificateCbps);
+
+    /**
+     * 批量删除作业证书一览
+     * 
+     * @param ids 需要删除的作业证书一览ID
+     * @return 结果
+     */
+    public int deleteTWorkcertificateCbpsByIds(Long[] ids);
+
+    /**
+     * 删除作业证书一览信息
+     * 
+     * @param id 作业证书一览ID
+     * @return 结果
+     */
+    public int deleteTWorkcertificateCbpsById(Long id);
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/training/service/impl/TWorkcertificateCbpsServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.training.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.training.mapper.TWorkcertificateCbpsMapper;
+import com.ruoyi.project.training.domain.TWorkcertificateCbps;
+import com.ruoyi.project.training.service.ITWorkcertificateCbpsService;
+
+/**
+ * 作业证书一览Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2023-07-14
+ */
+@Service
+public class TWorkcertificateCbpsServiceImpl implements ITWorkcertificateCbpsService
+{
+    @Autowired
+    private TWorkcertificateCbpsMapper tWorkcertificateCbpsMapper;
+
+    /**
+     * 查询作业证书一览
+     *
+     * @param id 作业证书一览ID
+     * @return 作业证书一览
+     */
+    @Override
+    public TWorkcertificateCbps selectTWorkcertificateCbpsById(Long id)
+    {
+        return tWorkcertificateCbpsMapper.selectTWorkcertificateCbpsById(id);
+    }
+
+    /**
+     * 查询作业证书一览列表
+     *
+     * @param tWorkcertificateCbps 作业证书一览
+     * @return 作业证书一览
+     */
+    @Override
+    public List<TWorkcertificateCbps> selectTWorkcertificateCbpsList(TWorkcertificateCbps tWorkcertificateCbps)
+    {
+        return tWorkcertificateCbpsMapper.selectTWorkcertificateCbpsList(tWorkcertificateCbps);
+    }
+
+    /**
+     * 新增作业证书一览
+     *
+     * @param tWorkcertificateCbps 作业证书一览
+     * @return 结果
+     */
+    @Override
+    public int insertTWorkcertificateCbps(TWorkcertificateCbps tWorkcertificateCbps)
+    {
+        return tWorkcertificateCbpsMapper.insertTWorkcertificateCbps(tWorkcertificateCbps);
+    }
+
+    /**
+     * 修改作业证书一览
+     *
+     * @param tWorkcertificateCbps 作业证书一览
+     * @return 结果
+     */
+    @Override
+    public int updateTWorkcertificateCbps(TWorkcertificateCbps tWorkcertificateCbps)
+    {
+        return tWorkcertificateCbpsMapper.updateTWorkcertificateCbps(tWorkcertificateCbps);
+    }
+
+    /**
+     * 批量删除作业证书一览
+     *
+     * @param ids 需要删除的作业证书一览ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTWorkcertificateCbpsByIds(Long[] ids)
+    {
+        return tWorkcertificateCbpsMapper.deleteTWorkcertificateCbpsByIds(ids);
+    }
+
+    /**
+     * 删除作业证书一览信息
+     *
+     * @param id 作业证书一览ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTWorkcertificateCbpsById(Long id)
+    {
+        return tWorkcertificateCbpsMapper.deleteTWorkcertificateCbpsById(id);
+    }
+}

+ 1 - 1
master/src/main/resources/application.yml

@@ -193,7 +193,7 @@ gen:
   # 作者
   author: ruoyi
   # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
-  packageName: com.ruoyi.project.training.newstaff # 自动去除表前缀,默认是true
+  packageName: com.ruoyi.project.training # 自动去除表前缀,默认是true
   autoRemovePre: false
   # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
   tablePrefix: sys_

+ 1 - 1
master/src/main/resources/mybatis/plant/TStaffmgrMapper.xml

@@ -320,7 +320,7 @@
 
     <select id="selectTStaffmgrByStaffId" parameterType="String" resultMap="TStaffmgrResult">
         <include refid="selectTStaffmgrVo"/>
-        where staffid = #{staffid}
+        where d.staffid = #{staffid} and d.del_flag = 0
     </select>
 
     <insert id="insertTStaffmgr" parameterType="TStaffmgr" useGeneratedKeys="true" keyProperty="id">

+ 250 - 0
master/src/main/resources/mybatis/training/TWorkcertificateCbpsMapper.xml

@@ -0,0 +1,250 @@
+<?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.training.mapper.TWorkcertificateCbpsMapper">
+
+    <resultMap type="TWorkcertificateCbps" id="TWorkcertificateCbpsResult">
+        <result property="id"    column="id"    />
+        <result property="plantCode"    column="plant_code"    />
+        <result property="name"    column="name"    />
+        <result property="employeeid"    column="employeeid"    />
+        <result property="classes"    column="classes"    />
+        <result property="container"    column="container"    />
+        <result property="containerDate"    column="container_date"    />
+        <result property="containerLifespan"    column="container_lifespan"    />
+        <result property="pipe"    column="pipe"    />
+        <result property="pipeDate"    column="pipe_date"    />
+        <result property="pipeLifespan"    column="pipe_lifespan"    />
+        <result property="worker"    column="worker"    />
+        <result property="workerDate"    column="worker_date"    />
+        <result property="workerLifespan"    column="worker_lifespan"    />
+        <result property="foreman"    column="foreman"    />
+        <result property="foremanDate"    column="foreman_date"    />
+        <result property="foremanLifespan"    column="foreman_lifespan"    />
+        <result property="ac"    column="ac"    />
+        <result property="acDate"    column="ac_date"    />
+        <result property="acLifespan"    column="ac_lifespan"    />
+        <result property="firefighter"    column="firefighter"    />
+        <result property="firefighterDate"    column="firefighter_date"    />
+        <result property="firefighterLifespan"    column="firefighter_lifespan"    />
+        <result property="safety"    column="safety"    />
+        <result property="safetyDate"    column="safety_date"    />
+        <result property="safetyLifespan"    column="safety_lifespan"    />
+        <result property="tds"    column="tds"    />
+        <result property="tdsDate"    column="tds_date"    />
+        <result property="tdsLifespan"    column="tds_lifespan"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="deptName" column="dept_name" />
+    </resultMap>
+
+    <sql id="selectTWorkcertificateCbpsVo">
+        select d.id, d.plant_code, d.name, d.employeeid, d.classes, d.container, d.container_date, d.container_lifespan, d.pipe, d.pipe_date, d.pipe_lifespan, d.worker, d.worker_date, d.worker_lifespan, d.foreman, d.foreman_date, d.foreman_lifespan, d.ac, d.ac_date, d.ac_lifespan, d.firefighter, d.firefighter_date, d.firefighter_lifespan, d.safety, d.safety_date, d.safety_lifespan, d.tds, d.tds_date, d.tds_lifespan, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.remarks, d.dept_id ,s.dept_name from t_workcertificate_cbps d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTWorkcertificateCbpsList" parameterType="TWorkcertificateCbps" resultMap="TWorkcertificateCbpsResult">
+        <include refid="selectTWorkcertificateCbpsVo"/>
+        <where>
+            <if test="plantCode != null  and plantCode != ''"> and plant_code = #{plantCode}</if>
+            <if test="employeeid != null  and employeeid != ''"> and employeeid = #{employeeid}</if>
+            <if test="classes != null  and classes != ''"> and classes = #{classes}</if>
+            <if test="container != null  and container != ''"> and container = #{container}</if>
+            <if test="containerDate != null "> and container_date = #{containerDate}</if>
+            <if test="containerLifespan != null "> and container_lifespan = #{containerLifespan}</if>
+            <if test="pipe != null  and pipe != ''"> and pipe = #{pipe}</if>
+            <if test="pipeDate != null "> and pipe_date = #{pipeDate}</if>
+            <if test="pipeLifespan != null "> and pipe_lifespan = #{pipeLifespan}</if>
+            <if test="worker != null  and worker != ''"> and worker = #{worker}</if>
+            <if test="workerDate != null "> and worker_date = #{workerDate}</if>
+            <if test="workerLifespan != null "> and worker_lifespan = #{workerLifespan}</if>
+            <if test="foreman != null  and foreman != ''"> and foreman = #{foreman}</if>
+            <if test="foremanDate != null "> and foreman_date = #{foremanDate}</if>
+            <if test="foremanLifespan != null "> and foreman_lifespan = #{foremanLifespan}</if>
+            <if test="ac != null  and ac != ''"> and ac = #{ac}</if>
+            <if test="acDate != null "> and ac_date = #{acDate}</if>
+            <if test="acLifespan != null "> and ac_lifespan = #{acLifespan}</if>
+            <if test="firefighter != null  and firefighter != ''"> and firefighter = #{firefighter}</if>
+            <if test="firefighterDate != null "> and firefighter_date = #{firefighterDate}</if>
+            <if test="firefighterLifespan != null "> and firefighter_lifespan = #{firefighterLifespan}</if>
+            <if test="safety != null  and safety != ''"> and safety = #{safety}</if>
+            <if test="safetyDate != null "> and safety_date = #{safetyDate}</if>
+            <if test="safetyLifespan != null "> and safety_lifespan = #{safetyLifespan}</if>
+            <if test="tds != null  and tds != ''"> and tds = #{tds}</if>
+            <if test="tdsDate != null "> and tds_date = #{tdsDate}</if>
+            <if test="tdsLifespan != null "> and tds_lifespan = #{tdsLifespan}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+
+    <select id="selectTWorkcertificateCbpsById" parameterType="Long" resultMap="TWorkcertificateCbpsResult">
+        <include refid="selectTWorkcertificateCbpsVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTWorkcertificateCbps" parameterType="TWorkcertificateCbps">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT seq_t_workcertificate_cbps.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_workcertificate_cbps
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="plantCode != null and plantCode != ''">plant_code,</if>
+            <if test="name != null">name,</if>
+            <if test="employeeid != null">employeeid,</if>
+            <if test="classes != null">classes,</if>
+            <if test="container != null">container,</if>
+            <if test="containerDate != null">container_date,</if>
+            <if test="containerLifespan != null">container_lifespan,</if>
+            <if test="pipe != null">pipe,</if>
+            <if test="pipeDate != null">pipe_date,</if>
+            <if test="pipeLifespan != null">pipe_lifespan,</if>
+            <if test="worker != null">worker,</if>
+            <if test="workerDate != null">worker_date,</if>
+            <if test="workerLifespan != null">worker_lifespan,</if>
+            <if test="foreman != null">foreman,</if>
+            <if test="foremanDate != null">foreman_date,</if>
+            <if test="foremanLifespan != null">foreman_lifespan,</if>
+            <if test="ac != null">ac,</if>
+            <if test="acDate != null">ac_date,</if>
+            <if test="acLifespan != null">ac_lifespan,</if>
+            <if test="firefighter != null">firefighter,</if>
+            <if test="firefighterDate != null">firefighter_date,</if>
+            <if test="firefighterLifespan != null">firefighter_lifespan,</if>
+            <if test="safety != null">safety,</if>
+            <if test="safetyDate != null">safety_date,</if>
+            <if test="safetyLifespan != null">safety_lifespan,</if>
+            <if test="tds != null">tds,</if>
+            <if test="tdsDate != null">tds_date,</if>
+            <if test="tdsLifespan != null">tds_lifespan,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="deptId != null">dept_id,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="plantCode != null and plantCode != ''">#{plantCode},</if>
+            <if test="name != null">#{name},</if>
+            <if test="employeeid != null">#{employeeid},</if>
+            <if test="classes != null">#{classes},</if>
+            <if test="container != null">#{container},</if>
+            <if test="containerDate != null">#{containerDate},</if>
+            <if test="containerLifespan != null">#{containerLifespan},</if>
+            <if test="pipe != null">#{pipe},</if>
+            <if test="pipeDate != null">#{pipeDate},</if>
+            <if test="pipeLifespan != null">#{pipeLifespan},</if>
+            <if test="worker != null">#{worker},</if>
+            <if test="workerDate != null">#{workerDate},</if>
+            <if test="workerLifespan != null">#{workerLifespan},</if>
+            <if test="foreman != null">#{foreman},</if>
+            <if test="foremanDate != null">#{foremanDate},</if>
+            <if test="foremanLifespan != null">#{foremanLifespan},</if>
+            <if test="ac != null">#{ac},</if>
+            <if test="acDate != null">#{acDate},</if>
+            <if test="acLifespan != null">#{acLifespan},</if>
+            <if test="firefighter != null">#{firefighter},</if>
+            <if test="firefighterDate != null">#{firefighterDate},</if>
+            <if test="firefighterLifespan != null">#{firefighterLifespan},</if>
+            <if test="safety != null">#{safety},</if>
+            <if test="safetyDate != null">#{safetyDate},</if>
+            <if test="safetyLifespan != null">#{safetyLifespan},</if>
+            <if test="tds != null">#{tds},</if>
+            <if test="tdsDate != null">#{tdsDate},</if>
+            <if test="tdsLifespan != null">#{tdsLifespan},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="deptId != null">#{deptId},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTWorkcertificateCbps" parameterType="TWorkcertificateCbps">
+        update t_workcertificate_cbps
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="plantCode != null and plantCode != ''">plant_code = #{plantCode},</if>
+            <if test="name != null">name = #{name},</if>
+            <if test="employeeid != null">employeeid = #{employeeid},</if>
+            <if test="classes != null">classes = #{classes},</if>
+            <if test="container != null">container = #{container},</if>
+            <if test="containerDate != null">container_date = #{containerDate},</if>
+            <if test="containerLifespan != null">container_lifespan = #{containerLifespan},</if>
+            <if test="pipe != null">pipe = #{pipe},</if>
+            <if test="pipeDate != null">pipe_date = #{pipeDate},</if>
+            <if test="pipeLifespan != null">pipe_lifespan = #{pipeLifespan},</if>
+            <if test="worker != null">worker = #{worker},</if>
+            <if test="workerDate != null">worker_date = #{workerDate},</if>
+            <if test="workerLifespan != null">worker_lifespan = #{workerLifespan},</if>
+            <if test="foreman != null">foreman = #{foreman},</if>
+            <if test="foremanDate != null">foreman_date = #{foremanDate},</if>
+            <if test="foremanLifespan != null">foreman_lifespan = #{foremanLifespan},</if>
+            <if test="ac != null">ac = #{ac},</if>
+            <if test="acDate != null">ac_date = #{acDate},</if>
+            <if test="acLifespan != null">ac_lifespan = #{acLifespan},</if>
+            <if test="firefighter != null">firefighter = #{firefighter},</if>
+            <if test="firefighterDate != null">firefighter_date = #{firefighterDate},</if>
+            <if test="firefighterLifespan != null">firefighter_lifespan = #{firefighterLifespan},</if>
+            <if test="safety != null">safety = #{safety},</if>
+            <if test="safetyDate != null">safety_date = #{safetyDate},</if>
+            <if test="safetyLifespan != null">safety_lifespan = #{safetyLifespan},</if>
+            <if test="tds != null">tds = #{tds},</if>
+            <if test="tdsDate != null">tds_date = #{tdsDate},</if>
+            <if test="tdsLifespan != null">tds_lifespan = #{tdsLifespan},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTWorkcertificateCbpsById" parameterType="Long">
+        update t_workcertificate_cbps set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTWorkcertificateCbpsByIds" parameterType="String">
+        update t_workcertificate_cbps set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+
+    <select id="queryNeedInsertIds" resultType="String">
+        SELECT a.STAFFID FROM "T_STAFFMGR" a where DEPT_ID = 10012 and a.del_flag = 0
+            minus
+        SELECT b.EMPLOYEEID from T_WORKCERTIFICATE_CBPS b where b.del_flag = 0
+    </select>
+
+    <select id="queryNeedDeleteIds" resultType="String">
+        SELECT b.EMPLOYEEID from T_WORKCERTIFICATE_CBPS b where b.del_flag = 0
+            minus
+        SELECT a.STAFFID FROM "T_STAFFMGR" a where DEPT_ID = 10012 and a.del_flag = 0
+    </select>
+
+
+
+
+</mapper>

+ 53 - 0
ui/src/api/training/workcertificateCbps.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询作业证书一览列表
+export function listWorkcertificateCbps(query) {
+  return request({
+    url: '/training/workcertificateCbps/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询作业证书一览详细
+export function getWorkcertificateCbps(id) {
+  return request({
+    url: '/training/workcertificateCbps/' + id,
+    method: 'get'
+  })
+}
+
+// 新增作业证书一览
+export function addWorkcertificateCbps(data) {
+  return request({
+    url: '/training/workcertificateCbps',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改作业证书一览
+export function updateWorkcertificateCbps(data) {
+  return request({
+    url: '/training/workcertificateCbps',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除作业证书一览
+export function delWorkcertificateCbps(id) {
+  return request({
+    url: '/training/workcertificateCbps/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出作业证书一览
+export function exportWorkcertificateCbps(query) {
+  return request({
+    url: '/training/workcertificateCbps/export',
+    method: 'get',
+    params: query
+  })
+}

+ 0 - 1
ui/src/views/training/byxWorkcertificate/index.vue

@@ -765,7 +765,6 @@ import {allFileList, delCommonfile} from "@/api/common/commonfile";
         }else if (fileType === "byxworkcertificate-foremantrain") {
           workType = this.$t('班组长');
         }
-
         this.doc.pType = fileType
         this.doc.queryParams.pType = fileType
         this.doc.id = row.id;

+ 2 - 3
ui/src/views/training/workcertificate-link/index.vue

@@ -1,10 +1,9 @@
 <template>
 
-  <cbpc-workcertificate v-if="homeType== 1"></cbpc-workcertificate>
+  <cbps-workcertificate v-if="homeType== 1"></cbps-workcertificate>
   <cbps-workcertificate v-else-if="homeType == 5"></cbps-workcertificate>
-  <cbpc-workcertificate v-else></cbpc-workcertificate>
+  <cbps-workcertificate v-else></cbps-workcertificate>
 
-  <!--  <semshome v-show="homeType == 2"></semshome>-->
 </template>
 
 <script>

+ 982 - 0
ui/src/views/training/workcertificateCbps/index.vue

@@ -0,0 +1,982 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="员工号" prop="employeeid">
+        <el-input
+          v-model="queryParams.employeeid"
+          placeholder="请输入员工号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="班组" prop="classes">
+        <el-select v-model="queryParams.classes" placeholder="请选择班组" clearable size="small">
+          <el-option
+            v-for="dict in classesOptions"
+            :key="dict.dictValue"
+            :label="dict.dictLabel"
+            :value="dict.dictValue"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['training:workcertificate:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['training:workcertificate:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['training:workcertificate:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['training:workcertificate:export']"
+        >导出</el-button>
+      </el-col>
+	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="workcertificateCbpsList" @selection-change="handleSelectionChange" :header-cell-style="tableCellStyle" :cell-style="tableCellStyle" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="装置名称" align="center" prop="plantCode" :formatter="plantCodeFormat" />
+      <el-table-column label="姓名" align="center" prop="name" :show-overflow-tooltip="true"/>
+      <el-table-column label="班组" align="center" prop="classes" :formatter="classesFormat" />
+      <el-table-column label="压力容器" align="center" prop="container" :show-overflow-tooltip="true">
+        <template slot-scope="scope">
+          <el-button icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'workcertificateCbps-container')"  circle></el-button>
+
+          <span> {{scope.row.container}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="压力容器取证日期" align="center" prop="containerDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.containerDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="压力容器证有效期" align="center" prop="containerLifespan" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.containerLifespan, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="压力管道" align="center" prop="pipe" :show-overflow-tooltip="true">
+        <template slot-scope="scope">
+          <el-button icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'workcertificateCbps-pipe')"  circle></el-button>
+          <span> {{scope.row.pipe}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="压力管道取证日期" align="center" prop="pipeDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.pipeDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="压力管道证有效期" align="center" prop="pipeLifespan" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.pipeLifespan, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="技术工人上岗证" align="center" prop="worker" :show-overflow-tooltip="true">
+        <template slot-scope="scope">
+          <el-button icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'workcertificateCbps-worker')"  circle></el-button>
+
+          <span> {{scope.row.worker}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="技术工人上岗证取证日期" align="center" prop="workerDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.workerDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="技术工人上岗证有效期" align="center" prop="workerLifespan" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.workerLifespan, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="班组长安全培训" align="center" prop="foreman" :show-overflow-tooltip="true">
+        <template slot-scope="scope">
+          <el-button icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'workcertificateCbps-foreman')"  circle></el-button>
+
+          <span> {{scope.row.foreman}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="班组长安全培训取证日期" align="center" prop="foremanDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.foremanDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="班组长安全培训有效期" align="center" prop="foremanLifespan" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.foremanLifespan, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="制冷与空调" align="center" prop="ac" :show-overflow-tooltip="true">
+        <template slot-scope="scope">
+          <el-button icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'workcertificateCbps-ac')"  circle></el-button>
+
+          <span> {{scope.row.ac}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="制冷与空调取证日期" align="center" prop="acDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.acDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="制冷与空调有效期" align="center" prop="acLifespan" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.acLifespan, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="建筑物消防员职业资格证" align="center" prop="firefighter" :show-overflow-tooltip="true">
+        <template slot-scope="scope">
+          <el-button icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'workcertificateCbps-firefighter')"  circle></el-button>
+
+          <span> {{scope.row.firefighter}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="建筑物消防员取证日期" align="center" prop="firefighterDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.firefighterDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="建筑物消防员有效期" align="center" prop="firefighterLifespan" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.firefighterLifespan, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="专职安全管理人员" align="center" prop="safety" :show-overflow-tooltip="true">
+        <template slot-scope="scope">
+          <el-button icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'workcertificateCbps-safety')"  circle></el-button>
+
+          <span> {{scope.row.safety}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="安全员取证日期" align="center" prop="safetyDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.safetyDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="安全员有效期" align="center" prop="safetyLifespan" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.safetyLifespan, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="TDS" align="center" prop="tds" :show-overflow-tooltip="true">
+        <template slot-scope="scope">
+          <el-button icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'workcertificateCbps-tds')"  circle></el-button>
+
+          <span> {{scope.row.tds}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="TDS取证日期" align="center" prop="tdsDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.tdsDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="TDS有效期" align="center" prop="tdsLifespan" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.tdsLifespan, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true"/>
+      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['training:workcertificate:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['training:workcertificate:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改作业证书一览对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="唯一标识ID" prop="id">
+          <el-input v-model="form.id" placeholder="请输入唯一标识ID" />
+        </el-form-item>
+        <el-form-item label="装置名称" prop="plantCode">
+          <el-select v-model="form.plantCode" placeholder="请选择装置名称">
+            <el-option
+              v-for="dict in plantCodeOptions"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="姓名" prop="name">
+          <el-input v-model="form.name" placeholder="请输入姓名" />
+        </el-form-item>
+        <el-form-item label="员工号" prop="employeeid">
+          <el-input v-model="form.employeeid" placeholder="请输入员工号" />
+        </el-form-item>
+        <el-form-item label="班组" prop="classes">
+          <el-select v-model="form.classes" placeholder="请选择班组">
+            <el-option
+              v-for="dict in classesOptions"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="压力容器" prop="container">
+          <el-input v-model="form.container" placeholder="请输入压力容器" />
+        </el-form-item>
+        <el-form-item label="压力容器取证日期" prop="containerDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.containerDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择压力容器取证日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="压力容器证有效期" prop="containerLifespan">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.containerLifespan"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择压力容器证有效期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="压力管道" prop="pipe">
+          <el-input v-model="form.pipe" placeholder="请输入压力管道" />
+        </el-form-item>
+        <el-form-item label="压力管道取证日期" prop="pipeDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.pipeDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择压力管道取证日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="压力管道证有效期" prop="pipeLifespan">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.pipeLifespan"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择压力管道证有效期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="技术工人上岗证" prop="worker">
+          <el-input v-model="form.worker" placeholder="请输入技术工人上岗证" />
+        </el-form-item>
+        <el-form-item label="技术工人上岗证取证日期" prop="workerDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.workerDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择技术工人上岗证取证日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="技术工人上岗证有效期" prop="workerLifespan">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.workerLifespan"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择技术工人上岗证有效期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="班组长安全培训" prop="foreman">
+          <el-input v-model="form.foreman" placeholder="请输入班组长安全培训" />
+        </el-form-item>
+        <el-form-item label="班组长安全培训取证日期" prop="foremanDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.foremanDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择班组长安全培训取证日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="班组长安全培训有效期" prop="foremanLifespan">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.foremanLifespan"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择班组长安全培训有效期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="制冷与空调" prop="ac">
+          <el-input v-model="form.ac" placeholder="请输入制冷与空调" />
+        </el-form-item>
+        <el-form-item label="制冷与空调取证日期" prop="acDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.acDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择制冷与空调取证日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="制冷与空调有效期" prop="acLifespan">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.acLifespan"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择制冷与空调有效期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="建筑物消防员职业资格证" prop="firefighter">
+          <el-input v-model="form.firefighter" placeholder="请输入建筑物消防员职业资格证" />
+        </el-form-item>
+        <el-form-item label="建筑物消防员取证日期" prop="firefighterDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.firefighterDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择建筑物消防员取证日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="建筑物消防员有效期" prop="firefighterLifespan">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.firefighterLifespan"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择建筑物消防员有效期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="专职安全管理人员" prop="safety">
+          <el-input v-model="form.safety" placeholder="请输入专职安全管理人员" />
+        </el-form-item>
+        <el-form-item label="安全员取证日期" prop="safetyDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.safetyDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择安全员取证日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="安全员有效期" prop="safetyLifespan">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.safetyLifespan"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择安全员有效期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="TDS" prop="tds">
+          <el-input v-model="form.tds" placeholder="请输入TDS" />
+        </el-form-item>
+        <el-form-item label="TDS取证日期" prop="tdsDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.tdsDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择TDS取证日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="TDS有效期" prop="tdsLifespan">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.tdsLifespan"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择TDS有效期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="备注" prop="remarks">
+          <el-input v-model="form.remarks" placeholder="请输入备注" />
+        </el-form-item>
+          <el-form-item label="归属部门" prop="deptId">
+              <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
+          </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+      <!-- 用户导入对话框 -->
+      <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+          <el-upload
+                  ref="upload"
+                  :limit="1"
+                  accept=".xlsx, .xls"
+                  :headers="upload.headers"
+                  :action="upload.url + '?updateSupport=' + upload.updateSupport"
+                  :disabled="upload.isUploading"
+                  :on-progress="handleFileUploadProgress"
+                  :on-success="handleFileSuccess"
+                  :auto-upload="false"
+                  drag
+          >
+              <i class="el-icon-upload"></i>
+              <div class="el-upload__text">
+                  将文件拖到此处,或
+                  <em>点击上传</em>
+              </div>
+              <div class="el-upload__tip" slot="tip">
+                  <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
+                  <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+              </div>
+              <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+          </el-upload>
+          <div slot="footer" class="dialog-footer">
+              <el-button type="primary" @click="submitFileForm">确 定</el-button>
+              <el-button @click="upload.open = false">取 消</el-button>
+          </div>
+      </el-dialog>
+    <!-- 报告附件对话框 -->
+    <el-dialog  :close-on-click-modal="false" v-dialogDrag :title="doc.title" :visible.sync="doc.open" width="1000px" append-to-body >
+      <el-upload v-hasPermi="['training:trainingrecords:file']"
+                 ref="doc"
+                 :limit="50"
+                 :headers="doc.headers"
+                 :action="doc.url + '?pType=' + doc.pType + '&pId=' + doc.pId"
+                 :disabled="doc.isUploading"
+                 :on-progress="handleFileDocProgress"
+                 :on-success="handleFileDocSuccess"
+                 :auto-upload="true"
+                 drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          {{ $t('将文件拖到此处,或') }}
+          <em>{{ $t('点击上传') }}</em>
+        </div>
+      </el-upload>
+      <el-table :data="doc.commonfileList" border>
+        <el-table-column :label="$t('文件名')" align="center" prop="fileName" :show-overflow-tooltip="true">
+          <template slot-scope="scope">
+            <a  class="link-type"  @click="handleDownload(scope.row)">
+              <span>{{ scope.row.fileName }}</span>
+            </a>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('大小(Kb)')" align="center" prop="fileSize" :show-overflow-tooltip="true" width="80" />
+        <el-table-column :label="$t('上传人')" align="center" prop="creator" :show-overflow-tooltip="true" width="120"/>
+        <!--        <el-table-column :label="$t('培训日期')" align="center" prop="pDate"  width="150">-->
+        <!--          <template slot-scope="scope">-->
+        <!--            <el-date-picker-->
+        <!--              v-if="scope.row.isEdit"-->
+        <!--              v-model="scope.row.pDate"-->
+        <!--              type="date"-->
+        <!--              value-format="yyyy-MM-dd"-->
+        <!--              placeholder="日期">-->
+        <!--            </el-date-picker>-->
+        <!--            <span v-else>{{ parseTime(scope.row.pDate, '{y}-{m}-{d}') }}</span>-->
+        <!--          </template>-->
+        <!--        </el-table-column>-->
+        <el-table-column :label="$t('操作')" align="center" width="220" class-name="small-padding fixed-width">
+          <template slot-scope="scope">
+            <el-button
+              v-if="scope.row.fileName.endsWith('pdf')"
+              size="mini"
+              type="text"
+              icon="el-icon-view"
+              @click="handleSee(scope.row)"
+            >{{ $t('预览') }}</el-button>
+            <el-button v-hasPermi="['training:trainingrecords:file']"  type="text" size="small" v-if="scope.row.isEdit" @click="save(scope.row)">保存</el-button>
+            <el-button type="text" size="small" v-if="scope.row.isEdit" @click="cancelFile(scope.row, scope.$index)">取消</el-button>
+            <!--            <el-button v-hasPermi="['training:trainingrecords:file']" v-if="!scope.row.isEdit" @click="edit(scope.row)" icon="el-icon-edit" type="text" size="mini">编辑</el-button>-->
+            <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-download"
+              @click="handleDownload(scope.row)"
+            >{{ $t('下载') }}</el-button>
+            <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-delete"
+              @click="handleDeleteDoc(scope.row)"
+              v-hasPermi="['training:trainingrecords:file']"
+            >{{ $t('删除') }}</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-dialog  :close-on-click-modal="false" v-dialogDrag :title="pdf.title" :visible.sync="pdf.open" width="1300px" append-to-body>
+        <div style="margin-top: -60px;float: right;margin-right: 40px;">
+          <el-button size="mini" type="text" @click="openPdf">{{$t('新页面打开PDF')}}</el-button></div>
+        <div style="margin-top: -30px">
+          <iframe :src="pdf.pdfUrl" frameborder="0" width="100%" height="700px"></iframe>
+        </div>
+      </el-dialog>
+
+      <div slot="footer" class="dialog-footer">
+        <!--        <el-button type="primary" @click="submitFileForm">{{ $t('确 定') }}</el-button>-->
+        <el-button @click="doc.open = false">{{ $t('返 回') }}</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listWorkcertificateCbps, getWorkcertificateCbps, delWorkcertificateCbps, addWorkcertificateCbps, updateWorkcertificateCbps, exportWorkcertificateCbps, importTemplate} from "@/api/training/workcertificateCbps";
+import { treeselect } from "@/api/system/dept";
+import { getToken } from "@/utils/auth";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import {allFileList, delCommonfile} from "@/api/common/commonfile";
+
+export default {
+  name: "WorkcertificateCbps",
+  components: { Treeselect },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 作业证书一览表格数据
+      workcertificateCbpsList: [],
+      // 弹出层标题
+      title: "",
+      // 部门树选项
+      deptOptions: undefined,
+      clientHeight:300,
+      // 是否显示弹出层
+      open: false,
+      // 装置名称字典
+      plantCodeOptions: [],
+      // 班组字典
+      classesOptions: [],
+        // 用户导入参数
+        upload: {
+            // 是否显示弹出层(用户导入)
+            open: false,
+            // 弹出层标题(用户导入)
+            title: "",
+            // 是否禁用上传
+            isUploading: false,
+            // 是否更新已经存在的用户数据
+            updateSupport: 0,
+            // 设置上传的请求头部
+            headers: { Authorization: "Bearer " + getToken() },
+            // 上传的地址
+            url: process.env.VUE_APP_BASE_API + "/training/workcertificateCbps/importData"
+        },
+      // 报告附件参数
+      doc: {
+        file: "",
+        // 是否显示弹出层(报告附件)
+        open: false,
+        // 弹出层标题(报告附件)
+        title: "附件",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 报告附件上传位置编号
+        ids: 0,
+        // 设置上传的请求头部
+        headers: { Authorization: "Bearer " + getToken() },
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/common/commonfile/uploadFile",
+        commonfileList: null,
+        queryParams: {
+          pId: null,
+          pType: 'traning'
+        },
+        pType: 'traning',
+        pId: null,
+        form: {}
+      },
+      pdf : {
+        title: '',
+        pdfUrl: '',
+        numPages: null,
+        open: false,
+        pageNum: 1,
+        pageTotalNum: 1,
+        loadedRatio: 0,
+      },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 20,
+        plantCode: null,
+        employeeid: null,
+        classes: null,
+        container: null,
+        containerDate: null,
+        containerLifespan: null,
+        pipe: null,
+        pipeDate: null,
+        pipeLifespan: null,
+        worker: null,
+        workerDate: null,
+        workerLifespan: null,
+        foreman: null,
+        foremanDate: null,
+        foremanLifespan: null,
+        ac: null,
+        acDate: null,
+        acLifespan: null,
+        firefighter: null,
+        firefighterDate: null,
+        firefighterLifespan: null,
+        safety: null,
+        safetyDate: null,
+        safetyLifespan: null,
+        tds: null,
+        tdsDate: null,
+        tdsLifespan: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        deptId: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        id: [
+          { required: true, message: "唯一标识ID不能为空", trigger: "blur" }
+        ],
+        plantCode: [
+          { required: true, message: "装置名称不能为空", trigger: "change" }
+        ],
+        deptId: [
+          { required: true, message: "部门编号不能为空", trigger: "blur" }
+        ]
+      }
+    };
+  },
+  watch: {
+        // 根据名称筛选部门树
+        deptName(val) {
+            this.$refs.tree.filter(val);
+        }
+   },
+  created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+          this.clientHeight = document.body.clientHeight -250
+      })
+    this.getList();
+    this.getTreeselect();
+    this.getDicts("PLANT_DIVIDE").then(response => {
+      this.plantCodeOptions = response.data;
+    });
+    this.getDicts("TEAM_DIVIDE").then(response => {
+      this.classesOptions = response.data;
+    });
+  },
+  methods: {
+    tableCellStyle({row, column, rowIndex, columnIndex}) {
+      if (columnIndex === 4||columnIndex === 5||columnIndex === 6) {
+        return "background:#DDFFDD;";
+      }
+      if (columnIndex === 7||columnIndex === 8||columnIndex === 9) {
+        return "background:#FFFFDD;";
+      }
+      if (columnIndex === 10||columnIndex === 11||columnIndex === 12) {
+        return "background:#DDFFFF;";
+      }
+      if (columnIndex === 13||columnIndex === 14||columnIndex === 15) {
+        return "background:rgb(229, 249, 175);";
+      }
+      if (columnIndex === 16||columnIndex === 17||columnIndex === 18) {
+        return "background:#DDFFDD;";
+      }
+      if (columnIndex === 19||columnIndex === 20||columnIndex === 21) {
+        return "background:#FFFFDD;";
+      }
+      if (columnIndex === 22||columnIndex === 23||columnIndex === 24) {
+        return "background:#DDFFFF;";
+      }
+      if (columnIndex === 25||columnIndex === 26||columnIndex === 27) {
+        return "background:rgb(229, 249, 175);";
+      }
+    },
+    /** 查询作业证书一览列表 */
+    getList() {
+      this.loading = true;
+      listWorkcertificateCbps(this.queryParams).then(response => {
+        this.workcertificateCbpsList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+     /** 查询部门下拉树结构 */
+     getTreeselect() {
+          treeselect().then(response => {
+              this.deptOptions = response.data;
+          });
+     },
+    // 装置名称字典翻译
+    plantCodeFormat(row, column) {
+      return this.selectDictLabel(this.plantCodeOptions, row.plantCode);
+    },
+    // 班组字典翻译
+    classesFormat(row, column) {
+      return this.selectDictLabel(this.classesOptions, row.classes);
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        plantCode: null,
+        name: null,
+        employeeid: null,
+        classes: null,
+        container: null,
+        containerDate: null,
+        containerLifespan: null,
+        pipe: null,
+        pipeDate: null,
+        pipeLifespan: null,
+        worker: null,
+        workerDate: null,
+        workerLifespan: null,
+        foreman: null,
+        foremanDate: null,
+        foremanLifespan: null,
+        ac: null,
+        acDate: null,
+        acLifespan: null,
+        firefighter: null,
+        firefighterDate: null,
+        firefighterLifespan: null,
+        safety: null,
+        safetyDate: null,
+        safetyLifespan: null,
+        tds: null,
+        tdsDate: null,
+        tdsLifespan: null,
+        delFlag: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        remarks: 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 = "添加作业证书一览";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getWorkcertificateCbps(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改作业证书一览";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateWorkcertificateCbps(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addWorkcertificateCbps(this.form).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$confirm('是否确认删除?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delWorkcertificateCbps(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有作业证书一览数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportWorkcertificateCbps(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+    },
+      /** 导入按钮操作 */
+      handleImport() {
+          this.upload.title = "用户导入";
+          this.upload.open = true;
+      },
+      /** 下载模板操作 */
+      importTemplate() {
+          importTemplate().then(response => {
+              this.download(response.msg);
+          });
+      },
+      // 文件上传中处理
+      handleFileUploadProgress(event, file, fileList) {
+          this.upload.isUploading = true;
+      },
+      // 文件上传成功处理
+      handleFileSuccess(response, file, fileList) {
+          this.upload.open = false;
+          this.upload.isUploading = false;
+          this.$refs.upload.clearFiles();
+          this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+          this.getList();
+      },
+      // 提交上传文件
+      submitFileForm() {
+          this.$refs.upload.submit();
+      },
+    /** 报告附件按钮操作 */
+    handleDoc(row , fileType) {
+      var workType = "";
+      this.doc.pType = fileType
+      this.doc.queryParams.pType = fileType
+      this.doc.id = row.id;
+      this.doc.title = row.name + this.$t('的')+ this.$t('空格') + workType+ this.$t('空格') + this.$t('空格')+ this.$t('附件') ;
+      this.doc.open = true;
+      this.doc.queryParams.pId = row.id
+      this.doc.pId = row.id
+      this.getFileList()
+      this.$nextTick(() => {
+        this.$refs.doc.clearFiles()
+      })
+    },
+    handleSee (row){
+      // window.open(process.env.VUE_APP_BASE_API +'/pdf/web/viewer.html?file=' + process.env.VUE_APP_BASE_API + row.fileUrl);//path是文件的全路径地址
+      this.pdf.open =true
+      this.pdf.title = row.fileName
+      this.pdf.pdfUrl = process.env.VUE_APP_BASE_API +'/pdf/web/viewer.html?file=' + process.env.VUE_APP_BASE_API + row.fileUrl
+    },
+    // 文件下载处理
+    handleDownload(row) {
+      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()
+    },
+    /** 删除按钮操作 */
+    handleDeleteDoc(row) {
+      const ids = row.id || this.ids;
+      this.$confirm(this.$t('是否确认删除?'), this.$t('警告'), {
+        confirmButtonText: this.$t('确定'),
+        cancelButtonText: this.$t('取消'),
+        type: "warning"
+      }).then(function() {
+        return delCommonfile(ids);
+      }).then(() => {
+        this.getFileList()
+        this.msgSuccess(this.$t('删除成功'));
+      })
+    },
+    openPdf(){
+      window.open(this.pdf.pdfUrl);//path是文件的全路径地址
+    },
+    //附件上传中处理
+    handleFileDocProgress(event, file, fileList) {
+      this.doc.file = file;
+      this.doc.isUploading = true;
+    },
+    //附件上传成功处理
+    handleFileDocSuccess(response, file, fileList) {
+      this.doc.isUploading = false;
+      this.$alert(response.msg, this.$t('导入结果'), { dangerouslyUseHTMLString: true });
+      this.getFileList()
+    },
+    getFileList (){
+      allFileList(this.doc.queryParams).then(response => {
+        this.doc.commonfileList = response;
+      });
+    },
+  }
+};
+</script>

+ 2 - 10
ui/src/views/training/worklicense-link/index.vue

@@ -1,9 +1,5 @@
 <template>
-  <homepage v-if="homeType== 1"></homepage>
-  <semshome v-else-if="homeType == 2"></semshome>
-  <invoice v-else-if="homeType== 3"></invoice>
-  <byxhome v-else-if="homeType== 4"></byxhome>
-  <hcqhome v-else-if="homeType== 5"></hcqhome>
+
 <!--  <semshome v-show="homeType == 2"></semshome>-->
 </template>
 
@@ -12,11 +8,7 @@
   // 原始首页
   // import homepage from "./monitor/elec/index";
   // 重构后首页
-  import homepage from "./monitor/bccHome/index";
-  import byxhome from "./byxhome";
-  import hcqhome from "./hcqhome";
-  import semshome from "./sems/specanalysis/index";
-  import invoice from "./invoice/bookingworkticket/index";
+
   import '@/common/flexible.js';
 
   export default {