| 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 |