修改:解析动态路由

This commit is contained in:
jmal 2021-01-11 23:17:50 +08:00
parent cbde48ba76
commit a5335b9e9c
5 changed files with 33 additions and 9 deletions

View File

@ -61,11 +61,12 @@ router.beforeEach(async(to, from, next) => {
function setMenuList(next, to){ function setMenuList(next, to){
if(store.getters.menuList.length === 0){ if(store.getters.menuList.length === 0){
store.dispatch('user/setMenuList').then(() => { store.dispatch('user/setMenuList').then((res) => {
if(window.location.pathname === '/login'){ const to = window.location.pathname
next({path: store.getters.menuList[0].path}) if(findPath(res.data, to)){
next({path: to})
} else { } else {
next({path: window.location.pathname}) next({path: store.getters.menuList[0].path})
} }
}) })
} else { } else {
@ -73,6 +74,27 @@ function setMenuList(next, to){
} }
} }
/***
* 查找菜单里有没有该路径
* @param menuList
* @param to 该路径(当前路径)
* @param parentPath
* @returns {boolean}
*/
function findPath(menuList, to, parentPath){
for( let i = 0; i < menuList.length - 1; i++) {
const menu = menuList[i]
if(menu.children && menu.children.length > 0){
return findPath(menu.children, to, menu.path)
}
if(parentPath){
menu.path = parentPath + '/' + menu.path
}
if(menu.path === to) return true
}
return false
}
router.afterEach(() => { router.afterEach(() => {
// 完成进度条 // 完成进度条
NProgress.done() NProgress.done()

View File

@ -341,12 +341,13 @@ const router = createRouter()
// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465 // Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter(params) { export function resetRouter(params) {
router.options.routes = []
const newRouter = createRouter() const newRouter = createRouter()
// router.matcher = newRouter.matcher // reset router
if(params){ if(params){
newRouter.addRoutes(params) newRouter.addRoutes(params)
} }
newRouter.addRoutes(dynamicRouters) newRouter.addRoutes(dynamicRouters)
router.matcher = newRouter.matcher // reset router
} }
router.addRoutes(dynamicRouters) router.addRoutes(dynamicRouters)
export default router export default router

View File

@ -2,7 +2,6 @@ import { login, logout, getInfo } from '@/api/user'
import menuApi from '@/api/menu' import menuApi from '@/api/menu'
import { getToken, setToken, getConsumerId, setConsumerId, removeToken, removeConsumerId , setRememberName, removeRememberName } from '@/utils/auth' import { getToken, setToken, getConsumerId, setConsumerId, removeToken, removeConsumerId , setRememberName, removeRememberName } from '@/utils/auth'
import { resetRouter } from '@/router' import { resetRouter } from '@/router'
import getters from "@/store/getters"
import router from '@/router' import router from '@/router'
import Layout from '@/layout' import Layout from '@/layout'
import ParentView from '@/components/ParentView' import ParentView from '@/components/ParentView'
@ -47,12 +46,11 @@ const mutations = {
const actions = { const actions = {
async setMenuList({ commit, state }) { async setMenuList({ commit, state }) {
let noeFound = [];
return new Promise( (resolve,reject) => { return new Promise( (resolve,reject) => {
menuApi.menuTree({userId: getters.userId}).then((res) => { menuApi.menuTree({userId: state.userId}).then((res) => {
state.menuList = getMenuTree(res.data); state.menuList = getMenuTree(res.data);
commit('SET_MENU_LIST',state.menuList); commit('SET_MENU_LIST',state.menuList);
router.addRoutes(state.menuList) resetRouter(state.menuList)
router.options.routes = router.options.routes.concat(state.menuList); router.options.routes = router.options.routes.concat(state.menuList);
resolve(res) resolve(res)
}).catch(error => { }).catch(error => {

View File

@ -241,6 +241,8 @@ export default {
data.append(formKey,this.form[formKey]) data.append(formKey,this.form[formKey])
} }
} }
data.delete("createTime")
data.delete("updateTime")
return data return data
}, },
// 保存 // 保存

View File

@ -207,6 +207,7 @@ export default {
} }
} }
data.delete("createTime") data.delete("createTime")
data.delete("updateTime")
return data return data
}, },
// 保存 // 保存