Эх сурвалжийг харах

LY 专项培训 年度培训

ly 3 жил өмнө
parent
commit
ecdee963b1

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

@@ -321,6 +321,7 @@ public class TApproveDangerController extends BaseController
                     TStApprove approve = tStApproveService.selectTStApproveById(Long.parseLong(pi.getBusinessKey()));
                     logger.info("设备修改/删除审核" +JSON.toJSONString(approve));
                     devTask.setApproveObj(approve);
+                    devTask.setApNo(approve.getApNo());
                 }
                 list.add(devTask);
             }

+ 41 - 17
master/src/main/java/com/ruoyi/project/training/spec/controller/TStApproveController.java

@@ -9,11 +9,14 @@ import com.ruoyi.project.listener.monthSemsApprove.*;
 import com.ruoyi.project.sems.domain.*;
 import com.ruoyi.project.sems.his.domain.*;
 import com.ruoyi.project.training.spec.domain.TStPlan;
+import com.ruoyi.project.training.spec.domain.TStYearplan;
 import com.ruoyi.project.training.spec.service.ITStPlanService;
+import com.ruoyi.project.training.spec.service.ITStYearplanService;
 import org.activiti.engine.*;
 import org.activiti.engine.impl.identity.Authentication;
 import org.activiti.engine.runtime.ProcessInstance;
 import org.activiti.engine.task.Task;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -53,6 +56,8 @@ public class TStApproveController extends BaseController
     private TaskService taskService;
     @Autowired
     private ITStPlanService tStPlanService;
+    @Autowired
+    private ITStYearplanService tStYearplanService;
     /**
      * 查询专项培训计划申请列表
      */
@@ -68,18 +73,30 @@ public class TStApproveController extends BaseController
     public AjaxResult info(@PathVariable("id") Long id)
     {
         TStApprove tStApprove = tStApproveService.selectTStApproveById(id);
-        String[] ids = tStApprove.getPlanId().split(",");
-        List<TStPlan> planList = new ArrayList<TStPlan>();
-        for (String i : ids
+        String ids = tStApprove.getPlanId();
+        TStYearplan tStYearplan = tStYearplanService.selectTStYearplanById(Long.parseLong(ids));
+        // 培训明细
+        TStPlan tStPlan = new TStPlan();
+        tStPlan.setYearPlanId(tStYearplan.getId());
+        List<TStPlan> planList = tStPlanService.selectTStPlanList(tStPlan);
+        //判断是否可以修改
+        for (TStPlan t: planList
         ) {
-            TStPlan tStPlan = tStPlanService.selectTStPlanById(Long.parseLong(i));
-            planList.add(tStPlan);
+            try {
+                if (new Date().before(t.getStartDate())){
+                    t.setEditFlag(1);
+                }else {
+                    t.setEditFlag(0);
+                }
+            }catch (Exception e){
+                t.setEditFlag(1);
+            }
         }
         tStApprove.setPlanList(planList);
+        tStApprove.setYearplan(tStYearplan);
         return AjaxResult.success(tStApprove);
     }
 
-
     /**
      * 新增专项培训计划申请
      */
@@ -117,7 +134,6 @@ public class TStApproveController extends BaseController
         logger.info("流程实例id:" + pi.getProcessInstanceId());
         logger.info("流程定义对象:" + pi.getProcessVariables());
         tStApprove.setProcessId(pi.getProcessInstanceId());
-
         tStApproveService.updateTStApprove(tStApprove);
         return AjaxResult.success();
     }
@@ -142,22 +158,30 @@ public class TStApproveController extends BaseController
         TStApprove tStApprove = tStApproveService.selectTStApproveById(Long.parseLong(devTask.getBusinessKey()));
         if (devTask.getCondition().equals("1")) {
             devTask.setComment("通过" + symbol + devTask.getComment());
-            String[] ids;
-            ids = tStApprove.getPlanId().split(",");
-            for (String i : ids
-            ) {
-                TStPlan t = tStPlanService.selectTStPlanById(Long.parseLong(i));
+            TStYearplan tStYearplan = tStYearplanService.selectTStYearplanById(Long.parseLong(tStApprove.getPlanId()));
+            tStYearplan.setApproveStatus(1l);
+            tStYearplanService.updateTStYearplan(tStYearplan);
+            // 培训明细
+            TStPlan tStPlan = new TStPlan();
+            tStPlan.setYearPlanId(tStYearplan.getId());
+            List<TStPlan> planList = tStPlanService.selectTStPlanList(tStPlan);
+            for (TStPlan t: planList
+                 ) {
                 t.setApproveStatus(1l);
                 tStPlanService.updateTStPlan(t);
             }
-            }
+         }
         else if (devTask.getCondition().equals("0")) {
             devTask.setComment("未通过" + symbol + devTask.getComment());
-            String[] ids;
-            ids = tStApprove.getPlanId().split(",");
-            for (String i : ids
+            TStYearplan tStYearplan = tStYearplanService.selectTStYearplanById(Long.parseLong(tStApprove.getPlanId()));
+            tStYearplan.setApproveStatus(2l);
+            tStYearplanService.updateTStYearplan(tStYearplan);
+            // 培训明细
+            TStPlan tStPlan = new TStPlan();
+            tStPlan.setYearPlanId(tStYearplan.getId());
+            List<TStPlan> planList = tStPlanService.selectTStPlanList(tStPlan);
+            for (TStPlan t: planList
             ) {
-                TStPlan t = tStPlanService.selectTStPlanById(Long.parseLong(i));
                 t.setApproveStatus(2l);
                 tStPlanService.updateTStPlan(t);
             }

+ 26 - 0
master/src/main/java/com/ruoyi/project/training/spec/controller/TStPlanController.java

@@ -101,6 +101,19 @@ public class TStPlanController extends BaseController
     public TableDataInfo listByYearId(TStPlan tStPlan) {
         startPage();
         List<TStPlan> list = tStPlanService.selectTStPlanList(tStPlan);
+        //判断是否可以修改
+        for (TStPlan t: list
+        ) {
+            try {
+                if (new Date().before(t.getStartDate())){
+                    t.setEditFlag(1);
+                }else {
+                    t.setEditFlag(0);
+                }
+            }catch (Exception e){
+                t.setEditFlag(1);
+            }
+        }
         return getDataTable(list);
     }
 
@@ -132,6 +145,19 @@ public class TStPlanController extends BaseController
     {
         startPage();
         List<TStPlan> list = tStPlanService.selectTStPlanList(tStPlan);
+        //判断是否可以修改
+        for (TStPlan t: list
+             ) {
+            try {
+                if (new Date().before(t.getStartDate())){
+                    t.setEditFlag(1);
+                }else {
+                    t.setEditFlag(0);
+                }
+            }catch (Exception e){
+                t.setEditFlag(1);
+            }
+        }
         return getDataTable(list);
     }
 

+ 9 - 0
master/src/main/java/com/ruoyi/project/training/spec/domain/TStApprove.java

@@ -30,6 +30,7 @@ public class TStApprove extends BaseEntity
     @Excel(name = "计划ids")
     private String planId;
 
+    private TStYearplan yearplan;
     /** 计划 */
     private List<TStPlan> planList;
 
@@ -197,6 +198,14 @@ public class TStApprove extends BaseEntity
         this.planList = planList;
     }
 
+    public TStYearplan getYearplan() {
+        return yearplan;
+    }
+
+    public void setYearplan(TStYearplan yearplan) {
+        this.yearplan = yearplan;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 12 - 0
master/src/main/java/com/ruoyi/project/training/spec/domain/TStPlan.java

@@ -46,12 +46,14 @@ public class TStPlan extends BaseEntity
     private String createrCode;
 
     /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
     private Date createdate;
 
     /** 修改人 */
     private String updaterCode;
 
     /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
     private Date updatedate;
 
     /** 部门编号 */
@@ -99,6 +101,8 @@ public class TStPlan extends BaseEntity
 
     private Long yearPlanId;
 
+    private Integer editFlag;
+
     public Long getYearPlanId() {
         return yearPlanId;
     }
@@ -298,6 +302,14 @@ public class TStPlan extends BaseEntity
         return studyState;
     }
 
+    public Integer getEditFlag() {
+        return editFlag;
+    }
+
+    public void setEditFlag(Integer editFlag) {
+        this.editFlag = editFlag;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 4 - 2
master/src/main/resources/mybatis/training/spec/TStPlanMapper.xml

@@ -28,9 +28,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectTStPlanVo">
-        select d.year_plan_id, d.date_of_completion, suc.MENTOR_STAFF_ID, d.overall_comment, d.score, d.id, d.staff_id,d.APPROVE_STATUS, u.nick_name, d.plant_name, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.start_date, d.end_date, d.class_hour, d.class_content, d.study_state ,s.dept_name from t_st_plan d
+        select d.year_plan_id,u1.nick_name as updateBy , u2.nick_name as createBy ,d.date_of_completion, suc.MENTOR_STAFF_ID, d.overall_comment, d.score, d.id, d.staff_id,d.APPROVE_STATUS, u.nick_name, d.plant_name, d.del_flag, d.createdate, d.updatedate, d.dept_id, d.start_date, d.end_date, d.class_hour, d.class_content, d.study_state ,s.dept_name from t_st_plan d
         left join sys_dept s on s.dept_id = d.dept_id
         left join sys_user u on d.staff_id = u.staffid
+        LEFT JOIN SYS_USER u1 on d.updater_code = u1.USER_ID
+        LEFT JOIN SYS_USER u2 on d.creater_code = u2.USER_ID
         left join T_ST_SUCCESSOR suc on d.STAFF_ID = suc.STAFF_ID
     </sql>
 
@@ -120,7 +122,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 <!-- 导师反馈的同时更新实际完成培训日期为当前日期 -->
                 date_of_completion = SYSDATE,
             </if>
-            <if test="overallComment != null">overall_comment = #{overallComment}</if>
+            <if test="overallComment != null">overall_comment = #{overallComment},</if>
             <if test="approveStatus != null">approve_status = #{approveStatus},</if>
             <if test="dateOfCompletion != null"></if>
         </trim>

+ 146 - 17
ui/src/views/approve/pending/specTrainingPlan-deal.vue

@@ -1,34 +1,71 @@
 <template>
   <el-dialog
+    width="1500px"
     :title="!this.taskForm.taskId == '' ? $t('处理') : $t('详情')"
-    :close-on-click-modal="false"
     :visible.sync="visible">
     <el-form :model="taskForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="" label-width="80px">
-      <el-form-item label="申请列表">
+      <el-form-item label="年度计划">
+        <el-table  :data="yearplanList"  border>
+          <el-table-column label="培训员工编号" align="center" prop="staffId" :show-overflow-tooltip="true"/>
+          <el-table-column label="培训员工" align="center"  prop="staffName" :show-overflow-tooltip="true"/>
+          <el-table-column label="年度培训标题" align="center" prop="name" :show-overflow-tooltip="true"/>
+          <el-table-column label="年份" align="center" prop="planYear" width="100">
+          </el-table-column>
+          <el-table-column label="部门" align="center" prop="deptName" :show-overflow-tooltip="true"/>
+        </el-table>
+      </el-form-item>
+      <el-form-item label="计划列表">
         <el-table
           :data="planList"
           border
           style="width: 100%">
-          <el-table-column label="培训员工编号" align="center" prop="staffId" :show-overflow-tooltip="true"/>
-          <el-table-column label="培训内容" align="center" prop="plantName" :show-overflow-tooltip="true"/>
-          <el-table-column label="开始日期" align="center" prop="startDate" width="100">
+          <el-table-column label="培训员工编号"  align="center" prop="staffId" :show-overflow-tooltip="true"/>
+          <el-table-column label="培训员工" align="center"  prop="staffName" :show-overflow-tooltip="true"/>
+          <el-table-column label="培训内容"  align="center" prop="plantName" :show-overflow-tooltip="true"/>
+          <el-table-column label="开始日期"  align="center" prop="startDate" width="100">
             <template slot-scope="scope">
               <span>{{ parseTime(scope.row.startDate, '{y}-{m}-{d}') }}</span>
             </template>
           </el-table-column>
-          <el-table-column label="结束日期" align="center" prop="endDate" width="100">
+          <el-table-column label="结束日期"  align="center" prop="endDate" width="100">
             <template slot-scope="scope">
               <span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</span>
             </template>
           </el-table-column>
-          <el-table-column label="学时" align="center" prop="classHour" :show-overflow-tooltip="true"/>
-          <el-table-column label="具体内容" align="center" prop="classContent" :show-overflow-tooltip="true"/>
+          <el-table-column label="学时"  align="center" prop="classHour" :show-overflow-tooltip="true"/>
+          <el-table-column label="具体内容"  align="center" prop="classContent" :show-overflow-tooltip="true"/>
+          <el-table-column :label="$t('申请状态')" align="center"  prop="approveStatus"
+                           :formatter="approveStatusFormat" :show-overflow-tooltip="true"/>
+          <el-table-column label="创建人"  align="center" prop="createBy" :show-overflow-tooltip="true"/>
+          <el-table-column label="创建时间"  align="center" prop="createdate" width="130">
+            <template slot-scope="scope">
+              <span>{{ parseTime(scope.row.createdate, '{y}-{m}-{d}  {h}:{i}') }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="修改人"  align="center" prop="updateBy" :show-overflow-tooltip="true"/>
+          <el-table-column label="修改时间"  align="center" prop="updatedate" width="130">
+            <template slot-scope="scope">
+              <span>{{ parseTime(scope.row.updatedate, '{y}-{m}-{d}  {h}:{i}') }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" width="80">
+            <template slot-scope="scope">
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-edit"
+                @click="handleUpdate(scope.row)"
+                v-hasPermi="['spec:plan:edit']"
+                v-if="scope.row.editFlag != 0"
+              >修改</el-button>
+            </template>
+          </el-table-column>
         </el-table>
       </el-form-item>
       <el-row>
 
       </el-row>
-      <el-form-item :label="$t('申请时间')" prop="creattime">
+      <el-form-item :label="$t('申请时间')"  prop="creattime">
         <el-input v-model="dataForm.creattime" disabled></el-input>
       </el-form-item>
     </el-form>
@@ -41,7 +78,58 @@
       <el-button v-if="!this.taskForm.taskId == ''" type="primary" @click="dataFormSubmit(1)" :disabled="submitDisabled">{{$t('批准')}}</el-button>
       <el-button v-if="!this.taskForm.taskId == ''" type="danger" @click="dataFormSubmit(0)" :disabled="submitDisabled">{{$t('拒绝')}}</el-button>
     </span>
+    <!-- 添加或修改培训计划对话框 -->
+    <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="培训员工" prop="staffId" >
+          <el-select v-model="form.staffId" placeholder="请选择学员" disabled>
+            <el-option
+              v-for="successor in successorOptions"
+              :key="successor.key"
+              :label="successor.value"
+              :value="successor.key"
+            ></el-option>
+          </el-select>
+        </el-form-item>
 
+        <el-form-item label="培训内容" prop="plantName">
+          <el-input v-model="form.plantName" placeholder="请输入培训内容" />
+        </el-form-item>
+        <el-form-item label="开始日期" prop="startDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+                          v-model="form.startDate"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择开始日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="结束日期" prop="endDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+                          v-model="form.endDate"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择结束日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="学时" prop="classHour">
+          <el-input v-model="form.classHour" placeholder="请输入学时" />
+        </el-form-item>
+        <el-form-item label="具体内容">
+          <el-input
+            type="textarea"
+            :rows="6"
+            placeholder="请输入内容"
+            v-model="form.classContent">
+          </el-input>
+        </el-form-item>
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel2">取 消</el-button>
+      </div>
+    </el-dialog>
   </el-dialog>
 </template>
 
@@ -50,6 +138,7 @@
 
   import {getStapproveInfo, handleApprove} from "@/api/training/spec/stapprove";
   import {getHistorylist} from "@/api/ehs/approvedanger";
+  import {addPlan, getPlan, updatePlan} from "@/api/training/spec/plan";
 
   export default {
   name: "spec-training-plan",
@@ -59,7 +148,13 @@
       loading: true,
       // 总条数
       total: 0,
+      // 是否显示弹出层
+      open: false,
+      title: "",
       approvedangerList: [],
+      // 学员列表
+      successorOptions: [],
+      approveStatusOptions: [],
       recordVisible: false,
       // 遮罩层
       historyLoading: false,
@@ -67,6 +162,7 @@
       historyList: [],
       visible: false,
       planList: [],
+      yearplanList: [],
       dataList: [],
       fileTips: '',
       showDelay: false,
@@ -125,6 +221,11 @@
         pType: 'traning',
         pId: null
       },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      },
       dataRule: {
         approveType: [
           { required: true, message: this.$t('approveType') + this.$t('notEmpty'), trigger: 'blur' }
@@ -147,7 +248,9 @@
     }
   },
   created() {
-
+    this.getDicts("spec_training_approve_status").then(response => {
+      this.approveStatusOptions = response.data;
+    });
   },
   methods: {
     init (id, taskId, processId,taskName) {
@@ -165,10 +268,14 @@
         this.taskForm.businessKey = response.data.id
         this.dataForm.creattime = response.data.creattime
         this.planList = response.data.planList
+        this.yearplanList = [response.data.yearplan]
       });
 
     },
-
+      // 申请状态字典翻译
+    approveStatusFormat(row, column) {
+      return this.selectDictLabel(this.approveStatusOptions, row.approveStatus);
+    },
     // 取消按钮
     cancel() {
       this.visible = false;
@@ -203,7 +310,15 @@
       };
       this.resetForm("form");
     },
-
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      const id = row.id || this.ids
+      getPlan(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改培训计划";
+      });
+    },
     /** 提交按钮 */
     // 表单提交
     dataFormSubmit (val) {
@@ -230,11 +345,25 @@
         this.comment = ''
       })
     },
-    recordHandle(devList,dataForm){
-      this.recordVisible = true
-      this.$nextTick(() => {
-        this.$refs.recordDeal.init(devList,dataForm);
-      })
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updatePlan(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              // this.getList();
+            });
+          }
+        }
+      });
+    },
+
+    /** 取消按钮 */
+    cancel2() {
+      this.open = false;
+      this.reset();
     },
 }
 }

+ 17 - 3
ui/src/views/training/spec/plan/index.vue

@@ -115,7 +115,7 @@
     <el-table v-loading="loading" :data="planList" @selection-change="handleSelectionChange" :height="clientHeight" border :row-style="tableRowStyle">
       <el-table-column type="selection" width="55" fixed="left" align="center" />
       <el-table-column label="培训员工" align="center" fixed="left" prop="staffName" :show-overflow-tooltip="true"/>
-      <el-table-column label="培训内容" align="center" fixed="left" prop="plantName" :show-overflow-tooltip="true"/>
+      <el-table-column label="培训内容" align="center" width="150" fixed="left" prop="plantName" :show-overflow-tooltip="true"/>
       <el-table-column label="开始日期" align="center" fixed="left" prop="startDate">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.startDate, '{y}-{m}-{d}') }}</span>
@@ -132,7 +132,7 @@
         </template>
       </el-table-column>
       <el-table-column label="学时" align="center" fixed="left" prop="classHour" :show-overflow-tooltip="true"/>
-      <el-table-column label="具体内容" align="center" fixed="left" prop="classContent" :show-overflow-tooltip="true"/>
+      <el-table-column label="具体内容" align="center" width="200" fixed="left" prop="classContent" :show-overflow-tooltip="true"/>
       <el-table-column label="学习状态" align="center" fixed="left" prop="studyState" :formatter="studyStateFormat">
         <!-- <template slot-scope="scope">
           <span>{{scope.row.studyState}}</span>
@@ -141,7 +141,19 @@
       </el-table-column>
       <el-table-column :label="$t('申请状态')" align="center" fixed="left" prop="approveStatus"
                        :formatter="approveStatusFormat" :show-overflow-tooltip="true"/>
-      <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" width="300">
+       <el-table-column label="创建人" fixed="left" align="center" prop="createBy" :show-overflow-tooltip="true"/>
+      <el-table-column label="创建时间" fixed="left" align="center" prop="createdate" width="130">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createdate, '{y}-{m}-{d}  {h}:{i}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="修改人" fixed="left" align="center" prop="updateBy" :show-overflow-tooltip="true"/>
+      <el-table-column label="修改时间" fixed="left" align="center" prop="updatedate" width="130">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.updatedate, '{y}-{m}-{d}  {h}:{i}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" width="200">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -160,6 +172,7 @@
             v-if="scope.row.studyState == 2"
           >详情</el-button>
           <el-button
+            v-if="scope.row.editFlag != 0"
             size="mini"
             type="text"
             icon="el-icon-edit"
@@ -167,6 +180,7 @@
             v-hasPermi="['spec:plan:edit']"
           >修改</el-button>
           <el-button
+            v-if="scope.row.editFlag != 0"
             size="mini"
             type="text"
             icon="el-icon-delete"

+ 22 - 11
ui/src/views/training/spec/plan/plan-approve.vue

@@ -2,12 +2,23 @@
   <!--  -->
   <el-dialog :title="$t('申请专项培训计划')" :visible.sync="visible" width="1200px" append-to-body>
     <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="" label-width="80px">
-      <el-form-item label="申请列表">
+      <el-form-item label="年度计划">
+        <el-table  :data="yearplanList"  border>
+          <el-table-column label="培训员工编号" align="center" prop="staffId" :show-overflow-tooltip="true"/>
+          <el-table-column label="培训员工" align="center" fixed="left" prop="staffName" :show-overflow-tooltip="true"/>
+          <el-table-column label="年度培训标题" align="center" prop="name" :show-overflow-tooltip="true"/>
+          <el-table-column label="年份" align="center" prop="planYear" width="100">
+          </el-table-column>
+          <el-table-column label="部门" align="center" prop="deptName" :show-overflow-tooltip="true"/>
+        </el-table>
+      </el-form-item>
+      <el-form-item label="计划列表">
         <el-table
           :data="planList"
           border
           style="width: 100%">
           <el-table-column label="培训员工编号" align="center" prop="staffId" :show-overflow-tooltip="true"/>
+          <el-table-column label="培训员工" align="center" fixed="left" prop="staffName" :show-overflow-tooltip="true"/>
           <el-table-column label="培训内容" align="center" prop="plantName" :show-overflow-tooltip="true"/>
           <el-table-column label="开始日期" align="center" prop="startDate" width="100">
             <template slot-scope="scope">
@@ -47,12 +58,14 @@
 import {getToken} from "@/utils/auth";
 import {addStPlanApprove} from "@/api/training/spec/stapprove";
 import {listPostUser} from "@/api/system/user";
+import {listPlanByYearId} from "@/api/training/spec/plan";
 
 export default {
   name: "tapprove-add",
   data() {
     return {
       visible: false,
+      yearplanList: [],
       planList: [],
       userOption:[],
       fileTips: '',
@@ -107,21 +120,19 @@ export default {
   created() {
   },
   methods: {
-    init (rows, type) {
+    init (row, type) {
       this.visible = true
+      this.yearplanList = [row]
       this.fileList = []
-      this.planList = rows
+      // planId 为年度计划id
+      this.dataForm.planId = row.id
       listPostUser(this.queryParams).then(response => {
         this.userOption = response;
       });
-    //这里的panId是指的计划的Id
-      for (let i = 0; i < rows.length; i++) {
-        if (i == 0){
-          this.dataForm.planId = rows[i].id
-        }else {
-          this.dataForm.planId += ',' + rows[i].id
-        }
-      }
+      let planParam = {yearPlanId: row.id}
+      listPlanByYearId(planParam).then(response => {
+        this.planList = response.rows;
+      });
     },
 
     // 审批类型字典翻译

+ 17 - 1
ui/src/views/training/spec/yearplan/index.vue

@@ -125,6 +125,13 @@
             @click="handlePlanList(scope.row)"
             v-hasPermi="['spec:plan:list']"
           >详情</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="addApprove(scope.row)"
+            v-hasPermi="['spec:plan:list']"
+          >提交申请</el-button>
           <el-button
             size="mini"
             type="text"
@@ -224,6 +231,7 @@
               <el-button @click="upload.open = false">取 消</el-button>
           </div>
       </el-dialog>
+    <plan-approve v-if="planApproveVisible" ref="yearPlanApprove" @refreshDataList="getList"></plan-approve>
   </div>
 </template>
 
@@ -234,15 +242,17 @@ import { getToken } from "@/utils/auth";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import {listSuccessorsByMentorId} from "@/api/training/spec/plan";
+import PlanApprove from "../plan/plan-approve"
 
 export default {
   name: "Yearplan",
-  components: { Treeselect },
+  components: { Treeselect,PlanApprove },
   data() {
     return {
       // 遮罩层
       loading: true,
       operation: '',
+      planApproveVisible: false,
       // 选中数组
       ids: [],
       // 非单个禁用
@@ -488,6 +498,12 @@ export default {
         const yearId = row.id
         this.$router.push("/training/spec/planItem/" + yearId);
       },
+      addApprove (row, type) {
+        this.planApproveVisible = true
+        this.$nextTick(() => {
+          this.$refs.yearPlanApprove.init(row, type)
+        })
+      },
   }
 };
 </script>