vue-element-admin改为从后台获取菜单

一、修改文件\src\router\index.js

文件的asyncRoutes清理为

export const asyncRoutes = [
  { path: '*', redirect: '/404', hidden: true }
]

二、修改src\store\modules\permission.js

增加 

import { getMenu } from '@/api/user'

复制并注释 const actions = {

新的

const actions = {
  generateRoutes({ commit }, roles) {
    return new Promise(resolve => {
      const loadMenuData = []
      // 先查询后台并返回左侧菜单数据并把数据添加到路由
      getMenu(state.token).then(response => {
        let data = response
        if (response.code !== 20000) {
          alert(JSON.stringify('菜单数据加载异常'))
          // throw new Error('菜单数据加载异常')
        } else {
          data = response.data
          Object.assign(loadMenuData, data)
          const tempAsyncRoutes = Object.assign([], asyncRoutes)
          generaMenu(tempAsyncRoutes, loadMenuData)
          let accessedRoutes
          if (roles.includes('admin')) {
            accessedRoutes = tempAsyncRoutes || []
          } else {
            accessedRoutes = filterAsyncRoutes(tempAsyncRoutes, roles)
          }
          commit('SET_ROUTES', accessedRoutes)
          resolve(accessedRoutes)
        }
      }).catch(error => {
        console.log(error)
      })
    })
  }
}

posted @ 2023-02-19 14:09  黑水滴  阅读(115)  评论(0编辑  收藏  举报