Ver Fonte

bug fix

zhangjie há 2 anos atrás
pai
commit
0de1a829a2

+ 84 - 0
src/components/base/BaseCourseSelect.vue

@@ -0,0 +1,84 @@
+<template>
+  <el-select
+    v-model="selected"
+    class="course-select"
+    :placeholder="placeholder"
+    filterable
+    :clearable="clearable"
+    :disabled="disabled"
+    @change="select"
+  >
+    <el-option
+      v-for="item in optionList"
+      :key="item.code"
+      :value="item.code"
+      :label="`${item.name}(${item.code})`"
+    >
+      <span>{{ `${item.name}(${item.code})` }}</span>
+    </el-option>
+  </el-select>
+</template>
+
+<script>
+import { courseQuery } from "../../modules/base/api";
+
+export default {
+  name: "base-course-select",
+  props: {
+    disabled: { type: Boolean, default: false },
+    placeholder: { type: String, default: "请选择" },
+    value: { type: [Number, String], default: "" },
+    clearable: { type: Boolean, default: true },
+    printPlanId: { type: [String, Array], default: "" },
+    teachingRoomId: { type: [String, Array], default: "" }
+  },
+  data() {
+    return {
+      optionList: [],
+      selected: ""
+    };
+  },
+  watch: {
+    value: {
+      immediate: true,
+      handler(val) {
+        this.selected = val;
+      }
+    },
+    printPlanId(val, oldval) {
+      if (val !== oldval) {
+        this.search("");
+        this.$emit("input", "");
+        this.$emit("change", {});
+      }
+    },
+    teachingRoomId(val, oldval) {
+      if (val !== oldval) {
+        this.search("");
+        this.$emit("input", "");
+        this.$emit("change", {});
+      }
+    }
+  },
+  async created() {
+    this.search();
+  },
+  methods: {
+    async search(query) {
+      const res = await courseQuery({
+        param: query,
+        printPlanId: this.printPlanId,
+        teachingRoomId: this.teachingRoomId
+      });
+      this.optionList = res;
+    },
+    select() {
+      this.$emit("input", this.selected);
+      this.$emit(
+        "change",
+        this.optionList.find(item => item.code === this.selected)
+      );
+    }
+  }
+};
+</script>

+ 1 - 1
src/modules/base/components/course-simple/ModifyTeacherSimple.vue

@@ -223,7 +223,7 @@ export default {
       this.$message.error(errorData.message);
     },
     uploadSuccess(data) {
-      this.$message.success(data.data || "教师导入成功!");
+      this.$message.success("教师导入成功!");
       this.$emit("modified");
       this.cancel();
     }

+ 9 - 6
src/modules/exam/components/ModifyExamTask.vue

@@ -39,17 +39,15 @@
           <span v-else>{{ modalForm.examName }}</span>
         </el-form-item>
         <el-form-item prop="courseCode" label="课程(代码):">
-          <course-select
+          <base-course-select
             v-if="editable"
             ref="CourseSelect"
             v-model.trim="modalForm.courseCode"
             placeholder="请选择"
             clearable
             class="width-full"
-            :semester-id="modalForm.semesterId"
-            :exam-id="modalForm.examId"
             @change="courseChange"
-          ></course-select>
+          ></base-course-select>
           <span v-else
             >{{ modalForm.courseName }}({{ modalForm.courseCode }})</span
           >
@@ -274,8 +272,13 @@ export default {
     },
     userSelected(teachers) {
       this.teachers = teachers;
-      this.modalForm.userId = teachers[0].id;
-      this.modalForm.userName = teachers[0].name;
+      if (teachers.length) {
+        this.modalForm.userId = teachers[0].id;
+        this.modalForm.userName = teachers[0].name;
+      } else {
+        this.modalForm.userId = "";
+        this.modalForm.userName = "";
+      }
     },
     toSelectTeacher() {
       if (!this.modalForm.courseCode) {

+ 5 - 1
src/plugins/globalVuePlugins.js

@@ -26,6 +26,8 @@ import MajorClassSelect from "../components/base/MajorClassSelect.vue";
 import ExamSelect from "../components/base/ExamSelect.vue";
 import OrgSelect from "../components/base/OrgSelect.vue";
 import DataTaskDialog from "../components/base/DataTaskDialog.vue";
+// base
+import BaseCourseSelect from "../components/base/BaseCourseSelect.vue";
 
 const components = {
   ViewFooter,
@@ -50,7 +52,9 @@ const components = {
   MajorClassSelect,
   ExamSelect,
   OrgSelect,
-  DataTaskDialog
+  DataTaskDialog,
+  // base
+  BaseCourseSelect
 };
 
 export default {