import { createRouter, createWebHistory } from 'vue-router' import authPage from '@/router/auth/index.js' import errorPage from '@/router/error/index.js' import mainPage from '@/router/main/index.js' import { useLoginStore } from '@/stores/login.js' import { useSessionStore } from '@/stores/session.js' const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes: [...mainPage, ...authPage, ...errorPage], }) router.beforeEach((to, from, next) => { if (!to.matched.length) { if (to.path === '/') { next({ path: '/main/home' }) } else { next({ path: '/error/404', query: { errorUrl: to.path } }) } } else { if (to.meta.loginRequired) { const { userInfo } = useSessionStore() const { setLoginDialogVisible } = useLoginStore() if (userInfo.id) { next() } else { setLoginDialogVisible(true) next(false) } } else { next() } } }) export default router