Browse Source

导师带徒 添加审批流

jiangbiao 11 tháng trước cách đây
mục cha
commit
c00979acec
24 tập tin đã thay đổi với 339 bổ sung341 xóa
  1. 1 1
      master/src/main/java/com/ruoyi/config/ActivitiConfig.java
  2. 8 0
      master/src/main/java/com/ruoyi/project/approve/controller/TApproveController.java
  3. 18 0
      master/src/main/java/com/ruoyi/project/ehs/controller/TApproveDangerController.java
  4. 30 31
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsApproveController.java
  5. 56 5
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsNewController.java
  6. 10 0
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsApprove.java
  7. 3 0
      master/src/main/java/com/ruoyi/project/training/bccnew/service/ITTsApproveService.java
  8. 6 4
      master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsApproveServiceImpl.java
  9. 5 1
      master/src/main/resources/mybatis/training/bccnew/TTsNewMapper.xml
  10. 3 3
      master/src/main/resources/processes/bccnew/dsdtTraining.bpmn
  11. 53 0
      ui/src/api/training/bccnew/tsApprove.js
  12. 8 0
      ui/src/api/training/bccnew/tsnew.js
  13. 32 266
      ui/src/views/approve/approveDetail/dsdtTraining-detail.vue
  14. 9 0
      ui/src/views/approve/myapprove/index.vue
  15. 9 0
      ui/src/views/approve/pending/index.vue
  16. 9 0
      ui/src/views/approve/taskdone/index.vue
  17. 7 0
      ui/src/views/approve/unfinishedApprove/index.vue
  18. 1 1
      ui/src/views/training/bccdevice/index.vue
  19. 3 3
      ui/src/views/training/bccnew/firstplan/index.vue
  20. 3 3
      ui/src/views/training/bccnew/firstplan/index_student.vue
  21. 5 0
      ui/src/views/training/bccnew/tsnew/index.vue
  22. 4 0
      ui/src/views/training/bccnew/tsnew/index_s.vue
  23. 21 4
      ui/src/views/training/bccnew/tsnew/score.vue
  24. 35 19
      ui/src/views/training/bccnew/tsnew/score_student.vue

+ 1 - 1
master/src/main/java/com/ruoyi/config/ActivitiConfig.java

@@ -155,7 +155,7 @@ public class ActivitiConfig {
 
         DeploymentBuilder deploymentBuilder16 = repositoryService().createDeployment();
         Resource spec16 = resourceLoader.getResource("classpath:/processes/bccnew/dsdtTraining.bpmn"); //加载流程图资源文件
-        deploymentBuilder16.enableDuplicateFiltering().addInputStream(spec16.getFilename(), spec15.getInputStream()).name("导师带徒经理签字").deploy();//按流程id部署
+        deploymentBuilder16.enableDuplicateFiltering().addInputStream(spec16.getFilename(), spec16.getInputStream()).name("导师带徒经理签字").deploy();//按流程id部署
 
     }
 }

+ 8 - 0
master/src/main/java/com/ruoyi/project/approve/controller/TApproveController.java

@@ -43,6 +43,8 @@ import com.ruoyi.project.sems.service.ITApproveService;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.domain.SysUserRole;
 import com.ruoyi.project.system.service.ISysUserService;
+import com.ruoyi.project.training.bccnew.domain.TTsApprove;
+import com.ruoyi.project.training.bccnew.service.ITTsApproveService;
 import com.ruoyi.project.training.spec.domain.TStApprove;
 import com.ruoyi.project.training.spec.service.ITStApproveService;
 import org.activiti.bpmn.model.BpmnModel;
@@ -130,6 +132,8 @@ public class TApproveController extends BaseController {
     private ITSaiApplyService tSaiApplyService;
     @Autowired
     private ITSpecWeekcheckService tSpecWeekcheckService;
+    @Autowired
+    private ITTsApproveService tTsApproveService;
 
 
 
@@ -237,6 +241,10 @@ public class TApproveController extends BaseController {
                         devProcess.setApNo(t.getId().toString());
                         devProcess.setApName(user.getNickName());
                         devProcess.setApproveObject(t);
+                    }else if (pi.getProcessDefinitionName().equals("导师带徒经理审批")) {
+                        TTsApprove t = tTsApproveService.selectTTsApproveById(Long.parseLong(pi.getBusinessKey()));
+                        devProcess.setApNo(t.getApNo());
+                        devProcess.setApproveObject(t);
                     }
                 } catch (Exception e) {
                     logger.error(e.toString());

+ 18 - 0
master/src/main/java/com/ruoyi/project/ehs/controller/TApproveDangerController.java

@@ -45,6 +45,8 @@ import com.ruoyi.project.sems.service.ITApproveService;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.domain.SysUserRole;
 import com.ruoyi.project.system.service.ISysUserService;
+import com.ruoyi.project.training.bccnew.domain.TTsApprove;
+import com.ruoyi.project.training.bccnew.service.ITTsApproveService;
 import com.ruoyi.project.training.spec.domain.TStApprove;
 import com.ruoyi.project.training.spec.service.ITStApproveService;
 import org.activiti.bpmn.model.BpmnModel;
@@ -131,6 +133,8 @@ public class TApproveDangerController extends BaseController {
     private ITSaiApplyService tSaiApplyService;
     @Autowired
     private ITSpecWeekcheckService tSpecWeekcheckService;
+    @Autowired
+    private ITTsApproveService tTsApproveService;
 
     /**
      * 任务申请
@@ -313,6 +317,10 @@ public class TApproveDangerController extends BaseController {
                         devProcess.setApNo(t.getId().toString());
                         devProcess.setApName(user.getNickName());
                         devProcess.setApproveObject(t);
+                    }else if (pi.getProcessDefinitionName().equals("导师带徒经理审批")) {
+                        TTsApprove t = tTsApproveService.selectTTsApproveById(Long.parseLong(pi.getBusinessKey()));
+                        devProcess.setApNo(t.getApNo());
+                        devProcess.setApproveObject(t);
                     }
                 } catch (Exception e) {
                     logger.error(e.toString());
@@ -438,6 +446,10 @@ public class TApproveDangerController extends BaseController {
                     TSpecWeekcheck t = tSpecWeekcheckService.selectTSpecWeekcheckById(Long.parseLong(pi.getBusinessKey()));
                     devTask.setApproveObject(t);
                     devTask.setApNo(t.getId().toString());
+                }else if (pi.getProcessDefinitionName().equals("导师带徒经理审批")) {
+                    TTsApprove t = tTsApproveService.selectTTsApproveById(Long.parseLong(pi.getBusinessKey()));
+                    devTask.setApNo(t.getApNo());
+                    devTask.setApproveObject(t);
                 }
                 list.add(devTask);
             }
@@ -549,6 +561,12 @@ public class TApproveDangerController extends BaseController {
                     devProcess.setApNo(t.getId().toString());
                     devProcess.setApName(user.getNickName());
                     devProcess.setApproveObject(t);
+                }else if (pi.getProcessDefinitionName().equals("导师带徒经理审批")) {
+                    TTsApprove t = tTsApproveService.selectTTsApproveById(Long.parseLong(pi.getBusinessKey()));
+                    SysUser user = sysUserService.selectUserById(Long.valueOf(t.getCreaterCode()));
+                    devProcess.setApNo(t.getId().toString());
+                    devProcess.setApName(user.getNickName());
+                    devProcess.setApproveObject(t);
                 } else {
                     TApproveDanger approveDanger = tApproveDangerService.selectTApproveDangerById(Long.parseLong(pi.getBusinessKey()));
                     SysUser user = sysUserService.selectUserById(approveDanger.getRecorderId());

+ 30 - 31
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsApproveController.java

@@ -1,24 +1,20 @@
 package com.ruoyi.project.training.bccnew.controller;
 
-import java.util.List;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
-import com.ruoyi.project.training.bccnew.domain.TTsApprove;
-import com.ruoyi.project.training.bccnew.service.ITTsApproveService;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.approve.damain.DevTask;
+import com.ruoyi.project.training.bccnew.domain.TTsApprove;
+import com.ruoyi.project.training.bccnew.service.ITTsApproveService;
+import com.ruoyi.project.training.bccnew.service.ITTsNewService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 导师带徒审批Controller
@@ -28,18 +24,18 @@ import com.ruoyi.framework.web.page.TableDataInfo;
  */
 @RestController
 @RequestMapping("/bccnew/approve")
-public class TTsApproveController extends BaseController
-{
+public class TTsApproveController extends BaseController {
     @Autowired
     private ITTsApproveService tTsApproveService;
+    @Autowired
+    private ITTsNewService tTsNewService;
 
     /**
      * 查询导师带徒审批列表
      */
     @PreAuthorize("@ss.hasPermi('bccnew:approve:list')")
     @GetMapping("/list")
-    public TableDataInfo list(TTsApprove tTsApprove)
-    {
+    public TableDataInfo list(TTsApprove tTsApprove) {
         startPage();
         List<TTsApprove> list = tTsApproveService.selectTTsApproveList(tTsApprove);
         return getDataTable(list);
@@ -51,8 +47,7 @@ public class TTsApproveController extends BaseController
     @PreAuthorize("@ss.hasPermi('bccnew:approve:export')")
     @Log(title = "导师带徒审批", businessType = BusinessType.EXPORT)
     @GetMapping("/export")
-    public AjaxResult export(TTsApprove tTsApprove)
-    {
+    public AjaxResult export(TTsApprove tTsApprove) {
         List<TTsApprove> list = tTsApproveService.selectTTsApproveList(tTsApprove);
         ExcelUtil<TTsApprove> util = new ExcelUtil<TTsApprove>(TTsApprove.class);
         return util.exportExcel(list, "approve");
@@ -61,11 +56,12 @@ public class TTsApproveController extends BaseController
     /**
      * 获取导师带徒审批详细信息
      */
-    @PreAuthorize("@ss.hasPermi('bccnew:approve:query')")
+//    @PreAuthorize("@ss.hasPermi('bccnew:approve:query')")
     @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
-        return AjaxResult.success(tTsApproveService.selectTTsApproveById(id));
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        TTsApprove tTsApprove = tTsApproveService.selectTTsApproveById(id);
+        tTsApprove.settTsNew(tTsNewService.selectTTsNewById(tTsApprove.getTrainingId()));
+        return AjaxResult.success(tTsApprove);
     }
 
     /**
@@ -74,8 +70,7 @@ public class TTsApproveController extends BaseController
     @PreAuthorize("@ss.hasPermi('bccnew:approve:add')")
     @Log(title = "导师带徒审批", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody TTsApprove tTsApprove)
-    {
+    public AjaxResult add(@RequestBody TTsApprove tTsApprove) {
         return toAjax(tTsApproveService.insertTTsApprove(tTsApprove));
     }
 
@@ -85,19 +80,23 @@ public class TTsApproveController extends BaseController
     @PreAuthorize("@ss.hasPermi('bccnew:approve:edit')")
     @Log(title = "导师带徒审批", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody TTsApprove tTsApprove)
-    {
+    public AjaxResult edit(@RequestBody TTsApprove tTsApprove) {
         return toAjax(tTsApproveService.updateTTsApprove(tTsApprove));
     }
 
+    @Log(title = "导师带徒审批", businessType = BusinessType.UPDATE)
+    @PutMapping("/handle")
+    public AjaxResult handle(@RequestBody DevTask devTask) {
+        return tTsApproveService.handle(devTask, getNickName(), getUserId().toString());
+    }
+
     /**
      * 删除导师带徒审批
      */
     @PreAuthorize("@ss.hasPermi('bccnew:approve:remove')")
     @Log(title = "导师带徒审批", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids)
-    {
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(tTsApproveService.deleteTTsApproveByIds(ids));
     }
 }

+ 56 - 5
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsNewController.java

@@ -90,6 +90,9 @@ public class TTsNewController extends BaseController {
     @Autowired
     private ITTsFtplanService tsFtplanService;
 
+    @Autowired
+    private ITTsApproveService tsApproveService;
+
     /**
      * 查询导师带徒列表
      */
@@ -111,7 +114,7 @@ public class TTsNewController extends BaseController {
                     TTsFirstplan tTsFirstplan = new TTsFirstplan();
                     tTsFirstplan.setNewId(t.getNewId());
                     List<TTsFirstplan> firstplanAll = tTsFirstplanService.selectTTsFirstplanListByNewId(tTsFirstplan);
-                    tTsFirstplan.setPlanStatus(1l);
+                    tTsFirstplan.setPlanStatus(3l);
                     List<TTsFirstplan> firstplanNow = tTsFirstplanService.selectTTsFirstplanListByNewId(tTsFirstplan);
                     Integer firstAll = firstplanAll.size();
                     Integer firstNow = firstplanNow.size();
@@ -121,7 +124,7 @@ public class TTsNewController extends BaseController {
                         TTsLjplan tTsLjplan = new TTsLjplan();
                         tTsLjplan.setNewId(t.getNewId());
                         List<TTsLjplan> ljPlansAll = tTsLjplanService.selectTTsLjplanListByNewId(tTsLjplan);
-                        tTsLjplan.setPlanStatus(1l);
+                        tTsLjplan.setPlanStatus(3l);
                         List<TTsLjplan> ljPlansNow = tTsLjplanService.selectTTsLjplanListByNewId(tTsLjplan);
                         secAll = ljPlansAll.size();
                         secNow = ljPlansNow.size();
@@ -129,7 +132,7 @@ public class TTsNewController extends BaseController {
                         TTsYsplan tTsYsplan = new TTsYsplan();
                         tTsYsplan.setNewId(t.getNewId());
                         List<TTsYsplan> ysPlansAll = tTsYsplanService.selectTTsYsplanListByNewId(tTsYsplan);
-                        tTsYsplan.setPlanStatus(1l);
+                        tTsYsplan.setPlanStatus(3l);
                         List<TTsYsplan> ysPlansNow = tTsYsplanService.selectTTsYsplanListByNewId(tTsYsplan);
                         secAll = ysPlansAll.size();
                         secNow = ysPlansNow.size();
@@ -137,7 +140,7 @@ public class TTsNewController extends BaseController {
                         TTsFlplan tTsFlplan = new TTsFlplan();
                         tTsFlplan.setNewId(t.getNewId());
                         List<TTsFlplan> flPlansAll = tTsFlplanService.selectTTsFlplanListByNewId(tTsFlplan);
-                        tTsFlplan.setPlanStatus(1l);
+                        tTsFlplan.setPlanStatus(3l);
                         List<TTsFlplan> flPlansNow = tTsFlplanService.selectTTsFlplanListByNewId(tTsFlplan);
                         secAll = flPlansAll.size();
                         secNow = flPlansNow.size();
@@ -145,7 +148,7 @@ public class TTsNewController extends BaseController {
                         TTsFtplan tTsFtplan = new TTsFtplan();
                         tTsFtplan.setNewId(t.getNewId());
                         List<TTsFtplan> ftPlansAll = tTsFtplanService.selectTTsFtplanListByNewId(tTsFtplan);
-                        tTsFtplan.setPlanStatus(1l);
+                        tTsFtplan.setPlanStatus(3l);
                         List<TTsFtplan> ftPlansNow = tTsFtplanService.selectTTsFtplanListByNewId(tTsFtplan);
                         secAll = ftPlansAll.size();
                         secNow = ftPlansNow.size();
@@ -525,6 +528,54 @@ public class TTsNewController extends BaseController {
     @Log(title = "导师带徒", businessType = BusinessType.UPDATE)
     @PutMapping
     public AjaxResult edit(@RequestBody TTsNew tTsNew) {
+        if (tTsNew.getPlanStatus()==1){
+            TTsFirstplan tTsFirstplan = new TTsFirstplan();
+            tTsFirstplan.setNewId(tTsNew.getNewId());
+            for (TTsFirstplan tsFirstplan : tTsFirstplanService.selectTTsFirstplanListByNewId(tTsFirstplan)) {
+                if (tsFirstplan.getPlanStatus()==null){
+                    tsFirstplan.setPlanStatus(1L);
+                    tTsFirstplanService.updateTTsFirstplan(tsFirstplan);
+                }
+            }
+            if(tTsNew.getPlanType()==1){
+                TTsLjplan entity = new TTsLjplan();
+                entity.setNewId(tTsNew.getNewId());
+                for (TTsLjplan item : tTsLjplanService.selectTTsLjplanListByNewId(entity)) {
+                    if (item.getPlanStatus()==null){
+                        item.setPlanStatus(1L);
+                        tTsLjplanService.updateTTsLjplan(item);
+                    }
+                }
+            }else if(tTsNew.getPlanType()==2){
+                TTsYsplan entity = new TTsYsplan();
+                entity.setNewId(tTsNew.getNewId());
+                for (TTsYsplan item : tTsYsplanService.selectTTsYsplanListByNewId(entity)) {
+                    if (item.getPlanStatus()==null){
+                        item.setPlanStatus(1L);
+                        tTsYsplanService.updateTTsYsplan(item);
+                    }
+                }
+            }else if(tTsNew.getPlanType()==3){
+                TTsFlplan entity = new TTsFlplan();
+                entity.setNewId(tTsNew.getNewId());
+                for (TTsFlplan item : tTsFlplanService.selectTTsFlplanListByNewId(entity)) {
+                    if (item.getPlanStatus()==null){
+                        item.setPlanStatus(1L);
+                        tTsFlplanService.updateTTsFlplan(item);
+                    }
+                }
+            }else if(tTsNew.getPlanType()==4){
+                TTsFtplan entity = new TTsFtplan();
+                entity.setNewId(tTsNew.getNewId());
+                for (TTsFtplan item : tTsFtplanService.selectTTsFtplanListByNewId(entity)) {
+                    if (item.getPlanStatus()==null){
+                        item.setPlanStatus(1L);
+                        tTsFtplanService.updateTTsFtplan(item);
+                    }
+                }
+            }
+            tsApproveService.doApprove(tTsNew.getNewId(),tTsNew.getPlanType().toString(),getUserId(),getNickName());
+        }
         return toAjax(tTsNewService.updateTTsNew(tTsNew));
     }
 

+ 10 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsApprove.java

@@ -89,6 +89,16 @@ public class TTsApprove extends BaseEntity
     @Excel(name = "类型")
     private String planType;
 
+    private TTsNew tTsNew;
+
+    public TTsNew gettTsNew() {
+        return tTsNew;
+    }
+
+    public void settTsNew(TTsNew tTsNew) {
+        this.tTsNew = tTsNew;
+    }
+
     public Long getTrainingId() {
         return trainingId;
     }

+ 3 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/service/ITTsApproveService.java

@@ -3,6 +3,7 @@ package com.ruoyi.project.training.bccnew.service;
 import java.util.List;
 
 import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.project.approve.damain.DevTask;
 import com.ruoyi.project.training.bccnew.domain.TTsApprove;
 
 /**
@@ -23,6 +24,8 @@ public interface ITTsApproveService
 
     public AjaxResult doApprove(Long id, String planType, Long userId, String userName);
 
+    public AjaxResult handle(DevTask devTask, String username, String userId);
+
     /**
      * 查询导师带徒审批列表
      * 

+ 6 - 4
master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsApproveServiceImpl.java

@@ -91,9 +91,10 @@ public class TTsApproveServiceImpl implements ITTsApproveService
         TTsApprove tTsApprove = new TTsApprove();
         tTsApprove.setPlanType(planType);
         tTsApprove.setTrainingId(id);
+        tTsApproveMapper.insertTTsApprove(tTsApprove);
         // 开始申请流程
         tTsApprove.setApNo(DateUtils.dateTimeNow() + userId);
-        long businessKey = id;
+        long businessKey = tTsApprove.getId();
         String applyUser = userId.toString();
         //开始工作流、监听
         Authentication.setAuthenticatedUserId(applyUser);//设置当前申请人
@@ -110,17 +111,18 @@ public class TTsApproveServiceImpl implements ITTsApproveService
         }
         variables.put("jluser", executor.toString());
         //采用key来启动流程定义并设置流程变量,返回流程实例
-        ProcessInstance pi = runtimeService.startProcessInstanceByKey("dsdtTaining", String.valueOf(businessKey), variables);
+        ProcessInstance pi = runtimeService.startProcessInstanceByKey("dsdtTraining", String.valueOf(businessKey), variables);
         tTsApprove.setProcessId(pi.getProcessInstanceId());
         tTsApprove.setApplicantName(userName);
         tTsApprove.setApplicant(userId.toString());
         tTsApprove.setApplicationTime(new Date());
         tTsApprove.setCreaterCode(userId.toString());
         tTsApprove.setCreatedate(new Date());
-        tTsApproveMapper.insertTTsApprove(tTsApprove);
+        tTsApproveMapper.updateTTsApprove(tTsApprove);
         return AjaxResult.success();
     }
 
+    @Override
     public AjaxResult handle(DevTask devTask,String username,String userId) {
         TTsApprove tTsApprove = devTask.gettTsApprove();
         //使用任务服务完成任务(提交任务)
@@ -129,7 +131,7 @@ public class TTsApproveServiceImpl implements ITTsApproveService
         Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
         //利用任务对象,获取流程实例id
         String processInstancesId = task.getProcessInstanceId();
-        TTsNew tTsNew = tTsNewMapper.selectTTsNewById(tTsApprove.getTrainingId());
+        TTsNew tTsNew = tTsApprove.gettTsNew();
         // 判断流程
         if ("1".equals(devTask.getCondition())) {
             devTask.setComment("通过");

+ 5 - 1
master/src/main/resources/mybatis/training/bccnew/TTsNewMapper.xml

@@ -27,10 +27,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="mentorAgreementWordPath"    column="mentor_agreement_word_path"    />
         <result property="targetPlanWordPath"    column="target_plan_word_path"    />
         <result property="appraisalFormWordPath"    column="appraisal_form_word_path"    />
+        <result property="mentorComments"    column="mentor_comments"    />
     </resultMap>
 
     <sql id="selectTTsNewVo">
-        select d.new_id, d.staff_id, d.name,u.name as staffName,u2.name as mentorStaffName, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.plan_status, d.plan_year, d.startdate, d.enddate, d.mentor_staff_id, d.plan_type, d.remarks ,s.dept_name,
+        select d.mentor_comments,d.new_id, d.staff_id, d.name,u.name as staffName,u2.name as mentorStaffName, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.plan_status, d.plan_year, d.startdate, d.enddate, d.mentor_staff_id, d.plan_type, d.remarks ,s.dept_name,
         d.mentor_agreement_word_path, d.target_plan_word_path, appraisal_form_word_path
         from t_ts_new d
       left join sys_dept s on s.dept_id = d.dept_id
@@ -89,6 +90,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="mentorStaffId != null">mentor_staff_id,</if>
             <if test="planType != null">plan_type,</if>
             <if test="remarks != null">remarks,</if>
+            <if test="mentorComments != null">mentor_comments,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="newId != null">#{newId},</if>
@@ -107,6 +109,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="mentorStaffId != null">#{mentorStaffId},</if>
             <if test="planType != null">#{planType},</if>
             <if test="remarks != null">#{remarks},</if>
+            <if test="mentorComments != null">#{mentorComments},</if>
          </trim>
     </insert>
 
@@ -131,6 +134,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="mentorAgreementWordPath != null">mentor_agreement_word_path = #{mentorAgreementWordPath},</if>
             <if test="targetPlanWordPath != null">target_plan_word_path = #{targetPlanWordPath},</if>
             <if test="appraisalFormWordPath != null">appraisal_form_word_path = #{appraisalFormWordPath},</if>
+            <if test="mentorComments != null">mentor_comments = #{mentorComments},</if>
         </trim>
         where new_id = #{newId}
     </update>

+ 3 - 3
master/src/main/resources/processes/bccnew/dsdtTraining.bpmn

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
-  <process id="dsdtTainingProcess" name="导师带徒经理审批" isExecutable="true">
+  <process id="dsdtTraining" name="导师带徒经理审批" isExecutable="true">
     <startEvent id="startDsdt" name="开始" activiti:initiator="${applyUser}"></startEvent>
     <userTask id="jlTask" name="装置经理" activiti:assignee="#{jluser}"></userTask>
     <endEvent id="endDsdt" name="End"></endEvent>
@@ -13,8 +13,8 @@
       <conditionExpression xsi:type="tFormalExpression"><![CDATA[${condition == 0}]]></conditionExpression>
     </sequenceFlow>
   </process>
-  <bpmndi:BPMNDiagram id="BPMNDiagram_dsdtTainingProcess">
-    <bpmndi:BPMNPlane bpmnElement="dsdtTainingProcess" id="BPMNPlane_dsdtTainingProcess">
+  <bpmndi:BPMNDiagram id="BPMNDiagram_dsdtTraining">
+    <bpmndi:BPMNPlane bpmnElement="dsdtTraining" id="BPMNPlane_dsdtTraining">
       <bpmndi:BPMNShape bpmnElement="startDsdt" id="BPMNShape_startDsdt">
         <omgdc:Bounds height="35.0" width="35.0" x="70.0" y="60.0"></omgdc:Bounds>
       </bpmndi:BPMNShape>

+ 53 - 0
ui/src/api/training/bccnew/tsApprove.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询导师带徒审批列表
+export function listApprove(query) {
+  return request({
+    url: '/bccnew/approve/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询导师带徒审批详细
+export function getApprove(id) {
+  return request({
+    url: '/bccnew/approve/' + id,
+    method: 'get'
+  })
+}
+
+// 新增导师带徒审批
+export function addApprove(data) {
+  return request({
+    url: '/bccnew/approve',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改导师带徒审批
+export function updateApprove(data) {
+  return request({
+    url: '/bccnew/approve',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除导师带徒审批
+export function delApprove(id) {
+  return request({
+    url: '/bccnew/approve/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出导师带徒审批
+export function exportApprove(query) {
+  return request({
+    url: '/bccnew/approve/export',
+    method: 'get',
+    params: query
+  })
+}

+ 8 - 0
ui/src/api/training/bccnew/tsnew.js

@@ -51,3 +51,11 @@ export function exportTsnew(query) {
     params: query
   })
 }
+
+export function handleTsnew(data) {
+  return request({
+    url: '/bccnew/approve/handle',
+    method: 'put',
+    data: data
+  })
+}

+ 32 - 266
ui/src/views/approve/approveDetail/dsdtTraining-detail.vue

@@ -1,101 +1,53 @@
 <template>
   <el-dialog :close-on-click-modal="false"
              :title="!this.taskForm.taskId == '' ? $t('处理') : $t('详情')"
-
              :visible.sync="visible"
              :append-to-body="true"
              width="60%">
-    <el-descriptions :column="2" border size="small" v-if="!desFlag">
-      <el-descriptions-item label="安全阀位号" :label-style="labelStyle">{{ this.dataForm.devNo }}
-      </el-descriptions-item>
-      <el-descriptions-item label="单元" :label-style="labelStyle">{{ this.dataForm.unit }}</el-descriptions-item>
-      <el-descriptions-item label="离线原因" :span="2">{{ this.dataForm.offlineReason }}</el-descriptions-item>
-      <el-descriptions-item label="状态" :label-style="labelStyle">
-        <el-tag size="small" :type="statusFlag">{{ status[this.dataForm.status] }}</el-tag>
-      </el-descriptions-item>
-      <el-descriptions-item label="申请状态">
-        <el-tag size="small" :type="approveStatusFlag">{{ approveStatus[this.dataForm.approveStatus] }}</el-tag>
-      </el-descriptions-item>
-      <el-descriptions-item label="安全评估以及临时措施执行" :span="2" :label-style="labelStyle">
-        {{ this.dataForm.safa }}
-      </el-descriptions-item>
-      <el-descriptions-item label="安全阀锁开是否拆解" :label-style="labelStyle">
-        {{ this.dataForm.disassembly }}
-      </el-descriptions-item>
-      <el-descriptions-item label="破锁编号" :label-style="labelStyle">
-        {{ this.dataForm.lockNo }}
+    <el-descriptions :column="2" border size="small">
+      <el-descriptions-item label="员工姓名" :label-style="labelStyle">{{ this.dataForm.staffName }}
       </el-descriptions-item>
-      <el-descriptions-item label="临时措施执行人" :label-style="labelStyle">
-        {{ this.dataForm.executorName }}
+      <el-descriptions-item label="培训状态" :label-style="labelStyle">
+        <el-tag v-if="dataForm.planStatus == 1" size="small" type="success">已完成</el-tag>
+        <el-tag v-else-if="dataForm.planStatus == 0" size="small" type="info">未完成</el-tag>
       </el-descriptions-item>
-      <el-descriptions-item label="临时措施执行时间" :label-style="labelStyle">
+      <el-descriptions-item label="开始时间" :span="2">
         <template>
-          <span>{{ parseTime(this.dataForm.executionTime, '{y}-{m}-{d} {h}:{i}') }}</span>
+          <span>{{ parseTime(dataForm.startdate, '{y}-{m}-{d}') }}</span>
         </template>
       </el-descriptions-item>
-      <el-descriptions-item label="临时措施确认人" :label-style="labelStyle">
-        {{ this.dataForm.confirmerName }}
-      </el-descriptions-item>
-      <el-descriptions-item label="临时措施确认时间" :label-style="labelStyle">
-        <template>
-          <span>{{ parseTime(this.dataForm.temporaryTime, '{y}-{m}-{d} {h}:{i}') }}</span>
-        </template>
-      </el-descriptions-item>
-      <el-descriptions-item label="申请人" :label-style="labelStyle">
-        {{ this.dataForm.applicantName }}
-      </el-descriptions-item>
-      <el-descriptions-item label="申请时间" :label-style="labelStyle">
+      <el-descriptions-item label="结束时间" :label-style="labelStyle">
         <template>
-          <span>{{ parseTime(this.dataForm.applicationTime, '{y}-{m}-{d} {h}:{i}') }}</span>
+          <span>{{ parseTime(dataForm.enddate, '{y}-{m}-{d}') }}</span>
         </template>
       </el-descriptions-item>
-      <el-descriptions-item label="批准人" :label-style="labelStyle">
-        {{ this.dataForm.approverName }}
+      <el-descriptions-item label="导师姓名">
+        {{ this.dataForm.mentorStaffName }}
       </el-descriptions-item>
-      <el-descriptions-item label="批准时间" :label-style="labelStyle">
+      <el-descriptions-item label="岗位" :span="2" :label-style="labelStyle">
         <template>
-          <span>{{ parseTime(this.dataForm.approveTime, '{y}-{m}-{d} {h}:{i}') }}</span>
+          <span v-if="dataForm.planType == 1" size="small">裂解</span>
+          <span v-else-if="dataForm.planType == 2" size="small">压缩</span>
+          <span v-else-if="dataForm.planType == 3" size="small">分离</span>
+          <span v-else-if="dataForm.planType == 4" size="small">芳烃</span>
         </template>
       </el-descriptions-item>
-      <el-descriptions-item label="离线安全阀是否已经复位" :label-style="labelStyle">
-        {{ this.dataForm.resetConfirm }}
-      </el-descriptions-item>
-      <el-descriptions-item label="离线安全阀复位后现场是否存在泄漏" :label-style="labelStyle">
-        {{ this.dataForm.leakConfirm }}
-      </el-descriptions-item>
-      <el-descriptions-item label="离线安全复位后,之前采取的安全措施是否已撤销" :label-style="labelStyle">
-        {{ this.dataForm.revokeConfirm }}
-      </el-descriptions-item>
-      <el-descriptions-item label="离线安全复位后,是否已经重新上锁" :label-style="labelStyle">
-        {{ this.dataForm.lockConfirm }}
-      </el-descriptions-item>
-      <el-descriptions-item label="确认上锁人员" :label-style="labelStyle" :span="2">
-        {{ this.dataForm.lockConfirmer1Name }} {{ this.dataForm.lockConfirmer2Name }}
-      </el-descriptions-item>
-      <el-descriptions-item label="上述信息确认人" :label-style="labelStyle">
-        {{ this.dataForm.infoConfirmerName }}
-      </el-descriptions-item>
-      <el-descriptions-item label="确认时间" :label-style="labelStyle">
-        {{ this.dataForm.confirmTime }}
-      </el-descriptions-item>
       <el-descriptions-item label="备注" :span="2" :label-style="labelStyle">
         {{ this.dataForm.remarks }}
       </el-descriptions-item>
     </el-descriptions>
     <el-form ref="form" :model="form" label-position="left" :rules="rules" label-width="340px"
              style="margin-top: 30px">
-      <div v-if="flag">
+      <div>
           <el-form-item label="评语" prop="mentorComments">
-            <el-input type="textarea" v-model="form.mentorComments" placeholder="请输入评语"/>
+            <el-input :disabled="this.taskForm.taskId == null||this.taskForm.taskId == undefined||this.taskForm.taskId == ''" type="textarea" v-model="form.mentorComments" placeholder="请输入评语"/>
           </el-form-item>
       </div>
     </el-form>
     <span slot="footer" class="dialog-footer">
       <el-button v-if="!this.taskForm.taskId == ''" type="primary"
-                 @click="dataFormSubmit(1)"
-                 :disabled="submitDisabled">{{ $t(taskName != '申请人提交申请' ? '通过' : '提交') }}</el-button>
-      <el-button v-if="!this.taskForm.taskId == ''&&(this.taskName=='临时措施制定人'||this.taskName=='批准人')"
-                 type="danger"
+                 @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>
       <el-button @click="visible = false">{{ $t('返回') }}</el-button>
     </span>
@@ -117,35 +69,23 @@
 </template>
 
 <script>
-import {getOfflinevalve, handle, listSAFA} from "@/api/apply/offlinevalve";
 import {getHistorylist} from "@/api/ehs/approvedanger";
-import {listUserPost} from "@/api/system/user";
-import {allSafetyvavle} from "@/api/reliability/safetyvavle";
-import {listAllLock} from "@/api/apply/lock";
+import {getTsnew, handleTsnew} from "@/api/training/bccnew/tsnew";
+import {getApprove} from "@/api/training/bccnew/tsApprove";
 
 export default {
   name: "dsdtTraining-detail",
   data() {
     return {
-      desFlag: false,
-      status: {0: "未完成", 1: "已完成"},
-      approveStatus: {1: "申请中", 2: "已通过", 3: "已拒绝"},
       //label样式
       labelStyle: {'width': '200px'},
-      infoConfirmerList: [],
-      // 安全阀清单
-      safetyvavleList: [],
-      safaList: [],
       unitOptions: [],
-      lockList: [],
       //流转列表
       historyList: [],
       historyLoading: true,
       submitDisabled: false,
       taskName: '',
       visible: false,
-      approveStatusList: [],
-      statusList: [],
       taskForm: {
         comment: '',
         taskId: '',
@@ -153,85 +93,31 @@ export default {
         govDate: '',
         govFileList: [],
         businessKey: '',
-        offlinevalve: {}
+        tTsApprove: {}
       },
       devList: [],
       dataForm: {
         id: null,
-        devNo: null,
-        unit: null,
-        offlineReason: null,
-        safa: null,
-        disassembly: null,
-        executor: null,
-        confirmer: null,
         applicant: null,
         applicationTime: null,
         approver: null,
         approveTime: null,
-        resetConfirm: null,
-        leakConfirm: null,
-        revokeConfirm: null,
-        lockConfirm: null,
-        lockConfirmer1: null,
-        lockConfirmer2: null,
-        infoConfirmer: null,
-        confirmTime: null,
         remarks: null,
-        temporaryTime: null,
-        executionTime: null,
         status: 0,
         delFlag: null,
-        createrCode: null,
-        createdate: null,
-        updaterCode: null,
-        updatedate: null,
-        deptId: null,
-        approveStatus: null,
-        lockConfirmer1Name: null,
-        lockConfirmer2Name: null,
-        infoConfirmerName: null,
-        executorName: null,
-        confirmerName: null,
         approverName: null,
         applicantName: null,
         apNo: null,
         processId: null
       },
       form: {},
-      statusFlag: '',
-      approveStatusFlag: '',
-      rules: {
-        safa: [{required: true, message: "请输入安全评估以及临时措施执行", trigger: "blur"}],
-        lockConfirm: [{required: true, message: "请选择是/否/NA", trigger: "blur"}],
-        revokeConfirm: [{required: true, message: "请选择是/否", trigger: "blur"}],
-        leakConfirm: [{required: true, message: "请选择是/否", trigger: "blur"}],
-        resetConfirm: [{required: true, message: "请选择是/否", trigger: "blur"}],
-        disassembly: [{required: true, message: "请选择是/否/NA", trigger: "blur"}],
-        lockConfirmer1: [{required: true, message: "请选择是/否/NA", trigger: "blur"}],
-        devNo: [
-          {required: true, message: "请选择或输入安全阀位号", trigger: "blur"}
-        ],
-        unit: [
-          {required: true, message: "请选择单元", trigger: "blur"}
-        ],
-        offlineReason: [
-          {required: true, message: "请输入离线原因", trigger: "blur"}
-        ],
-        lockNo: [
-          {required: true, message: "请选择锁编号", trigger: "blur"}
-        ],
-      },
+      rules: {},
       flag: false
     }
   },
   methods: {
-    init(id, taskId, processId, taskName, flag, desFlag) {
-      this.flag = flag;
-      this.desFlag = desFlag;
+    init(id, taskId, processId, taskName) {
       this.submitDisabled = false;
-      this.statusFlag = '';
-      this.approveStatusFlag = '';
       this.reset();
       this.devList = [];
       this.dataForm = {};
@@ -244,86 +130,24 @@ export default {
       this.dataForm.id = id || 0;
       this.form.id = id || 0;
       this.dataForm.processId = processId;
-      getOfflinevalve(id).then(res => {
+      getApprove(id).then(res => {
         this.dataForm = res.data;
+        this.form = res.data.tTsNew;
         this.devList.push(this.dataForm);
-        if (taskName == '申请人提交申请') {
-          this.form.devNo = res.data.devNo;
-          this.form.offlineReason = res.data.offlineReason;
-          this.form.unit = res.data.unit;
-        }
-        if (this.dataForm.status === 1) {
-          this.statusFlag = 'success';
-        }
-        if (this.dataForm.approveStatus === '2') {
-          this.approveStatusFlag = 'success';
-        } else if (this.dataForm.approveStatus === '1') {
-          this.approveStatusFlag = 'warning';
-        } else if (this.dataForm.approveStatus === '3') {
-          this.approveStatusFlag = 'danger';
-        }
-        this.getLocks(this.dataForm.devNo);
-      });
-      this.getDicts("apply_status").then(response => {
-        this.statusList = response.data;
-      });
-      this.getDicts("apply_approve_status").then(response => {
-        this.approveStatusList = response.data;
       });
-      getHistorylist({processId: this.dataForm.processId}).then(response => {
+      getHistorylist({processId: processId}).then(response => {
         this.historyList = response.rows;
         this.historyLoading = false
       });
-      listUserPost({
-        actualposts: "12",
-      }).then(response => {
-        this.infoConfirmerList = response;
-      });
-      allSafetyvavle().then(res => {
-        this.safetyvavleList = res.data
-      });
-      this.getDicts("UNIT").then(response => {
-        this.unitOptions = response.data;
-      });
-      listSAFA({}).then(res => {
-        this.safaList = res.data
-      })
-    },
-    getSAFA(val, cb) {
-      let list = [];
-      for (const item of this.safaList) {
-        if (item.safa.indexOf(val) > -1)
-          list.push({"value": item.safa})
-      }
-      return cb(list);
-    },
-    getLocks(devNo) {
-      listAllLock({position: devNo, status: 0}).then(res => {
-        res.data.forEach(item => {
-          let riskLevel = '风险等级: ';
-          if (item.riskLevel)
-            riskLevel = '风险等级:' + item.riskLevel.substring(item.riskLevel.indexOf('=') + 1, item.riskLevel.length)
-          item.lockCode = item.lockCode + '(' + riskLevel + ';' + '初始状态:' + item.valveStatus + ')'
-        })
-        this.lockList = res.data;
-      })
     },
     dataFormSubmit(val) {
-      if (val == 2||val==0) {
-        if (this.form.remarks == "" || this.form.remarks == null || this.form.remarks == undefined) {
-          this.$alert("驳回/拒绝申请必须填写备注!", "注意!", {dangerouslyUseHTMLString: true});
-          return;
-        }
-      }
       this.$refs["form"].validate(valid => {
-        if (valid || val != 1) {
+        if (valid) {
           this.submitDisabled = true;
-          if (this.form.lockNo) {
-            this.form.lockNo = this.form.lockNo.join(',');
-          }
-          this.taskForm.offlinevalve = this.form;
           this.taskForm.condition = val;
-          handle(this.taskForm).then(res => {
+          this.taskForm.tTsApprove = this.dataForm;
+          this.taskForm.tTsApprove.tTsNew=this.form;
+          handleTsnew(this.taskForm).then(res => {
             this.msgSuccess("审核成功");
             this.visible = false;
             this.$emit('refreshDataList')
@@ -331,67 +155,9 @@ export default {
         }
       })
     },
-    // 字典翻译
-    approveStatusFormat(row, column) {
-      let s = this.selectDictLabel(this.approveStatusList, row.approveStatus)
-      let type = '';
-      if (row.approveStatus === '2') {
-        type = 'success';
-      } else if (row.approveStatus === '1') {
-        type = 'warning';
-      } else if (row.approveStatus === '3') {
-        type = 'danger';
-      }
-      return <el-tag type={type}>{s}</el-tag>;
-    },
-    statusFormat(row, column) {
-      let s = this.selectDictLabel(this.statusList, row.status);
-      let type = '';
-      if (row.status === 1) {
-        type = 'success';
-      }
-      return <el-tag type={type}>{s}</el-tag>;
-    },
     reset() {
       this.form = {
         id: null,
-        devNo: null,
-        unit: null,
-        offlineReason: null,
-        safa: null,
-        disassembly: null,
-        executor: null,
-        confirmer: null,
-        applicant: null,
-        applicationTime: null,
-        approver: null,
-        approveTime: null,
-        resetConfirm: null,
-        leakConfirm: null,
-        revokeConfirm: null,
-        lockConfirm: null,
-        lockConfirmer1: null,
-        lockConfirmer2: null,
-        infoConfirmer: null,
-        confirmTime: null,
-        remarks: null,
-        temporaryTime: null,
-        executionTime: null,
-        status: 0,
-        delFlag: null,
-        createrCode: null,
-        createdate: null,
-        updaterCode: null,
-        updatedate: null,
-        deptId: null,
-        approveStatus: null,
-        lockConfirmer1Name: null,
-        lockConfirmer2Name: null,
-        infoConfirmerName: null,
-        executorName: null,
-        confirmerName: null,
-        approverName: null,
-        applicantName: null
       };
       this.resetForm("form");
     },

+ 9 - 0
ui/src/views/approve/myapprove/index.vue

@@ -58,6 +58,7 @@
     <safetychange-detail v-if="safetychangeDetailVisible" ref="safetychangeDetail" @refreshDataList="getList"></safetychange-detail>
     <sai-apply-detail v-if="saiApplyVisible" ref="saiApplyDetail" @refreshDataList="getList"></sai-apply-detail>
     <sems-week-check-detail v-if="semsWeekcheckDetailVisible" ref="semsWeekcheckDetail" @refreshDataList="getList"></sems-week-check-detail>
+    <dsdt-training-detail v-if="dsdtTrainingDetailVisible" ref="dsdtTrainingDetail" @refreshDataList="getList"></dsdt-training-detail>
 
   </div>
 </template>
@@ -79,10 +80,12 @@
   import SafetychangeDetail from "@/views/approve/approveDetail/safetychange-detail";
   import SaiApplyDetail from "@/views/approve/approveDetail/sai-apply-detail";
   import SemsWeekCheckDetail from "@/views/approve/approveDetail/semsWeekCheck-detail";
+  import DsdtTrainingDetail from "@/views/approve/approveDetail/dsdtTraining-detail.vue";
 
   export default {
     name: "Myapprove",
     components: {
+      DsdtTrainingDetail,
       SemsWeekCheckDetail,
       SaiApplyDetail,
       SafetychangeDetail,
@@ -104,6 +107,7 @@
         safetychangeDetailVisible:false,
         saiApplyVisible:false,
         semsWeekcheckDetailVisible: false,
+        dsdtTrainingDetailVisible: false,
         // 选中数组
         ids: [],
         // 非单个禁用
@@ -253,6 +257,11 @@
           this.$nextTick(() => {
             this.$refs.semsWeekcheckDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
           })
+        } else if (row.processName == "导师带徒经理审批") {
+          this.dsdtTrainingDetailVisible = true
+          this.$nextTick(() => {
+            this.$refs.dsdtTrainingDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
+          })
         }else {
           this.approveInfo = row;
           this.infoTaskName = row.taskName;

+ 9 - 0
ui/src/views/approve/pending/index.vue

@@ -133,6 +133,7 @@
     <safetychange-detail v-if="safetychangeDetailVisible" ref="safetychangeDetail" @refreshDataList="getList"></safetychange-detail>
     <sai-apply-detail v-if="saiApplyVisible" ref="saiApplyDetail" @refreshDataList="getList"></sai-apply-detail>
     <sems-week-check-detail v-if="semsWeekcheckDetailVisible" ref="semsWeekcheckDetail" @refreshDataList="getList"></sems-week-check-detail>
+    <dsdt-training-detail v-if="dsdtTrainingDetailVisible" ref="dsdtTrainingDetail" @refreshDataList="getList"></dsdt-training-detail>
 
   </div>
 </template>
@@ -156,10 +157,12 @@
   import SafetychangeDetail from "@/views/approve/approveDetail/safetychange-detail";
   import SaiApplyDetail from "@/views/approve/approveDetail/sai-apply-detail";
   import SemsWeekCheckDetail from "@/views/approve/approveDetail/semsWeekCheck-detail";
+  import DsdtTrainingDetail from "@/views/approve/approveDetail/dsdtTraining-detail.vue";
 
   export default {
     name: "Pending",
     components: {
+      DsdtTrainingDetail,
       SemsWeekCheckDetail,
       SaiApplyDetail,
       SafetychangeDetail,
@@ -193,6 +196,7 @@
         safetychangeDetailVisible:false,
         saiApplyVisible:false,
         semsWeekcheckDetailVisible: false,
+        dsdtTrainingDetailVisible: false,
         // 选中数组
         ids: [],
         // 非单个禁用
@@ -431,6 +435,11 @@
           this.$nextTick(() => {
             this.$refs.semsWeekcheckDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
           })
+        } else if (row.processName == "导师带徒经理审批") {
+          this.dsdtTrainingDetailVisible = true
+          this.$nextTick(() => {
+            this.$refs.dsdtTrainingDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
+          })
         } else {
           this.approveInfo = row;
           this.infoTaskName = row.taskName;

+ 9 - 0
ui/src/views/approve/taskdone/index.vue

@@ -62,6 +62,7 @@
     <safetychange-detail v-if="safetychangeDetailVisible" ref="safetychangeDetail" @refreshDataList="getList"></safetychange-detail>
     <sai-apply-detail v-if="saiApplyVisible" ref="saiApplyDetail" @refreshDataList="getList"></sai-apply-detail>
     <sems-week-check-detail v-if="semsWeekcheckDetailVisible" ref="semsWeekcheckDetail" @refreshDataList="getList"></sems-week-check-detail>
+    <dsdt-training-detail v-if="dsdtTrainingDetailVisible" ref="dsdtTrainingDetail" @refreshDataList="getList"></dsdt-training-detail>
 
   </div>
 </template>
@@ -84,10 +85,12 @@
   import SafetychangeDetail from "@/views/approve/approveDetail/safetychange-detail";
   import SaiApplyDetail from "@/views/approve/approveDetail/sai-apply-detail";
   import SemsWeekCheckDetail from "@/views/approve/approveDetail/semsWeekCheck-detail";
+  import DsdtTrainingDetail from "@/views/approve/approveDetail/dsdtTraining-detail.vue";
 
   export default {
     name: "Taskdone",
     components: {
+      DsdtTrainingDetail,
       SemsWeekCheckDetail,
       SaiApplyDetail,
       SafetychangeDetail,
@@ -110,6 +113,7 @@
         safetychangeDetailVisible:false,
         saiApplyVisible:false,
         semsWeekcheckDetailVisible: false,
+        dsdtTrainingDetailVisible: false,
         // 选中数组
         ids: [],
         // 非单个禁用
@@ -266,6 +270,11 @@
           this.$nextTick(() => {
             this.$refs.semsWeekcheckDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
           })
+        } else if (row.processName == "导师带徒经理审批") {
+          this.dsdtTrainingDetailVisible = true
+          this.$nextTick(() => {
+            this.$refs.dsdtTrainingDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
+          })
         } else {
           this.approveInfo = row;
           this.infoTaskName = row.taskName;

+ 7 - 0
ui/src/views/approve/unfinishedApprove/index.vue

@@ -68,6 +68,7 @@
     <safetychange-detail v-if="safetychangeDetailVisible" ref="safetychangeDetail" @refreshDataList="getList"></safetychange-detail>
     <sai-apply-detail v-if="saiApplyVisible" ref="saiApplyDetail" @refreshDataList="getList"></sai-apply-detail>
     <sems-week-check-detail v-if="semsWeekcheckDetailVisible" ref="semsWeekcheckDetail" @refreshDataList="getList"></sems-week-check-detail>
+    <dsdt-training-detail v-if="dsdtTrainingDetailVisible" ref="dsdtTrainingDetail" @refreshDataList="getList"></dsdt-training-detail>
 
   </div>
 </template>
@@ -115,6 +116,7 @@
         safetychangeDetailVisible:false,
         saiApplyVisible:false,
         semsWeekcheckDetailVisible: false,
+        dsdtTrainingDetailVisible: false,
         // 选中数组
         ids: [],
         // 非单个禁用
@@ -276,6 +278,11 @@
           this.$nextTick(() => {
             this.$refs.semsWeekcheckDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
           })
+        } else if (row.processName == "导师带徒经理审批") {
+          this.dsdtTrainingDetailVisible = true
+          this.$nextTick(() => {
+            this.$refs.dsdtTrainingDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
+          })
         } else {
           this.approveInfo = row;
           this.infoTaskName = row.taskName;

+ 1 - 1
ui/src/views/training/bccdevice/index.vue

@@ -452,7 +452,7 @@ export default {
     getCountTime() {
       if (this.file.data.timerNeed === 0)
         return 0;
-      return (this.file.data.timer / this.file.data.timerNeed * 100).toFixed(2)
+      return parseInt((this.file.data.timer / this.file.data.timerNeed * 100).toFixed(2))
     },
     /** 删除按钮操作 */
     handleDelete(row) {

+ 3 - 3
ui/src/views/training/bccnew/firstplan/index.vue

@@ -81,9 +81,9 @@
       <el-table-column label="讲师签名" align="center" prop="studentConfirm" :show-overflow-tooltip="true" width="180"/>
       <el-table-column label="培训状态" align="center" prop="planStatus" :show-overflow-tooltip="true" width="180">
         <template slot-scope="scope">
-          <el-tag v-if="scope.row.planStatus == 2" size="small" type="success">待考试</el-tag>
+          <el-tag v-if="scope.row.planStatus == 2" size="small" type="warning">待考试</el-tag>
           <el-tag v-if="scope.row.planStatus == 3" size="small" type="success">已完成</el-tag>
-          <el-tag v-if="scope.row.planStatus == 1" size="small" type="success">已中止</el-tag>
+          <el-tag v-if="scope.row.planStatus == 1" size="small" type="danger">已中止</el-tag>
           <el-tag v-else-if="scope.row.planStatus == 0" size="small" type="info">未完成</el-tag>
         </template>
       </el-table-column>
@@ -447,7 +447,7 @@ export default {
     getCountTime() {
       if (this.file.data.timerNeed === 0)
         return 0;
-      return (this.file.data.timer / this.file.data.timerNeed * 100).toFixed(2)
+      return parseInt((this.file.data.timer / this.file.data.timerNeed * 100).toFixed(2))
     },
     openFileDialog(row) {
       this.file.open = true;

+ 3 - 3
ui/src/views/training/bccnew/firstplan/index_student.vue

@@ -45,9 +45,9 @@
       <el-table-column label="讲师签名" align="center" prop="studentConfirm" :show-overflow-tooltip="true" width="180"/>
       <el-table-column label="培训状态" align="center" prop="planStatus" :show-overflow-tooltip="true" width="180">
         <template slot-scope="scope">
-          <el-tag v-if="scope.row.planStatus == 2" size="small" type="success">待考试</el-tag>
+          <el-tag v-if="scope.row.planStatus == 2" size="small" type="warning">待考试</el-tag>
           <el-tag v-if="scope.row.planStatus == 3" size="small" type="success">已完成</el-tag>
-          <el-tag v-if="scope.row.planStatus == 1" size="small" type="success">已中止</el-tag>
+          <el-tag v-if="scope.row.planStatus == 1" size="small" type="danger">已中止</el-tag>
           <el-tag v-else-if="scope.row.planStatus == 0" size="small" type="info">未完成</el-tag>
         </template>
       </el-table-column>
@@ -367,7 +367,7 @@ export default {
     getCountTime() {
       if (this.file.data.timerNeed === 0)
         return 0;
-      return (this.file.data.timer / this.file.data.timerNeed * 100).toFixed(2)
+      return parseInt((this.file.data.timer / this.file.data.timerNeed * 100).toFixed(2))
     },
     openFileDialog(row) {
       this.file.open = true;

+ 5 - 0
ui/src/views/training/bccnew/tsnew/index.vue

@@ -589,9 +589,14 @@ export default {
       this.loading = true;
       listTsnew(this.queryParams).then(response => {
         this.tnNewList = response.rows;
+        for (const item in this.tnNewList) {
+          item.planFinish=parseInt(item.planFinish)
+        }
         this.total = response.total;
         this.loading = false;
+        console.log(this.tnNewList)
       });
+
     },
     /** 查询部门下拉树结构 */
     getTreeselect() {

+ 4 - 0
ui/src/views/training/bccnew/tsnew/index_s.vue

@@ -524,8 +524,12 @@ export default {
       this.loading = true;
       listTsnew(this.queryParams).then(response => {
         this.tnNewList = response.rows;
+        for (let item of this.tnNewList) {
+          item.planFinish=parseInt(item.planFinish)
+        }
         this.total = response.total;
         this.loading = false;
+        console.log(this.tnNewList)
       });
     },
     /** 查询部门下拉树结构 */

+ 21 - 4
ui/src/views/training/bccnew/tsnew/score.vue

@@ -50,7 +50,14 @@
         </template>
       </el-table-column>
       <el-table-column label="考核情况" align="center" prop="assess" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="培训状态" align="center" prop="planStatus" :show-overflow-tooltip="true" width="180"/>
+      <el-table-column label="培训状态" align="center" prop="planStatus" :show-overflow-tooltip="true" width="180">
+        <template slot-scope="scope">
+          <el-tag v-if="scope.row.planStatus == 2" size="small" type="warning">待考试</el-tag>
+          <el-tag v-if="scope.row.planStatus == 3" size="small" type="success">已完成</el-tag>
+          <el-tag v-if="scope.row.planStatus == 1" size="small" type="danger">已中止</el-tag>
+          <el-tag v-else-if="scope.row.planStatus == 0" size="small" type="info">未完成</el-tag>
+        </template>
+      </el-table-column>
       <el-table-column label="第一次成绩" align="center" prop="score1" :show-overflow-tooltip="true" width="180"/>
       <el-table-column label="附件" align="center" :show-overflow-tooltip="true" width="80">
         <template slot-scope="scope">
@@ -69,6 +76,16 @@
           <el-button  icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'tsNew-score3')" circle></el-button>
         </template>
       </el-table-column>
+      <el-table-column label="计划培训开始时间" prop="planStartData" width="180" align="center">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.planStartData, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="计划培训结束时间" prop="planEndData" width="180" align="center">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.planEndData, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
       <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true" width="180"/>
       <el-table-column label="操作" align="center" fixed="right" width="230" class-name="small-padding fixed-width">
         <template slot-scope="scope">
@@ -292,7 +309,7 @@
         <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')"
+              v-if="scope.row.fileName!=null&&scope.row.fileName.endsWith('pdf')"
               size="mini"
               type="text"
               icon="el-icon-view"
@@ -575,7 +592,7 @@ export default {
       this.pdf.pdfUrl = ""
       this.ppt = true
       //如果是PDF等直接可以打开的就不调接口,否则调用接口
-      if (row.fileName.endsWith('pdf')) {
+      if (row.fileName!=null&&row.fileName.endsWith('pdf')) {
         this.pdf.pdfUrl = process.env.VUE_APP_BASE_API + '/pdf/web/viewer.html?file=' + process.env.VUE_APP_BASE_API + row.fileUrl
 
       }
@@ -605,7 +622,7 @@ export default {
     getCountTime() {
       if (this.file.data.timerNeed === 0)
         return 0;
-      return (this.file.data.timer / this.file.data.timerNeed * 100).toFixed(2)
+      return parseInt((this.file.data.timer / this.file.data.timerNeed * 100).toFixed(2))
     },
     openFileDialog(row) {
       this.file.open = true;

+ 35 - 19
ui/src/views/training/bccnew/tsnew/score_student.vue

@@ -21,26 +21,42 @@
         </template>
       </el-table-column>
       <el-table-column label="考核情况" align="center" prop="assess" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="培训状态" align="center" prop="planStatus" :show-overflow-tooltip="true" width="180"/>
+      <el-table-column label="培训状态" align="center" prop="planStatus" :show-overflow-tooltip="true" width="180">
+        <template slot-scope="scope">
+          <el-tag v-if="scope.row.planStatus == 2" size="small" type="warning">待考试</el-tag>
+          <el-tag v-if="scope.row.planStatus == 3" size="small" type="success">已完成</el-tag>
+          <el-tag v-if="scope.row.planStatus == 1" size="small" type="danger">已中止</el-tag>
+          <el-tag v-else-if="scope.row.planStatus == 0" size="small" type="info">未完成</el-tag>
+        </template>
+      </el-table-column>
       <el-table-column label="第一次成绩" align="center" prop="score1" :show-overflow-tooltip="true" width="180"/>
+      <el-table-column label="附件" align="center" :show-overflow-tooltip="true" width="80">
+        <template slot-scope="scope">
+          <el-button  icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'tsNew-score1')" circle></el-button>
+        </template>
+      </el-table-column>
       <el-table-column label="第二次成绩" align="center" prop="score2" :show-overflow-tooltip="true" width="180"/>
+      <el-table-column label="附件" align="center"  :show-overflow-tooltip="true" width="80">
+        <template slot-scope="scope">
+          <el-button  icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'tsNew-score2')" circle></el-button>
+        </template>
+      </el-table-column>
       <el-table-column label="第三次成绩" align="center" prop="score3" :show-overflow-tooltip="true" width="180"/>
-      <el-form-item label="计划培训开始时间" prop="planStartData">
-        <el-date-picker clearable size="small" style="width: 200px"
-                        v-model="form.planStartData"
-                        type="date"
-                        value-format="yyyy-MM-dd"
-                        placeholder="选择计划培训开始时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="计划培训结束时间" prop="planEndData">
-        <el-date-picker clearable size="small" style="width: 200px"
-                        v-model="form.planStartData"
-                        type="date"
-                        value-format="yyyy-MM-dd"
-                        placeholder="选择计划培训结束时间">
-        </el-date-picker>
-      </el-form-item>
+      <el-table-column label="附件" align="center"  :show-overflow-tooltip="true" width="80">
+        <template slot-scope="scope">
+          <el-button  icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'tsNew-score3')" circle></el-button>
+        </template>
+      </el-table-column>
+      <el-table-column label="计划培训开始时间" prop="planStartData" width="180" align="center">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.planStartData, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="计划培训结束时间" prop="planEndData" width="180" align="center">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.planEndData, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
       <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true" width="180"/>
       <el-table-column label="操作" align="center" fixed="right" width="230" class-name="small-padding fixed-width">
         <template slot-scope="scope">
@@ -392,7 +408,7 @@ export default {
       this.pdf.pdfUrl = ""
       this.ppt = true
       //如果是PDF等直接可以打开的就不调接口,否则调用接口
-      if (row.fileName.endsWith('pdf')) {
+      if (row.fileName!=null&&row.fileName.endsWith('pdf')) {
         this.pdf.pdfUrl = process.env.VUE_APP_BASE_API + '/pdf/web/viewer.html?file=' + process.env.VUE_APP_BASE_API + row.fileUrl
 
       }
@@ -422,7 +438,7 @@ export default {
     getCountTime() {
       if (this.file.data.timerNeed === 0)
         return 0;
-      return (this.file.data.timer / this.file.data.timerNeed * 100).toFixed(2)
+      return parseInt((this.file.data.timer / this.file.data.timerNeed * 100).toFixed(2))
     },
     openFileDialog(row) {
       this.file.open = true;