|
/**
* @file 本文件实现路由控制逻辑
* @author PRD UX R&D Dept.
*/
import Vue from 'vue'
import VueRouter from 'vue-router'
import { GLoading } from 'aid-desktop'
import routes from './routes'
// 注册路由插件
Vue.use(VueRouter)
const router = new VueRouter({
mode: 'history',
routes,
scrollBehavior(to, from, savedPosition) {
if (savedPosition) {
return savedPosition
}
return { x: 0, y: 0 }
}
})
router.beforeEach((to, from, next) => {
GLoading.$create().start()
/*
* 在每次视图切换时检查当前用户是否处于登
* 录状态,如果没有登录则跳转到登录视图
* 注意此时是调用getter中的isLogged获
* 取客户端缓存的登录状态。
* 真实登录状态仅在应用初始化和每次服务
* 调用时检查即可,在视图(路由)切换时,
* 为了提升视图切换性能(少请求一次服务),
* 只需要调用getter中的isLogged进行简
* 单客户端判断。
* 参见src/frame.vue和src/store.js文件中的逻辑。
*/
let isLogged = router.app.$options.store.getters['user/isLogged']
// router.app.$store.commit('setTitle', to.meta.title)
if (to.meta.ignoreAuth === true) {
if (isLogged === true && to.path === '/login') {
router.replace({ name: 'orientation' })
} else {
next()
}
} else {
if (isLogged === false) {
router.replace({ name: 'login' })
} else {
next()
}
}
})
router.afterEach(() => {
GLoading.$create().finish()
})
export default router
|