Commit 6de32c6d authored by trumansdo's avatar trumansdo
Browse files

改变目录结构,以防止ide混合打开前端项目,导致误操作改变前端项目的格式


Signed-off-by: default avatartrumansdo <1012243881@qq.com>
parent afdf4eec
import { constantRoutes } from '@/router'
import { getRoutes } from '@/api/role'
import { asyncRoutesMap } from '@/router/route_map'
import { deepClone, objectMerge } from '@/utils/index'
/**
* Use meta.role to determine if the current user has permission
......@@ -16,23 +18,47 @@ function hasPermission(roles, route) {
/**
* Filter asynchronous routing tables by recursion
* 通过前端保留的路由映射表来生成路由表
* 将前端路由表对应的路由覆盖至后端路由中,以后端路由表为主
* @param routes asyncRoutes
* @param roles
* @param roles 后台获取的个人用户信息携带的roles
*/
export function filterAsyncRoutes(routes, roles) {
const res = []
routes.forEach(route => {
const tmp = { ...route }
if (hasPermission(roles, tmp)) {
if (tmp.children) {
tmp.children = filterAsyncRoutes(tmp.children, roles)
export function filterAsyncRoutes(routesMap, routes, roles) {
let resRoutes = []
for (let route of routes) {
// 对象展开符也常用于浅拷贝
let tempRoute = { ...route }
let tempRouteMap
for (let rm of routesMap) {
if (!rm.name || !route.name | !rm.path | !route.path) {
console.error(`检查路由表中 ${rm.name} 信息`)
continue
}
res.push(tmp)
if (rm.name === route.name) {
tempRouteMap = { ...rm }
break
}
})
return res
}
debugger
if (tempRouteMap && hasPermission(roles, tempRoute)) {
if (tempRoute.children) {
tempRoute.children = filterAsyncRoutes(
tempRouteMap.children,
tempRoute.children,
roles
)
}
// 以后台路由表优先,相同属性覆盖前台路由映射.除去路由路径交由前台控制
// 因为path有可能涉及到动态路由的书写 也就是类似: /user/:id 。
// 这种path可以在组件中读取到传递的id,比较方便,所以交给前端控制。
let tempPath = tempRouteMap.path
tempRouteMap = objectMerge(tempRouteMap, tempRoute)
tempRouteMap.path = tempPath
resRoutes.push(tempRouteMap)
}
}
debugger
return resRoutes
}
const state = {
......@@ -54,9 +80,11 @@ const actions = {
.then(response => {
let accessedRoutes,
asyncRoutes = response.data
accessedRoutes = filterAsyncRoutes(asyncRoutes, roles)
debugger
accessedRoutes = filterAsyncRoutes(
deepClone(asyncRoutesMap),
asyncRoutes,
roles
)
commit('SET_ROUTES', accessedRoutes)
resolve(accessedRoutes)
})
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment