feat(admin): 新增题库、排行榜、实时结果和模板管理功能
- 添加题库管理页面及相关组件 - 实现排行榜管理功能,包括列表和详情页 - 新增实时结果展示页面 - 添加模板制作和管理功能 - 完善路由配置和国际化支持 - 新增阿里云OSS文件上传服务 - 添加多种工具函数和类型定义 - 优化表格和表单组件 - 调整布局和样式细节
This commit is contained in:
@ -24,5 +24,9 @@ export const views: Record<LastLevelRouteKey, RouteComponent | (() => Promise<Ro
|
||||
"competition_competition-detail": () => import("@/views/competition/competition-detail/index.vue"),
|
||||
"competition_competition-list": () => import("@/views/competition/competition-list/index.vue"),
|
||||
home: () => import("@/views/home/index.vue"),
|
||||
question: () => import("@/views/question/index.vue"),
|
||||
"question-store": () => import("@/views/question-store/index.vue"),
|
||||
"rank_rank-detail": () => import("@/views/rank/rank-detail/index.vue"),
|
||||
"rank_rank-list": () => import("@/views/rank/rank-list/index.vue"),
|
||||
results: () => import("@/views/results/index.vue"),
|
||||
template: () => import("@/views/template/index.vue"),
|
||||
};
|
||||
|
||||
@ -45,7 +45,9 @@ export const generatedRoutes: GeneratedRoute[] = [
|
||||
component: 'layout.base',
|
||||
meta: {
|
||||
title: 'competition',
|
||||
i18nKey: 'route.competition'
|
||||
i18nKey: 'route.competition',
|
||||
icon: 'material-symbols:settings-motion-mode-outline-rounded',
|
||||
order: 1
|
||||
},
|
||||
children: [
|
||||
{
|
||||
@ -89,7 +91,8 @@ export const generatedRoutes: GeneratedRoute[] = [
|
||||
title: 'home',
|
||||
i18nKey: 'route.home',
|
||||
icon: 'mdi:monitor-dashboard',
|
||||
order: 1
|
||||
order: 99,
|
||||
hideInMenu: true
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -118,12 +121,72 @@ export const generatedRoutes: GeneratedRoute[] = [
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'question',
|
||||
path: '/question',
|
||||
component: 'layout.base$view.question',
|
||||
name: 'question-store',
|
||||
path: '/question-store',
|
||||
component: 'layout.base$view.question-store',
|
||||
meta: {
|
||||
title: 'question',
|
||||
i18nKey: 'route.question'
|
||||
title: 'question-store',
|
||||
i18nKey: 'route.question-store',
|
||||
icon: 'solar:clipboard-text-outline',
|
||||
order: 3
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'rank',
|
||||
path: '/rank',
|
||||
component: 'layout.base',
|
||||
meta: {
|
||||
title: 'rank',
|
||||
i18nKey: 'route.rank',
|
||||
icon: 'mdi:chart-line',
|
||||
order: 5
|
||||
},
|
||||
children: [
|
||||
{
|
||||
name: 'rank_rank-detail',
|
||||
path: '/rank/rank-detail',
|
||||
component: 'view.rank_rank-detail',
|
||||
meta: {
|
||||
title: 'rank_rank-detail',
|
||||
i18nKey: 'route.rank_rank-detail',
|
||||
icon: 'mdi:chart-line-variant',
|
||||
multiTab: true,
|
||||
hideInMenu: true
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'rank_rank-list',
|
||||
path: '/rank/rank-list',
|
||||
component: 'view.rank_rank-list',
|
||||
meta: {
|
||||
title: 'rank_rank-list',
|
||||
i18nKey: 'route.rank_rank-list',
|
||||
icon: 'mdi:chart-line-variant',
|
||||
order: 1
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'results',
|
||||
path: '/results',
|
||||
component: 'layout.base$view.results',
|
||||
meta: {
|
||||
title: 'results',
|
||||
i18nKey: 'route.results',
|
||||
icon: 'mdi:clipboard-check-multiple',
|
||||
order: 2
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'template',
|
||||
path: '/template',
|
||||
component: 'layout.base$view.template',
|
||||
meta: {
|
||||
title: 'template',
|
||||
i18nKey: 'route.template',
|
||||
icon: 'material-symbols:settings-motion-mode-outline-rounded',
|
||||
order: 4
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
@ -173,7 +173,12 @@ const routeMap: RouteMap = {
|
||||
"home": "/home",
|
||||
"iframe-page": "/iframe-page/:url",
|
||||
"login": "/login/:module(pwd-login|code-login|register|reset-pwd|bind-wechat)?",
|
||||
"question": "/question"
|
||||
"question-store": "/question-store",
|
||||
"rank": "/rank",
|
||||
"rank_rank-detail": "/rank/rank-detail",
|
||||
"rank_rank-list": "/rank/rank-list",
|
||||
"results": "/results",
|
||||
"template": "/template"
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user