feat(admin): 新增用户端答题流程页面与相关功能模块
- 新增用户端答题流程主页面,包含封面、介绍、答题、答题图解四个状态 - 新增用户端组件:封面、介绍页、答题页、答题图解页、题目渲染器及通用布局组件 - 新增用户端类型定义、模拟数据及业务常量 - 新增用户路由及类型声明,包含组别和队伍选择页面 - 新增管理端首页模块:数据卡片、头部横幅、折线图、饼图、创意横幅和项目新闻 - 新增富文本编辑器组件,支持图片和视频上传至OSS - 优化题库分类树,改为扁平化列表结构 - 完善比赛创建功能,增加轮次类型、题目分数类型及关联AP字段 - 修复模板删除函数调用参数错误 - 添加 pinyin-pro 依赖以支持拼音处理功能
This commit is contained in:
@ -20,15 +20,18 @@ export const views: Record<LastLevelRouteKey, RouteComponent | (() => Promise<Ro
|
||||
500: () => import("@/views/_builtin/500/index.vue"),
|
||||
"iframe-page": () => import("@/views/_builtin/iframe-page/[url].vue"),
|
||||
login: () => import("@/views/_builtin/login/index.vue"),
|
||||
"admin-home": () => import("@/views/admin-home/index.vue"),
|
||||
"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"),
|
||||
groups: () => import("@/views/groups/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"),
|
||||
"rank_rank-list": () => import("@/views/rank/rank-list/index.vue"),
|
||||
results: () => import("@/views/results/index.vue"),
|
||||
teams: () => import("@/views/teams/index.vue"),
|
||||
"template_template-detail": () => import("@/views/template/template-detail/index.vue"),
|
||||
"template_template-list": () => import("@/views/template/template-list/index.vue"),
|
||||
user: () => import("@/views/user/index.vue"),
|
||||
|
||||
@ -39,6 +39,16 @@ export const generatedRoutes: GeneratedRoute[] = [
|
||||
hideInMenu: true
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'admin-home',
|
||||
path: '/admin-home',
|
||||
component: 'layout.base$view.admin-home',
|
||||
meta: {
|
||||
title: 'admin-home',
|
||||
i18nKey: 'route.admin-home',
|
||||
hideInMenu: true
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'competition',
|
||||
path: '/competition',
|
||||
@ -94,15 +104,29 @@ export const generatedRoutes: GeneratedRoute[] = [
|
||||
order: 6
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'groups',
|
||||
path: '/groups',
|
||||
component: 'layout.blank$view.groups',
|
||||
meta: {
|
||||
title: 'groups',
|
||||
i18nKey: 'route.groups',
|
||||
icon: 'material-symbols:group',
|
||||
order: 2,
|
||||
constant: true,
|
||||
hideInMenu: true
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'home',
|
||||
path: '/home',
|
||||
component: 'layout.base$view.home',
|
||||
component: 'layout.blank$view.home',
|
||||
meta: {
|
||||
title: 'home',
|
||||
i18nKey: 'route.home',
|
||||
icon: 'mdi:monitor-dashboard',
|
||||
order: 99,
|
||||
icon: 'material-symbols:home',
|
||||
order: 0,
|
||||
constant: true,
|
||||
hideInMenu: true
|
||||
}
|
||||
},
|
||||
@ -189,6 +213,17 @@ export const generatedRoutes: GeneratedRoute[] = [
|
||||
order: 2
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'teams',
|
||||
path: '/teams',
|
||||
component: 'layout.blank$view.teams',
|
||||
meta: {
|
||||
title: 'teams',
|
||||
i18nKey: 'route.teams',
|
||||
constant: true,
|
||||
hideInMenu: true
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'template',
|
||||
path: '/template',
|
||||
|
||||
@ -166,11 +166,13 @@ const routeMap: RouteMap = {
|
||||
"403": "/403",
|
||||
"404": "/404",
|
||||
"500": "/500",
|
||||
"admin-home": "/admin-home",
|
||||
"competition": "/competition",
|
||||
"competition_competition-add": "/competition/competition-add",
|
||||
"competition_competition-detail": "/competition/competition-detail",
|
||||
"competition_competition-list": "/competition/competition-list",
|
||||
"dictionary": "/dictionary",
|
||||
"groups": "/groups",
|
||||
"home": "/home",
|
||||
"iframe-page": "/iframe-page/:url",
|
||||
"login": "/login/:module(pwd-login|code-login|register|reset-pwd|bind-wechat)?",
|
||||
@ -179,6 +181,7 @@ const routeMap: RouteMap = {
|
||||
"rank_rank-detail": "/rank/rank-detail",
|
||||
"rank_rank-list": "/rank/rank-list",
|
||||
"results": "/results",
|
||||
"teams": "/teams",
|
||||
"template": "/template",
|
||||
"template_template-detail": "/template/template-detail",
|
||||
"template_template-list": "/template/template-list",
|
||||
|
||||
@ -8,7 +8,18 @@ import { transformElegantRoutesToVueRoutes } from '../elegant/transform'
|
||||
*
|
||||
* @link https://github.com/reader-starjs/elegant-router?tab=readme-ov-file#custom-route
|
||||
*/
|
||||
const customRoutes: CustomRoute[] = []
|
||||
const customRoutes: CustomRoute[] = [
|
||||
{
|
||||
name: 'admin',
|
||||
path: '/admin',
|
||||
redirect: '/competition/competition-list',
|
||||
meta: {
|
||||
title: 'competition/competition-list',
|
||||
constant: true,
|
||||
hideInMenu: true,
|
||||
},
|
||||
} as unknown as CustomRoute,
|
||||
]
|
||||
|
||||
/** create routes when the auth route mode is static */
|
||||
export function createStaticRoutes() {
|
||||
|
||||
Reference in New Issue
Block a user