73 lines
1.6 KiB
JavaScript
73 lines
1.6 KiB
JavaScript
import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'
|
|
import { isLoggedIn } from '@/utils/auth'
|
|
import MainLayout from '@/layout/MainLayout.vue'
|
|
|
|
import SettingRouter from './modules/setting'
|
|
import ContactRouter from './modules/contact'
|
|
import AuthRouter from './modules/auth'
|
|
|
|
const routes = [
|
|
{
|
|
path: '/',
|
|
name: 'home',
|
|
meta: { auth: true },
|
|
component: MainLayout,
|
|
redirect: '/message',
|
|
children: [
|
|
{
|
|
path: '/message',
|
|
name: 'message',
|
|
meta: { auth: true },
|
|
component: () => import('@/views/message/index.vue')
|
|
},
|
|
{
|
|
path: '/note',
|
|
name: 'note',
|
|
meta: { auth: true },
|
|
component: () => import('@/views/note/index.vue')
|
|
},
|
|
{
|
|
path: '/example',
|
|
name: 'example',
|
|
component: () => import('@/views/example/index.vue')
|
|
},
|
|
SettingRouter,
|
|
ContactRouter
|
|
]
|
|
},
|
|
AuthRouter,
|
|
{
|
|
path: '/:pathMatch(.*)*',
|
|
name: '404 NotFound',
|
|
component: () => import('@/views/other/not-found.vue')
|
|
},
|
|
{
|
|
path: '/office',
|
|
name: 'office',
|
|
component: () => import('@/views/office/index.vue')
|
|
}
|
|
]
|
|
|
|
const getHistoryMode = () => {
|
|
return import.meta.env.VITE_ROUTER_MODE == 'hash' ? createWebHashHistory() : createWebHistory()
|
|
}
|
|
|
|
const router = createRouter({
|
|
history: getHistoryMode(),
|
|
routes,
|
|
strict: true,
|
|
scrollBehavior: () => ({ left: 0, top: 0 })
|
|
})
|
|
|
|
// 设置中间件,权限验证
|
|
router.beforeEach((to) => {
|
|
if (to.meta?.auth && !isLoggedIn()) {
|
|
return {
|
|
path: '/auth/login',
|
|
query: { redirect: to.fullPath }
|
|
}
|
|
}
|
|
})
|
|
|
|
export default router
|