123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- import { asyncRoutes, constantRoutes } from '@/router'
- import { getSilder } from '@/api/silder'
- import { removeToken } from '@/utils/auth'
- import Layout from '@/layout'
- /**
- * 遍历接口菜单添加页面
- * @param asyncRoutes
- * @param getMenu
- */
- function generateAsyncRouter (asyncRoutes, data) {
- if (!data) {
- return []
- }
- data.forEach((item, index) => {
- // console.log(item);
- item.component = asyncRoutes[item.component]
- if (item.children && item.children.length > 0) {
- generateAsyncRouter(asyncRoutes, item.children)
- }
- })
- return data
- }
- /**
- * 判断平台端添加首页
- * @param type
- */
- // const type = getters.type
- const state = {
- routes: [],
- addRoutes: [],
- type: '' // 登录的平台类型
- }
- const mutations = {
- SET_ROUTES: (state, routes) => {
- state.addRoutes = routes
- state.routes = constantRoutes.concat(routes)
- }
- }
- // 递归遍历数组
- function recursionRouter (arr) {
- let newArr = arr.map(item => {
- let obj = {};
- obj.component = item.component;
- obj.hidden = false;
- obj.path = item.path;
- obj.meta = { 'title': item.name, 'icon': item.icon }
- if (item.sysMenus && item.sysMenus.length > 0) {
- obj.children = recursionRouter(item.sysMenus);
- }
- return obj
- })
- return newArr
- }
- const actions = {
- generateRoutes ({ commit }, roles) {
- return new Promise(resolve => {
- // 获取接口返回的权限菜单
- getSilder().then(res => {
- // console.log(res.data);
- // 这里递归 整体修改路由数据
- // console.log(res.data.rows);
- // let newData = res.data.map(item => {
- // let obj = {};
- // obj.component = item.component;
- // obj.hidden = false;
- // obj.path = item.path;
- // obj.meta = { 'title': item.name, 'icon': item.icon }
- // if (item.sysMenus && item.sysMenus.length > 0) {
- // obj.children = item.sysMenus.map(sub => {
- // let obj = {};
- // obj.component = sub.component;
- // obj.hidden = false;
- // obj.path = sub.path;
- // obj.meta = { 'title': sub.name, 'icon': sub.icon }
- // return obj
- // });
- // }
- // return obj
- // });
- // console.log(newData);
- let newData = recursionRouter(res.data);
- var accessedRoutes
- // 生成异步路由表
- accessedRoutes = generateAsyncRouter(asyncRoutes, newData)
- // var result = accessedRoutes.concat({ path: '*', redirect: '/404', hidden: true })
- commit('SET_ROUTES', accessedRoutes)
- resolve(accessedRoutes)
- })
- })
- }
- }
- export default {
- namespaced: true,
- state,
- mutations,
- actions
- }
|