chat-pc/src/router/index.js

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