| | |
| | | return new Promise(resolve => {
|
| | | // 向后端请求路由数据
|
| | | getRouters().then(res => {
|
| | | const sdata = JSON.parse(JSON.stringify(res.data))
|
| | | const rdata = JSON.parse(JSON.stringify(res.data))
|
| | | const defaultData = JSON.parse(JSON.stringify(res.data))
|
| | | const data = filterBadRoutes(JSON.parse(JSON.stringify(res.data)))
|
| | | const sdata = JSON.parse(JSON.stringify(data))
|
| | | const rdata = JSON.parse(JSON.stringify(data))
|
| | | const defaultData = JSON.parse(JSON.stringify(data))
|
| | | const sidebarRoutes = filterAsyncRouter(sdata)
|
| | | const rewriteRoutes = filterAsyncRouter(rdata, false, true)
|
| | | const defaultRoutes = filterAsyncRouter(defaultData)
|
| | |
| | | }
|
| | | })
|
| | |
|
| | | // 剔除后端返回的无 path 菜单(如地址只填 https:// 的内链菜单),避免 addRoute 与侧边栏渲染报错
|
| | | function filterBadRoutes(routes) {
|
| | | return routes.filter(route => {
|
| | | if (!route.path) {
|
| | | return false
|
| | | }
|
| | | if (route.children && route.children.length) {
|
| | | route.children = filterBadRoutes(route.children)
|
| | | }
|
| | | return true
|
| | | })
|
| | | }
|
| | |
|
| | | // 遍历后台传来的路由字符串,转换为组件对象
|
| | | function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
|
| | | return asyncRouterMap.filter(route => {
|