浏览代码

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

jiawuxian 2 年之前
父节点
当前提交
54780722e6

+ 8 - 1
src/components/orgTree/index.vue

@@ -45,7 +45,7 @@
 </template>
 
 <script>
-
+import { mapGetters, mapMutations } from "vuex";
 export default {
   name: "orgTree",
   data() {
@@ -94,10 +94,17 @@ export default {
     defaultProps(val) {
       this.defaultProps = { ...val };
     },
+    orgTree(val)
+    {
+      this.getDeptTree();
+    },
   },
   created() {
     this.getDeptTree();
   },
+  computed:{
+    ...mapGetters(["orgTree"]),
+  },
   methods: {
     /** 下穿状态改变*/
     changeCheckBox(state) {

+ 24 - 13
src/components/orgTreeSelect/index.vue

@@ -1,12 +1,12 @@
 <template>
   <!--  弹出框  -->
-  <el-popover placement="bottom-start" :disabled="disabled" v-model="visible">
-    <!--  选中的值  -->
-    <div slot="reference" class="tags-box">
+  <el-popover placement="bottom-start" trigger="hover" :disabled="disabled" v-model="visible">
+    <!--  tag盒子  -->
+    <div slot="reference" class="tags-box" :class="!disabled|| 'tags-box-disabled'">
+      <span v-show="sNodeList.length > 0" class="tags-num">{{sNodeList.length}}</span>
       <i v-if="sNodeList.length > 0 && !disabled" class="el-icon-circle-close close-icon" @click="clear"></i>
       <el-tag type="success" v-for="v in sNodeList" :key="v.id">{{ v.name }}</el-tag>
     </div>
-
     <!--  文本框    -->
     <el-input style="width: 100%; margin-bottom: 20px" v-model="queryForm.value" @input="serchTreeHandler"
       placeholder="请输入查询机构名称"></el-input>
@@ -275,7 +275,7 @@ export default {
   },
   model: {
     prop: "defaultNode",
-    event: "selectNode",
+    event: "selectNodeId",
   },
 };
 </script>
@@ -287,7 +287,7 @@ export default {
   border: 1px solid #dcdfe6;
   color: #606266;
   outline: 0;
-  padding: 0 15px 0 5px;
+  padding: 0 40px 0 5px;
   width: 100%;
   min-height: 40px;
   max-height: 40px;
@@ -300,20 +300,31 @@ export default {
   > span {
     margin: 5px 10px;
   }
-  &:hover {
-    .close-icon {
-      display: block;
-      color: #666;
-    }
-  }
+  //&:hover {
+  //  .close-icon {
+  //    display: block;
+  //    color: #666;
+  //  }
+  //}
   .close-icon {
     position: absolute;
     top: 30%;
     right: 5px;
-    display: none;
     cursor: pointer;
+    &:hover {
+      color: #aaa;
+    }
   }
 }
+.tags-box-disabled{
+  cursor: default;
+}
+.tags-num{
+  color:#ccc;
+  position: absolute;
+  right: 20px;
+  top:-4px;
+}
 .tree-box {
   margin-top: 20px;
   max-height: 300px;

+ 63 - 32
src/views/check/dialog.edit.vue

@@ -67,6 +67,7 @@
             <el-col :span="6">
               <el-form-item prop="execOrgType" label="检查机构类型:">
                 <el-select
+                  @change="cleanExecOrgList"
                   prop="execOrgType"
                   label="检查机构类型"
                   v-model="formData.execOrgType"
@@ -109,12 +110,12 @@
             <el-col :span="6">
               <el-form-item prop="checkOrgType" label="受检机构类型:">
                 <el-select
+                  @change="cleanCheckOrgList"
                   prop="checkOrgType"
                   label="受检机构类型"
                   v-model="formData.checkOrgType"
                   placeholder="请选择受检机构类型"
                   clearable
-                  
                 >
                   <el-option
                     v-for="item in dict.type.sys_org_type"
@@ -169,22 +170,27 @@
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item :span="6" prop="execOrg" label="检查机构">
-                <orgDropDown
-                  v-model="formData.execOrg"
-                  placeholder="选择检查机构"
-                  multiple
-                  @select="onexecOrgSelect"
-                />
+              <el-form-item :span="6" prop="execOrgIds" label="检查机构">
+                <org-tree-select
+                  v-model="formData.execOrgList"
+                  :queryData="parseInt(formData.execOrgType)"
+                  ref="execorgTreeSelect"
+                  :enabledCheckOrgTypes="parseInt(formData.execOrgType)"
+                  :disable="true"
+                >
+                </org-tree-select>
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item :span="6" prop="checkOrg" label="受检机构">
-                <orgDropDown
-                  v-model="formData.checkOrg"
-                  placeholder="选择受检机构"
-                  @select="oncheckOrgSelect"
-                />
+              <el-form-item :span="6" prop="checkOrgIds" label="受检机构">
+                <org-tree-select
+                  v-model="formData.checkOrgList"
+                  :queryData="parseInt(formData.checkOrgType)"
+                  ref="checkorgTreeSelect"
+                  :enabledCheckOrgTypes="parseInt(formData.checkOrgType)"
+                  :disable="true"
+                >
+                </org-tree-select>
               </el-form-item>
             </el-col>
           </el-row>
@@ -248,6 +254,7 @@
 </template>
 
 <script>
+import OrgTreeSelect from "@/components/orgTreeSelect";
 import { mapGetters } from "vuex";
 import orgDropDown from "@/components/orgTree/orgDropDown.vue";
 import OrgTree from "@/components/orgTree";
@@ -314,6 +321,7 @@ export default {
       ],
       row: "",
       tableData: [],
+      deptOptions: [],
       id: null,
       isShow: false,
       formData: this.reset(),
@@ -343,16 +351,34 @@ export default {
     ...mapGetters(["orgId", "orgName"]),
   },
   methods: {
+    cleanExecOrgList() {
+      this.execOrgIds = null;
+      this.formData.execOrgList = [];
+    },
+    cleanCheckOrgList() {
+      this.checkOrgIds = null;
+      this.formData.checkOrgList = [];
+    },
+    tenantIdnormalizer(node, instanceId) {
+      if (node.children && !node.children.length) {
+        delete node.children;
+      }
+      return {
+        id: node.id,
+        label: node.name,
+        children: node.children,
+      };
+    },
     handleCheckboxChange() {
       this.formData.buildTaskNow = !this.formData.buildTaskNow;
     },
     onexecOrgSelect(node) {
       this.formData.execOrgIds = node.val;
-      console.log(node, "onexecOrgSelect");
+      // console.log(node, "onexecOrgSelect");
     },
     oncheckOrgSelect(node) {
       this.formData.checkOrg = node.id;
-      console.log(node, "oncheckOrgSelect");
+      // console.log(node, "oncheckOrgSelect");
     },
     reset() {
       return {
@@ -376,12 +402,12 @@ export default {
         execOrg: null,
         checkOrg: null,
         buildTaskNow: false,
-        checkOrgList:null,
-        execOrgList:null,
-        rulePointList:null,
-        checkOrgIds:null,
-        execOrgIds:null,
-        rulePointIds:null,
+        checkOrgList: [],
+        execOrgList: [],
+        rulePointList: null,
+        checkOrgIds: null,
+        execOrgIds: null,
+        rulePointIds: null,
       };
     },
     getRolesByOrg() {
@@ -401,7 +427,13 @@ export default {
     async refresh(id, other) {
       this.formData = id ? (await api.get(id)).data : this.reset(other);
       if (this.formData.execOrgType) {
-        this.formData.roleIds=this.formData.roleList.map(role => role.id);
+        this.formData.roleIds = this.formData.roleList.map((role) => role.id);
+        this.formData.execOrgIds = this.formData.execOrgList.map(
+          (org) => org.id
+        );
+        this.formData.checkOrgIds = this.formData.checkOrgList.map(
+          (org) => org.id
+        );
         this.getRolesByOrg();
       }
     },
@@ -436,7 +468,7 @@ export default {
       if (id !== undefined) {
         await api.get(id).then((res) => {
           // console.log(res);
-          this.tableData = res.data.itemList;
+          this.tableData = res.data.rulePointList;
         });
       }
       this.getRolesByOrg();
@@ -465,21 +497,20 @@ export default {
     },
     onSubmit() {
       this.$refs.form.validate(async (isValidate) => {
-        // this.formData.note = this.formData.description;
         this.formData.planCreateOrgId = this.orgId;
         this.formData.planCreateOrgName = this.orgName;
         if (!isValidate) return;
-        this.formData.itemList = this.tableData == null ? [] : this.tableData;
+        this.formData.rulePointList = this.tableData == null ? [] : this.tableData;
         this.formData.roleList = null;
         // console.log(this.selectedValues,"selectedValues");
         this.formData.roleIds =
           this.selectedValues.length == 0 ? null : this.selectedValues;
         this.formData.buildTaskNow = this.formData.buildTaskNow ? 1 : 0;
-        if (this.id == undefined) {
-          await api.add(this.formData);
-        } else {
-          await api.update(this.formData);
-        }
+        // if (this.id == undefined) {
+        await api.add(this.formData);
+        // } else {
+        // await api.update(this.formData);
+        // }
 
         this.$emit("success");
         this.onHide();
@@ -492,7 +523,7 @@ export default {
     //apimark//
   },
   mounted() {},
-  components: { DialogSelect, orgDropDown,OrgTree,korgTree },
+  components: { DialogSelect, orgDropDown, OrgTree, korgTree, OrgTreeSelect },
 };
 </script>
 

+ 7 - 3
src/views/check/index.vue

@@ -218,13 +218,13 @@
           </el-table-column>
 
           <el-table-column
-            prop="roleList"
+            prop="roleNames"
             label="检查角色"
             v-if="columns[6].visible"
           >
           <template slot-scope="scope">
-              <template v-for="item in scope.row.roleList">
-                {{ item.roleName }}
+              <template v-for="item in splitRoleNames(scope.row.roleNames)">
+                {{ item }}
                 <br />
               </template>
             </template></el-table-column>
@@ -411,6 +411,10 @@ export default {
       }
       return false;
     },
+    splitRoleNames(val) {
+      // 使用逗号分割字符串,得到角色名称的数组
+      return val.split(',');
+    },
     sel(selectList){
       this.loading = true;
       api.distribute(selectList).then((response) => {

+ 1 - 1
src/views/core/drill/drillDictionary/index.vue

@@ -115,7 +115,7 @@
             ></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="演练项目" prop="drillProjects">
+        <el-form-item label="解决方案" prop="drillProjects">
           <el-input v-model="form.drillProjects" type="textarea" placeholder="请输入内容"/>
         </el-form-item>
         <el-form-item label="预设案由" prop="defaultCause">

+ 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");

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

@@ -21,8 +21,8 @@
             </el-col>
 
             <el-col :span="12">
-              <el-form-item label="演练项目">{{
-                  formData.typeName
+              <el-form-item label="演练类型">{{
+                  formData.typeText
                 }}
               </el-form-item>
             </el-col>

+ 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>
 

+ 53 - 19
src/views/core/drill/task/index.vue

@@ -9,14 +9,18 @@
         <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
-              @keyup.enter.native="handleQuery"
-            />
+
+          <el-form-item label="演练类型" prop="type">
+            <el-select v-model="queryParams.type" 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>
+
           <el-form-item label="任务时间" prop="rangen">
             <el-date-picker
               v-model="queryParams.range"
@@ -25,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>
 
 
@@ -45,7 +60,11 @@
               </template>
             </template>
           </el-table-column>
-          <el-table-column label="演练主题" align="center" prop="title"/>
+          <el-table-column label="演练类型" align="center" prop="type">
+            <template slot-scope="scope">
+              <dict-tag :options="dict.type.core_drill_type" :value="scope.row.type"/>
+            </template>
+          </el-table-column>
 
           <el-table-column label="开始日期" align="center" prop="startDate" width="180">
           </el-table-column>
@@ -53,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="评语">
@@ -69,8 +93,15 @@
                 icon="el-icon-view"
                 @click="handleDetail(scope.row.id)"
                 v-hasPermi="['system:eduTask:detail']"
-              >详情
-              </el-button>
+              >详情</el-button>
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-document-add"
+                v-if="canPerform(scope.row)"
+                @click="handleRecorded(scope.row.id)"
+                v-hasPermi="['system:eduTask:edit']"
+              >评价</el-button>
               <el-button
                 size="mini"
                 type="text"
@@ -78,11 +109,9 @@
                 v-if="canPerform(scope.row)"
                 @click="handleRecorded(scope.row.id)"
                 v-hasPermi="['system:eduTask:remove']"
-              >演练登记
-              </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>
@@ -102,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";
@@ -110,7 +139,7 @@ import dayjs from "dayjs";
 
 export default {
   name: "EduTask",
-  dicts: ['edu_task_status', 'edu_type'],
+  dicts: ['drill_task_status','core_drill_type'],
   components: {
     DialogInfo,
     DialogPerform,
@@ -183,6 +212,7 @@ export default {
         title: null,
         type: null,
         status: null,
+        checkSub:true,
       };
       this.resetForm("form");
     },
@@ -256,9 +286,13 @@ export default {
         ...this.queryParams
       }, `eduTask_${new Date().getTime()}.xlsx`)
     },
+    canEvaluate(row){
+      //仅行社安全保卫管理人员进入且演练任务处于待评价状态才显示
+      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);
@@ -270,7 +304,7 @@ export default {
           }
         });
       });
-      return (flag == 1) && isOver;*/
+      return (flag == 1) && isOver;
     },
     isNotOverOrUnStart(row) {
       const currentTime = dayjs().startOf('day'); // 获取当前时间,并将时分秒部分设置为00时00分00秒

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

@@ -225,17 +225,17 @@ export default {
                 let link = document.createElement("a");
                 let body = document.querySelector("body");
 
-                link.href = URL.createObjectURL(blob);
-                link.download = filename;
+                 link.href = URL.createObjectURL(blob);
+                 link.download = filename;
 
-                // fix Firefox
-                link.style.display = "none";
-                body.appendChild(link);
+                 // fix Firefox
+                 link.style.display = "none";
+                 body.appendChild(link);
 
-                link.click();
-                body.removeChild(link);
+                 link.click();
+                 body.removeChild(link);
 
-               window.URL.revokeObjectURL(link.href);
+                window.URL.revokeObjectURL(link.href);
            }
         },
         // 事件

+ 1 - 2
src/views/system/workTimeSet/dialog.add.vue

@@ -319,9 +319,8 @@ export default {
           return;
         }
       }
-      let orgIdList = this.orgIdList.map(v=>{return v.id});
       let data = {
-        orgIdList,
+        orgIdList:this.orgIdList,
         workTimeList:workTimeList
       }
       addWorkTimeDay(data).then(res=>{

+ 9 - 32
src/views/system/workTimeSet/dialog.template.vue

@@ -10,15 +10,15 @@
             label-position="left">
           <el-form-item>
             <span slot="label"> <span style="color: red"> * </span>机构 </span>
-            <org-tree-select v-model="data.orgIdList" :disabled="data.disabled" ></org-tree-select>
+            <org-tree-select v-model="formData.orgIds" :disabled="disabled" ></org-tree-select>
           </el-form-item>
           <el-form-item >
             <span slot="label"> <span style="color: red"> * </span>生效日期 </span>
             <el-date-picker
               v-model="formData.effectiveDate"
               value-format="yyyy-MM-dd hh:mm:ss"
-              :disabled="data.disabled"
-              :clearable="!data.disabled"
+              :disabled="disabled"
+              :clearable="!disabled"
               :picker-options="startDatepickerOptions"
               popper-class="no-atTheMoment"
               type="date"
@@ -172,14 +172,11 @@ export default {
       id:0,
       orgId:null,
       formData: {
-        orgIdList: [],
+        orgIds:[],
         dayOfWeeks: json,
         effectiveDate:null,
       },
-      data: {
-        orgIdList: [],
-        disabled: false,
-      },
+      disabled: false,
       startDatepickerOptions: {
         disabledDate(time) {
           const date = new Date();
@@ -223,12 +220,10 @@ export default {
       this.isShow = true;
       this.id = row.id;
       this.orgId = row.orgId;
+      this.disabled = true;
       this.getData();
     },
     onSubmit() {
-      this.formData.orgIds = this.data.orgIdList.map(v=>{
-        return v.id
-      });
       if (this.formData.orgIds.length < 1) {
         this.$message.error("机构不能为空");
         return;
@@ -284,25 +279,8 @@ export default {
     async getData() {
       queryInfoById({id:this.id}).then(res=>{
         this.formData = res.data;
-        if (this.id != 0) {
-          this.tagsList = [
-            {
-              id:res.data.orgId,
-              name:res.data.orgName
-            }
-          ];
-          this.data.disabled = true;
-          this.data.orgIdList = [this.formData.orgId];
-          if (this.orgId) {
-            this.data.orgIdList = [this.formData.orgId];
-          }
-        } else {
-          this.data.orgIdList = [];
-          this.data.disabled= false;
-        }
+        this.formData.orgIds = [res.data.orgId];
       })
-
-      // this.data.orgIdList =[];
     },
     onEnableChange(workTime) {
       if (!workTime.isWorkday) {
@@ -317,14 +295,13 @@ export default {
     handleClose() {
       this.id=null;
       this.formData = {
-        orgIdList: [],
+        orgIds: [],
         dayOfWeeks: json,
         effectiveDate: null,
         checkDataResult:null,
       };
       this.tagsList = [];
-      this.data.orgIdList = [];
-      this.data.disabled= false;
+      this.disabled= false;
       this.checkData=null;
       this.checkMsg=null;
       this.centerDialogVisiblea=false;