zhangjie 9 miesięcy temu
rodzic
commit
c2f2ef2b33

+ 1 - 1
src/api/types/task.ts

@@ -183,7 +183,7 @@ export type StudentObjectiveInfo = {
 export interface TrackExportListFilter {
   semesterId: string;
   examId: string;
-  courseCode: string;
+  courseId: string;
 }
 export type TrackExportListParams = PageParams<TrackExportListFilter>;
 

+ 13 - 14
src/components/select-course/index.vue

@@ -22,14 +22,12 @@
   defineOptions({
     name: 'SelectCourse',
   });
-  type ValueType = string | Array<string>;
 
   const props = defineProps<{
-    modelValue: ValueType;
+    modelValue: string;
     clearable?: boolean;
     disabled?: boolean;
     placeholder?: string;
-    multiple?: boolean;
     prefix?: boolean;
     semesterId: string;
     examId: string;
@@ -37,7 +35,7 @@
   const emit = defineEmits(['update:modelValue', 'change']);
   const attrs = useAttrs();
 
-  const selected = ref<string | Array<string> | undefined>();
+  const selected = ref<string | undefined>();
   const optionList = ref<OptionListItem[]>([]);
   const search = async () => {
     optionList.value = [];
@@ -48,19 +46,16 @@
     });
 
     optionList.value = (resData || []).map((item) => {
-      return { ...item, value: item.code, label: `${item.name}(${item.code})` };
+      return { ...item, value: item.id, label: `${item.name}(${item.code})` };
     });
   };
 
   const onChange = () => {
-    const selectedData = props.multiple
-      ? optionList.value.filter(
-          (item) =>
-            selected.value && (selected.value as string[]).includes(item.value)
-        )
-      : optionList.value.filter((item) => selected.value === item.value);
-    emit('update:modelValue', selected.value || null);
-    emit('change', props.multiple ? selectedData : selectedData[0]);
+    const selectedData = optionList.value.filter(
+      (item) => selected.value === item.value
+    );
+    emit('update:modelValue', selected.value || '');
+    emit('change', selectedData[0]);
   };
 
   watch(
@@ -75,7 +70,11 @@
   watch(
     () => props.examId,
     (val, oldval) => {
-      if (val !== oldval) search();
+      if (val !== oldval) {
+        emit('update:modelValue', '');
+        emit('change', null);
+        search();
+      }
     },
     {
       immediate: true,

+ 7 - 3
src/components/select-exam/index.vue

@@ -53,7 +53,7 @@
     if (!defaultData) return;
 
     selected.value = defaultData.value;
-    emit('update:modelValue', selected.value || null);
+    emit('update:modelValue', selected.value || '');
     emit('change', defaultData);
     emit('defaultSelected', defaultData);
   }
@@ -62,7 +62,7 @@
     const selectedData = optionList.value.filter(
       (item) => selected.value === item.value
     );
-    emit('update:modelValue', selected.value || null);
+    emit('update:modelValue', selected.value || '');
     emit('change', selectedData[0]);
   };
 
@@ -79,7 +79,11 @@
   watch(
     () => props.semesterId,
     (val, oldval) => {
-      if (val !== oldval) search();
+      if (val !== oldval) {
+        emit('update:modelValue', '');
+        emit('change', null);
+        search();
+      }
     },
     {
       immediate: true,

+ 2 - 2
src/components/select-semester/index.vue

@@ -52,7 +52,7 @@
     if (!defaultData) return;
 
     selected.value = defaultData.value;
-    emit('update:modelValue', selected.value || null);
+    emit('update:modelValue', selected.value || '');
     emit('change', defaultData);
     emit('defaultSelected', defaultData);
   }
@@ -61,7 +61,7 @@
     const selectedData = optionList.value.filter(
       (item) => selected.value === item.value
     );
-    emit('update:modelValue', selected.value || null);
+    emit('update:modelValue', selected.value || '');
     emit('change', selectedData[0]);
   };
 

+ 9 - 9
src/views/base/track-export/index.vue

@@ -22,7 +22,7 @@
         @change="examChange"
       />
       <SelectCourse
-        v-model="searchModel.courseCode"
+        v-model="searchModel.courseId"
         :semester-id="searchModel.semesterId"
         :exam-id="searchModel.examId"
         placeholder="请选择"
@@ -134,7 +134,7 @@
   const searchModel = reactive({
     semesterId: '',
     examId: '',
-    courseCode: '',
+    courseId: '',
   });
 
   const curRow = ref({} as TrackExportItem);
@@ -174,20 +174,20 @@
     courseCode: '',
   };
 
-  function semesterChange(val: OptionListItem) {
-    seNames.semesterName = val.label;
+  function semesterChange(val: OptionListItem | null) {
+    seNames.semesterName = val ? val.label : '';
     seNames.examName = '';
     seNames.courseName = '';
     seNames.courseCode = '';
   }
-  function examChange(val: OptionListItem) {
-    seNames.examName = val.label;
+  function examChange(val: OptionListItem | null) {
+    seNames.examName = val ? val.label : '';
     seNames.courseName = '';
     seNames.courseCode = '';
   }
-  function courseChange(val: CourseItem) {
-    seNames.courseName = val.name;
-    seNames.courseCode = val.code;
+  function courseChange(val: CourseItem | null) {
+    seNames.courseName = val ? val.name : '';
+    seNames.courseCode = val ? val.code : '';
   }
 
   // table action