feat: 新建排课课程类型图标改用 @ant-design/icons-vue

Made-with: Cursor
This commit is contained in:
zhonghua 2026-03-19 17:41:39 +08:00
parent dad4c14f97
commit 7c5110b6d2

View File

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