Browse Source

王子文 专项培养
1) 培养计划新增和修改时,日期不能跨年,开始时间不能小于当前日期
2) 学员查看导师反馈

wangggziwen 3 years ago
parent
commit
a76a8dfe36

+ 11 - 0
master/src/main/java/com/ruoyi/project/training/spec/controller/TStFeedbackController.java

@@ -264,6 +264,17 @@ public class TStFeedbackController extends BaseController
         return util.exportExcel(list, "feedback");
     }
 
+    /**
+     * 获取专项培训反馈详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('spec:feedback:query')")
+    @GetMapping(value = "/getInfoByPlanId/{planId}")
+    public AjaxResult getInfoByPlanId(@PathVariable("planId") Long planId)
+    {
+        System.out.println(planId);
+        return AjaxResult.success(tStFeedbackService.selectTStFeedbackByPlanId(planId));
+    }
+
     /**
      * 获取专项培训反馈详细信息
      */

+ 8 - 0
master/src/main/java/com/ruoyi/project/training/spec/mapper/TStFeedbackMapper.java

@@ -12,6 +12,14 @@ import com.ruoyi.project.training.spec.domain.TStFeedback;
  */
 public interface TStFeedbackMapper 
 {
+    /**
+     * 查询专项培训反馈
+     *
+     * @param planId 专项培训计划ID
+     * @return 专项培训反馈
+     */
+    public TStFeedback selectTStFeedbackByPlanId(Long planId);
+
     /**
      * 查询专项培训反馈
      * 

+ 8 - 0
master/src/main/java/com/ruoyi/project/training/spec/service/ITStFeedbackService.java

@@ -11,6 +11,14 @@ import com.ruoyi.project.training.spec.domain.TStFeedback;
  */
 public interface ITStFeedbackService 
 {
+    /**
+     * 查询专项培训反馈
+     *
+     * @param planId 专项培训计划ID
+     * @return 专项培训反馈
+     */
+    public TStFeedback selectTStFeedbackByPlanId(Long planId);
+
     /**
      * 查询专项培训反馈
      *

+ 11 - 0
master/src/main/java/com/ruoyi/project/training/spec/service/impl/TStFeedbackServiceImpl.java

@@ -19,6 +19,17 @@ public class TStFeedbackServiceImpl implements ITStFeedbackService
     @Autowired
     private TStFeedbackMapper tStFeedbackMapper;
 
+    /**
+     * 查询专项培训反馈
+     *
+     * @param planId 专项培训计划ID
+     * @return 专项培训反馈
+     */
+    @Override
+    public TStFeedback selectTStFeedbackByPlanId(Long planId) {
+        return tStFeedbackMapper.selectTStFeedbackByPlanId(planId);
+    }
+
     /**
      * 查询专项培训反馈
      *

+ 28 - 1
master/src/main/resources/mybatis/training/spec/TStFeedbackMapper.xml

@@ -62,7 +62,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         order by d.successor_id asc, d.feedback_year desc, d.feedback_season,
        to_number(replace(d.feedback_month,',','')) asc
     </select>
-    
+
+    <select id="selectTStFeedbackByPlanId" parameterType="Long" resultMap="TStFeedbackResult">
+        select
+            id,
+            feedback_type,
+            mentor_id,
+            successor_id,
+            parent_id,
+            plan_id,
+            feedback_year,
+            feedback_season,
+            feedback_month,
+            successor_feedback,
+            mentor_feedback,
+            feedback_score,
+            feedback_status,
+            meeting_date
+        from
+        (
+            select rownum,t.* from
+            (
+                select * from t_st_feedback order by id desc
+            ) t
+            where t.plan_id = #{planId}
+        )
+        where rownum=1;
+    </select>
+
     <select id="selectTStFeedbackById" parameterType="Long" resultMap="TStFeedbackResult">
         <include refid="selectTStFeedbackVo"/>
         where id = #{id}

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

@@ -45,6 +45,14 @@ export function listFeedback(query) {
   })
 }
 
+// 查询 专项培养反馈详细
+export function getFeedbackByPlanId(planId) {
+  return request({
+    url: '/spec/feedback/getInfoByPlanId/' + planId,
+    method: 'get'
+  })
+}
+
 // 查询 专项培养反馈详细
 export function getFeedback(id) {
   return request({

+ 41 - 23
ui/src/views/training/spec/myplan/index.vue

@@ -121,23 +121,31 @@
       </div>
     </el-dialog>
     <!-- 反馈对话框 -->
-    <el-dialog v-dialogDrag :title="feedbackDialog.title" :visible.sync="feedbackDialog.open" width="800px" append-to-body>
+    <el-dialog v-dialogDrag :title="feedbackDialog.title" :visible.sync="feedbackDialog.open" width="700px" append-to-body>
+      <h3 style="margin-bottom:20px;">导师反馈</h3>
+      <el-form>
+        <el-form-item>
+          <p v-html="mentorFeedback" style="border:1px solid #DFE6EC; height:150px;" />
+        </el-form-item>
+      </el-form>
+      <h3 style="margin-bottom:20px;">我的心得</h3>
       <el-upload
-            ref="doc"
-            :limit="50"
-            :headers="doc.headers"
-            :action="doc.url + '?pType=' + doc.pType + '&pId=' + doc.pId"
-            :disabled="doc.isUploading"
-            :on-progress="handleFileDocProgress"
-            :on-success="handleFileDocSuccess"
-            :auto-upload="true"
-            drag
-          >
-            <i class="el-icon-upload"></i>
-            <div class="el-upload__text">
-              {{ $t('将文件拖到此处,或') }}
-              <em>{{ $t('点击上传') }}</em>
-            </div>
+        ref="doc"
+        :headers="doc.headers"
+        class="upload-demo"
+        action="doc.url + '?pType=' + doc.pType + '&pId=' + doc.pId"
+        :disabled="doc.isUploading"
+        :on-progress="handleFileDocProgress"
+        :on-success="handleFileDocSuccess"
+        :auto-upload="true"
+        :on-preview="handlePreview"
+        :on-remove="handleRemove"
+        :before-remove="beforeRemove"
+        multiple
+        :limit="3"
+        :on-exceed="handleExceed"
+        :file-list="fileList">
+        <el-button size="small" type="primary" style="margin-bottom:10px;">点击上传附件</el-button>
       </el-upload>
       <el-table :data="doc.commonfileList" border>
         <el-table-column :label="$t('文件名')" align="center" prop="fileName" :show-overflow-tooltip="true">
@@ -147,9 +155,8 @@
             </a>
           </template>
         </el-table-column>
-        <el-table-column :label="$t('大小(Kb)')" align="center" prop="fileSize" :show-overflow-tooltip="true" width="80" />
-        <el-table-column :label="$t('上传人')" align="center" prop="creator" :show-overflow-tooltip="true" width="120"/>
-        <el-table-column :label="$t('操作')" align="center" width="180" class-name="small-padding fixed-width">
+        <el-table-column :label="$t('大小(Kb)')" align="center" prop="fileSize" :show-overflow-tooltip="true" width="120" />
+        <el-table-column :label="$t('操作')" align="center" width="120" class-name="small-padding fixed-width">
           <template slot-scope="scope">
             <el-button
               v-if="scope.row.fileName.endsWith('pdf')"
@@ -175,24 +182,27 @@
       </el-table>
       <el-form>
         <el-form-item label="我学到了什么?">
-          <el-input v-model="feedbackParams.answer1" placeholder="请输入" type="textarea"></el-input>
+          <el-input v-model="feedbackParams.answer1" placeholder="请输入" type="textarea" rows="3"></el-input>
         </el-form-item>
         <el-form-item label="理论学习和平时操作的不同之处?">
-          <el-input v-model="feedbackParams.answer2" placeholder="请输入" type="textarea"></el-input>
+          <el-input v-model="feedbackParams.answer2" placeholder="请输入" type="textarea" rows="3"></el-input>
         </el-form-item>
         <el-form-item label="完成此课程后有什么更好的合理化建议?">
-          <el-input v-model="feedbackParams.answer3" placeholder="请输入" type="textarea"></el-input>
+          <el-input v-model="feedbackParams.answer3" placeholder="请输入" type="textarea" rows="3"></el-input>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button @click="handleSubmitFeedback()">{{ $t('保 存') }}</el-button>
+        <el-button>{{ $t('提 交') }}</el-button>
         <el-button @click="feedbackDialog.open = false">{{ $t('返 回') }}</el-button>
       </div>
+      
     </el-dialog>
   </div>
 </template>
 
 <script>
+import { getFeedbackByPlanId } from "@/api/training/spec/feedback";
 import {
   updateAnswer,
   addAnswer,
@@ -314,6 +324,8 @@ export default {
           pageTotalNum: 1,
           loadedRatio: 0,
       },
+      // 导师反馈内容
+      mentorFeedback: null,
     };
   },
   watch: {
@@ -343,6 +355,7 @@ export default {
     /** 反馈按钮处理 */
     handleFeedback(row) {
       this.feedbackParams = {};
+      this.mentorFeedback = null;
       let feedback1 = {};
       feedback1.planId = row.id;
       feedback1.questionId = 1;
@@ -352,6 +365,7 @@ export default {
       let feedback3 = {};
       feedback3.planId = row.id;
       feedback3.questionId = 3;
+      // 查询学员反馈3个问题的答案
       getAnswerByPlanIdAndQuestionId(feedback1).then(response => {
         let data = response.data;
         if (data != null) {
@@ -369,8 +383,12 @@ export default {
         if (data != null) {
           this.feedbackParams.answer3 = data.answer;
         }
+        // 查询导师反馈
+        return getFeedbackByPlanId(row.id);
+      }).then(response => {
+        this.mentorFeedback = response.data.mentorFeedback;
         this.planId = row.id;
-        this.feedbackDialog.title = row.plantName + "学习心得";
+        this.feedbackDialog.title = row.plantName + "学习情况反馈";
         this.feedbackDialog.open = true;
       });
     },

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

@@ -232,7 +232,6 @@
     />
     <!-- 添加或修改培训计划对话框 -->
     <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>
@@ -252,7 +251,8 @@
             v-model="form.startDate"
             type="date"
             value-format="yyyy-MM-dd"
-            placeholder="选择开始日期">
+            placeholder="选择开始日期"
+            :picker-options="pickerOptionsStartDate">
           </el-date-picker>
         </el-form-item>
         <el-form-item label="结束日期" prop="endDate">
@@ -260,7 +260,8 @@
             v-model="form.endDate"
             type="date"
             value-format="yyyy-MM-dd"
-            placeholder="选择结束日期">
+            placeholder="选择结束日期"
+            :picker-options="pickerOptionsEndDate">
           </el-date-picker>
         </el-form-item>
         <el-form-item label="具体内容">
@@ -464,6 +465,18 @@ export default {
   },
   data() {
     return {
+      // 开始日期不能跨年 不能小于当前日期
+      pickerOptionsStartDate: {
+        disabledDate(time) {
+          return time.getYear() != new Date().getYear() || time.getTime() < Date.now();
+        }
+      },
+      // 结束日期不能跨年
+      pickerOptionsEndDate: {
+        disabledDate(time) {
+          return time.getYear() != new Date().getYear();
+        }
+      },
       // 反馈参数
       feedbackParams: {
         id: null,
@@ -734,7 +747,7 @@ export default {
         this.tableData.push(answerObj2);
         this.tableData.push(answerObj3);
         this.feedbackDialog.id = row.id;
-        this.feedbackDialog.title = row.staffName + " " + row.plantName + " " + this.$t('学习情况');
+        this.feedbackDialog.title = row.staffName + row.plantName + "学习情况反馈";
         this.feedbackDialog.open = true;
       });
     },