Browse Source

LY 专项培训 年度培训

ly 3 năm trước cách đây
mục cha
commit
be2278e5da

+ 21 - 1
master/src/main/java/com/ruoyi/project/training/spec/controller/TStPlanController.java

@@ -1,12 +1,15 @@
 package com.ruoyi.project.training.spec.controller;
 
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.service.ISysUserService;
 import com.ruoyi.project.training.spec.domain.TStSuccessor;
+import com.ruoyi.project.training.spec.domain.TStYearplan;
 import com.ruoyi.project.training.spec.service.ITStSuccessorService;
+import com.ruoyi.project.training.spec.service.ITStYearplanService;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -44,7 +47,8 @@ public class TStPlanController extends BaseController
 
     @Autowired
     private ISysUserService sysUserService;
-
+    @Autowired
+    private ITStYearplanService tStYearplanService;
     /**
      * 我的培训页面查询
      * 根据STAFF_ID查询培训计划列表
@@ -92,6 +96,14 @@ public class TStPlanController extends BaseController
         return getDataTable(list);
     }
 
+    @PreAuthorize("@ss.hasPermi('spec:plan:list')")
+    @GetMapping("/listByYearId")
+    public TableDataInfo listByYearId(TStPlan tStPlan) {
+        startPage();
+        List<TStPlan> list = tStPlanService.selectTStPlanList(tStPlan);
+        return getDataTable(list);
+    }
+
     /**
      * 根据导师ID查询学员列表
      *
@@ -156,6 +168,7 @@ public class TStPlanController extends BaseController
     {
 //        tStPlan.setStartYear((tStPlan.getStartDate().getYear() + 1900) + "");
 //        tStPlan.setStartMonth((tStPlan.getStartDate().getMonth() + 1) + "");
+        tStPlan.setCreaterCode(getUserId().toString());
         return toAjax(tStPlanService.insertTStPlan(tStPlan));
     }
 
@@ -167,6 +180,13 @@ public class TStPlanController extends BaseController
     @PutMapping
     public AjaxResult edit(@RequestBody TStPlan tStPlan)
     {
+        tStPlan.setUpdaterCode(getUserId().toString());
+        tStPlan.setUpdatedate(new Date());
+        tStPlan.setApproveStatus(0l);
+
+        TStYearplan tStYearplan = tStYearplanService.selectTStYearplanById(tStPlan.getYearPlanId());
+        tStYearplan.setApproveStatus(0l);
+        tStYearplanService.updateTStYearplan(tStYearplan);
         return toAjax(tStPlanService.updateTStPlan(tStPlan));
     }
 

+ 12 - 0
master/src/main/java/com/ruoyi/project/training/spec/controller/TStYearplanController.java

@@ -1,6 +1,10 @@
 package com.ruoyi.project.training.spec.controller;
 
 import java.util.List;
+
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.service.ISysUserService;
+import com.ruoyi.project.training.spec.service.ITStSuccessorService;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -32,7 +36,11 @@ public class TStYearplanController extends BaseController
 {
     @Autowired
     private ITStYearplanService tStYearplanService;
+    @Autowired
+    private ITStSuccessorService tStSuccessorService;
 
+    @Autowired
+    private ISysUserService sysUserService;
     /**
      * 查询专项培训年度计划列表
      */
@@ -40,6 +48,10 @@ public class TStYearplanController extends BaseController
     @GetMapping("/list")
     public TableDataInfo list(TStYearplan tStYearplan)
     {
+        Long userId = getUserId();
+        SysUser sysUser = sysUserService.selectUserById(userId);
+        String staffId = sysUser.getStaffId();
+        tStYearplan.setMentorStaffId(staffId);
         startPage();
         List<TStYearplan> list = tStYearplanService.selectTStYearplanList(tStYearplan);
         return getDataTable(list);

+ 35 - 0
master/src/main/java/com/ruoyi/project/training/spec/domain/TStYearplan.java

@@ -24,6 +24,11 @@ public class TStYearplan extends BaseEntity
     @Excel(name = "培训员工编号")
     private String staffId;
 
+    private String mentorStaffId;
+    /** 培训员工编号 */
+    @Excel(name = "培训员工")
+    private String staffName;
+
     /** 年度培训标题 */
     @Excel(name = "年度培训标题")
     private String name;
@@ -61,6 +66,11 @@ public class TStYearplan extends BaseEntity
     @Excel(name = "审核状态")
     private Long approveStatus;
 
+    /** 年份 */
+    @Excel(name = "年份")
+    private Long planYear;
+
+
     public void setId(Long id)
     {
         this.id = id;
@@ -160,6 +170,30 @@ public class TStYearplan extends BaseEntity
         this.deptName = deptName;
     }
 
+    public Long getPlanYear() {
+        return planYear;
+    }
+
+    public void setPlanYear(Long planYear) {
+        this.planYear = planYear;
+    }
+
+    public String getStaffName() {
+        return staffName;
+    }
+
+    public void setStaffName(String staffName) {
+        this.staffName = staffName;
+    }
+
+    public String getMentorStaffId() {
+        return mentorStaffId;
+    }
+
+    public void setMentorStaffId(String mentorStaffId) {
+        this.mentorStaffId = mentorStaffId;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@@ -175,4 +209,5 @@ public class TStYearplan extends BaseEntity
             .append("approveStatus", getApproveStatus())
             .toString();
     }
+
 }

+ 3 - 1
master/src/main/resources/mybatis/training/spec/TStPlanMapper.xml

@@ -52,7 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectTStPlanById" parameterType="Long" resultMap="TStPlanResult">
         <include refid="selectTStPlanVo"/>
-        where id = #{id}
+        where d.id = #{id}
     </select>
 
     <insert id="insertTStPlan" parameterType="TStPlan">
@@ -76,6 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="classContent != null">class_content,</if>
             <if test="studyState != null">study_state,</if>
             <if test="approveStatus != null">APPROVE_STATUS,</if>
+            <if test="yearPlanId != null">year_plan_id,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -93,6 +94,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="classContent != null">#{classContent},</if>
             <if test="studyState != null">#{studyState},</if>
             <if test="approveStatus != null">#{approveStatus},</if>
+            <if test="yearPlanId != null">#{yearPlanId},</if>
          </trim>
     </insert>
 

+ 14 - 4
master/src/main/resources/mybatis/training/spec/TStYearplanMapper.xml

@@ -16,11 +16,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="deptId"    column="dept_id"    />
         <result property="approveStatus"    column="approve_status"    />
         <result property="deptName" column="dept_name" />
+        <result property="planYear"    column="plan_year"    />
+        <result property="staffName"    column="nick_name"    />
+
     </resultMap>
 
     <sql id="selectTStYearplanVo">
-        select d.id, d.staff_id, d.name, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.approve_status ,s.dept_name from t_st_yearplan d
+        select d.id, d.staff_id,u.nick_name, d.name,d.plan_year, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.approve_status ,s.dept_name from t_st_yearplan 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 T_ST_SUCCESSOR suc on d.STAFF_ID = suc.STAFF_ID
     </sql>
 
     <select id="selectTStYearplanList" parameterType="TStYearplan" resultMap="TStYearplanResult">
@@ -34,6 +39,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updatedate != null "> and updatedate = #{updatedate}</if>
             <if test="deptId != null "> and dept_id = #{deptId}</if>
             <if test="approveStatus != null "> and approve_status = #{approveStatus}</if>
+            <if test="planYear != null "> and plan_year = #{planYear}</if>
+            <if test="mentorStaffId != null  and mentorStaffId != ''"> and mentor_staff_id = #{mentorStaffId}</if>
             and d.del_flag = 0
         </where>
         <!-- 数据范围过滤 -->
@@ -42,7 +49,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectTStYearplanById" parameterType="Long" resultMap="TStYearplanResult">
         <include refid="selectTStYearplanVo"/>
-        where id = #{id}
+        where d.id = #{id}
     </select>
 
     <insert id="insertTStYearplan" parameterType="TStYearplan">
@@ -61,7 +68,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updatedate != null">updatedate,</if>
             <if test="deptId != null">dept_id,</if>
             <if test="approveStatus != null">approve_status,</if>
-         </trim>
+            <if test="planYear != null">plan_year,</if>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
             <if test="staffId != null">#{staffId},</if>
@@ -73,7 +81,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updatedate != null">#{updatedate},</if>
             <if test="deptId != null">#{deptId},</if>
             <if test="approveStatus != null">#{approveStatus},</if>
-         </trim>
+            <if test="planYear != null">#{planYear},</if>
+        </trim>
     </insert>
 
     <update id="updateTStYearplan" parameterType="TStYearplan">
@@ -88,6 +97,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updatedate != null">updatedate = #{updatedate},</if>
             <if test="deptId != null">dept_id = #{deptId},</if>
             <if test="approveStatus != null">approve_status = #{approveStatus},</if>
+            <if test="planYear != null">plan_year = #{planYear},</if>
         </trim>
         where id = #{id}
     </update>

+ 8 - 0
ui/src/api/training/spec/plan.js

@@ -8,6 +8,14 @@ export function listPlanByMentorId(query) {
     params: query
   })
 }
+// 根据YearId查询培训计划列表
+export function listPlanByYearId(query) {
+  return request({
+    url: '/spec/plan/listByYearId',
+    method: 'get',
+    params: query
+  })
+}
 
 // 根据STAFF_ID查询培训计划列表
 export function listPlanByStaffId(query) {

+ 16 - 20
ui/src/views/training/spec/plan/index.vue

@@ -108,14 +108,6 @@
           @click="handleExport"
           v-hasPermi="['spec:plan:export']"
         >导出</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          size="mini"
-          :disabled="multiple"
-          @click="addAprrove('')"
-        >{{ $t('提交申请') }}</el-button>
       </el-col>
 	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
@@ -201,12 +193,10 @@
     />
     <!-- 添加或修改培训计划对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form-item prop="yearPlanId" v-if="this.operation=='add'">
-          <el-input v-model="form.yearPlanId" type="hidden"/>
-        </el-form-item>
+
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="培训员工" prop="staffId" v-if="this.operation=='add'">
-          <el-select v-model="form.staffId" placeholder="请选择学员">
+        <el-form-item label="培训员工" prop="staffId" >
+          <el-select v-model="form.staffId" placeholder="请选择学员" disabled>
             <el-option
               v-for="successor in successorOptions"
               :key="successor.key"
@@ -215,9 +205,7 @@
             ></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="培训员工" prop="staffName" v-if="this.operation=='modify'">
-          <el-input v-model="form.staffName" readonly />
-        </el-form-item>
+
         <el-form-item label="培训内容" prop="plantName">
           <el-input v-model="form.plantName" placeholder="请输入培训内容" />
         </el-form-item>
@@ -407,13 +395,14 @@
 
 <script>
 import { getFeedback} from "@/api/training/spec/feedback";
-import { getPlan, delPlan, addPlan, updatePlan, exportPlan, importTemplate, listSuccessorsByMentorId, listPlanByMentorId } from "@/api/training/spec/plan";
+import { getPlan,listPlanByYearId, delPlan, addPlan, updatePlan, exportPlan, importTemplate, listSuccessorsByMentorId, listPlanByMentorId } from "@/api/training/spec/plan";
 import { allFileList, delCommonfile } from "@/api/common/commonfile";
 import { treeselect } from "@/api/system/dept";
 import { getToken } from "@/utils/auth";
 import PlanApprove from "./plan-approve"
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import {getYearplan} from "@/api/training/spec/yearplan";
 
 export default {
   name: "MyPlan",
@@ -561,8 +550,7 @@ export default {
     const yearId = this.$route.params && this.$route.params.yearId;
     // 设置查询参数年度计划编号
     this.queryParams.yearPlanId = yearId;
-    // 设置表单参数年度计划编号
-    this.form.yearPlanId = yearId;
+
     this.getList();
     this.getTreeselect();
     this.getDicts("st_study_state").then(response => {
@@ -705,7 +693,7 @@ export default {
     /** 查询培训计划列表 */
     getList() {
       this.loading = true;
-      listPlanByMentorId(this.queryParams).then(response => {
+      listPlanByYearId(this.queryParams).then(response => {
         this.planList = response.rows;
         this.total = response.total;
         this.loading = false;
@@ -770,6 +758,12 @@ export default {
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
+      getYearplan(this.queryParams.yearPlanId).then(response => {
+        this.form.staffId = response.data.staffId.toString();
+        this.open = true;
+        this.title = "修改专项培训年度计划";
+        this.operation = "modify";
+      });
       this.open = true;
       this.title = "添加培训计划";
       this.operation = "add";
@@ -796,6 +790,8 @@ export default {
               this.getList();
             });
           } else {
+            // 设置表单参数年度计划编号
+            this.form.yearPlanId = this.queryParams.yearPlanId;
             addPlan(this.form).then(response => {
               this.msgSuccess("新增成功");
               this.open = false;

+ 65 - 41
ui/src/views/training/spec/yearplan/index.vue

@@ -19,15 +19,6 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="部门编号" prop="deptId">
-        <el-input
-          v-model="queryParams.deptId"
-          placeholder="请输入部门编号"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
       <el-form-item label="审核状态" prop="approveStatus">
         <el-select v-model="queryParams.approveStatus" placeholder="请选择审核状态" clearable size="small">
           <el-option
@@ -38,6 +29,14 @@
           />
         </el-select>
       </el-form-item>
+      <el-form-item label="年份" prop="planYear">
+        <el-date-picker clearable size="small" style="width: 200px"
+                        v-model="queryParams.planYear"
+                        type="year"
+                        value-format="yyyy"
+                        placeholder="选择年份">
+        </el-date-picker>
+      </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>
@@ -98,8 +97,9 @@
     <el-table v-loading="loading" :data="yearplanList" @selection-change="handleSelectionChange" :height="clientHeight" border>
       <el-table-column type="selection" width="55" align="center" />
       <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="createrCode" :show-overflow-tooltip="true"/>
+<!--      <el-table-column label="创建人" align="center" prop="createrCode" :show-overflow-tooltip="true"/>
       <el-table-column label="创建时间" align="center" prop="createdate" width="100">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.createdate, '{y}-{m}-{d}') }}</span>
@@ -110,10 +110,13 @@
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.updatedate, '{y}-{m}-{d}') }}</span>
         </template>
+      </el-table-column>-->
+      <el-table-column label="年份" align="center" prop="planYear" width="100">
       </el-table-column>
-      <el-table-column label="部门编号" align="center" prop="deptId" :show-overflow-tooltip="true"/>
+
+      <el-table-column label="部门" align="center" prop="deptName" :show-overflow-tooltip="true"/>
       <el-table-column label="审核状态" align="center" prop="approveStatus" :formatter="approveStatusFormat" />
-      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+      <el-table-column label="操作" align="center" fixed="right" width="200" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -151,39 +154,36 @@
     <!-- 添加或修改专项培训年度计划对话框 -->
     <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-input v-model="form.staffId" placeholder="请输入培训员工编号" />
+        <el-form-item label="培训员工" prop="staffId" v-if="this.operation=='add'">
+          <el-select v-model="form.staffId" placeholder="请选择学员">
+            <el-option
+              v-for="successor in this.successorOptions"
+              :key="successor.key"
+              :label="successor.value"
+              :value="successor.key"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="培训员工" prop="staffName" v-if="this.operation=='modify'">
+          <el-select v-model="form.staffId" placeholder="请选择学员" disabled>
+            <el-option
+              v-for="successor in this.successorOptions"
+              :key="successor.key"
+              :label="successor.value"
+              :value="successor.key"
+            ></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="delFlag">
-          <el-input v-model="form.delFlag" placeholder="请输入删除状态" />
-        </el-form-item>
-        <el-form-item label="创建人" prop="createrCode">
-          <el-input v-model="form.createrCode" placeholder="请输入创建人" />
-        </el-form-item>
-        <el-form-item label="创建时间" prop="createdate">
+        <el-form-item label="年份" prop="planYear">
           <el-date-picker clearable size="small" style="width: 200px"
-            v-model="form.createdate"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="选择创建时间">
+                          v-model="form.planYear"
+                          type="year"
+                          value-format="yyyy"
+                          placeholder="选择年份">
           </el-date-picker>
-        </el-form-item>
-        <el-form-item label="修改人" prop="updaterCode">
-          <el-input v-model="form.updaterCode" placeholder="请输入修改人" />
-        </el-form-item>
-        <el-form-item label="修改时间" prop="updatedate">
-          <el-date-picker clearable size="small" style="width: 200px"
-            v-model="form.updatedate"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="选择修改时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="部门编号" prop="deptId">
-          <el-input v-model="form.deptId" placeholder="请输入部门编号" />
         </el-form-item>
           <el-form-item label="归属部门" prop="deptId">
               <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
@@ -233,6 +233,7 @@ 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 {listSuccessorsByMentorId} from "@/api/training/spec/plan";
 
 export default {
   name: "Yearplan",
@@ -241,6 +242,7 @@ export default {
     return {
       // 遮罩层
       loading: true,
+      operation: '',
       // 选中数组
       ids: [],
       // 非单个禁用
@@ -262,6 +264,7 @@ export default {
       open: false,
       // 审核状态字典
       approveStatusOptions: [],
+      successorOptions: [],
         // 用户导入参数
         upload: {
             // 是否显示弹出层(用户导入)
@@ -284,7 +287,11 @@ export default {
         staffId: null,
         name: null,
         deptId: null,
-        approveStatus: null
+        approveStatus: null,
+        planYear: null,
+      },
+      queryObject: {
+        mentorStaffId: ""
       },
       // 表单参数
       form: {},
@@ -309,6 +316,7 @@ export default {
       })
     this.getList();
     this.getTreeselect();
+    this.getSuccessorOptions();
     this.getDicts("spec_training_approve_status").then(response => {
       this.approveStatusOptions = response.data;
     });
@@ -333,6 +341,18 @@ export default {
     approveStatusFormat(row, column) {
       return this.selectDictLabel(this.approveStatusOptions, row.approveStatus);
     },
+    /** 查询学员下拉列表 */
+    getSuccessorOptions() {
+      listSuccessorsByMentorId(this.queryObject).then(response => {
+        let successorList = response.data;
+        for (let i = 0; i < successorList.length; i++) {
+          let successor = {};
+          successor.key = successorList[i].staffId;
+          successor.value = successorList[i].staffName;
+          this.successorOptions.push(successor);
+        }
+      });
+    },
     // 取消按钮
     cancel() {
       this.open = false;
@@ -350,6 +370,7 @@ export default {
         updaterCode: null,
         updatedate: null,
         deptId: null,
+        planYear: null,
         approveStatus: 0
       };
       this.resetForm("form");
@@ -375,6 +396,7 @@ export default {
       this.reset();
       this.open = true;
       this.title = "添加专项培训年度计划";
+      this.operation = "add";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -382,8 +404,10 @@ export default {
       const id = row.id || this.ids
       getYearplan(id).then(response => {
         this.form = response.data;
+        this.form.planYear = response.data.planYear.toString();
         this.open = true;
         this.title = "修改专项培训年度计划";
+        this.operation = "modify";
       });
     },
     /** 提交按钮 */
@@ -463,7 +487,7 @@ export default {
       handlePlanList(row){
         const yearId = row.id
         this.$router.push("/training/spec/planItem/" + yearId);
-      }
+      },
   }
 };
 </script>