zoukankan      html  css  js  c++  java
  • D2Admin 登录用户重新初始话右侧菜单

    背景

      最近用到D2Admin开发项目,用户登录菜单要根据用户角色权限获取,但是又不想用官网的方案(vue基于d2-admin的RBAC权限管理解决方案),所以自己加了个只修改menuAside的方案。方案如下:

     
    step 1. 在demo/src/api/modules/sys.user.api.js中
      export default 前新增:
    import util from '@/libs/util'
    import router from '@/router'
    const toLogin = () => {
      util.cookies.remove('token')
      util.cookies.remove('uuid')
      // 清空 vuex 用户信息
     // this.$store.dispatch('d2admin/user/set', {}, { root: true })
      router.push({ name: 'login' })
    }
    View Code
      export default 内新增:  
    ,
      getMenuList () {
        const token = util.cookies.get('token')
        if (token === undefined) {
          toLogin()
        }
        return request({
          url: '/demo/system/getMenuList',
          headers: {
            Authorization: token,
         },
          method: 'post',
          data: {}
        })
    View Code

    step 2. 在demo/src/store/modules/d2admin/modules/account.js中

      export default 前新增:

    import store from '@/store/index'
    import { menuHeader, menuAside } from '@/menu'
    
    // 右侧菜单数据处理
    const clearTreeChild = async (dataMap) => {
      dataMap.map((item,index)=>{
        // item.path 为空导致菜单全部收缩问题
        if(item.path === null || item.path === ''){
          item.path = 'd2-menu-empty-demo-' + index
        }
        // 包含children的菜单含下拉图标
        if(item.children == null || item.children.length == 0){
          delete item.children
        } else {
          clearTreeChild (item.children)
        }
      })
    }
    View Code

      export default 内方法‘async load ({ dispatch })’新增:

    1 const res = await api.getMenuList()
    2 //res.data内是menuAside格式的菜单数据
    3 clearTreeChild (res.data)
    4 //用户权限菜单合并固定菜单
    5 let allMenuAside = [...menuAside, ...res.data]
    6 store.commit('d2admin/menu/asideSet', allMenuAside)
    View Code

    注:项目右侧固定菜单为 demo/src/menu/index.js中menuAside,可根据实际情况自行删改

    相关资源:

    D2Admin的API文档地址: https://d2.pub/zh/doc/d2-admin/

     vue基于d2-admin的RBAC权限管理解决方案:https://github.com/wjkang/d2-admin-pm
     
     
    作  者:文静~
    出  处:https://www.cnblogs.com/tong2018/p/d2admin-menuAside.html
    关于博主:后端搬砖,业余前端。评论和私信会在第一时间回复。
    声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐】一下。您的鼓励是博主的最大动力!
     
     
     
  • 相关阅读:
    BZOJ2555 SubString(后缀自动机+LCT)
    Luogu4770 NOI2018你的名字(后缀自动机+线段树合并)
    Luogu5284 十二省联考2019字符串问题(后缀树+拓扑排序)
    Codeforces Round #557 Div. 1 based on Forethought Future Cup
    【JS】window.print打印指定内容
    【PHP】Thinkphp 七牛云API对接
    【JS】JS实现时间戳转换成普通时间
    【CSS】非常简单的css实现div悬浮页面底部
    【PHP】php中json_decode()和json_encode()
    【Linux】安装mysql之设置远程访问权限
  • 原文地址:https://www.cnblogs.com/tong2018/p/d2admin-menuAside.html
Copyright © 2011-2022 走看看