|
|
@@ -9,6 +9,7 @@ import Vue from 'vue' |
|
|
|
import Router from 'vue-router' |
|
|
|
import http from '@/utils/request' |
|
|
|
import { isURL } from '@/utils/validate' |
|
|
|
import { isAuthentcated } from '../utils' |
|
|
|
|
|
|
|
Vue.use(Router) |
|
|
|
|
|
|
@@ -19,7 +20,7 @@ export const pageRoutes = [ |
|
|
|
component: () => import('@/views/pages/404'), |
|
|
|
name: '404', |
|
|
|
meta: { title: '404未找到' }, |
|
|
|
beforeEnter (to, from, next) { |
|
|
|
beforeEnter(to, from, next) { |
|
|
|
// 拦截处理特殊业务场景 |
|
|
|
// 如果, 重定向路由包含__双下划线, 为临时添加路由 |
|
|
|
if (/__.*/.test(to.redirectedFrom)) { |
|
|
@@ -43,7 +44,7 @@ export const moduleRoutes = { |
|
|
|
] |
|
|
|
} |
|
|
|
|
|
|
|
export function addDynamicRoute (routeParams, router) { |
|
|
|
export function addDynamicRoute(routeParams, router) { |
|
|
|
// 组装路由名称, 并判断是否已添加, 如是: 则直接跳转 |
|
|
|
var routeName = routeParams.routeName |
|
|
|
var dynamicRoute = window.SITE_CONFIG['dynamicRoutes'].filter(item => item.name === routeName)[0] |
|
|
@@ -82,27 +83,39 @@ router.beforeEach((to, from, next) => { |
|
|
|
// 添加动态(菜单)路由 |
|
|
|
// 已添加或者当前路由为页面路由, 可直接访问 |
|
|
|
if (window.SITE_CONFIG['dynamicMenuRoutesHasAdded'] || fnCurrentRouteIsPageRoute(to, pageRoutes)) { |
|
|
|
// 如果是在已认证的情况下直接访问登录界面 |
|
|
|
if (to.name === 'login') { |
|
|
|
return next('/') |
|
|
|
} |
|
|
|
return next() |
|
|
|
} |
|
|
|
// 获取字典列表, 添加并全局变量保存 |
|
|
|
http.get('/sys/dict/type/all').then(({ data: res }) => { |
|
|
|
if (res.code !== 0) { |
|
|
|
return |
|
|
|
} |
|
|
|
window.SITE_CONFIG['dictList'] = res.data |
|
|
|
}).catch(() => {}) |
|
|
|
// 获取菜单列表, 添加并全局变量保存 |
|
|
|
http.get('/sys/menu/nav').then(({ data: res }) => { |
|
|
|
if (res.code !== 0) { |
|
|
|
Vue.prototype.$message.error(res.msg) |
|
|
|
return next({ name: 'login' }) |
|
|
|
} |
|
|
|
window.SITE_CONFIG['menuList'] = res.data |
|
|
|
fnAddDynamicMenuRoutes(window.SITE_CONFIG['menuList']) |
|
|
|
next({ ...to, replace: true }) |
|
|
|
}).catch(() => { |
|
|
|
|
|
|
|
if (isAuthentcated()) { |
|
|
|
// 获取字典列表, 添加并全局变量保存 |
|
|
|
http.get('/sys/dict/type/all').then(({ data: res }) => { |
|
|
|
if (res.code !== 0) { |
|
|
|
return |
|
|
|
} |
|
|
|
window.SITE_CONFIG['dictList'] = res.data |
|
|
|
}).catch(() => { }) |
|
|
|
|
|
|
|
// 获取菜单列表, 添加并全局变量保存 |
|
|
|
http.get('/sys/menu/nav').then(({ data: res }) => { |
|
|
|
if (res.code !== 0) { |
|
|
|
Vue.prototype.$message.error(res.msg) |
|
|
|
return next({ name: 'login' }) |
|
|
|
} |
|
|
|
window.SITE_CONFIG['menuList'] = res.data |
|
|
|
fnAddDynamicMenuRoutes(window.SITE_CONFIG['menuList']) |
|
|
|
next({ ...to, replace: true }) |
|
|
|
}).catch(() => { |
|
|
|
next({ name: 'login' }) |
|
|
|
}) |
|
|
|
|
|
|
|
} else { |
|
|
|
next({ name: 'login' }) |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
/** |
|
|
@@ -110,7 +123,7 @@ router.beforeEach((to, from, next) => { |
|
|
|
* @param {*} route 当前路由 |
|
|
|
* @param {*} pageRoutes 页面路由 |
|
|
|
*/ |
|
|
|
function fnCurrentRouteIsPageRoute (route, pageRoutes = []) { |
|
|
|
function fnCurrentRouteIsPageRoute(route, pageRoutes = []) { |
|
|
|
var temp = [] |
|
|
|
for (var i = 0; i < pageRoutes.length; i++) { |
|
|
|
if (route.path === pageRoutes[i].path) { |
|
|
@@ -128,7 +141,7 @@ function fnCurrentRouteIsPageRoute (route, pageRoutes = []) { |
|
|
|
* @param {*} menuList 菜单列表 |
|
|
|
* @param {*} routes 递归创建的动态(菜单)路由 |
|
|
|
*/ |
|
|
|
function fnAddDynamicMenuRoutes (menuList = [], routes = []) { |
|
|
|
function fnAddDynamicMenuRoutes(menuList = [], routes = []) { |
|
|
|
var temp = [] |
|
|
|
for (var i = 0; i < menuList.length; i++) { |
|
|
|
if (menuList[i].children && menuList[i].children.length >= 1) { |
|
|
|