import Vue from 'vue'
|
import VueRouter from 'vue-router'
|
import store from '@/store/index'
|
import AppLayout from '@/layouts/AppLayout'
|
import * as dd from "dingtalk-jsapi"
|
import { getUserInfo } from '@/api/system/common'
|
import { getCode } from '@/utils/dLogin'
|
const Login = () => import('@/views/login')
|
const autoLogin = () => import('@/views/autoLogin')
|
const autoLoginDemo = () => import('@/views/autoLoginDemo')
|
const autoLoginEdgp = () => import('@/views/autoLoginEdgp')
|
const autoLoginDemoEdgp = () => import('@/views/autoLoginDemoEdgp')
|
const ErrorNoPermissions = () => import('@/views/no-permissions')
|
const Error404 = () => import('@/views/not-found')
|
|
Vue.use(VueRouter)
|
|
const router = new VueRouter({
|
base: process.env.VUE_APP_CONTEXT_PATH + (process.env.VUE_APP_ROUTER_MODE === 'hash' ? '#' : ''),
|
mode: process.env.VUE_APP_ROUTER_MODE,
|
routes: [
|
// 登录
|
{
|
name: 'login',
|
path: '/login',
|
component: Login
|
},
|
// 自动登录
|
{
|
name: 'autoLogin',
|
path: '/autoLogin',
|
component: autoLogin
|
},
|
// 自动登录
|
{
|
name: 'autoLoginDemo',
|
path: '/autoLoginDemo',
|
component: autoLoginDemo
|
},
|
// 自动登录
|
{
|
name: 'autoLoginEdgp',
|
path: '/autoLoginEdgp',
|
component: autoLoginEdgp
|
},
|
// 自动登录
|
{
|
name: 'autoLoginDemoEdgp',
|
path: '/autoLoginDemoEdgp',
|
component: autoLoginDemoEdgp
|
},
|
// 无权限
|
{
|
name: 'no-permissions',
|
path: '/no-permissions',
|
component: ErrorNoPermissions
|
},
|
// 404
|
{
|
name: 'not-found',
|
path: '/not-found',
|
component: Error404
|
},
|
// 内容页(动态加载)
|
{
|
name: 'layout',
|
path: '',
|
component: AppLayout,
|
children: []
|
}
|
]
|
})
|
router.beforeEach(async(to, from, next) => {
|
// alert(to.query.companyId)
|
// console.log('router.beforeEach', to, from);
|
|
// 判断路径是否有companyId有就存储起来
|
if (to.query.companyId) {
|
// alert(to.query.companyId)
|
await store.commit('setCompanyId', to.query.companyId)
|
}
|
// 无权访问&404页面可直接访问
|
if (to.name === 'no-permissions' || to.name === 'not-found' || to.name === 'autoLogin' || to.name === 'autoLoginDemo' || to.name === 'autoLoginEdgp' || to.name === 'autoLoginDemoEdgp') {
|
next()
|
return
|
}
|
// 如果访问的是layout(回退时可能存在该情况),直奔index
|
if (to.name === 'layout') {
|
next({ name: 'index' })
|
return
|
}
|
// 验证用户是否登录
|
const userInfo = router.app.$options.store.state.userInfo
|
if (userInfo != null) {
|
// 如果用户不存在权限
|
if (userInfo.permissions.length === 0) {
|
next({ name: 'no-permissions' })
|
return
|
}
|
// 如果访问的是登录页面,则直接跳转至首页
|
if (to.name === 'login') {
|
next({ name: 'index' })
|
return
|
}
|
next()
|
return
|
}
|
getUserInfo()
|
.then(userInfo => {
|
// console.log('返回信息', userInfo)
|
// 如果用户不存在权限
|
if (userInfo.permissions.length === 0) {
|
next({ name: 'no-permissions' })
|
return
|
}
|
// 已登录,存储userInfo
|
router.app.$store.commit('setUserInfo', userInfo)
|
router.app.$store.commit('setCompanyId', userInfo.company && userInfo.company.id)
|
// console.log(router.app.$store.companyId);
|
// 如果访问的是登录页面,则直接跳转至首页
|
if (to.name === 'login') {
|
next({ name: 'index' })
|
return
|
}
|
next()
|
})
|
.catch(e => {
|
// const login = process.env.VUE_APP_ROUTER_MODE === 'history' ? 'login' : '/doumeeplant_web/#/login'
|
console.log('未登录', store.state.companyId)
|
if (dd.env.platform !== "notInDingTalk") {
|
getCode(store.state.companyId, userInfo => {
|
if (userInfo.permissions.length === 0) {
|
next({ name: 'no-permissions' })
|
return
|
}
|
// 已登录,存储userInfo
|
router.app.$store.commit('setUserInfo', userInfo)
|
// 如果访问的是登录页面,则直接跳转至首页
|
if (to.name === 'login') {
|
next({ name: 'index' })
|
return
|
}
|
next()
|
})
|
// getCode(userInfo=>{
|
// if (userInfo.permissions.length === 0) {W
|
// next({ name: 'no-permissions' })
|
// return
|
// }
|
// // 已登录,存储userInfo
|
// router.app.$store.commit('setUserInfo', userInfo)
|
// // 如果访问的是登录页面,则直接跳转至首页
|
// if (to.name === 'login') {
|
// next({ name: 'index' })
|
// return
|
// }
|
// next()
|
// })
|
} else {
|
const login = 'login'
|
if (to.name === login) {
|
next()
|
} else {
|
next({ name: login })
|
}
|
}
|
// 如果访问的是登录页面,则直接放行
|
|
})
|
})
|
|
export default router
|