zhulu 2 жил өмнө
parent
commit
8a70391c97

+ 6 - 2
src/views/core/drill/plan/index.vue

@@ -287,6 +287,7 @@ export default {
         planStatus: null,
         planRoleId: null,
         planName: null,
+        checkSub:true,
         pageNum: 1,
         pageSize: 10,
         belongOrgId: null
@@ -384,9 +385,11 @@ export default {
     },
     //所属机构为当前用户登录机构时才显示 “编辑、删除”按钮
     checkCanEdit(row) {
-      return row.belongOrgId === this.$store.getters.orgId
+      // console.log("checkCanEdit",this.$store.getters.orgId,row.belongOrgId)
+      return row.belongOrgId == this.$store.getters.orgId
     },
     checkCanDel(row) {
+      // console.log("checkCanEdit",this.$store.getters.orgId,row)
       //计划创建机构为当前机构且不是顶级机构创建的计划才显示“删除”按钮
       return row.belongOrgId == this.$store.getters.orgId && row.createByTopOrg == 1 && row.issue == 0
     },
@@ -425,7 +428,8 @@ export default {
         buildTaskNow: null,
         remark: null,
         planRoleId: null,
-        fileList: null
+        fileList: null,
+        checkSub:true
 
       };
       this.resetForm("form");

+ 54 - 126
src/views/core/drill/task/dialog.perform.vue

@@ -1,16 +1,9 @@
 <template>
   <div class="edu-training-edit">
-    <el-dialog :title="'培训登记'" :visible.sync="isShow" width="960px">
+    <el-dialog :title="'演练登记'" :close="onHide" :visible.sync="isShow" width="960px">
       <div class="page-body">
-        <el-form
-          :model="formData"
-          :rules="formDataRules"
-          size="small"
-          ref="form"
-          label-position="right"
-          label-width="120px"
-          label-prefix=":"
-        >
+        <el-form :model="formData" :rules="formDataRules" size="small" ref="form" label-position="right"
+          label-width="120px" label-prefix=":">
           <el-row>
             <!-- 培训主题 -->
             <el-col :span="12">
@@ -25,33 +18,21 @@
             </el-col>
             <el-col :span="12">
               <el-form-item prop="dateTime" label="演练时间">
-                <el-date-picker
-                  v-model="formData.drillTime"
-                  :picker-options="startDatepickerOptions"
-                  type="datetime"
-                  placeholder="选择日期"
-                >
+                <el-date-picker v-model="formData.drillTime" :picker-options="startDatepickerOptions" type="datetime"
+                  placeholder="选择日期">
                 </el-date-picker>
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item prop="content" label="演练地点">
-                <el-input
-                  v-model="formData.drillSite"
-                  placeholder="请输入演练地点"
-                  :length="2000"
-                />
+                <el-input v-model="formData.drillSite" placeholder="请输入演练地点" :length="50" />
               </el-form-item>
             </el-col>
             <el-col :span="24">
               <el-form-item label="演练类型" prop="type">
                 <el-select 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 v-for="dict in dict.type.core_drill_type" :key="dict.value" :label="dict.label"
+                    :value="parseInt(dict.value)">
                   </el-option>
                 </el-select>
               </el-form-item>
@@ -59,60 +40,33 @@
 
             <el-col :span="24">
               <el-form-item prop="presetCase" label="预设案由">
-                <k-textarea
-                  v-model="formData.presetCase"
-                  placeholder="请输入预设案由"
-                  :length="2000"
-                />
+                <k-textarea v-model="formData.presetCase" placeholder="请输入预设案由" :length="2000" />
               </el-form-item>
             </el-col>
 
             <el-col :span="24">
-              <el-form-item
-                v-if="formData.id"
-                prop="drillSituation"
-                label="演练情况"
-              >
-                <k-textarea
-                  v-model="formData.drillSituation"
-                  placeholder="请输入演练情况"
-                  :length="1000"
-                />
+              <el-form-item prop="drillSituation" label="演练情况">
+                <k-textarea v-model="formData.drillSituation" placeholder="请输入演练情况" :length="2000" />
               </el-form-item>
             </el-col>
 
             <el-col :span="12">
-              <el-form-item v-if="formData.id" label="参与人员">
-                <k-select
-                  :multiple="true"
-                  v-model="formData.taskUserList"
-                  url="/user/find/all"
-                  :params="{ orgId: formData.orgId }"
-                  placeholder="请选择缺席人员"
-                  @select="absenceUserSelectChanged"
-                ></k-select>
+              <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="12">
               <el-form-item v-if="formData.id" label="缺席人员">
-                <k-select
-                  :multiple="true"
-                  v-model="formData.taskUserList"
-                  url="/user/find/all"
-                  :params="{ orgId: formData.orgId }"
-                  @select="absentUserSelectChanged"
-                  placeholder="请选择缺席人员"
-                >
+                <k-select :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="24">
               <el-form-item prop="imageList" label="上传图片">
-                <imgUpload
-                  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>
@@ -130,13 +84,11 @@
 
 <script>
 import { mapState, mapMutations } from "vuex";
-import { getEduTask, recordEduTask } from "@/api/core/edu/eduTask";
+import { getDrillTask, recordDrillTask } from "@/api/core/drill/drillTask";
 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 { initList } from "@/api/core/drill/drillDictionary";
-import { getDrillTask } from "@/api/core/drill/drillTask";
 
 export default {
   components: { KTextarea, KSelect, imgUpload },
@@ -152,6 +104,7 @@ export default {
         type: [{ required: true, message: "请选择演练类型" }],
         presetCase: [{ required: true, message: "请输入预设案由" }],
         drillSituation: [{ required: true, message: "请输入预设案由" }],
+        absenceList: [{ required: true, type: "array", message: "请选择参与人员", trigger: ['blur', 'change'] }],
       },
       startDatepickerOptions: {
         disabledDate(time) {
@@ -164,7 +117,7 @@ export default {
       drillTypeOptions: [],
     };
   },
-  dicts: ["core_drill_type", "edu_task_status"],
+  dicts: ["core_drill_type"],
   props: {},
   watch: {},
   computed: {
@@ -183,7 +136,6 @@ export default {
         absentList: [],
         orgList: [],
         fileList: [],
-
         ...other,
       };
     },
@@ -193,38 +145,35 @@ export default {
         return;
       }
       getDrillTask(id).then((response) => {
-        this.formData = response.data;
         this.loading = false;
-        if (this.formData.imageList == null) {
-          this.formData.imageList = "";
-        }
-        if (this.formData.fileList == null) {
-          this.formData.fileList = [];
-        }
-        if (this.formData.taskUserList) {
-          let list1 = this.formData.taskUserList.filter(
-            (element) => element.type === 1
+        // _this.formData = response.data;
+        if (response.data.taskUserList) {
+          let list1 = response.data.taskUserList.filter((element) =>
+            element.type === 1
           );
-          console.log("list1", list1);
-          this.formData.absenceList = list1
-            ? list1.map((a) => {
-                return a.userId;
-              })
+          console.log("list1", list1)
+          response.data.absenceList = list1 ? list1.map((a) => { return a.userId; })
             : [];
 
-          let list2 = this.formData.taskUserList.filter(
-            (element) => element.type === 2
+          let list2 = response.data.taskUserList.filter((element) =>
+            element.type === 2
           );
-          console.log("list2", list2);
-          this.formData.absentList = list2
-            ? list2.map((a) => {
-                return a.userId;
-              })
+          console.log("list2", list2)
+          response.data.absentList = list2 ? list2.map((a) => { return a.userId; })
             : [];
-        } else {
-          this.formData.absenceList = [];
-          this.formData.absentList = [];
         }
+        else {
+          response.data.absenceList = [];
+          response.data.absentList = [];
+        }
+
+        if (response.data.imageList == null) {
+          response.data.imageList = "";
+        }
+        if (response.data.fileList == null) {
+          response.data.fileList = [];
+        }
+        this.formData = response.data;
       });
       console.log("getEduTask", this.formData);
     },
@@ -281,6 +230,7 @@ export default {
     onHide() {
       this.isShow = false;
       this.formData = this.reset();
+      this.$refs["uploadimage"].clearFiles();
     },
     async onSave() {
       if (!this.validatePerson()) {
@@ -288,19 +238,10 @@ export default {
         return;
       }
       let request = { submitType: 1, ...this.formData };
-      if (request.trainingStartDateTime)
-        request.trainingStartDateTime = dayjs(
-          request.trainingStartDateTime
-        ).format("YYYY-MM-DD HH:mm:ss");
-
-      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;});
+      if (request.drillTime)
+        request.drillTime = dayjs(request.drillTime).format("YYYY-MM-DD HH:mm:ss");
 
-      recordEduTask(request).then((v) => {
+      recordDrillTask(request).then((v) => {
         this.$emit("success", this.formData);
         this.onHide();
         this.$modal.msgSuccess("培训登记暂存成功");
@@ -309,31 +250,18 @@ export default {
     async onSubmit() {
       await this.$refs.form.validate();
       console.log("onSubmit this.formData", this.formData);
-      let due = this.formData.dueCount;
-      let actual = this.formData.actualCount;
-      if (actual > due) {
-        this.$message.error("实到人数不能大于应到人数!");
-      } else if (!this.validatePerson()) {
+      if (!this.validatePerson()) {
         this.$message.error("参与人员与缺席人员重复,请重新选择!");
       } else {
         let request = { submitType: 2, ...this.formData };
-        if (request.trainingStartDateTime)
-          request.trainingStartDateTime = dayjs(
-            request.trainingStartDateTime
-          ).format("YYYY-MM-DD HH:mm:ss");
-
-        if (request.trainingEndDateTime)
-          request.trainingEndDateTime = dayjs(
-            request.trainingEndDateTime
-          ).format("YYYY-MM-DD HH:mm:ss");
+        if (request.drillTime)
+          request.drillTime = dayjs(request.drillTime).format("YYYY-MM-DD HH:mm:ss");
 
-        recordEduTask(request).then((v) => {
+        recordDrillTask(request).then((v) => {
           this.$emit("success", this.formData);
           this.onHide();
-          this.$modal.msgSuccess("培训登记提交成功");
+          this.$modal.msgSuccess("演练登记提交成功");
         });
-        // this.$emit("success");
-        // this.onHide();
       }
     },
     validatePerson() {
@@ -345,7 +273,7 @@ export default {
       }
       return true;
     },
-    uploadTriggerEvent(value) {},
+    uploadTriggerEvent(value) { },
 
     endDisabledDate(time) {
       //小于开始日期禁止选择
@@ -376,7 +304,7 @@ export default {
       }
     },
   },
-  mounted() {},
+  mounted() { },
 };
 </script>
 

+ 22 - 5
src/views/core/drill/task/index.vue

@@ -29,10 +29,21 @@
               placeholder="请选择开始日期">
             </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-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>
 
 
@@ -61,6 +72,11 @@
           </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 scoped-slot="comment" align="center" prop="comment" label="评语">
@@ -115,7 +131,7 @@
 </template>
 
 <script>
-import {listEduTask, getEduTask, delEduTask, addEduTask, updateEduTask} from "@/api/core/drill/drillTask";
+import {listEduTask, addEduTask, updateEduTask} from "@/api/core/drill/drillTask";
 import OrgTree from "@/components/orgTree";
 import DialogInfo from "./dialog.info";
 import DialogPerform from "./dialog.perform";
@@ -123,7 +139,7 @@ import dayjs from "dayjs";
 
 export default {
   name: "EduTask",
-  dicts: ['edu_task_status', 'edu_type','core_drill_type'],
+  dicts: ['drill_task_status','core_drill_type'],
   components: {
     DialogInfo,
     DialogPerform,
@@ -196,6 +212,7 @@ export default {
         title: null,
         type: null,
         status: null,
+        checkSub:true,
       };
       this.resetForm("form");
     },
@@ -274,8 +291,8 @@ export default {
       return row.planStatus==2 && this.$store.getters.roleList.some(item=>item.roleId==120);
     },
     canPerform(row) {
-      return true;
-     /* let flag = 0;
+      // return true;
+      let flag = 0;
       if (row.status > 0) return false;
       if (!row.taskRoleList) return false;
       let isOver = this.isNotOverOrUnStart(row);
@@ -287,7 +304,7 @@ export default {
           }
         });
       });
-      return (flag == 1) && isOver;*/
+      return (flag == 1) && isOver;
     },
     isNotOverOrUnStart(row) {
       const currentTime = dayjs().startOf('day'); // 获取当前时间,并将时分秒部分设置为00时00分00秒