瀏覽代碼

教育培训页面改动代码提交

jingyuanchao 2 年之前
父節點
當前提交
0fbb714d74

+ 274 - 0
src/views/core/drill/task/dialog.evaluate.vue

@@ -0,0 +1,274 @@
+<template>
+  <div class="edu-training-edit">
+    <DialogCom title="演练任务评价" :visible.sync="isShow" width="960px">
+      <div class="page-body">
+        <el-form :model="formData" size="small" ref="form" label-position="right" label-width="120px"
+                 label-suffix=":">
+          <el-row>
+            <el-col :span="12">
+              <el-form-item prop="type" label="任务名称">{{
+                  formData.title
+                }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item prop="type" label="任务进度">{{
+                  getLabel(dict.type.drill_task_status, formData.status,"未知")
+                }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="任务时间">{{
+                  formData.startDate +" ~ " + formData.endDate
+                }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="演练机构">{{
+                  formData.orgName
+                }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="指挥人">{{
+                  formData.hostName
+                }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="记录人">{{
+                  formData.recorderName
+                }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="演练项目">{{
+                  formData.typeText
+                }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="演练地点">{{
+                  formData.drillSite
+                }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item prop="drillStartTime" label="演练开始时间">
+                {{ formData.drillStartTime }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item prop="drillEndTime" label="演练结束时间">
+                {{ formData.drillEndTime }}
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="24">
+              <el-form-item prop="hostId" label="预设案由">{{
+                  formData.presetCase
+                }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item prop="hostId" label="演练情况">{{
+                  formData.drillSituation
+                }}
+              </el-form-item>
+            </el-col>
+
+            <!-- 参与人数 -->
+            <el-col :span="12">
+              <el-form-item prop="dueCount" label="参与人员">{{
+                  formData.taskUserList ? formData.taskUserList.filter((x) => x.type === 1)
+                    .map((v) => v.userName).join(",") : ""
+                }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item prop="dueCount" label="缺席人员">{{
+                  formData.taskUserList ? formData.taskUserList.filter((x) => x.type === 2)
+                    .map((v) => v.userName).join(",") : ""
+                }}
+              </el-form-item>
+            </el-col>
+            <!-- 图片 -->
+            <el-col :span="12">
+              <el-form-item prop="imageList" label="演练图片">
+                <ImageListPreview v-model="formData.imageList"></ImageListPreview>
+              </el-form-item>
+            </el-col>
+            <!-- 图片 -->
+            <el-col :span="12">
+              <el-form-item prop="imageList" label="参与人员签名图片">
+                <ImageListPreview v-model="formData.signImageList"></ImageListPreview>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="24">
+            <el-form-item label="资料文件" prop="fileList">
+              <K-file-upload ref="upload" :isShowUploadBtn="false"
+                             :defaultValue="formFileListDefualtValue"
+                             v-model="formData.fileList"/>
+            </el-form-item>
+            </el-col>
+
+
+            <el-col :span="24">
+              <el-form-item  prop="commentScore" label="评分">
+                <el-rate
+                  :max="10"
+                  v-model="formData.commentScore"
+                >
+                </el-rate>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="24">
+              <el-form-item  prop="comment" label="评语">
+                <k-textarea style="width: 100%;" v-model="formData.comment" placeholder="请输入评语" :length="200"/>
+              </el-form-item>
+            </el-col>
+
+          </el-row>
+        </el-form>
+      </div>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="onHide">关闭</el-button>
+        <el-button type="primary" @click="onEvaluate">评价</el-button>
+      </div>
+    </DialogCom>
+  </div>
+</template>
+
+<script>
+import {mapState, mapMutations} from "vuex";
+import KTextarea from "@/components/common/textarea.vue";
+import {evaluateDrillTask, getDrillTask} from "@/api/core/drill/drillTask";
+import {initList} from "@/api/core/drill/drillDictionary";
+import KFileUpload from "@/components/K-FileUpload/index.vue";
+import { getLabel } from "@/views/commonOption";
+export default {
+  components: {KFileUpload,KTextarea},
+  dicts: ['drill_task_status', 'core_drill_type'],
+  data() {
+    const params = this.$route.params;
+    return {
+      id: params ? params.id : null,
+      isShow: false,
+      formData: this.reset(),
+      drillTypeOptions: [],
+      formFileListDefualtValue: [],
+      iconClasses: ['icon-rate-face-1', 'icon-rate-face-2', 'icon-rate-face-3'] // 等同于 { 2: 'icon-rate-face-1', 4: { value: 'icon-rate-face-2', excluded: true }, 5: 'icon-rate-face-3' }
+    };
+  },
+  props: {},
+  watch: {},
+  computed: {
+    ...mapState(["loginUser"]),
+  },
+  methods: {
+    ...mapMutations([]),
+    getLabel,
+    reset(other = {}) {
+      return {
+        id: null,
+        type: null,
+        host: null,
+        drillSite: null,
+        drillTime: null,
+        hostName: null,
+        presetCase: null,
+        drillSituation: null,
+        imageList: null,
+        signImageList: null,
+        commentScore: 5,
+
+        org: {},
+        ...other,
+      };
+    },
+    async onEvaluate() {
+      console.log("onEvaluate", this.formData)
+      if (!this.formData.commentScore) {
+        this.$message.error("请选择评分!");
+      }
+      if (!this.formData.comment) {
+        this.$message.error("请输入评语!");
+      }
+      let { commentScore,comment,id} = { ...this.formData};
+      let json={};
+      json.score = commentScore;
+      json.comment = comment;
+      json.taskId = id;
+
+      evaluateDrillTask(json).then((v) => {
+        this.$emit("success", this.formData);
+        this.onHide();
+        this.$modal.msgSuccess("演练登记评价成功");
+
+      });
+      this.getList();
+    },
+    async refresh(id, other) {
+      if (!id) {
+        this.reset(other);
+      } else {
+        getDrillTask(id).then(response => {
+          this.formData = response.data;
+          this.formFileListDefualtValue=response.data.fileList;
+          this.formData.signImageList = this.getSingImageList();
+          this.loading = false;
+        })
+      }
+    },
+    async show(id, other = {}) {
+      this.id = id;
+      await this.refresh(id, other);
+      this.isShow = true;
+    },
+    // 事件
+    onHide() {
+      this.isShow = false;
+    },
+    onDownload(url, filename) {
+      let this_ = this;
+      this.getBlob(url, function (blob) {
+        this_.saveAs(blob, filename);
+      });
+    },
+    getSingImageList() {
+      let res = this.formData.taskUserList ? this.formData.taskUserList.filter((x) => x.type === 1 && x.sign == 1)
+        .map((v) => v.signImage).join(",") : null;
+      console.log("getSingImage", res)
+      return res;
+    },
+    getBlob(url, cb) {
+      var xhr = new XMLHttpRequest();
+      xhr.open("GET", url, true);
+      xhr.responseType = "blob";
+      xhr.onload = function () {
+        if (xhr.status === 200) {
+          cb(xhr.response);
+        }
+      };
+      xhr.send();
+    },
+    initDrillTypeOptions() {
+      initList().then(response => {
+        this.drillTypeOptions = response;
+      })
+    }
+    // 事件
+    //apimark//
+  },
+  mounted() {
+  },
+};
+</script>
+
+<!-- <style lang="less">
+.edu-training-edit {
+}
+</style> -->

+ 2 - 39
src/views/core/drill/task/dialog.perform.vue

@@ -30,7 +30,7 @@
                 <el-input style="width: 100%;" v-model="formData.drillSite" placeholder="请输入演练地点" :length="50"/>
               </el-form-item>
             </el-col>
-         
+
             <el-col :span="12">
               <el-form-item prop="drillStartTime" label="演练开始时间">
                 <el-date-picker style="width: 100%;" required v-model="formData.drillStartTime"
@@ -48,7 +48,7 @@
               </el-form-item>
             </el-col>
 
-         
+
 
             <el-col :span="24">
 
@@ -94,23 +94,7 @@
                                v-model="formData.fileList"/>
               </el-form-item>
             </el-col>
-           
-
-            <el-col :span="24">
-              <el-form-item v-if="formData.status==2" prop="commentScore" label="评分">
-                <el-rate
-                  :max="10"
-                  v-model="formData.commentScore"
-                >
-                </el-rate>
-              </el-form-item>
-            </el-col>
 
-            <el-col :span="24">
-              <el-form-item v-if="formData.status==2" prop="comment" label="评语">
-                <k-textarea v-model="formData.comment" placeholder="请输入评语" :length="200"/>
-              </el-form-item>
-            </el-col>
           </el-row>
         </el-form>
       </div>
@@ -119,7 +103,6 @@
         <el-button @click="onHide">取消</el-button>
         <el-button v-if="formData.status!=2" type="primary" @click="onSave">暂存</el-button>
         <el-button v-if="formData.status!=2" type="primary" @click="onSubmit">提交</el-button>
-        <el-button v-if="formData.status==2" type="primary" @click="onEvaluate">评价</el-button>
       </div>
     </DialogCom>
     <dialog-drill-dictionary-select
@@ -354,27 +337,7 @@ export default {
         });
       }
     },
-    async onEvaluate() {
-      console.log("onEvaluate", this.formData)
-      if (!this.formData.commentScore) {
-        this.$message.error("请选择评分!");
-      }
-      if (!this.formData.comment) {
-        this.$message.error("请输入评语!");
-      }
-      let { commentScore,comment,id} = { ...this.formData};
-      let json={};
-      json.score = commentScore;
-      json.comment = comment;
-      json.taskId = id;
-
-      evaluateDrillTask(json).then((v) => {
-        this.$emit("success", this.formData);
-        this.onHide();
-        this.$modal.msgSuccess("演练登记评价成功");
-      });
 
-    },
     validatePerson() {
       for (let i = 0; i < this.formData.absenceList.length; i++) {
         let absence = this.formData.absenceList[i];

+ 11 - 4
src/views/core/drill/task/index.vue

@@ -100,7 +100,7 @@
                               </el-table-column>
                               <el-table-column label="指挥人" align="center" prop="hostName"/>
                               <el-table-column label="演练地点" align="center" prop="drillSite"/>-->
-          
+
           <!-- <el-table-column label="演练时间" align="center" width="300">
             <template slot-scope="scope">
               {{scope.row.drillStartTime? dayjs(scope.row.drillStartTime).format("YYYY-MM-DD HH:MM") +" ~ "+dayjs(scope.row.drillEndTime).format("YYYY-MM-DD HH:MM"):''}}
@@ -129,7 +129,7 @@
                               type="text"
                               icon="el-icon-document-add"
                               v-if="canEvaluate(scope.row)"
-                              @click="handleRecorded(scope.row.id)"
+                              @click="handleEvaluate(scope.row.id)"
                               v-hasPermi="['core:drillTask:evaluate']"
                             >评价</el-button>
               <el-button
@@ -160,6 +160,7 @@
     <dialog-info ref="infoDialog" @success="handleQuery(true)"></dialog-info>
     <dialog-perform ref="performDialog" @success="handleQuery(true)"></dialog-perform>
     <dialog-new-task ref="newTaskDialog"></dialog-new-task>
+    <dialog-evaluate ref="evaluateDialog"></dialog-evaluate>
   </div>
 </template>
 
@@ -169,6 +170,7 @@ import OrgTree from "@/components/orgTree";
 import DialogInfo from "./dialog.info";
 import DialogPerform from "./dialog.perform";
 import DialogNewTask from "./dialog.newtask";
+import DialogEvaluate from "./dialog.evaluate";
 import dayjs from "dayjs";
 
 export default {
@@ -178,6 +180,7 @@ export default {
     DialogInfo,
     DialogPerform,
     DialogNewTask,
+    DialogEvaluate,
     OrgTree,
     dayjs
   },
@@ -322,12 +325,16 @@ export default {
     handleRecorded(id) {
       this.$refs["performDialog"].show(id, {});
     },
+    /** 评价按钮操作 */
+    handleEvaluate(id) {
+      this.$refs["evaluateDialog"].show(id, {});
+    },
     /** 导出按钮操作 */
-    handleExport() {
+    /*handleExport() {
       this.download('system/eduTask/export', {
         ...this.queryParams
       }, `eduTask_${new Date().getTime()}.xlsx`)
-    },
+    },*/
     canEvaluate(row) {
       //仅行社安全保卫管理人员进入且演练任务处于待评价状态才显示
       return row.status == 2 && this.$store.getters.roleList.some(item => item.roleId == 120) && this.isNotOverOrUnStart(row);

+ 23 - 23
src/views/core/edu/plan/index.vue

@@ -119,7 +119,7 @@
           </el-table-column>
 
           <el-table-column label="备注" align="center" prop="remark"/>
-          <el-table-column label="操作" width="160" fixed="right" align="center" class-name="small-padding fixed-width">
+          <el-table-column label="操作" width="220" fixed="right" align="center" class-name="small-padding fixed-width">
             <template slot-scope="scope">
               <el-button v-if="checkCanPublish(scope.row)" size="mini" type="text" icon="el-icon-down"
                          @click="handlePublish(scope.row)" v-hasPermi="['core:plan:edit']">下发
@@ -162,22 +162,15 @@
               </el-select>
             </el-form-item>
           </el-col>
-
-
-          <el-col :span="12" v-show="form.planCycle != 0">
-            <el-form-item label="立即生效" prop="buildTaskNow">
-              <el-checkbox v-model="form.buildTaskNow">
-                默认从下个周期生成任务,
-                <br/>
-                勾选后从当前周期立即生成任务
-                <!--                <el-popover placement="top-start" title="" width="200" trigger="hover"
-                                            content="默认从下个周期生成任务,勾选后从当前周期立即生成任务">
-                                  <i class="el-icon-warning-outline change-icon" slot="reference"></i>
-                                </el-popover>-->
-              </el-checkbox>
+          <el-col :span="12">
+            <el-form-item label="任务次数" prop="execTimes">
+              <template>
+                <el-input-number style="width: 100%" v-model="form.execTimes" :min="1" :max="10"></el-input-number>
+              </template>
             </el-form-item>
-
           </el-col>
+
+
           <!--     <el-col :span="12">
                  <el-form-item label="培训角色" prop="planRoleId">
                    <el-select style="width: 100%"  v-model="form.planRoleId" placeholder="请选择" multiple>
@@ -206,6 +199,20 @@
         </el-row>
 
         <el-row>
+          <el-col :span="12" v-show="form.planCycle != 0">
+            <el-form-item label="立即生效" prop="buildTaskNow">
+              <el-checkbox v-model="form.buildTaskNow">
+                默认从下个周期生成任务,
+                <br/>
+                勾选后从当前周期立即生成任务
+                <!--                <el-popover placement="top-start" title="" width="200" trigger="hover"
+                                            content="默认从下个周期生成任务,勾选后从当前周期立即生成任务">
+                                  <i class="el-icon-warning-outline change-icon" slot="reference"></i>
+                                </el-popover>-->
+              </el-checkbox>
+            </el-form-item>
+
+          </el-col>
           <el-col :span="12">
             <el-form-item label="受训机构类型" prop="execOrgType">
               <el-select style="width: 100%" v-model="form.execOrgType" placeholder="请选择受训机构类型"
@@ -215,13 +222,6 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="任务次数" prop="execTimes">
-              <template>
-                <el-input-number style="width: 100%" v-model="form.execTimes" :min="1" :max="10"></el-input-number>
-              </template>
-            </el-form-item>
-          </el-col>
         </el-row>
         <el-row>
           <!--          <el-col :span="12">
@@ -232,7 +232,7 @@
                         </el-select>
                       </el-form-item>
                     </el-col>-->
-          <el-col :span="12">
+          <el-col :span="24">
             <el-form-item v-show="form.execOrgType" label="受训机构" prop="planExecOrgIdList">
               <org-tree-select v-model="form.planExecOrgIdList" :queryData="form.execOrgType"
                                ref="orgTreeSelect" :enabledCheckOrgTypes="form.execOrgType" :disable="true">

+ 2 - 0
src/views/core/edu/task/dialog.perform.vue

@@ -42,6 +42,7 @@
               <el-form-item prop="trainingStartDateTime" label="培训开始时间">
                 <el-date-picker required v-model="formData.trainingStartDateTime"
                                 :picker-options="startDatepickerOptions"
+                                format="yyyy-MM-dd HH:mm"
                                 type="datetime" placeholder="选择日期" @change="startDateChanged">
                 </el-date-picker>
               </el-form-item>
@@ -50,6 +51,7 @@
               <el-form-item prop="trainingEndDateTime" label="培训结束时间">
                 <el-date-picker required v-model="formData.trainingEndDateTime" :picker-options="endDatepickerOptions"
                                 @change="endDateChanged"
+                                format="yyyy-MM-dd HH:mm"
                                 type="datetime" placeholder="选择日期">
                 </el-date-picker>
               </el-form-item>