element ui 菜单组件实现多级菜单渲染

因为element ui 的模板不支持多级渲染菜单,需要我们自己去重构:

那就开始吧:我的这个需要通过路由传参,所以做了点修改:

1. 新建一个组件 test.vue:上代码:

<template>

  <div class="navMenu">

    <label v-for="navMenu in navMenus" :key="navMenu.entity.Id">

      <!-- <i class="el-icon-location"></i> --> 

      <div v-if="navMenu.childs==null&&navMenu.entity" :key="navMenu.entity.Id" :data="navMenu" >  //判断是否有子路由,

        <el-menu-item >

  <router-link :to="{path:navMenu.entity.url,query:{ID:navMenu.entity.Id}}">  //不需要组件提供的路由模式,用路由传参传入对应参数

            <span class="item_title">{{navMenu.entity.label}}</span>  //菜单名称

          </router-link>

          </el-menu-item>

      </div>       

      <el-submenu v-if="navMenu.childs&&navMenu.entity"

                  :key="navMenu.entity.Id" :data="navMenu" :index="navMenu.entity.Id" >  //判断是否有子路由,

        <template slot="title">

        <i class="el-icon-location"></i>  //图标显示,可根据返回的路径动态渲染

          <span class="item_title"> {{navMenu.entity.label}}</span>  //菜单名称

        </template>

        <NavMenu :navMenus="navMenu.childs"></NavMenu>  //重新调用组件,迭代

      </el-submenu>

    </label>

  </div>

</template>

<script>

  export default {

    name: 'NavMenu',

    props: ['navMenus'],

    data() {

      return {}

    },

    mounted(){

        console.log(this.navMenus)

    },

    methods: {}

  }

</script>

<style scoped>

  .navMenu{

    width: 100%;

    height: 100%;

    background: #00142a !important;

  }

.item_title{

  color:#fff ;

  background-color: #00142a !important

}

</style>

<style>

.el-submenu .el-submenu__title{

    background-color: #00142a !important;

    color:#eee !important;

  text-align: left !important;

  }

.el-submenu .el-menu-item{

  color:#eee !important;

  background-color: #00142a !important;

}

</style>

2 . 在外部页面引用:

 <div class="forSideHeight" style="overflow-y: scroll;">

    <el-menu

    default-active="2"

    style="padding-bottom: 90px;"

    class="el-menu-vertical-demo"

    @open="handleOpen"   

    @close="handleClose"

    router

    background-color="rgba(0, 21, 41, 1)"

    text-color="#fff"

    active-text-color="#ffd04b"

    active-background-color="#ffd04b">

     <NavMenu :navMenus="leftMenus.childs"></NavMenu>

        </el-menu>

      </div> 


3.这里所用到的数据格式,最好让后端配合:

{

    "entity": null,

    "childs": [{

        "entity": {

          "Id": '42',

          'PicName': '#',

          "PicUrl": '#',

          "label": "交易管理",

          "num": "1",

          "remark": null,

          "url": ""

        },

        "childs": [{

          "entity": {

            "Id": '43',

            'PicName': '#',

            "PicUrl": '#',

            "label": "交易明细",

            "num": null,

            "remark": null,

            "url": "/homedetail"

          },

          "childs": null

        }, ]

      },

      {

        "entity": {

          "Id": '44',

          'PicName': '#',

          "PicUrl": '#',

          "label": "商户管理",

          "num": "2",

          "remark": null,

          "url": ""

        },

        "childs": [{

            "entity": {

              "Id": '45',

              'PicName': '#',

              "PicUrl": '#',

              "label": "商户信息(直营)",

              "num": null,

              "remark": null,

              "url": "/storelist"

            },

            "childs": null

          },

          {

            "entity": {

              "Id": '46',

              'PicName': '#',

              "PicUrl": '#',

              "label": "商户信息(所有)",

              "num": null,

              "remark": null,

              "url": "/storelist2"

            },

            "childs": null

          },

        ]

      },

      {

        "entity": {

          "Id": '47',

          'PicName': '#',

          "PicUrl": '#',

          "label": "代理商管理",

          "num": "3",

          "remark": null,

          "url": ""

        },

        "childs": [{

            "entity": {

              "Id": '48',

              'PicName': '#',

              "PicUrl": '#',

              "label": "代理商列表",

              "num": null,

              "remark": null,

              "url": "/agentpage"

            },

            "childs": null

          },

          {

            "entity": {

              "Id": '49',

              'PicName': '#',

              "PicUrl": '#',

              "label": "提现审批",

              "num": null,

              "remark": null,

              "url": "/approval"

            },

            "childs": null

          },

        ]

      },

      {

        "entity": {

          "Id": '50',

          'PicName': '#',

          "PicUrl": '#',

          "label": "市场管理",

          "num": "4",

          "remark": null,

          "url": ""

        },

        "childs": [{

            "entity": {

              "Id": '51',

              'PicName': '#',

              "PicUrl": '#',

              "label": "业务员管理(直营)",

              "num": null,

              "remark": null,

              "url": "/salesman"

            },

            "childs": null

          },

          {

            "entity": {

              "Id": '52',

              'PicName': '#',

              "PicUrl": '#',

              "label": "业务员管理(所有)",

              "num": null,

              "remark": null,

              "url": "/salesman2"

            },

            "childs": null

          },

        ]

      },

      {

        "entity": {

          "Id": '53',

          'PicName': '#',

          "PicUrl": '#',

          "label": "二维码管理",

          "num": "5",

          "remark": null,

          "url": ""

        },

        "childs": [{

            "entity": {

              "Id": '54',

              'PicName': '#',

              "PicUrl": '#',

              "label": "添加二维码",

              "num": null,

              "remark": null,

              "url": "/addqrcode"

            },

            "childs": null

          },

          {

            "entity": {

              "Id": '55',

              'PicName': '#',

              "PicUrl": '#',

              "label": "直营二维码",

              "num": null,

              "remark": null,

              "url": "/qrcodelist"

            },

            "childs": null

          },

          {

            "entity": {

              "Id": '56',

              'PicName': '#',

              "PicUrl": '#',

              "label": "所有二维码",

              "num": null,

              "remark": null,

              "url": "/qrcodelist2"

            },

            "childs": null

          },

        ]

      },

      {

        "entity": {

          "Id": '57',

          'PicName': '#',

          "PicUrl": '#',

          "label": "设备码管理",

          "num": "6",

          "remark": null,

          "url": ""

        },

        "childs": [{

            "entity": {

              "Id": '58',

              'PicName': '#',

              "PicUrl": '#',

              "label": "添加设备码",

              "num": null,

              "remark": null,

              "url": "/adddevice"

            },

            "childs": null

          },

          {

            "entity": {

              "Id": '59',

              'PicName': '#',

              "PicUrl": '#',

              "label": "直营设备码",

              "num": null,

              "remark": null,

              "url": "/devicecodelist"

            },

            "childs": null

          },

          {

            "entity": {

              "Id": '60',

              'PicName': '#',

              "PicUrl": '#',

              "label": "所有设备码",

              "num": null,

              "remark": null,

              "url": "/devicecodelist2"

            },

            "childs": null

          },

        ]

      },

      {

        "entity": {

          "Id": '61',

          'PicName': '#',

          "PicUrl": '#',

          "label": "权限管理",

          "num": "7",

          "remark": null,

          "url": ""

        },

        "childs": [{

            "entity": {

              "Id": '62',

              'PicName': '#',

              "PicUrl": '#',

              "label": "账号管理",

              "num": null,

              "remark": null,

              "url": "/usersupervise"

            },

            "childs": null

          },

          {

            "entity": {

              "Id": '63',

              'PicName': '#',

              "PicUrl": '#',

              "label": "权限管理",

              "num": "7",

              "remark": null,

              "url": "/jurisdiction"

            },

            "childs": null

          },

        ]

      },

      {

        "entity": {

          "Id": '64',

          'PicName': '#',

          "PicUrl": '#',

          "label": "系统参数管理",

          "num": "8",

          "remark": null,

          "url": ""

        },

        "childs": [{

          "entity": {

            "Id": '65',

            'PicName': '#',

            "PicUrl": '#',

            "label": "系统参数",

            "num": null,

            "remark": null,

            "url": "/system"

          },

          "childs": null

        }]

      },

      {

        "entity": {

          "Id": '75',

          'PicName': '#',

          "PicUrl": '#',

          "label": "菜单管理",

          "num": "9",

          "remark": null,

          "url": ""

        },

        "childs": [{

          "entity": {

            "Id": '76',

            'PicName': '#',

            "PicUrl": '#',

            "label": "菜单功能管理",

            "num": null,

            "remark": null,

            "url": "/menu"

          },

          "childs": null

        }]

      },

      {

        "entity": {

          "Id": '88',

          'PicName': '#',

          "PicUrl": '#',

          "label": "测试",

          "num": "10",

          "remark": null,

          "url": ""

        },

        "childs": [{

          "entity": {

            "Id": '89',

            'PicName': '',

            "PicUrl": '',

            "label": "测试11",

            "num": null,

            "remark": '',

            "url": "/ab"

          },

          "childs": [{

            "entity": {

              "Id": '90',

              'PicName': '',

              "PicUrl": '',

              "label": "测dfgdfgdfg试22",

              "num": null,

              "remark": '',

              "url": "/aps"

            },

            "childs": [

         {

              "entity": {

                "Id": '91',

                'PicName': '',

                "PicUrl": '',

                "label": "测dfgdgdfgdg试33",

                "num": null,

                "remark": '',

                "url": "/ass"

              },

              "childs": [

            {

              "entity": {

                "Id": '92',

                'PicName': '',

                "PicUrl": '',

                "label": "测试3jodfguhiu33",

                "num": null,

                "remark": '',

                "url": "/ass5"

              },

              "childs": null

       }

        ]

       }

       ]

          }]

        }]

      },

    ]

  }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容