diff --git a/package.json b/package.json index dc77ec9..95bc146 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "murmurhash-js": "^1.0.0", "pako": "^1.0.11", "promise-worker": "^2.0.1", + "shu-course-number-parser": "^0.2.0", "v-viewer": "~1.7.0", "vue": "^2.7.14", "vue-clipboard2": "^0.3.3", diff --git a/src/mixins/LookupPanel.js b/src/mixins/LookupPanel.js index b625976..9c940c2 100644 --- a/src/mixins/LookupPanel.js +++ b/src/mixins/LookupPanel.js @@ -158,6 +158,9 @@ export const LookupConditionsMixin = { 'teacher_name': '', 'class_time': '', 'campus': '', + 'class_sort_college': '{"name":""}', + 'class_sort_major': '{"name":""}', + 'class_sort_property': '{"name":""}', }, filterLimitations: { 'xian_zhi_ren_shu': 'default', diff --git a/src/mixins/common/getCourseClassList.js b/src/mixins/common/getCourseClassList.js new file mode 100644 index 0000000..ea6600f --- /dev/null +++ b/src/mixins/common/getCourseClassList.js @@ -0,0 +1,9 @@ +import { getCollegesList, getMajorsList, getLessonPropertiesList } from "shu-course-number-parser"; + +export const GetCourseClassListMixin = { + methods: { + getCollegesList: (p) => getCollegesList(p), + getMajorsList: (v, p) => getMajorsList(v, p), + getLessonPropertiesList: () => getLessonPropertiesList(), + } +} diff --git a/src/mixins/common/getCourseProperty.js b/src/mixins/common/getCourseProperty.js new file mode 100644 index 0000000..2b0d6e6 --- /dev/null +++ b/src/mixins/common/getCourseProperty.js @@ -0,0 +1,16 @@ +import { getLessonCollegeOrMajor, getLessonProperty } from "shu-course-number-parser"; + +export const GetCoursePropertyMixin = { + methods: { + getCourseProperty: (v) => getLessonProperty(v), + getCourseInfo: (v, showProperty = true) => { + let out = []; + if (showProperty) out.push(getLessonProperty(v)); + out.push(getLessonCollegeOrMajor(v, "major")); + out.push(getLessonCollegeOrMajor(v, "college")); + out = out.filter(v => v !== ''); + return out.join(", "); + }, + getLessonCollegeOrMajor: (id, type) => getLessonCollegeOrMajor(id, type), + }, +} \ No newline at end of file diff --git a/src/pages/index/components/LookupPanel/LookupConditions.vue b/src/pages/index/components/LookupPanel/LookupConditions.vue index 98498f5..2fcf1b1 100644 --- a/src/pages/index/components/LookupPanel/LookupConditions.vue +++ b/src/pages/index/components/LookupPanel/LookupConditions.vue @@ -35,6 +35,24 @@ 延长 + + + 全部 + {{item.name}} + + + + + 全部 + {{item.name}} + + + + + 全部 + {{item.name}} + + @@ -108,11 +126,12 @@ diff --git a/src/pages/index/components/LookupPanel/index.vue b/src/pages/index/components/LookupPanel/index.vue index 5bf20e6..bdc4d84 100644 --- a/src/pages/index/components/LookupPanel/index.vue +++ b/src/pages/index/components/LookupPanel/index.vue @@ -24,7 +24,7 @@
- {{ course.id }} + {{ course.id }} @@ -190,6 +190,7 @@ import { conflictSolvingMixin } from '../../../../mixins/common/conflictsSolver'; import { introductionOpenerMixin } from '../../../../mixins/common/introductionOpener'; import { LookupPanelMixin } from '../../../../mixins/LookupPanel'; + import { GetCoursePropertyMixin } from '../../../../mixins/common/getCourseProperty'; import LookupConditions from './LookupConditions'; import NumberCapacity from './NumberCapacity'; @@ -200,7 +201,7 @@ NumberCapacity, LookupConditions, }, - mixins: [introductionOpenerMixin, conflictSolvingMixin, LookupPanelMixin], + mixins: [introductionOpenerMixin, conflictSolvingMixin, LookupPanelMixin, GetCoursePropertyMixin], }; diff --git a/src/pages/index/components/ReservedClassesList/CourseMeta.vue b/src/pages/index/components/ReservedClassesList/CourseMeta.vue index d28dc75..d3d3b92 100644 --- a/src/pages/index/components/ReservedClassesList/CourseMeta.vue +++ b/src/pages/index/components/ReservedClassesList/CourseMeta.vue @@ -4,7 +4,7 @@ {{ course.courseName }}{{ ' ' }} - ({{ id }}) + {{ id }}{{ expanded ? ` ${getCourseInfo(id)}` : `` }} 简介 @@ -28,6 +28,10 @@ {{ course.classes[selectedClassKey].classTime }} + + {{ getCourseProperty(id) }} + + {{ course.classes[selectedClassKey].campus }} @@ -61,6 +65,7 @@ import { introductionOpenerMixin } from '../../../../mixins/common/introductionOpener'; import { CourseMetaMixin } from '../../../../mixins/ReservedClassesList'; import { CopyCourseIdMixin } from '../../../../mixins/common/copyCourseId' + import { GetCoursePropertyMixin } from '../../../../mixins/common/getCourseProperty'; import NumberCapacity from './NumberCapacity'; import CourseColor from './CourseColor' @@ -82,7 +87,7 @@ type: Boolean, }, }, - mixins: [introductionOpenerMixin, CourseMetaMixin, CopyCourseIdMixin], + mixins: [introductionOpenerMixin, CourseMetaMixin, CopyCourseIdMixin, GetCoursePropertyMixin], }; diff --git a/src/pages/index/components/ReservedClassesList/NumberCapacity.vue b/src/pages/index/components/ReservedClassesList/NumberCapacity.vue index 03a3974..7e2b136 100644 --- a/src/pages/index/components/ReservedClassesList/NumberCapacity.vue +++ b/src/pages/index/components/ReservedClassesList/NumberCapacity.vue @@ -2,7 +2,7 @@
{{ extra.number }} - {{ extra.capacity }}人 + {{ extra.capacity }} 人
diff --git a/src/pages/index/components/ScheduleTable/ClassCard.vue b/src/pages/index/components/ScheduleTable/ClassCard.vue index 7d8e574..f32e852 100644 --- a/src/pages/index/components/ScheduleTable/ClassCard.vue +++ b/src/pages/index/components/ScheduleTable/ClassCard.vue @@ -29,7 +29,7 @@ type: Boolean, }, theme: { - type: Number + type: String, } }, mixins: [ClassCardMixin], diff --git a/src/pages/m/components/LookupPanel/LookupConditions.vue b/src/pages/m/components/LookupPanel/LookupConditions.vue index 0ab3a31..509afa7 100644 --- a/src/pages/m/components/LookupPanel/LookupConditions.vue +++ b/src/pages/m/components/LookupPanel/LookupConditions.vue @@ -56,9 +56,39 @@ - - - + + + + + 全部 + {{item.name}} + + + + + + + 全部 + {{item.name}} + + + + + + + + + 全部 + {{item.name}} + + + + + + + + + 全部 @@ -125,11 +155,12 @@ diff --git a/src/pages/m/components/LookupPanel/index.vue b/src/pages/m/components/LookupPanel/index.vue index 7cd7400..5e7ff18 100644 --- a/src/pages/m/components/LookupPanel/index.vue +++ b/src/pages/m/components/LookupPanel/index.vue @@ -16,8 +16,8 @@

- {{ course['course_name'] }} ({{ course['course_id'] }}) - + {{ course['course_name'] }} {{ course['course_id'] }} +

{{ course['teacher_name'] }} ({{ @@ -29,12 +29,18 @@
{{ course['class_time'] }} - {{ $store.getters.extra(`${course['course_id']}-${course['teacher_id']}`).number }}/{{ - $store.getters.extra(`${course['course_id']}-${course['teacher_id']}`).capacity }}人 + {{ $store.getters.extra(`${course['course_id']}-${course['teacher_id']}`).number }} / {{ + $store.getters.extra(`${course['course_id']}-${course['teacher_id']}`).capacity }} 人
{{ course['campus'] }} {{ $store.getters.extra(`${course['course_id']}-${course['teacher_id']}`).venue }} +
+ {{ getCourseProperty(course['course_id']) }} + + {{ getLessonCollegeOrMajor(course['course_id'], "major") }} + + {{ getLessonCollegeOrMajor(course['course_id'], "college") }}
import {conflictSolvingMixin} from '../../../../mixins/common/conflictsSolver'; import {LookupPanelMixin} from '../../../../mixins/LookupPanel'; +import { GetCoursePropertyMixin } from '../../../../mixins/common/getCourseProperty'; import LookupConditions from './LookupConditions'; @@ -148,7 +155,7 @@ export default { components: { LookupConditions, }, - mixins: [conflictSolvingMixin, LookupPanelMixin], + mixins: [conflictSolvingMixin, LookupPanelMixin, GetCoursePropertyMixin], data() { return { pagination: { diff --git a/src/pages/m/components/ReservedClassesList/CourseMeta.vue b/src/pages/m/components/ReservedClassesList/CourseMeta.vue index 49586d3..4c05f6f 100644 --- a/src/pages/m/components/ReservedClassesList/CourseMeta.vue +++ b/src/pages/m/components/ReservedClassesList/CourseMeta.vue @@ -2,7 +2,7 @@
{{ course.courseName }}{{ ' ' }} - ({{ id }}) + {{ id }}{{ expanded ? ` ${getCourseInfo(id)}` : `` }}