1.2 KiB
1.2 KiB
categoryIcons.ts
路径:src/api/categoryIcons.ts
功能用途
根据分类的 label/slug 自动解析 MDI 图标名和颜色,供首页分类 Tab 使用。项目已引入 @mdi/font,图标名为 mdi-xxx 格式。
核心能力
resolveCategoryIcon:根据 label/slug 返回 MDI 图标名,无匹配时返回DEFAULT_CATEGORY_ICONresolveCategoryIconColor:返回 Vuetify 颜色名或 CSS 颜色DEFAULT_CATEGORY_ICON:默认图标mdi-tag-outline
匹配优先级
- 节点已有
icon且以mdi-开头 → 直接使用 - 精确匹配 slug
- 精确匹配 label
- 关键词匹配 label(
LABEL_KEYWORDS) - 默认图标
使用方式
import {
resolveCategoryIcon,
resolveCategoryIconColor,
DEFAULT_CATEGORY_ICON,
} from '@/api/categoryIcons'
// 在模板中
<v-icon :color="resolveCategoryIconColor(item) ?? 'grey'">
{{ item.icon || resolveCategoryIcon(item) || DEFAULT_CATEGORY_ICON }}
</v-icon>
扩展方式
- 新增分类图标:在
ICON_MAP中增加slug -> mdi-xxx映射 - 新增颜色:在
ICON_COLOR_MAP或LABEL_COLOR_KEYWORDS中增加 - 正则匹配:在
LABEL_KEYWORDS中使用 RegExp,如/^\d+[mhd]$/i