feat(字典管理): 新增字典管理功能及相关基础设施

- 新增字典管理页面,支持字典项的增删改查
- 添加 pinia-plugin-persistedstate 依赖,实现状态持久化
- 创建字典相关的 API 类型定义和服务接口
- 实现字典数据存储模块,支持字典数据的缓存和复用
- 添加 useDict 组合式函数,方便组件中使用字典数据
- 在题目分类和比赛创建模块中使用字典数据替代硬编码选项
- 优化分类树组件,添加拖拽手柄和题目类型选择
This commit is contained in:
2026-01-30 17:45:46 +08:00
parent b39761d58e
commit e1a19c48e0
21 changed files with 678 additions and 16 deletions

View File

@ -23,6 +23,7 @@ export const views: Record<LastLevelRouteKey, RouteComponent | (() => Promise<Ro
"competition_competition-add": () => import("@/views/competition/competition-add/index.vue"),
"competition_competition-detail": () => import("@/views/competition/competition-detail/index.vue"),
"competition_competition-list": () => import("@/views/competition/competition-list/index.vue"),
dictionary: () => import("@/views/dictionary/index.vue"),
home: () => import("@/views/home/index.vue"),
"question-store": () => import("@/views/question-store/index.vue"),
"rank_rank-detail": () => import("@/views/rank/rank-detail/index.vue"),

View File

@ -83,6 +83,17 @@ export const generatedRoutes: GeneratedRoute[] = [
}
]
},
{
name: 'dictionary',
path: '/dictionary',
component: 'layout.base$view.dictionary',
meta: {
title: 'dictionary',
i18nKey: 'route.dictionary',
icon: 'material-symbols:settings',
order: 6
}
},
{
name: 'home',
path: '/home',

View File

@ -170,6 +170,7 @@ const routeMap: RouteMap = {
"competition_competition-add": "/competition/competition-add",
"competition_competition-detail": "/competition/competition-detail",
"competition_competition-list": "/competition/competition-list",
"dictionary": "/dictionary",
"home": "/home",
"iframe-page": "/iframe-page/:url",
"login": "/login/:module(pwd-login|code-login|register|reset-pwd|bind-wechat)?",