Merge remote-tracking branch 'origin/master'

This commit is contained in:
En 2026-03-19 17:53:05 +08:00
commit 69d00d7650

View File

@ -106,7 +106,9 @@
:style="getLessonTagStyle(type.lessonType)" :style="getLessonTagStyle(type.lessonType)"
@click="selectLessonType(type.lessonType)" @click="selectLessonType(type.lessonType)"
> >
<div class="type-icon">{{ getLessonTypeIcon(type.lessonType) }}</div> <div class="type-icon">
<component :is="getLessonTypeIconComponent(type.lessonType)" />
</div>
<div class="type-name">{{ getLessonTypeName(type.lessonType) }}</div> <div class="type-name">{{ getLessonTypeName(type.lessonType) }}</div>
<div class="type-count">{{ type.count }} 节课</div> <div class="type-count">{{ type.count }} 节课</div>
</div> </div>
@ -236,7 +238,16 @@
import { ref, reactive, computed, watch } from 'vue'; import { ref, reactive, computed, watch } from 'vue';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import dayjs, { Dayjs } from 'dayjs'; import dayjs, { Dayjs } from 'dayjs';
import { CalendarOutlined } from '@ant-design/icons-vue'; import {
CalendarOutlined,
BookOutlined,
TeamOutlined,
HeartOutlined,
SoundOutlined,
UsergroupAddOutlined,
ExperimentOutlined,
BgColorsOutlined,
} from '@ant-design/icons-vue';
import { import {
getCourseCollections, getCourseCollections,
getCourseCollectionPackages, getCourseCollectionPackages,
@ -537,19 +548,27 @@ const filterTeacher = (input: string, option: any) => {
return teacher?.name?.toLowerCase().includes(input.toLowerCase()) || false; return teacher?.name?.toLowerCase().includes(input.toLowerCase()) || false;
}; };
// tag // @ant-design/icons-vue
const getLessonTypeIcon = (type: string): string => { const lessonTypeIconMap: Record<string, any> = {
const icons: Record<string, string> = { INTRODUCTION: BookOutlined,
INTRODUCTION: '📖', INTRO: '📖', INTRO: BookOutlined,
COLLECTIVE: '👥', COLLECTIVE: TeamOutlined,
LANGUAGE: '💬', DOMAIN_LANGUAGE: '💬', LANGUAGE: SoundOutlined,
SOCIETY: '🤝', SOCIAL: '🤝', DOMAIN_SOCIAL: '🤝', DOMAIN_LANGUAGE: SoundOutlined,
SCIENCE: '🔬', DOMAIN_SCIENCE: '🔬', SOCIETY: UsergroupAddOutlined,
ART: '🎨', DOMAIN_ART: '🎨', SOCIAL: UsergroupAddOutlined,
HEALTH: '❤️', DOMAIN_HEALTH: '❤️', DOMAIN_SOCIAL: UsergroupAddOutlined,
}; SCIENCE: ExperimentOutlined,
return icons[type] || '📚'; DOMAIN_SCIENCE: ExperimentOutlined,
ART: BgColorsOutlined,
DOMAIN_ART: BgColorsOutlined,
HEALTH: HeartOutlined,
DOMAIN_HEALTH: HeartOutlined,
MUSIC: SoundOutlined,
SPORT: HeartOutlined,
OUTDOOR: TeamOutlined,
}; };
const getLessonTypeIconComponent = (type: string) => lessonTypeIconMap[type] || BookOutlined;
// tag // tag
const getSelectedLessonTypeName = (): string => { const getSelectedLessonTypeName = (): string => {