소스 검색

Merge branch 'V0.0.2' of http://10.87.10.227:4000/jzyd_yyds/soc_web into V0.0.2

jiawuxian 2 년 전
부모
커밋
263bfe1787

+ 1 - 2
src/components/table/mix.search.js

@@ -47,7 +47,7 @@ export default {
         function () {
           if(!this.manual){
             this.search();
-          }         
+          }
         },
         300,
         { leading: true }
@@ -59,7 +59,6 @@ export default {
      * 重新搜索
      */
     search() {
-      console.log("this.searchData",this.searchData)
       let checkResult = this.beforeSearchCheck(this.searchData);
       // console.info("search" ,checkResult)
       if (!checkResult) return;

+ 72 - 9
src/views/core/drill/task/dialog.perform.vue

@@ -61,7 +61,7 @@
             <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="请选择缺席人员"
+                          :params="{ orgId: formData.orgId }" placeholder="请选择参与人员"
                           @select="absenceUserSelectChanged"></k-select>
               </el-form-item>
             </el-col>
@@ -115,6 +115,7 @@ export default {
         type: [{required: true, message: "请选择演练类型"}],
         presetCase: [{required: true, message: "请输入预设案由"}],
         drillSituation: [{required: true, message: "请输入预设案由"}],
+        imageList: [{required: true, message: "请上传图片"}],
         absenceList: [{required: true, type: "array", message: "请选择参与人员", trigger: ['blur', 'change']}],
       },
       startDatepickerOptions: {
@@ -202,6 +203,46 @@ export default {
       console.log("imageListChanged", this.formData.imageList);
     },
     absentUserSelectChanged(list) {
+      console.log(list);
+      // 将类型为2的数据删除
+      if (this.formData.taskUserList) {
+        this.formData.taskUserList = this.formData.taskUserList.filter(x => x.type == 1);
+      } else {
+        this.formData.taskUserList = [];
+      }
+      let tempList = list.map(x => {
+        return {
+          userId: x.id,
+          userName: x.name,
+          type: 2
+        }
+      })
+      if (!tempList) return;
+      this.formData.taskUserList = this.formData.taskUserList.concat(tempList);
+      console.log("absentUserSelectChanged", list, this.formData.taskUserList);
+    },
+    absenceUserSelectChanged(list) {
+      // 将类型为1的数据删除
+      if (this.formData.taskUserList) {
+        this.formData.taskUserList = this.formData.taskUserList.filter(x => x.type == 2);
+      } else {
+        this.formData.taskUserList = [];
+      }
+      let tempList = list.map(x => {
+        return {
+          userId: x.id,
+          userName: x.name,
+          type: 1
+        }
+      });
+      if (!tempList) return;
+      this.formData.taskUserList = this.formData.taskUserList.concat(tempList);
+      // console.log("absenceUserSelectChanged", list, this.formData.taskUserList,this.formData.absenceList);
+      // this.formData.absenceList=list.map(item=>item.id);
+
+      // console.log("absenceUserSelectChanged", list, this.formData.taskUserList,this.formData.absenceList);
+    },
+    /*absentUserSelectChanged(list) {
       // 将类型为2的数据删除
       if (this.formData.absentList) {
         this.formData.absentList = this.formData.absentList.filter(
@@ -220,8 +261,8 @@ export default {
       if (!tempList) return;
       this.formData.absentList = this.formData.absentList.concat(tempList);
       console.log("absentUserSelectChanged", list, this.formData.absentList);
-    },
-    absenceUserSelectChanged(list) {
+    },*/
+    /*absenceUserSelectChanged(list) {
       // 将类型为1的数据删除
       if (this.formData.absenceList) {
         this.formData.absenceList = this.formData.absenceList.filter(
@@ -240,7 +281,7 @@ export default {
       if (!tempList) return;
       this.formData.absenceList = this.formData.absenceList.concat(tempList);
       console.log("absenceUserSelectChanged", list, this.formData.absenceList);
-    },
+    },*/
     // 事件
     onHide() {
       this.isShow = false;
@@ -252,28 +293,50 @@ export default {
         this.$message.error("参与人员与缺席人员重复,请重新选择!");
         return;
       }
+      //判断trainingStartDateTime大于trainingEndDateTime就返回
+      if (dayjs(this.formData.drillStartTime).isAfter(dayjs(this.formData.drillEndTime))) {
+        this.$message.error("演练开始时间不能大于演练结束时间!");
+        return;
+      }
       let request = {submitType: 1, ...this.formData};
+      delete request.absenceList;
+      delete request.absentList;
+
       if (request.drillStartTime)
         request.drillStartTime = dayjs(request.drillStartTime).format("YYYY-MM-DD HH:mm:ss");
+
       if (request.drillEndTime)
         request.drillEndTime = dayjs(request.drillEndTime).format("YYYY-MM-DD HH:mm:ss");
+
       recordDrillTask(request).then((v) => {
         this.$emit("success", this.formData);
         this.onHide();
-        this.$modal.msgSuccess("培训登记暂存成功");
+        this.$modal.msgSuccess("演练登记暂存成功");
       });
     },
     async onSubmit() {
       await this.$refs.form.validate();
-      console.log("onSubmit this.formData", this.formData);
-      if (!this.validatePerson()) {
+      if (dayjs(this.formData.drillStartTime).isAfter(dayjs(this.formData.drillEndTime))) {
+        this.$message.error("培训开始时间不能大于培训结束时间!");
+        return;
+      }
+      this.formData.taskUserList = this.formData.taskUserList ? this.formData.taskUserList : []
+      if (this.formData.taskUserList.length == 0 || this.formData.taskUserList.filter(item => item.type == 1).length == 0) {
+        this.$message.error("参与人员不能为空,请重新选择!");
+      } else if (!this.validatePerson()) {
         this.$message.error("参与人员与缺席人员重复,请重新选择!");
       } else {
         let request = {submitType: 2, ...this.formData};
-        if (request.drillStartTime)
+        delete request.absenceList;
+        delete request.absentList;
+
+        if (request.drillStartTime){
           request.drillStartTime = dayjs(request.drillStartTime).format("YYYY-MM-DD HH:mm:ss");
-        if (request.drillEndTime)
+        }
+
+        if (request.drillEndTime){
           request.drillEndTime = dayjs(request.drillEndTime).format("YYYY-MM-DD HH:mm:ss");
+        }
 
         recordDrillTask(request).then((v) => {
           this.$emit("success", this.formData);

+ 81 - 65
src/views/core/drill/task/index.vue

@@ -30,15 +30,15 @@
             </el-date-picker>
           </el-form-item>
           <el-form-item label="演练状态" prop="status">
-        <el-select v-model="queryParams.status" placeholder="请选择演练状态" clearable>
-            <el-option
-              v-for="dict in dict.type.drill_task_status"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            />
-          </el-select>
-      </el-form-item>
+            <el-select v-model="queryParams.status" placeholder="请选择演练状态" clearable>
+              <el-option
+                v-for="dict in dict.type.drill_task_status"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              />
+            </el-select>
+          </el-form-item>
           <el-form-item>
             <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
             <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -53,43 +53,54 @@
           </el-col>
         </el-row>
 
-        <el-table height="550px" v-loading="loading" :data="eduTaskList" @selection-change="handleSelectionChange">
-          <el-table-column label="演练机构" align="center" prop="orgName"/>
-<!--          <el-table-column label="演练角色" align="center">
+        <el-table border height="550px" v-loading="loading" :data="eduTaskList" @selection-change="handleSelectionChange">
+          <el-table-column label="演练主题" width="200" align="left" header-align="center" prop="title"/>
+          <el-table-column label="演练机构" width="200" align="left" header-align="center" prop="orgName"/>
+          <!--          <el-table-column label="演练角色" align="center">
+                      <template slot-scope="scope">
+                        <template v-if="scope.row.taskRoleNameList  ">
+                          <el-tag size="mini" type="success"
+                                  v-for="(item, index) in (scope.row.taskRoleNameList || '').split(',')"
+                                  :key="index">
+                            {{ item }}
+                          </el-tag>
+                        </template>
+                      </template>
+                    </el-table-column>-->
+          <el-table-column label="演练类型" align="left" header-align="center" prop="type">
             <template slot-scope="scope">
-              <template v-if="scope.row.taskRoleNameList  ">
-                <el-tag size="mini" type="success"
-                        v-for="(item, index) in (scope.row.taskRoleNameList || '').split(',')"
-                        :key="index">
-                  {{ item }}
-                </el-tag>
-              </template>
+              <dict-tag :options="dict.type.core_drill_type" :value="scope.row.type"/>
             </template>
-          </el-table-column>-->
-          <el-table-column label="演练类型" align="center" prop="type">
+          </el-table-column>
+          <el-table-column label="任务时间" align="center" width="300">
             <template slot-scope="scope">
-              <dict-tag :options="dict.type.core_drill_type" :value="scope.row.type"/>
+              {{scope.row.startDate? dayjs(scope.row.startDate).format("YYYY-MM-DD") +" ~ "+dayjs(scope.row.endDate).format("YYYY-MM-DD"):''}}
             </template>
           </el-table-column>
 
-          <el-table-column label="开始日期" align="center" prop="startDate" width="180">
+          <!--          <el-table-column label="开始日期" align="center" prop="startDate" width="180">
+                              </el-table-column>
+                              <el-table-column label="截止日期" align="center" prop="endDate" width="180">
+                              </el-table-column>
+                              <el-table-column label="指挥人" align="center" prop="hostName"/>
+                              <el-table-column label="演练地点" align="center" prop="drillSite"/>-->
+          <el-table-column label="演练状态" align="left" header-align="center" prop="status">
+            <template slot-scope="scope">
+              <dict-tag :options="dict.type.drill_task_status" :value="scope.row.status"/>
+            </template>
           </el-table-column>
-          <el-table-column label="截止日期" align="center" prop="endDate" width="180">
+          <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"):''}}
+            </template>
           </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" prop="status" >
-        <template slot-scope="scope">
-            <dict-tag :options="dict.type.drill_task_status" :value="scope.row.status"/>
-          </template>
-      </el-table-column>
-          <el-table-column label="评分" align="center" prop="commentScore"/>
+<!--          <el-table-column label="评分" align="center" prop="commentScore"/>
 
           <el-table-column scoped-slot="comment" align="center" prop="comment" label="评语">
             <template slot-scope="scope">
               <div class="ellipsis" :title="scope.row.comment">{{ scope.row.comment }}</div>
             </template>
-          </el-table-column>
+          </el-table-column>-->
 
           <el-table-column label="操作" width="120px" align="center" class-name="small-padding fixed-width">
             <template slot-scope="scope">
@@ -99,15 +110,16 @@
                 icon="el-icon-view"
                 @click="handleDetail(scope.row.id)"
                 v-hasPermi="['core:drillTask:query']"
-              >详情</el-button>
-<!--              <el-button
-                size="mini"
-                type="text"
-                icon="el-icon-document-add"
-                v-if="canEvaluate(scope.row)"
-                @click="handleRecorded(scope.row.id)"
-                v-hasPermi="['core:drillTask:evaluate']"
-              >评价</el-button>-->
+              >详情
+              </el-button>
+              <!--              <el-button
+                              size="mini"
+                              type="text"
+                              icon="el-icon-document-add"
+                              v-if="canEvaluate(scope.row)"
+                              @click="handleRecorded(scope.row.id)"
+                              v-hasPermi="['core:drillTask:evaluate']"
+                            >评价</el-button>-->
               <el-button
                 size="mini"
                 type="text"
@@ -115,9 +127,11 @@
                 v-if="canPerform(scope.row)"
                 @click="handleRecorded(scope.row.id)"
                 v-hasPermi="['core:drillTask:edit']"
-              >演练登记</el-button>
+              >演练登记
+              </el-button>
               <el-button type="text" v-if="scope.row.pdfUrl" @click="onDown(scope.row.pdfUrl)"
-              >演练登记簿</el-button>
+              >演练登记簿
+              </el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -147,12 +161,13 @@ import dayjs from "dayjs";
 
 export default {
   name: "EduTask",
-  dicts: ['drill_task_status','core_drill_type'],
+  dicts: ['drill_task_status', 'core_drill_type'],
   components: {
     DialogInfo,
     DialogPerform,
     DialogNewTask,
-    OrgTree
+    OrgTree,
+    dayjs
   },
   data() {
     return {
@@ -200,6 +215,7 @@ export default {
   },
 
   methods: {
+    dayjs,
     /** 查询教育任务列表 */
     getList() {
       this.loading = true;
@@ -221,7 +237,7 @@ export default {
         title: null,
         type: null,
         status: null,
-        checkSub:true,
+        checkSub: true,
       };
       this.resetForm("form");
     },
@@ -295,31 +311,31 @@ export default {
         ...this.queryParams
       }, `eduTask_${new Date().getTime()}.xlsx`)
     },
-    canEvaluate(row){
+    canEvaluate(row) {
       //仅行社安全保卫管理人员进入且演练任务处于待评价状态才显示
-      return row.status==2 && this.$store.getters.roleList.some(item=>item.roleId==120)&&this.isNotOverOrUnStart(row);
+      return row.status == 2 && this.$store.getters.roleList.some(item => item.roleId == 120) && this.isNotOverOrUnStart(row);
     },
     canPerform(row) {
-      if (row.status > 0) return false;
-      let isCur=  row.orgId == this.$store.getters.orgId;
-      let isOver= this.isNotOverOrUnStart(row);
-      return  isCur && isOver;
-     /*   let flag = 0;
-     if (!row.taskRoleList) return false;
-      row.taskRoleList.forEach((taskRole) => {
-        this.$store.getters.roleList.forEach((role) => {
-          if (taskRole.roleId == role.roleId) {
-            flag = 1;
-          }
-        });
-      });
-      return (flag == 1) && isOver;*/
+      if (row.status != 0 && row.status != 5) return false;
+      let isCur = row.orgId == this.$store.getters.orgId;
+      let isOver = this.isNotOverOrUnStart(row);
+      return isCur && isOver;
+      /*   let flag = 0;
+      if (!row.taskRoleList) return false;
+       row.taskRoleList.forEach((taskRole) => {
+         this.$store.getters.roleList.forEach((role) => {
+           if (taskRole.roleId == role.roleId) {
+             flag = 1;
+           }
+         });
+       });
+       return (flag == 1) && isOver;*/
     },
     isNotOverOrUnStart(row) {
       const currentTime = dayjs().startOf('day'); // 获取当前时间,并将时分秒部分设置为00时00分00秒
       const startDate = dayjs(row.startDate).startOf('day'); // 转换开始时间为 Moment.js 对象,并将时分秒部分设置为00时00分00秒
       const endDate = dayjs(row.endDate).startOf('day'); // 转换结束时间为 Moment.js 对象,并将时分秒部分设置为00时00分00秒
-     // console.log("isOverOrUnStart", currentTime, startDate, endDate);
+      // console.log("isOverOrUnStart", currentTime, startDate, endDate);
       return !(currentTime < startDate || currentTime > endDate);
     },
     async onDown(pdfUrl) {
@@ -328,7 +344,7 @@ export default {
     },
     handleAddTask(id) {
       console.log(123123123)
-      this.$refs["newTaskDialog"].show(id,{});
+      this.$refs["newTaskDialog"].show(id, {});
     },
   }
 };

+ 113 - 65
src/views/core/edu/task/dialog.perform.vue

@@ -3,7 +3,7 @@
     <DialogCom :title="'培训登记'" :close="onHide" :visible.sync="isShow" width="960px">
       <div class="page-body">
         <el-form :model="formData" :rules="formDataRules" size="small" ref="perform" label-position="right"
-          label-width="120px" label-prefix=":">
+                 label-width="120px" label-prefix=":">
           <el-row>
             <!-- 培训主题 -->
             <el-col :span="12">
@@ -25,62 +25,79 @@
               </el-form-item>
             </el-col>
             <!-- 类型 -->
-<!--            <el-col :span="24">
-              <el-form-item prop="type" label="类型">
-                <el-select v-model="formData.type" placeholder="请选择培训类型" clearable>
-                  <el-option v-for="dict in dict.type.edu_type" :key="dict.value" :label="dict.label"
-                    :value="parseInt(dict.value)" />
-                </el-select>
-                &lt;!&ndash; <k-select-constant
-                        name="EduTrainingType"
-                        v-model="formData.type"
-                        placeholder="请选择类型"
-                    ></k-select-constant> &ndash;&gt;
-              </el-form-item>
-            </el-col>-->
+            <!--            <el-col :span="24">
+                          <el-form-item prop="type" label="类型">
+                            <el-select v-model="formData.type" placeholder="请选择培训类型" clearable>
+                              <el-option v-for="dict in dict.type.edu_type" :key="dict.value" :label="dict.label"
+                                :value="parseInt(dict.value)" />
+                            </el-select>
+                            &lt;!&ndash; <k-select-constant
+                                    name="EduTrainingType"
+                                    v-model="formData.type"
+                                    placeholder="请选择类型"
+                                ></k-select-constant> &ndash;&gt;
+                          </el-form-item>
+                        </el-col>-->
             <el-col :span="12">
-              <el-form-item  prop="trainingStartDateTime" label="培训开始时间">
-                <el-date-picker required v-model="formData.trainingStartDateTime" :picker-options="startDatepickerOptions"
-                  type="datetime" placeholder="选择日期"  @change="startDateChanged">
+              <el-form-item prop="trainingStartDateTime" label="培训开始时间">
+                <el-date-picker required v-model="formData.trainingStartDateTime"
+                                :picker-options="startDatepickerOptions"
+                                type="datetime" placeholder="选择日期" @change="startDateChanged">
                 </el-date-picker>
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item prop="trainingEndDateTime" label="培训结束时间">
-                <el-date-picker required v-model="formData.trainingEndDateTime" :picker-options="endDatepickerOptions" @change="endDateChanged"
-                  type="datetime" placeholder="选择日期">
+                <el-date-picker required v-model="formData.trainingEndDateTime" :picker-options="endDatepickerOptions"
+                                @change="endDateChanged"
+                                type="datetime" placeholder="选择日期">
                 </el-date-picker>
               </el-form-item>
             </el-col>
             <!-- 内容 -->
             <el-col :span="24">
               <el-form-item prop="content" label="培训内容">
-                <k-textarea v-model="formData.content" placeholder="请输入培训内容" :length="2000" />
+                <k-textarea v-model="formData.content" placeholder="请输入培训内容" :length="2000"/>
               </el-form-item>
             </el-col>
 
             <el-col :span="24">
               <el-form-item v-if="formData.id" prop="note" label="总结">
-                <k-textarea v-model="formData.note" placeholder="请输入总结" :length="2000" />
+                <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="参与人员">
-                <k-select :multiple="true" v-model="formData.absenceList"  url="/user/find/all"
-                  :params="{ orgId: formData.orgId }" placeholder="请选择参与人员" @select="absenceUserSelectChanged"></k-select>
+                <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-form-item v-if="formData.id" prop="absentList"  label="缺席人员">
+              <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" placeholder="请选择缺席人员">
+                          :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="12">
+              <el-form-item label="">
+                <el-button type="primary" @click="showSelectFile">从学习资料中选择</el-button>
+              </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"></imgUpload>
+                <imgUpload ref="uploadimage" type="more" :value="formData.imageList"
+                           @input="imageListChanged"></imgUpload>
               </el-form-item>
             </el-col>
           </el-row>
@@ -93,18 +110,26 @@
         <el-button type="primary" @click="onSubmit">提交</el-button>
       </div>
     </DialogCom>
+    <DialogSelectFile
+      ref="DialogSelectFile"
+      :defaultSelect=defaultSelect
+      @select="fileSelected"
+      :orgId="this.$store.getters.orgId"
+    ></DialogSelectFile>
   </div>
 </template>
 
 <script>
-import { mapState, mapMutations } from "vuex";
-import { getEduTask, recordEduTask } from "@/api/core/edu/eduTask";
+import {mapState, mapMutations} from "vuex";
+import {getEduTask, recordEduTask} from "@/api/core/edu/eduTask";
 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 DialogSelectFile from "../plan/dialog.select.file.vue";
 export default {
-  components: { KTextarea, KSelect, imgUpload },
+  components: {KTextarea, KSelect, imgUpload, KFileUpload,DialogSelectFile},
   data() {
     const params = this.$route.params;
     return {
@@ -112,13 +137,13 @@ export default {
       isShow: false,
       formData: this.reset(),
       formDataRules: {
-        type: [{ required: true, message: "请选择类型" }],
-        content: [{ required: true, message: "请输入内容" }],
-        absenceList: [{ required: true, type: "array",message: "请选择参与人员"}],
-        trainingStartDateTime: [{ required: true, message: "请输入培训时间" }],
-        trainingEndDateTime: [{ required: true, message: "请输入培训时间" }],
-        note: [{ required: true, message: "请输入总结" }],
-        imageList: [{ required: true, message: "请上传图片" }],
+        type: [{required: true, message: "请选择类型"}],
+        content: [{required: true, message: "请输入内容"}],
+        absenceList: [{required: true, type: "array", message: "请选择参与人员"}],
+        trainingStartDateTime: [{required: true, message: "请输入培训时间"}],
+        trainingEndDateTime: [{required: true, message: "请输入培训时间"}],
+        note: [{required: true, message: "请输入总结"}],
+        imageList: [{required: true, message: "请上传图片"}],
       },
       startDatepickerOptions: {
         disabledDate(time) {
@@ -128,6 +153,8 @@ export default {
       endDatepickerOptions: {
         disabledDate: this.endDisabledDate,
       },
+      formFileListDefualtValue: [],
+      defaultSelect: [],
     };
   },
   dicts: ['edu_type', 'edu_task_status'],
@@ -166,7 +193,7 @@ export default {
         this.reset(other);
         return;
       }
-      let _this=this;
+      let _this = this;
       getEduTask(id).then(response => {
         this.loading = false;
         // _this.formData = response.data;
@@ -175,17 +202,20 @@ export default {
             element.type === 1
           );
           console.log("list1", list1)
-          response.data.absenceList = list1 ? list1.map((a) => { return a.userId; })
+          response.data.absenceList = list1 ? list1.map((a) => {
+              return a.userId;
+            })
             : [];
 
           let list2 = response.data.taskUserList.filter((element) =>
             element.type === 2
           );
           console.log("list2", list2)
-          response.data.absentList = list2 ? list2.map((a) => { return a.userId; })
+          response.data.absentList = list2 ? list2.map((a) => {
+              return a.userId;
+            })
             : [];
-        }
-        else {
+        } else {
           response.data.absenceList = [];
           response.data.absentList = [];
         }
@@ -197,6 +227,7 @@ export default {
           response.data.fileList = [];
         }
         this.formData=response.data;
+        this.formFileListDefualtValue=response.data.fileList;
       })
       console.log("getEduTask", this.formData);
     },
@@ -204,6 +235,7 @@ export default {
       this.id = id;
       await this.refresh(id, other);
       this.isShow = true;
+      console.log("show", this.formData);
     },
     imageListChanged(list) {
       this.formData.imageList = list;
@@ -214,8 +246,7 @@ export default {
       // 将类型为2的数据删除
       if (this.formData.taskUserList) {
         this.formData.taskUserList = this.formData.taskUserList.filter(x => x.type == 1);
-      }
-      else {
+      } else {
         this.formData.taskUserList = [];
       }
       let tempList = list.map(x => {
@@ -233,8 +264,7 @@ export default {
       // 将类型为1的数据删除
       if (this.formData.taskUserList) {
         this.formData.taskUserList = this.formData.taskUserList.filter(x => x.type == 2);
-      }
-      else {
+      } else {
         this.formData.taskUserList = [];
       }
       let tempList = list.map(x => {
@@ -256,6 +286,7 @@ export default {
       this.isShow = false;
       this.formData = this.reset();
       this.$refs["uploadimage"].clearFiles();
+      this.formFileListDefualtValue=[];
     },
     async onSave() {
       if (!this.validatePerson()) {
@@ -267,7 +298,7 @@ export default {
         this.$message.error("培训开始时间不能大于培训结束时间!");
         return;
       }
-      let request = { submitType: 1, ...this.formData };
+      let request = {submitType: 1, ...this.formData};
       delete request.absenceList;
       delete request.absentList;
 
@@ -276,9 +307,7 @@ export default {
 
       if (request.trainingEndDateTime)
         request.trainingEndDateTime = dayjs(request.trainingEndDateTime).format('YYYY-MM-DD HH:mm:ss')
-      // if(request.imageList)
-      //   request.imageList=request.imageList.split(',').map(x=>{return x;});
-      // request.taskUserList = [];
+
       recordEduTask(request).then((v) => {
         this.$emit("success", this.formData);
         this.onHide();
@@ -286,31 +315,26 @@ export default {
       });
     },
     async onSubmit() {
-      //console.log("onSubmit this.formData", this.formData)
       await this.$refs.perform.validate();
-      //判断trainingStartDateTime大于trainingEndDateTime就返回
       if (dayjs(this.formData.trainingStartDateTime).isAfter(dayjs(this.formData.trainingEndDateTime))) {
         this.$message.error("培训开始时间不能大于培训结束时间!");
         return;
       }
-      // this.formData.taskUserList=[];
-      console.log("onSubmit this.formData", this.formData)
-      console.log(this.formData.taskUserList);
-      this.formData.taskUserList=this.formData.taskUserList? this.formData.taskUserList:[]
-      if(this.formData.taskUserList.length==0||this.formData.taskUserList.filter(item=>item.type==1).length==0){
+      this.formData.taskUserList = this.formData.taskUserList ? this.formData.taskUserList : []
+      if (this.formData.taskUserList.length == 0 || this.formData.taskUserList.filter(item => item.type == 1).length == 0) {
         this.$message.error("参与人员不能为空,请重新选择!");
       } else if (!this.validatePerson()) {
         this.$message.error("参与人员与缺席人员重复,请重新选择!");
       } else {
-        let request = { submitType: 2, ...this.formData };
+        let request = {submitType: 2, ...this.formData};
         delete request.absenceList;
         delete request.absentList;
 
-        if (request.trainingStartDateTime){
+        if (request.trainingStartDateTime) {
           request.trainingStartDateTime = dayjs(request.trainingStartDateTime).format('YYYY-MM-DD HH:mm:ss')
         }
 
-        if (request.trainingEndDateTime){
+        if (request.trainingEndDateTime) {
           request.trainingEndDateTime = dayjs(request.trainingEndDateTime).format('YYYY-MM-DD HH:mm:ss')
         }
 
@@ -333,7 +357,8 @@ export default {
       }
       return true;
     },
-    uploadTriggerEvent(value) { },
+    uploadTriggerEvent(value) {
+    },
 
     endDisabledDate(time) {
       //小于开始日期禁止选择
@@ -347,21 +372,44 @@ export default {
 
     },
     startDateChanged(time) {
-      console.log("startDateChanged",time,this.formData.trainingStartDateTime ,this.formData.trainingEndDateTime)
+      console.log("startDateChanged", time, this.formData.trainingStartDateTime, this.formData.trainingEndDateTime)
       if (dayjs(this.formData.trainingStartDateTime).isAfter(dayjs(this.formData.trainingEndDateTime))) {
         this.formData.trainingEndDateTime = this.formData.trainingStartDateTime;
-        console.log("trainingEndDateTime",this.formData.trainingEndDateTime)
+        console.log("trainingEndDateTime", this.formData.trainingEndDateTime)
       }
     },
     endDateChanged(time) {
-      console.log("startDateChanged",time,this.formData.trainingStartDateTime ,this.formData.trainingEndDateTime)
+      console.log("startDateChanged", time, this.formData.trainingStartDateTime, this.formData.trainingEndDateTime)
       if (dayjs(this.formData.trainingStartDateTime).isAfter(dayjs(this.formData.trainingEndDateTime))) {
         this.formData.trainingStartDateTime = this.formData.trainingEndDateTime;
-        console.log("trainingEndDateTime",this.formData.trainingEndDateTime)
+        console.log("trainingEndDateTime", this.formData.trainingEndDateTime)
+      }
+    },
+    fileSelected(list) {
+
+      if (!list) return;
+      let tempArry = [];
+      list.forEach(x => {
+        tempArry = tempArry.concat(x.fileList);
+      })
+      console.log("tempArry", tempArry, this.formData.fileList);
+      if (this.formData.fileList) {
+        console.log("12312312121212121212121")
+        this.formFileListDefualtValue = this.formData.fileList.concat(tempArry);
+        this.formData.fileList = this.formData.fileList.concat(tempArry);
+        console.log("this.formFileListDefualtValue", this.formFileListDefualtValue)
+      } else {
+        this.formFileListDefualtValue = tempArry;
       }
     },
+    showSelectFile() {
+      this.$refs["DialogSelectFile"].show();
+    },
+
+
+  },
+  mounted() {
   },
-  mounted() { },
 };
 </script>
 

+ 172 - 165
src/views/core/edu/task/index.vue

@@ -1,168 +1,173 @@
 <template>
   <div class="app-container">
     <el-row :gutter="20">
-    <el-col :span="4" :xs="24">
-      <org-tree v-model="queryParams.orgId" @defaultKey="getDefaultKey" @checkChange="checkChange"
-                @click="clickTreeNode" businessTree></org-tree>
-    </el-col>
-    <el-col :span="20" :xs="24">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
+      <el-col :span="4" :xs="24">
+        <org-tree v-model="queryParams.orgId" @defaultKey="getDefaultKey" @checkChange="checkChange"
+                  @click="clickTreeNode" businessTree></org-tree>
+      </el-col>
+      <el-col :span="20" :xs="24">
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
+                 label-width="100px">
 
-      <el-form-item label="培训主题" prop="title">
-        <el-input
-          v-model="queryParams.title"
-          placeholder="请输入培训主题"
-          clearable
-          maxlength="50"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="培训进度" prop="status">
-        <el-select v-model="queryParams.status" placeholder="请选择培训进度" clearable>
-            <el-option
-              v-for="dict in dict.type.edu_training_do_status"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            />
-          </el-select>
-      </el-form-item>
-      <el-form-item label="任务时间段" prop="rangen">
-        <el-date-picker
-          v-model="queryParams.range"
-          type="daterange"
-          value-format="yyyy-MM-dd"
-          placeholder="请选择任务时间段">
-        </el-date-picker>
-      </el-form-item>
-<!--      <el-form-item label="培训类型" prop="type">
-        <el-select v-model="queryParams.type" placeholder="请选择培训类型" clearable>
-            <el-option
-              v-for="dict in dict.type.edu_type"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
+          <el-form-item label="培训主题" prop="title">
+            <el-input
+              v-model="queryParams.title"
+              placeholder="请输入培训主题"
+              clearable
+              maxlength="50"
+              @keyup.enter.native="handleQuery"
             />
-          </el-select>
-      </el-form-item>-->
-
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-      <el-row :gutter="10" class="mb8">
-        <el-col :span="1.5">
-          <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAddTask"
-                     >新增
-          </el-button>
-        </el-col>
-        <!--   <el-col :span="1.5">
-             <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
-                        v-hasPermi="['core:plan:edit']">修改
-             </el-button>
-           </el-col>
-           <el-col :span="1.5">
-             <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
-                        v-hasPermi="['core:plan:remove']">删除
-             </el-button>
-           </el-col>
-                   <el-col :span="1.5">
-                   <el-button
-                     type="warning"
-                     plain
-                     icon="el-icon-download"
-                     size="mini"
-                     @click="handleExport"
-                     v-hasPermi="['core:plan:export']"
-                   >导出
-                   </el-button>
-                 </el-col>-->
-        <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-      </el-row>
+          </el-form-item>
+          <el-form-item label="培训进度" prop="status">
+            <el-select v-model="queryParams.status" placeholder="请选择培训进度" clearable>
+              <el-option
+                v-for="dict in dict.type.edu_training_do_status"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="任务时间段" prop="rangen">
+            <el-date-picker
+              v-model="queryParams.range"
+              type="daterange"
+              value-format="yyyy-MM-dd"
+              placeholder="请选择任务时间段">
+            </el-date-picker>
+          </el-form-item>
+          <!--      <el-form-item label="培训类型" prop="type">
+                  <el-select v-model="queryParams.type" placeholder="请选择培训类型" clearable>
+                      <el-option
+                        v-for="dict in dict.type.edu_type"
+                        :key="dict.value"
+                        :label="dict.label"
+                        :value="dict.value"
+                      />
+                    </el-select>
+                </el-form-item>-->
 
-    <el-table
-      border
-      height="600"
-      size="small" v-loading="loading" :data="eduTaskList" @selection-change="handleSelectionChange">
-      <el-table-column label="序号" align="center" width="70" prop="no" />
-      <el-table-column label="培训主题" width="200" align="left" header-align="center" prop="title" />
-      <el-table-column label="培训机构" width="200" align="left" header-align="center" prop="orgName" />
-      <!-- <el-table-column label="开始时间" align="center" prop="startDate" width="180">
-      </el-table-column>
-      <el-table-column label="截止时间" align="center" prop="endDate" width="180"></el-table-column> -->
-      <el-table-column label="任务时间" align="center" width="300">
-        <template slot-scope="scope">
-            {{scope.row.startDate? dayjs(scope.row.startDate).format("YYYY-MM-DD") +" ~ "+dayjs(scope.row.endDate).format("YYYY-MM-DD"):''}}
-          </template>
-      </el-table-column>
-      <el-table-column label="培训进度" align="center" prop="status" width="150" >
-        <template slot-scope="scope">
-            <dict-tag :options="dict.type.edu_training_do_status" :value="scope.row.status"/>
-          </template>
-      </el-table-column>
-      <el-table-column label="培训时间" align="center" prop="trainingStartDateTime" width="300">
-        <template slot-scope="scope">
-            {{scope.row.trainingStartDateTime
-            ? (scope.row.trainingStartDateTime+" ~ "+scope.row.trainingEndDateTime) :''}}
-          </template>
-      </el-table-column>
+          <el-form-item>
+            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+          </el-form-item>
+        </el-form>
+        <el-row :gutter="10" class="mb8">
+          <el-col :span="1.5">
+            <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAddTask"
+            >新增
+            </el-button>
+          </el-col>
+          <!--   <el-col :span="1.5">
+               <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
+                          v-hasPermi="['core:plan:edit']">修改
+               </el-button>
+             </el-col>
+             <el-col :span="1.5">
+               <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
+                          v-hasPermi="['core:plan:remove']">删除
+               </el-button>
+             </el-col>
+                     <el-col :span="1.5">
+                     <el-button
+                       type="warning"
+                       plain
+                       icon="el-icon-download"
+                       size="mini"
+                       @click="handleExport"
+                       v-hasPermi="['core:plan:export']"
+                     >导出
+                     </el-button>
+                   </el-col>-->
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
 
-      <!-- <el-table-column label="培训角色" width="180" align="center" >
-        <template slot-scope="scope">
-            <template v-if="scope.row.taskRoleNameList  ">
-              <el-tag size="mini" type="success" v-for="(item, index) in (scope.row.taskRoleNameList || '').split(',')"
-                      :key="index">
-                {{ item }}
-              </el-tag>
+        <el-table
+          border
+          height="600"
+          size="small" v-loading="loading" :data="eduTaskList" @selection-change="handleSelectionChange">
+          <el-table-column label="序号" align="center" width="70" prop="no"/>
+          <el-table-column label="培训主题" width="200" align="left" header-align="center" prop="title"/>
+          <el-table-column label="培训机构" width="200" align="left" header-align="center" prop="orgName"/>
+          <!-- <el-table-column label="开始时间" align="center" prop="startDate" width="180">
+          </el-table-column>
+          <el-table-column label="截止时间" align="center" prop="endDate" width="180"></el-table-column> -->
+          <el-table-column label="任务时间" align="center" width="300">
+            <template slot-scope="scope">
+              {{ scope.row.startDate ? dayjs(scope.row.startDate).format("YYYY-MM-DD") + " ~ " + dayjs(scope.row.endDate).format("YYYY-MM-DD") : '' }}
+            </template>
+          </el-table-column>
+          <el-table-column label="培训进度" align="center" prop="status" width="150">
+            <template slot-scope="scope">
+              <dict-tag :options="dict.type.edu_training_do_status" :value="scope.row.status"/>
+            </template>
+          </el-table-column>
+          <el-table-column label="培训时间" align="center" prop="trainingStartDateTime" width="300">
+            <template slot-scope="scope">
+              {{
+                scope.row.trainingStartDateTime
+                  ? (scope.row.trainingStartDateTime + " ~ " + scope.row.trainingEndDateTime) : ''
+              }}
             </template>
-          </template>
-      </el-table-column> -->
+          </el-table-column>
 
-<!--      <el-table-column label="培训类型" width="180" align="center"  >
-        <template slot-scope="scope">
-            <dict-tag :options="dict.type.edu_type" :value="scope.row.type"/>
-          </template>
-      </el-table-column>
+          <!-- <el-table-column label="培训角色" width="180" align="center" >
+            <template slot-scope="scope">
+                <template v-if="scope.row.taskRoleNameList  ">
+                  <el-tag size="mini" type="success" v-for="(item, index) in (scope.row.taskRoleNameList || '').split(',')"
+                          :key="index">
+                    {{ item }}
+                  </el-tag>
+                </template>
+              </template>
+          </el-table-column> -->
 
-      <el-table-column label="主持人" width="140" align="center" prop="hostName" />-->
+          <!--      <el-table-column label="培训类型" width="180" align="center"  >
+                  <template slot-scope="scope">
+                      <dict-tag :options="dict.type.edu_type" :value="scope.row.type"/>
+                    </template>
+                </el-table-column>
 
+                <el-table-column label="主持人" width="140" align="center" prop="hostName" />-->
 
 
-      <el-table-column label="操作" fixed="right" width="160px" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-view"
-            @click="handleDetail(scope.row.id)"
-            v-hasPermi="['core:eduTask:list']"
-          >详情</el-button>
-          <el-divider direction="vertical"></el-divider>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-document-add"
-            v-if="canPerform(scope.row)"
-            @click="handleRecorded(scope.row.id)"
-            v-hasPermi="['core:eduTask:remove']"
-          >培训登记</el-button>
-          <el-button type="text" v-if="scope.row.pdfUrl" @click="onDown(scope.row.pdfUrl)"
-            >培训登记簿
-          </el-button>
-        </template>
-      </el-table-column>
-    </el-table>
+          <el-table-column label="操作" fixed="right" width="160px" align="center"
+                           class-name="small-padding fixed-width">
+            <template slot-scope="scope">
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-view"
+                @click="handleDetail(scope.row.id)"
+                v-hasPermi="['core:eduTask:list']"
+              >详情
+              </el-button>
+              <el-divider direction="vertical"></el-divider>
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-document-add"
+                v-if="canPerform(scope.row)"
+                @click="handleRecorded(scope.row.id)"
+                v-hasPermi="['core:eduTask:remove']"
+              >培训登记
+              </el-button>
+              <el-button type="text" v-if="scope.row.pdfUrl" @click="onDown(scope.row.pdfUrl)"
+              >培训登记簿
+              </el-button>
+            </template>
+          </el-table-column>
+        </el-table>
 
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
-  </el-col>
-  </el-row>
+        <pagination
+          v-show="total>0"
+          :total="total"
+          :page.sync="queryParams.pageNum"
+          :limit.sync="queryParams.pageSize"
+          @pagination="getList"
+        />
+      </el-col>
+    </el-row>
 
     <dialog-info ref="infoDialog" @success="handleQuery(true)"></dialog-info>
     <dialog-perform ref="performDialog" @success="handleQuery(true)"></dialog-perform>
@@ -171,15 +176,16 @@
 </template>
 
 <script>
-import { listEduTask, addEduTask, updateEduTask } from "@/api/core/edu/eduTask";
+import {listEduTask, addEduTask, updateEduTask} from "@/api/core/edu/eduTask";
 import OrgTree from "@/components/orgTree";
 import DialogInfo from "./dialog.info";
 import DialogPerform from "./dialog.perform";
 import DialogNewTask from "./dialog.newTask";
 import dayjs from "dayjs";
+
 export default {
   name: "EduTask",
-  dicts: ['edu_type','edu_training_do_status'],
+  dicts: ['edu_type', 'edu_training_do_status'],
   components: {
     DialogInfo,
     DialogPerform,
@@ -210,7 +216,7 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        checkSub:true,
+        checkSub: true,
         title: null,
         orgId: this.$store.getters.orgId,
         type: null,
@@ -222,7 +228,7 @@ export default {
       // 表单校验
       rules: {
         orgId: [
-          { required: true, message: "机构不能为空", trigger: "blur" }
+          {required: true, message: "机构不能为空", trigger: "blur"}
         ],
       }
     };
@@ -250,10 +256,10 @@ export default {
     // 表单重置
     reset() {
       this.form = {
-        range:[],
+        range: [],
         title: null,
         type: null,
-        status : null,
+        status: null,
       };
       this.resetForm("form");
     },
@@ -284,7 +290,7 @@ export default {
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
     /** 新增按钮操作 */
@@ -295,8 +301,8 @@ export default {
     },
     /** 修改按钮操作 */
     handleDetail(id) {
-      console.log("this.$refs",this.$refs["infoDialog"])
-      this.$refs["infoDialog"].show(id,{});
+      console.log("this.$refs", this.$refs["infoDialog"])
+      this.$refs["infoDialog"].show(id, {});
       // this.reset();
       // const id = row.id || this.ids
       // getEduTask(id).then(response => {
@@ -327,10 +333,10 @@ export default {
     },
     /** 培训登记按钮操作 */
     handleRecorded(id) {
-      this.$refs["performDialog"].show(id,{});
+      this.$refs["performDialog"].show(id, {});
     },
     handleAddTask(id) {
-      this.$refs["newTaskDialog"].show(id,{});
+      this.$refs["newTaskDialog"].show(id, {});
     },
     /** 导出按钮操作 */
     handleExport() {
@@ -339,9 +345,10 @@ export default {
       }, `eduTask_${new Date().getTime()}.xlsx`)
     },
     canPerform(row) {
-      if(row.status>0) return false;
-      let isCur=  row.orgId == this.$store.getters.orgId;
-      let isOver =this.isNotOverOrUnStart(row);
+      console.log("row.status",row.status)
+      if (row.status != 0 && row.status != 4) return false;
+      let isCur = row.orgId == this.$store.getters.orgId;
+      let isOver = this.isNotOverOrUnStart(row);
       return isCur && isOver;
       /*let flag = 0;
       if(!row.taskRoleList)   return false;