vue2功能菜单权限

1.后台提供菜单数据,前端利用element-ui得menu组件渲染

1.1封装菜单组件

//MenuTree.vue

 <template v-for="(items, index) in tree">
      <el-submenu v-if="items.children.length > 0 && items.children" :index="items.value" :key="items.value"> <!--一级菜单是否含有子菜单-->
        <template slot="title">
          <img :src="require(`../assets/${items.value}.png`)" alt="" v-if="items.icon" class="itemimg" /> <!--菜单图标-->
          <span class="itemtitle">{{ items.label }}</span>
        </template>
        <menu-tree :tree="items.children"></menu-tree><!--子菜单-->
      </el-submenu>
<!--只有一级菜单-->
      <el-menu-item v-else :index="items.value" :key="items.value">
        <img :src="require(`../assets/${items.value}.png`)" alt="" v-if="items.icon" class="itemimg" />
        <span slot="title" class="itemtitle">{{ items.label }}</span>
      </el-menu-item>
    </template>


//js
export default {
  name: "MenuTree",
  props: {
    tree: [],
  },
};

1.2循环菜单组件渲染

//nav组件
 <el-menu active-text-color="#fff" @open="handleOpen" router :unique-opened="false" :collapse-transition="false"
            :collapse="isCollapse" mode="vertical" @close="handleClose" class="menus" :default-active="activeMenu">
            <menu-tree :tree='menuChange'></menu-tree>
        </el-menu>

//menuChange:获取菜单数据方法
//菜单数据结构如下
                    {
                        "label": "菜单名称一",
                        "value": "diviconfirm",
                        "id": "diviconfirm",
                        "icon": "",
                        "children": [
                                 {
                        "label": "菜单名称二",
                        "value": "diviconfirm2",
                        "id": "diviconfirm2",
                        "icon": "",
                        "children": []
                                   },
                         ]
                    },

label:菜单名称

children:子菜单

ico:菜单图标

value:可作为判断路由是否合法,权限设置。

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值