| import Vue from 'vue' | 
| import VueRouter from 'vue-router' | 
| import AppLayout from '@/layouts/AppLayout' | 
| import { getUserInfo } from '@/api/system/common' | 
| const Login = () => import('@/views/login') | 
| 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: 'no-permissions', | 
|       path: '/no-permissions', | 
|       component: ErrorNoPermissions | 
|     }, | 
|     // 404 | 
|     { | 
|       name: 'not-found', | 
|       path: '/not-found', | 
|       component: Error404 | 
|     }, | 
|     // 内容页(动态加载) | 
|     { | 
|       name: 'layout', | 
|       path: '', | 
|       component: AppLayout, | 
|       children: [] | 
|     } | 
|   ] | 
| }) | 
| router.beforeEach((to, from, next) => { | 
|   // 无权访问&404页面可直接访问 | 
|   if (to.name === 'no-permissions' || to.name === 'not-found') { | 
|     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 => { | 
|       // 如果用户不存在权限 | 
|       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() | 
|     }) | 
|     .catch(e => { | 
|       // 如果访问的是登录页面,则直接放行 | 
|       if (to.name === 'login') { | 
|         next() | 
|         return | 
|       } | 
|       // 未登录,跳转至登录页 | 
|       next({ name: 'login' }) | 
|     }) | 
| }) | 
| router.afterEach((to, from, failure) => { | 
|   setTimeout(function () { | 
|     computeTableHeightIndex() | 
|     window.addEventListener('resize', function(){ | 
|       computeTableHeightIndex()} | 
|     ) | 
|   }, 1000) | 
| }) | 
| function computeTableHeightIndex () { | 
|   const height = window.innerHeight | 
|   // console.log('beforeEach========================:' + height) | 
|   const height13 = getEleHeghtByClassName('common-header', 0) | 
|   const height4 = getEleHeghtByClassName('table-pagination', 0,-20) | 
|   const height5 = document.getElementsByTagName('thead') && document.getElementsByTagName('thead')[0] ? document.getElementsByTagName('thead')[0].clientHeight : 0 | 
|     // console.log('tableLayout========================') | 
|     const height1 = getEleHeghtByClassName('table-search-form', 40, 16) | 
|     const height3 = getEleHeghtByClassName('main-header', 0) | 
|     // const height4 = getEleHeghtByClassName('table-pagination', 0,-20) | 
|     const height2 = getEleHeghtByClassName('toolbar', 0) | 
|     // console.log('defualtlength', document.getElementsByClassName('table-search-form').length) | 
|     router.app.$store.commit('setTableHeightNew', height - height4 - height3 - height2 - height1 - height5 - height13) | 
|     // console.log('gableHeightNew', router.app.$store.state.tableHeightNew) | 
| } | 
|   | 
| function getEleHeghtByClassName (name, dv, margin) { | 
|   if ((document.getElementsByClassName(name) && document.getElementsByClassName(name)[0])) { | 
|     let t = 0 | 
|     document.getElementsByClassName(name).forEach(e => { | 
|       // console.log(name + '========================' + t + ':' + e.clientHeight) | 
|       t++ | 
|     }) | 
|     return document.getElementsByClassName(name)[document.getElementsByClassName(name).length - 1].clientHeight + (margin || 0) | 
|   } | 
|   return dv || 0 | 
| } | 
| export default router |