zhangjie 1 rok temu
rodzic
commit
7d521fc914

+ 8 - 21
src/modules/exam/components/createExamAndPrintTask/InfoPrintTask.vue

@@ -240,19 +240,18 @@
       </el-table>
     </div>
 
-    <!-- ModifyExamStudent -->
-    <modify-exam-student
-      ref="ModifyExamStudent"
+    <!-- ModifyExamTaskStudent -->
+    <modify-exam-task-student
+      ref="ModifyExamTaskStudent"
       :disabled-ids="disabledStudentIds"
       :filter-params="{
         courseCode: infoExamTask.courseCode,
         examId: infoExamTask.examId,
       }"
       :show-student="showStudent"
-      :object-types="objectTypes"
       :selected-ids="IS_MODEL2 ? model2ClassIds : null"
       @modified="examStudentModified"
-    ></modify-exam-student>
+    ></modify-exam-task-student>
     <!-- PreviewTaskStudent -->
     <preview-task-student
       ref="PreviewTaskStudent"
@@ -265,7 +264,7 @@
 import { calcSum, getTimeDatestamp } from "@/plugins/utils";
 import { examRuleDetail } from "../../../base/api";
 import { listTaskPrintHouse } from "../../api";
-import ModifyExamStudent from "./ModifyExamStudent.vue";
+import ModifyExamTaskStudent from "./ModifyExamTaskStudent.vue";
 import PreviewTaskStudent from "./PreviewTaskStudent";
 import { mapState, mapMutations } from "vuex";
 import UploadButton from "@/components/UploadButton";
@@ -273,7 +272,7 @@ import templateDownload from "@/mixins/templateDownload";
 
 export default {
   name: "info-print-task",
-  components: { ModifyExamStudent, PreviewTaskStudent, UploadButton },
+  components: { ModifyExamTaskStudent, PreviewTaskStudent, UploadButton },
   mixins: [templateDownload],
   data() {
     return {
@@ -305,7 +304,6 @@ export default {
       disabledStudentIds: [],
       examStudentList: [],
       showStudent: false,
-      objectTypes: [],
       // date-picker
       curCreateTime: [],
       createDate: "",
@@ -522,15 +520,9 @@ export default {
         return;
       }
 
-      const types = {
-        TEACH_CLAZZ_STUDENT: this.checkPrivilege("button", "MyTeachCourse"),
-        BASIC_CLAZZ_STUDENT: this.checkPrivilege("button", "StudentLibrary"),
-      };
-
       this.disabledStudentIds = this.getTabelStudentIds();
-      this.objectTypes = Object.keys(types).filter((k) => types[k]);
       this.showStudent = this.checkPrivilege("button", "SelectStudent");
-      this.$refs.ModifyExamStudent.open();
+      this.$refs.ModifyExamTaskStudent.open();
     },
     getTabelStudentIds() {
       let ids = [];
@@ -602,9 +594,6 @@ export default {
     toDelete(index) {
       this.tableData.splice(index, 1);
       this.updatePackageInfos();
-      if (!this.tableData.length) {
-        this.$refs.ModifyExamStudent.clearSelectedExamObjectType();
-      }
     },
     toViewStudent(row) {
       // console.log(row);
@@ -625,7 +614,6 @@ export default {
     uploadSuccess(res) {
       this.studentUploaded = true;
       this.$message.success("导入成功!");
-      this.$refs.ModifyExamStudent.clearTypeData();
 
       this.tableData = res.data.map((item) => {
         const initRow = this.getInitTableRow();
@@ -665,9 +653,8 @@ export default {
       }
 
       this.disabledStudentIds = [];
-      this.objectTypes = ["BASIC_CLAZZ_STUDENT"];
       this.showStudent = false;
-      this.$refs.ModifyExamStudent.open();
+      this.$refs.ModifyExamTaskStudent.open();
     },
   },
 };

+ 20 - 78
src/modules/exam/components/createExamAndPrintTask/ModifyExamStudent.vue → src/modules/exam/components/createExamAndPrintTask/ModifyExamTaskStudent.vue

@@ -1,6 +1,6 @@
 <template>
   <el-dialog
-    class="modify-exam-student select-user-dialog"
+    class="select-user-dialog"
     :visible.sync="modalIsShow"
     title="选择考试对象"
     top="10vh"
@@ -10,19 +10,6 @@
     append-to-body
     @opened="visibleChange"
   >
-    <div class="mb-4 tab-btns">
-      <el-button
-        v-for="item in objectTypeList"
-        :key="item.value"
-        size="medium"
-        :type="examObjectType === item.value ? 'primary' : 'default'"
-        :disabled="
-          selectedExamObjectType && selectedExamObjectType !== item.value
-        "
-        @click="selectMenu(item.value)"
-        >{{ item.name }}
-      </el-button>
-    </div>
     <div class="user-search">
       <el-input
         v-model="filterLabel"
@@ -90,13 +77,8 @@
 <script>
 import { uploadOrFindExamTaskStudent } from "../../api";
 
-const EXAM_OBJECT_TYPE = {
-  TEACH_CLAZZ_STUDENT: "我教课程选择",
-  BASIC_CLAZZ_STUDENT: "考生库选择",
-};
-
 export default {
-  name: "modify-exam-student",
+  name: "modify-exam-task-student",
   props: {
     disabledIds: {
       type: Array,
@@ -119,12 +101,6 @@ export default {
         };
       },
     },
-    objectTypes: {
-      type: Array,
-      default() {
-        return ["TEACH_CLAZZ_STUDENT", "BASIC_CLAZZ_STUDENT"];
-      },
-    },
     showStudent: {
       type: Boolean,
       default: false,
@@ -133,14 +109,8 @@ export default {
   data() {
     return {
       modalIsShow: false,
-      examObjectType: "TEACH_CLAZZ_STUDENT",
       basicCourseCode: null,
-      objectTypeList: [],
-      dataTree: {
-        TEACH_CLAZZ_STUDENT: [],
-        BASIC_CLAZZ_STUDENT: [],
-      },
-      selectedExamObjectType: null,
+      dataTree: [],
       userTree: [],
       selectedUsers: [],
       filterLabel: "",
@@ -153,14 +123,12 @@ export default {
     };
   },
   methods: {
-    async getStudents(examObjectType) {
+    async getStudents() {
       let datas = {
-        examObjectType: examObjectType || this.examObjectType,
+        ...this.filterParams,
       };
-      if (datas.examObjectType === "TEACH_CLAZZ_STUDENT")
-        datas = { ...datas, ...this.filterParams };
       const data = await uploadOrFindExamTaskStudent(datas);
-      this.dataTree[datas.examObjectType] = this.parseStudentData(data);
+      this.dataTree = this.parseStudentData(data);
     },
     parseStudentData(data) {
       const disabledStdIds = this.disabledIds.map((item) => item.split("_")[1]);
@@ -189,20 +157,8 @@ export default {
         return nitem;
       });
     },
-    async selectMenu(val) {
-      this.examObjectType = val;
-      this.$refs.UserTree.setCheckedKeys([]);
-
-      this.selectedUsers = [];
-
-      if (!this.dataTree[val].length) {
-        await this.getStudents();
-      }
-      this.userTree = this.getUserTree(val);
-      this.updateUserTreeDisableInfo(this.disabledIds);
-    },
-    getUserTree(examObjectType) {
-      let userTree = this.dataTree[examObjectType];
+    getUserTree() {
+      let userTree = this.dataTree;
       if (this.showStudent) return userTree;
 
       return userTree.map((item) => {
@@ -211,9 +167,6 @@ export default {
         return nitem;
       });
     },
-    clearTypeData(type = "BASIC_CLAZZ_STUDENT") {
-      this.dataTree[type] = [];
-    },
     checkChange() {
       // console.log("check click");
       const selectedKeys = this.$refs.UserTree.getCheckedKeys(true);
@@ -278,28 +231,21 @@ export default {
       this.$refs.UserTree.setCheckedKeys(selectedUserIds);
     },
     async visibleChange() {
-      this.objectTypeList = this.objectTypes.map((field) => {
-        return {
-          name: EXAM_OBJECT_TYPE[field],
-          value: field,
-        };
-      });
-      if (!this.objectTypeList.length) return;
-      if (this.objectTypeList.length === 1) {
-        this.examObjectType = this.objectTypeList[0].value;
-      }
-
       if (this.basicCourseCode !== this.filterParams.courseCode) {
-        this.clearSelectedExamObjectType();
         this.basicCourseCode = this.filterParams.courseCode;
-        await this.getStudents(this.examObjectType);
+        await this.getStudents();
       }
 
-      await this.selectMenu(this.examObjectType);
+      this.$refs.UserTree.setCheckedKeys([]);
+      this.selectedUsers = [];
+      this.userTree = this.getUserTree();
+      this.updateUserTreeDisableInfo(this.disabledIds);
 
       if (this.selectedIds && this.selectedIds.length) {
-        this.$refs.UserTree.setCheckedKeys(this.selectedIds);
-        this.checkChange();
+        this.$nextTick(() => {
+          this.$refs.UserTree.setCheckedKeys(this.selectedIds);
+          this.checkChange();
+        });
       }
     },
     labelChange() {
@@ -307,11 +253,11 @@ export default {
         const escapeRegexpString = (value = "") =>
           String(value).replace(/[|\\{}()[\]^$+*?.]/g, "\\$&");
         const reg = new RegExp(escapeRegexpString(this.filterLabel), "i");
-        this.userTree = this.getUserTree(this.examObjectType).filter((item) =>
+        this.userTree = this.getUserTree().filter((item) =>
           reg.test(item.label)
         );
       } else {
-        this.userTree = this.getUserTree(this.examObjectType);
+        this.userTree = this.getUserTree();
       }
       this.setTreeSelectedKeys();
     },
@@ -326,9 +272,6 @@ export default {
         item.disabled = !item.children.some((elem) => !elem.disabled);
       });
     },
-    clearSelectedExamObjectType() {
-      this.selectedExamObjectType = null;
-    },
     cancel() {
       this.modalIsShow = false;
     },
@@ -336,7 +279,7 @@ export default {
       this.modalIsShow = true;
     },
     getFullSelectedUsers() {
-      let userTree = this.dataTree[this.examObjectType];
+      let userTree = this.dataTree;
       const selectedUsersIds = this.selectedUsers.map((item) => item.id);
       return userTree.filter((item) => selectedUsersIds.includes(item.id));
     },
@@ -348,7 +291,6 @@ export default {
 
       if (this.loading) return;
       this.loading = true;
-      this.selectedExamObjectType = this.examObjectType;
       const selectedUsers = this.showStudent
         ? this.selectedUsers
         : this.getFullSelectedUsers();