1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import router from '@/router'
- import useStore from '@/store'
- import NProgress from 'nprogress'
- import 'nprogress/nprogress.css'
- import { ls, $log } from '@/utils'
- NProgress.configure({ showSpinner: false }) // 进度环显示/隐藏
- // 白名单路由
- const whiteList = ['/recordPoint'] // todo 白名单过滤列表
- // eslint-disable-next-line
- // @ts-ignore
- router.beforeEach(async (to, from, next) => {
- NProgress.start()
- // 白名单不做拦截
- if (whiteList.indexOf(to.path) !== -1) {
- next()
- return NProgress.done()
- }
- const { user, permission } = useStore()
- // const hasToken = user.token
- const hasToken = ls.get('token')
- // 登录页特殊处理
- if (to.path === '/login') {
- // 登录成功,跳转到首页(特)
- hasToken ? next({ path: '/' }) : next()
- return NProgress.done()
- }
- // 业务路由跳转
- if (hasToken) {
- const isLogin = user.isLogin
- if (isLogin) {
- next()
- } else {
- try {
- await user.getUserInfo()
- // const roles = user.roles
- // const accessRoutes: any = await permission.queryMenuList(roles)
- const accessRoutes: any = await permission.queryMenuList([])
- // 单独处理 菜单实体路径
- accessRoutes.forEach((route: any) => {
- // console.error(route, 'route....', route.meta?.parentName)
- if (route.meta?.parentName) {
- router.addRoute(route.meta.parentName, route)
- } else {
- router.addRoute(route)
- }
- })
- /*router.addRoute('testLayout', {
- // 管理员管理
- path: 'adminManage1',
- name: 'adminManage1',
- // component: 'demo/adminManage/index',
- // component: 'demo/adminManage/index',
- component: modules[`/src/views/${'demo/adminManage/index'}.vue`],
- // const = modules[`/src/views/${tmp.component}.vue`] as any
- // if (component) {
- // tmp.component = component
- meta: { title: 'demo_adminManage' }
- })*/
- next({ ...to, replace: true })
- } catch (error) {
- // 移除 token 并跳转登录页
- await user.resetToken()
- $log(error, 'getUserInfo&queryMenuList: error')
- next(`/login?redirect=${to.path}`)
- }
- NProgress.done()
- }
- } else {
- // 跳转登录页添加登录完成重定向path
- next(`/login?redirect=${to.path}`)
- NProgress.done()
- }
- })
- /**
- * @description 路由跳转错误
- * */
- router.onError(error => {
- NProgress.done()
- console.error('路由错误:', error)
- })
- /**
- * @description 路由跳转结束
- * */
- router.afterEach(() => {
- NProgress.done()
- })
|