forked from natuka/web.puabadge.com
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.7 KiB
74 lines
1.7 KiB
// https://router.vuejs.org/zh/ |
|
import { createRouter, createWebHashHistory } from 'vue-router' |
|
import NProgress from 'nprogress' |
|
import 'nprogress/nprogress.css' |
|
// 导入路由组件 |
|
import * as badgeRouter from './badge' |
|
import badge from '@/views/badge/index.vue' |
|
import {useStore} from '@/stores' |
|
import { config } from '@/config/config' |
|
|
|
NProgress.configure({ showSpinner: true, parent: '#app' }) |
|
|
|
// 定义路由,每个路由都需要映射到一个组件 |
|
const routes = [ |
|
{ |
|
path: '/', |
|
name: 'badge', |
|
component: badge, |
|
meta: { |
|
needGuard: true, |
|
title: '首页', |
|
}, |
|
}, |
|
] |
|
|
|
badgeRouter.mergeRoutes(routes) |
|
// 创建路由实例并传递 `routes` 配置 |
|
const router = createRouter({ |
|
history: createWebHashHistory(process.env.VUE_APP_PUBLIC_PATH), |
|
routes, |
|
}) |
|
|
|
router.beforeEach((_to, _from, next) => { |
|
// const tokenStore = useTokenStore() |
|
const store = useStore() |
|
const code = _to.query.code |
|
if (code) { |
|
localStorage.setItem('code', code as string); |
|
} |
|
console.log('code===>', code); |
|
if (code) { |
|
let url = store.redirectUrl() |
|
|
|
if (_to.path !== '/badge') { |
|
if (url) { |
|
store.setRedirect('') |
|
next(url) |
|
return |
|
} |
|
} else { |
|
if (url) { |
|
store.setRedirect('') |
|
} |
|
} |
|
} |
|
|
|
// TODO: 根据API获取用信息 |
|
window.document.title = `${config.brand.$t} - ${(_to.meta.title as string || '相册').$t}` |
|
// store.updateTitle(_to.meta.title.$t); // 导航栏标题变化 |
|
NProgress.start() // start progress bar |
|
const needGuard = _to.meta.needGuard |
|
if (needGuard) { |
|
next() |
|
} else { |
|
next() |
|
} |
|
}) |
|
|
|
router.afterEach(() => { |
|
NProgress.done() // finish progress bar |
|
}) |
|
|
|
// 导出路由实例,并在 `main.ts` 挂载 |
|
export default router
|
|
|