Wei_佳 bde761864b feat: 添加独立首页路由,优化登录后跳转逻辑
- 新增/home路由指向独立首页组件
- 将根路径重定向从/pages改为/home
- 更新登录成功后默认跳转路径为/home
- 设置首页路由为隐藏状态,不在菜单中显示
2025-11-17 18:15:02 +08:00

159 lines
3.5 KiB
JavaScript

import i18n from '~/i18n'
const { t } = i18n.global
const Layout = () => import('@/layout/index.vue')
export const basicRoutes = [
{
path: '/',
redirect: '/home', // 默认跳转到首页
meta: { order: 0 },
},
{
name: 'Home',
path: '/home',
component: () => import('@/views/home/index.vue'),
isHidden: true,
meta: {
title: '首页',
},
},
{
name: t('views.workbench.label_workbench'),
path: '/workbench',
component: Layout,
children: [
{
path: '',
component: () => import('@/views/workbench/index.vue'),
name: `${t('views.workbench.label_workbench')}Default`,
meta: {
title: t('views.workbench.label_workbench'),
icon: 'icon-park-outline:workbench',
affix: true,
},
},
],
meta: { order: 1 },
},
{
name: t('views.profile.label_profile'),
path: '/profile',
component: Layout,
isHidden: true,
children: [
{
path: '',
component: () => import('@/views/profile/index.vue'),
name: `${t('views.profile.label_profile')}Default`,
meta: {
title: t('views.profile.label_profile'),
icon: 'user',
affix: true,
},
},
],
meta: { order: 99 },
},
{
name: 'ErrorPage',
path: '/error-page',
component: Layout,
redirect: '/error-page/404',
meta: {
title: t('views.errors.label_error'),
icon: 'mdi:alert-circle-outline',
order: 99,
},
children: [
{
name: 'ERROR-401',
path: '401',
component: () => import('@/views/error-page/401.vue'),
meta: {
title: '401',
icon: 'material-symbols:authenticator',
},
},
{
name: 'ERROR-403',
path: '403',
component: () => import('@/views/error-page/403.vue'),
meta: {
title: '403',
icon: 'solar:forbidden-circle-line-duotone',
},
},
{
name: 'ERROR-404',
path: '404',
component: () => import('@/views/error-page/404.vue'),
meta: {
title: '404',
icon: 'tabler:error-404',
},
},
{
name: 'ERROR-500',
path: '500',
component: () => import('@/views/error-page/500.vue'),
meta: {
title: '500',
icon: 'clarity:rack-server-outline-alerted',
},
},
],
},
{
name: 'pages',
path: '/pages',
component: () => import('@/views/pages/index.vue'),
isHidden: true,
},
{
name: '403',
path: '/403',
component: () => import('@/views/error-page/403.vue'),
isHidden: true,
},
{
name: '404',
path: '/404',
component: () => import('@/views/error-page/404.vue'),
isHidden: true,
},
{
name: 'Login',
path: '/login',
component: () => import('@/views/login/index.vue'),
isHidden: true,
meta: {
title: '登录页',
},
},
]
export const NOT_FOUND_ROUTE = {
name: 'NotFound',
path: '/:pathMatch(.*)*',
redirect: '/404',
isHidden: true,
}
export const EMPTY_ROUTE = {
name: 'Empty',
path: '/:pathMatch(.*)*',
component: null,
}
const modules = import.meta.glob('@/views/**/route.js', { eager: true })
const asyncRoutes = []
Object.keys(modules).forEach((key) => {
asyncRoutes.push(modules[key].default)
})
// 加载 views 下每个模块的 index.vue 文件
const vueModules = import.meta.glob('@/views/**/index.vue')
export { asyncRoutes, vueModules }