Browse Source

演练bug修改

jingyuanchao 2 năm trước cách đây
mục cha
commit
2ce35de746

+ 11 - 2
src/views/core/drill/task/dialog.info.vue

@@ -106,6 +106,13 @@
                 }}
               </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-row>
         </el-form>
       </div>
@@ -122,9 +129,9 @@ import {mapState, mapMutations} from "vuex";
 import {getEduTask} from "@/api/core/edu/eduTask";
 import {getDrillTask} from "@/api/core/drill/drillTask";
 import {initList} from "@/api/core/drill/drillDictionary";
-
+import KFileUpload from "@/components/K-FileUpload/index.vue";
 export default {
-  components: {},
+  components: {KFileUpload},
   dicts: ['edu_type', 'edu_task_status'],
   data() {
     const params = this.$route.params;
@@ -133,6 +140,7 @@ export default {
       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' }
     };
   },
@@ -167,6 +175,7 @@ export default {
       } else {
         getDrillTask(id).then(response => {
           this.formData = response.data;
+          this.formFileListDefualtValue=response.data.fileList;
           this.formData.signImageList = this.getSingImageList();
           this.loading = false;
         })

+ 26 - 6
src/views/core/drill/task/dialog.newtask.vue

@@ -50,7 +50,11 @@
             </el-col>
 
             <el-col :span="24">
+
               <el-form-item prop="presetCase" label="预设案由">
+                <div style="display: flex;justify-content: flex-end; margin-bottom: 10px">
+                  <el-button type="primary" @click="selectMaterials">参考演练库</el-button>
+                </div>
                 <k-textarea v-model="formData.presetCase" placeholder="请输入预设案由" :length="2000"/>
               </el-form-item>
             </el-col>
@@ -97,6 +101,12 @@
         <el-button type="primary" @click="onSubmit">提交</el-button>
       </div>
     </DialogCom>
+    <dialog-drill-dictionary-select
+      ref="DialogDrillDictionarySelect"
+      :defaultSelect=defaultSelect
+      @select="materialsSelect"
+      :orgId="this.$store.getters.orgId">
+    </dialog-drill-dictionary-select>
   </div>
 </template>
 
@@ -108,9 +118,9 @@ import KTextarea from "@/components/common/textarea.vue";
 import KSelect from "@/components/common/userselect.vue";
 import imgUpload from "@/components/ImageUpload/index.vue";
 import KFileUpload from "@/components/K-FileUpload/index.vue";
-
+import DialogDrillDictionarySelect from "@/views/core/drill/task/dialog.select.drillDictionary.vue";
 export default {
-  components: {KTextarea, KSelect, imgUpload,KFileUpload},
+  components: {KTextarea, KSelect, imgUpload,KFileUpload,DialogDrillDictionarySelect},
   data() {
     const params = this.$route.params;
     return {
@@ -121,7 +131,7 @@ export default {
         drillStartTime: [{required: true, message: "请选择演练开始时间"}],
         drillEndTime: [{required: true, message: "请选择演练结束时间"}],
         drillSite: [{required: true, message: "请输入演练地点"}],
-        type: [{required: true, message: "请选择演练类型"}],
+        type: [{required: true, message: "请选择演练项目"}],
         presetCase: [{required: true, message: "请输入预设案由"}],
         drillSituation: [{required: true, message: "请输入预设案由"}],
         absenceList: [{required: true, type: "array", message: "请选择参与人员", trigger: ['blur', 'change']}],
@@ -138,9 +148,10 @@ export default {
       },
       drillTypeOptions: [],
       formFileListDefualtValue: [],
+      defaultSelect: [],
     };
   },
-  dicts: ["core_drill_type"],
+  dicts: ["core_drill_type","core_drill_type"],
   props: {},
   watch: {},
   computed: {
@@ -152,8 +163,10 @@ export default {
       return {
         drillStartTime: null,
         drillEndTime: null,
-        content: null,
-        title: null,
+        content: "",
+        drillSite: "",
+        type: null,
+        title: "",
         eduJobId: null,
         imageList: "",
         absenceList: [],
@@ -340,6 +353,13 @@ export default {
         console.log("trainingEndDateTime", this.formData.drillEndTime);
       }
     },
+    selectMaterials() {
+      this.$refs["DialogDrillDictionarySelect"].show();
+    },
+    materialsSelect(){
+
+    },
+
   },
 
   mounted() {

+ 50 - 52
src/views/core/drill/task/dialog.perform.vue

@@ -7,7 +7,7 @@
           <el-row>
             <!-- 培训主题 -->
             <el-col :span="12">
-              <el-form-item prop="title" label=>
+              <el-form-item prop="title" label="标题">
                 {{ formData.title }}
               </el-form-item>
             </el-col>
@@ -18,27 +18,27 @@
             </el-col>
             <el-col :span="12">
               <el-form-item  prop="drillStartTime" label="培训开始时间">
-                <el-date-picker required v-model="formData.drillStartTime" :picker-options="startDatepickerOptions"
+                <el-date-picker style="width: 100%;" required v-model="formData.drillStartTime" :picker-options="startDatepickerOptions"
                                 type="datetime" placeholder="选择日期"  @change="startDateChanged">
                 </el-date-picker>
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item prop="drillEndTime" label="培训结束时间">
-                <el-date-picker required v-model="formData.drillEndTime" :picker-options="endDatepickerOptions" @change="endDateChanged"
+                <el-date-picker style="width: 100%;" required v-model="formData.drillEndTime" :picker-options="endDatepickerOptions" @change="endDateChanged"
                                 type="datetime" placeholder="选择日期">
                 </el-date-picker>
               </el-form-item>
             </el-col>
 
             <el-col :span="12">
-              <el-form-item prop="drillSite" label="演练地点">
-                <el-input v-model="formData.drillSite" placeholder="请输入演练地点" :length="50"/>
+              <el-form-item  prop="drillSite" label="演练地点">
+                <el-input style="width: 100%;" v-model="formData.drillSite" placeholder="请输入演练地点" :length="50"/>
               </el-form-item>
             </el-col>
-            <el-col :span="24">
+            <el-col :span="12">
               <el-form-item label="演练项目" prop="type">
-                <el-select v-model="formData.type" placeholder="请选择演练项目">
+                <el-select style="width: 100%;" v-model="formData.type" placeholder="请选择演练项目">
                   <el-option v-for="dict in dict.type.core_drill_type" :key="dict.value" :label="dict.label"
                              :value="parseInt(dict.value)">
                   </el-option>
@@ -47,7 +47,11 @@
             </el-col>
 
             <el-col :span="24">
+
               <el-form-item prop="presetCase" label="预设案由">
+                <div style="display: flex;justify-content: flex-end; margin-bottom: 10px">
+                  <el-button type="primary" @click="selectMaterials">参考演练库</el-button>
+                </div>
                 <k-textarea v-model="formData.presetCase" placeholder="请输入预设案由" :length="2000"/>
               </el-form-item>
             </el-col>
@@ -60,19 +64,27 @@
 
             <el-col :span="12">
               <el-form-item prop="absenceList" label="参与人员">
-                <k-select :multiple="true" v-model="formData.absenceList" url="/user/find/all"
+                <k-select style="width: 100%;" :multiple="true" v-model="formData.absenceList" url="/user/find/all"
                           :params="{ orgId: formData.orgId }" placeholder="请选择参与人员"
                           @select="absenceUserSelectChanged"></k-select>
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item v-if="formData.id" prop="absentList" label="缺席人员">
-                <k-select :multiple="true" v-model="formData.absentList" url="/user/find/all"
+              <el-form-item prop="absentList" label="缺席人员">
+                <k-select style="width: 100%;" :multiple="true" v-model="formData.absentList" url="/user/find/all"
                           :params="{ orgId: formData.orgId }" @select="absentUserSelectChanged"
                           placeholder="请选择缺席人员">
                 </k-select>
               </el-form-item>
             </el-col>
+
+            <el-col :span="12">
+              <el-form-item label="资料附件" prop="fileList">
+                <K-file-upload ref="upload"
+                               :defaultValue="formFileListDefualtValue"
+                               v-model="formData.fileList"/>
+              </el-form-item>
+            </el-col>
             <el-col :span="24">
               <el-form-item prop="imageList" label="上传图片">
                 <imgUpload ref="uploadimage" type="more" :value="formData.imageList" @input="imageListChanged">
@@ -89,6 +101,12 @@
         <el-button type="primary" @click="onSubmit">提交</el-button>
       </div>
     </DialogCom>
+    <dialog-drill-dictionary-select
+      ref="DialogDrillDictionarySelect"
+      :defaultSelect=defaultSelect
+      @select="materialsSelect"
+      :orgId="this.$store.getters.orgId"
+    ></dialog-drill-dictionary-select>
   </div>
 </template>
 
@@ -99,9 +117,12 @@ import dayjs from "dayjs";
 import KTextarea from "@/components/common/textarea.vue";
 import KSelect from "@/components/common/userselect.vue";
 import imgUpload from "@/components/ImageUpload/index.vue";
+import KFileUpload from "@/components/K-FileUpload/index.vue";
+import DialogDrillDictionarySelect from "@/views/core/drill/task/dialog.select.drillDictionary.vue";
 
 export default {
-  components: {KTextarea, KSelect, imgUpload},
+  components: {KTextarea, KSelect, imgUpload,KFileUpload,DialogDrillDictionarySelect},
+  dicts: ['core_drill_type'],
   data() {
     const params = this.$route.params;
     return {
@@ -127,9 +148,10 @@ export default {
         disabledDate: this.endDisabledDate,
       },
       drillTypeOptions: [],
+      formFileListDefualtValue: [],
+      defaultSelect: [],
     };
   },
-  dicts: ["core_drill_type"],
   props: {},
   watch: {},
   computed: {
@@ -142,6 +164,10 @@ export default {
         drillStartTime: null,
         drillEndTime: null,
         content: null,
+        drillSite: null,
+        type: null,
+        presetCase: null,
+        drillSituation: null,
         title: null,
         eduJobId: null,
         imageList: "",
@@ -190,6 +216,7 @@ export default {
           response.data.fileList = [];
         }
         this.formData = response.data;
+        this.formFileListDefualtValue=response.data.fileList;
       });
       console.log("getDrillTask", this.formData);
     },
@@ -242,51 +269,12 @@ export default {
 
       // console.log("absenceUserSelectChanged", list, this.formData.taskUserList,this.formData.absenceList);
     },
-    /*absentUserSelectChanged(list) {
-      // 将类型为2的数据删除
-      if (this.formData.absentList) {
-        this.formData.absentList = this.formData.absentList.filter(
-          (x) => x.type == 1
-        );
-      } else {
-        this.formData.absentList = [];
-      }
-      let tempList = list.map((x) => {
-        return {
-          userId: x.id,
-          userName: x.name,
-          type: 2,
-        };
-      });
-      if (!tempList) return;
-      this.formData.absentList = this.formData.absentList.concat(tempList);
-      console.log("absentUserSelectChanged", list, this.formData.absentList);
-    },*/
-    /*absenceUserSelectChanged(list) {
-      // 将类型为1的数据删除
-      if (this.formData.absenceList) {
-        this.formData.absenceList = this.formData.absenceList.filter(
-          (x) => x.type == 2
-        );
-      } else {
-        this.formData.absenceList = [];
-      }
-      let tempList = list.map((x) => {
-        return {
-          userId: x.id,
-          userName: x.name,
-          type: 1,
-        };
-      });
-      if (!tempList) return;
-      this.formData.absenceList = this.formData.absenceList.concat(tempList);
-      console.log("absenceUserSelectChanged", list, this.formData.absenceList);
-    },*/
     // 事件
     onHide() {
       this.isShow = false;
       this.formData = this.reset();
       this.$refs["uploadimage"].clearFiles();
+      this.formFileListDefualtValue=[];
     },
     async onSave() {
       if (!this.validatePerson()) {
@@ -392,6 +380,16 @@ export default {
         console.log("trainingEndDateTime", this.formData.drillEndTime);
       }
     },
+    selectMaterials() {
+      this.$refs["DialogDrillDictionarySelect"].show();
+    },
+    materialsSelect(){
+
+    },
+
+
+
+
   },
 
   mounted() {

+ 134 - 0
src/views/core/drill/task/dialog.select.drillDictionary.vue

@@ -0,0 +1,134 @@
+<template>
+  <DialogCom
+    title="选择知识库"
+    :visible.sync="isShow"
+    class="g-dialog-select-safe-check"
+    :close-on-click-modal="false"
+    width="55%"
+    top="10vh"
+    append-to-body
+  >
+    <div class="el-dialog-div" style="margin-bottom:20px">
+      <g-search-table
+        ref="st"
+        url="/core/drillDictionary/list"
+        method="GET"
+        :search-data="search"
+        :pageable="true"
+        :select="true"
+        :select-default="selectList"
+        :drag="false"
+        @select="onSelect"
+      >
+        <!-- 搜索 -->
+        <template slot="searchs">
+          <el-form-item prop="title" label="编号">
+            <el-input v-model="search.id" placeholder="请输入编号"></el-input>
+          </el-form-item>
+          <el-form-item label="演练类型" prop="drillType">
+            <el-select v-model="search.drillType" placeholder="请选择演练类型" clearable>
+              <el-option
+                v-for="dict in dict.type.core_drill_type"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              />
+            </el-select>
+          </el-form-item>
+        </template>
+
+        <!-- 表格 -->
+        <template slot="columns">
+          <el-table-column label="编号" align="center" prop="id"/>
+          <el-table-column prop="orgName" label="机构名称" width="200"></el-table-column>
+          <el-table-column label="演练类型" align="center" prop="drillType">
+            <template slot-scope="scope">
+              <dict-tag :options="dict.type.core_drill_type" :value="scope.row.drillType"/>
+            </template>
+          </el-table-column>
+          <el-table-column label="解决方案" scoped-slot="drillProjects" align="center" prop="drillProjects">
+            <template slot-scope="scope">
+              <div class="ellipsis" :title="scope.row.drillProjects">{{ scope.row.drillProjects }}</div>
+            </template>
+          </el-table-column>
+          <el-table-column label="预设案由" scoped-slot="defaultCause" align="center" prop="defaultCause">
+            <template slot-scope="scope">
+              <div class="ellipsis" :title="scope.row.defaultCause">{{ scope.row.defaultCause }}</div>
+            </template>
+          </el-table-column>
+        </template>
+      </g-search-table>
+    </div>
+
+    <div slot="footer" class="dialog-footer">
+      <el-button @click="onHide">关闭</el-button>
+      <el-button type="primary" @click="onSubmit">确定</el-button>
+    </div>
+  </DialogCom>
+</template>
+<script>
+import GSearchTable from "@/components/table/gx.search.table.vue";
+// import { ruleListForOrg } from "@/api/resumption/rule.js";
+export default {
+  components: {GSearchTable},
+  dicts: ['core_drill_type'],
+  data() {
+    return {
+      isShow: false,
+      selectList: [],
+      // ruleList: [],
+      search: this.emptySearch(),
+    };
+  },
+  computed: {},
+  watch: {
+    orgId(newval) {
+      console.log("orgId", newval);
+      this.search.orgId = newval;
+    },
+  },
+  props: {
+    defaultSelect: {
+      type: Array
+    },
+    orgId: {},
+  },
+  methods: {
+    show() {
+      this.search = this.emptySearch();
+      console.log("this.search", this.search)
+      this.isShow = true;
+      this.selectList = this.defaultSelect;
+    },
+    onHide() {
+      this.isShow = false;
+      this.search = this.emptySearch();
+    },
+    onSelect(item) {
+      this.selectList = item;
+    },
+    onSubmit() {
+      let s = this.selectList
+      this.$emit("select", this.selectList);
+      this.onHide();
+    },
+    emptySearch() {
+      return {
+        title: null,
+        fileName: null,
+        orgId: this.$store.getters.orgId,
+        // t:new Date(),
+      };
+    },
+
+  },
+  mounted() {
+
+  },
+};
+</script>
+<style lang="scss" scoped>
+.el-dialog-div {
+  overflow: auto;
+}
+</style>

+ 13 - 4
src/views/core/edu/task/dialog.info.vue

@@ -115,7 +115,14 @@
                         </el-col>
 
                         <!-- 文件 -->
-                        <el-col :span="24">
+                      <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="fileList" label="文件" :disabled="true">
                                 <div v-for="(v, i) in formData.fileList" :key="i">
                                     <a class="downloadLink" @click="onDownload(JSON.parse(v).url, JSON.parse(v).name)">
@@ -124,7 +131,7 @@
                                 </div>
 
                             </el-form-item>
-                        </el-col>
+                        </el-col>-->
                     </el-row>
                 </el-form>
             </div>
@@ -139,9 +146,9 @@
 <script>
 import { mapState, mapMutations } from "vuex";
 import { getEduTask } from "@/api/core/edu/eduTask";
-
+import KFileUpload from "@/components/K-FileUpload/index.vue";
 export default {
-    components: {},
+    components: {KFileUpload},
     dicts: ['edu_type', 'edu_task_status'],
     data() {
         const params = this.$route.params;
@@ -149,6 +156,7 @@ export default {
             id: params ? params.id : null,
             isShow: false,
             formData: this.reset(),
+          formFileListDefualtValue: [],
         };
     },
     props: {},
@@ -181,6 +189,7 @@ export default {
             else {
                 getEduTask(id).then(response => {
                     this.formData = response.data;
+                  this.formFileListDefualtValue=response.data.fileList;
                     this.formData.signImageList=this.getSingImageList();
                     this.loading = false;
                 })

+ 3 - 4
src/views/core/edu/task/dialog.perform.vue

@@ -66,15 +66,14 @@
                 <k-textarea v-model="formData.note" placeholder="请输入总结" :length="2000"/>
               </el-form-item>
             </el-col>
-            <el-col :span="24">
-
-              <el-form-item v-if="formData.id" prop="absenceList" label="参与人员">
+            <el-col :span="12">
+              <el-form-item prop="absenceList" label="参与人员">
                 <k-select :multiple="true" v-model="formData.absenceList" url="/user/find/all"
                           :params="{ orgId: formData.orgId }" placeholder="请选择参与人员"
                           @select="absenceUserSelectChanged"></k-select>
               </el-form-item>
             </el-col>
-            <el-col :span="24">
+            <el-col :span="12">
               <el-form-item v-if="formData.id" prop="absentList" label="缺席人员">
                 <k-select :multiple="true" v-model="formData.absentList" url="/user/find/all"
                           :params="{ orgId: formData.orgId }" @select="absentUserSelectChanged"