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