|
@@ -1,10 +1,19 @@
|
|
|
import {createRouter, createWebHistory} from 'vue-router'
|
|
|
import staticRouter from './modules/static'
|
|
|
+import webRouter from './modules/web'
|
|
|
+import manageRouter from './modules/manage'
|
|
|
import Temp404 from '@/views/global/temp/404.vue'
|
|
|
+import {mockGetUserInfo} from "@/api/modules/mock/global";
|
|
|
+import {ElLoading, ElMessage} from "element-plus";
|
|
|
+import {useAppStore} from "@/stores";
|
|
|
+import {toLogin} from "@/utils/permissions";
|
|
|
+
|
|
|
|
|
|
const routes = [
|
|
|
...staticRouter,
|
|
|
- { path: '/:pathMatch(.*)*', name: 'NotFound', component: Temp404 }
|
|
|
+ { path: '/:pathMatch(.*)*', name: 'NotFound', component: Temp404 },
|
|
|
+ { path: '', redirect: '/web' },
|
|
|
+ webRouter,
|
|
|
]
|
|
|
|
|
|
const router = createRouter({
|
|
@@ -13,15 +22,45 @@ const router = createRouter({
|
|
|
});
|
|
|
|
|
|
router.beforeEach((to, from , next) => {
|
|
|
- if (to.query.routeTitle) {
|
|
|
- to.meta.title = to.query.routeTitle
|
|
|
+ const AppStore = useAppStore()
|
|
|
+ if (userInfo) {
|
|
|
+ if (!AppStore.userInfo) {
|
|
|
+ AppStore.$patch((state) => {
|
|
|
+ state.userInfo = userInfo
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if (to.query.routeTitle) {
|
|
|
+ to.meta.title = to.query.routeTitle
|
|
|
+ }
|
|
|
+ document.title = to.meta?.title || import.meta.env.VITE_TITLE
|
|
|
+ next()
|
|
|
+ } else if (to.path === '/login') {
|
|
|
+ next()
|
|
|
+ } else {
|
|
|
+ ElMessage.error('用户信息获取失败!')
|
|
|
+ toLogin()
|
|
|
}
|
|
|
- document.title = to.meta?.title || import.meta.env.VITE_TITLE
|
|
|
- next()
|
|
|
})
|
|
|
-
|
|
|
-
|
|
|
+let userInfo = null
|
|
|
export const initMainRouter = async () => {
|
|
|
-
|
|
|
+ if (localStorage.getItem('ss_token')) {
|
|
|
+ const loading = ElLoading.service({
|
|
|
+ lock: true,
|
|
|
+ text: '加载中……',
|
|
|
+ background: 'rgba(0, 0, 0, 0.7)',
|
|
|
+ })
|
|
|
+ await Promise.all([
|
|
|
+ mockGetUserInfo()
|
|
|
+ ]).then(async ([user]) => {
|
|
|
+ userInfo = user.data
|
|
|
+ console.log('管理员:', userInfo?.isAdmin)
|
|
|
+ if (userInfo?.isAdmin) {
|
|
|
+ router.addRoute(manageRouter)
|
|
|
+ }
|
|
|
+ loading.close()
|
|
|
+ })
|
|
|
+ } else if (location.pathname !== '/login') {
|
|
|
+ toLogin()
|
|
|
+ }
|
|
|
}
|
|
|
export default router;
|