遍历菜单栏-vue2项目element-ui组件

后台返回的数据格式: 

this.menuslist = res.menus;
 <el-menu
          :collapse="isCollapse"
          :collapse-transition="false"
          background-color="#000f16"
          unique-opened
          router
          :default-active="$router.currentRoute.path"
          style="min-height: 100vh"
          @select="changeSidebar"
          text-color="#fff"
          active-text-color="#fff"
        >
          <div class="menuLeft">
            <div class="menu-nav-header">
              <el-image
                style="width: 22px; height: 22px; border-radius: 2px;" :src="logo"></el-image>
              <span style="margin-left: 10px">美育云管理后台</span>
            </div>
          </div>
          <!-- 遍历菜单 -->
          <template v-for="item in menuslist">
            <!-- 含有子菜单 -->
            <template v-if="item.childMenus && item.childMenus.length > 0">
              <!-- 第一层 含有子菜单菜单 -->
              <el-submenu :index="item.url + ''" :key="item.url">
                <template slot="title">
                  <i :class="item.icon"></i>
                  <span slot="title">{{ item.name }}</span>
                </template>
                <!-- 第二层 子菜单遍历 -->
                <template v-for="subItem in item.childMenus">
                  <!-- 第三层 子菜单含有子菜单 -->
                  <el-submenu
                    v-if="subItem.childMenus && subItem.childMenus.length > 0"
                    :index="subItem.url + ''"
                    :key="subItem.url"
                  >
                    <template slot="title">
                      <i :class="subItem.icon"></i>
                      <span slot="title">{{ subItem.name }}</span>
                    </template>

                    <el-menu-item
                      v-for="(threeItem, i) in subItem.childMenus"
                      :key="i"
                      :index="threeItem.url + ''"
                    >
                      <i :class="threeItem.icon"></i>
                      <span>{{ threeItem.name }}</span>
                    </el-menu-item>
                  </el-submenu>
                  <!-- 子菜单不含子菜单 -->
                  <el-menu-item
                    v-else
                    :index="subItem.url + ''"
                    :key="subItem.url"
                  >
                    <i :class="subItem.icon"></i>
                    <span slot="title">{{ subItem.name }}</span>
                  </el-menu-item>
                </template>
              </el-submenu>
            </template>
            <!-- 第一层 不含子菜单  -->
            <template v-else>
              <el-menu-item :index="item.url + ''" :key="item.url">
                <i :class="item.icon"></i>
                <span slot="title">{{ item.name }}</span>
              </el-menu-item>
            </template>
          </template>
        </el-menu>
 changeSidebar(path) {
      this.$router.push(path);
    },

路由的配置router:

 {
        path: '/vueLayout',
        name: 'vueLayout',
        redirect: '/console',
        component: Layout,
        children: [
            {
                path: "/console",
                name: "console",
                component: () =>
                    import('../pages/console/console.vue'),
                meta: {
                    title: "控制台"
                },
            },
            {
                path: "/customer/index",
                name: "customer",
                component: () =>
                    import('../pages/customer/index.vue'),
                meta: {
                    title: "会员"
                },
            },
            {
                path: "/company/index",
                name: "company",
                component: () =>
                    import('../pages/company/index.vue'),
                meta: {
                    title: "渠道管理"
                },
            },
            {
                path: "/company/audit",
                name: "audit",
                component: () =>
                    import('../pages/company/audit.vue'),
                meta: {
                    title: "渠道审核"
                },
            },
            {
                path: "/company/user",
                name: "user",
                component: () =>
                    import('../pages/company/user.vue'),
                meta: {
                    title: "渠道管理人员"
                },
            },
            {
                path: "/event/project",
                name: "event",
                component: () =>
                    import('../pages/event/project.vue'),
                meta: {
                    title: "项目管理"
                },
            },
            {
                path: "/event/index",
                name: "index",
                component: () =>
                    import('../pages/event/index.vue'),
                meta: {
                    title: "赛事管理"
                },
            },
            {
                path: "/event/sign",
                name: "sign",
                component: () =>
                    import('../pages/event/sign.vue'),
                meta: {
                    title: "报名管理"
                },
            },
            {
                path: "/event/level",
                name: "level",
                component: () =>
                    import('../pages/event/level.vue'),
                meta: {
                    title: "层级管理"
                },
            },
            {
                path: "/event/major",
                name: "major",
                component: () =>
                    import('../pages/event/major.vue'),
                meta: {
                    title: "专业管理"
                },
            },

            {
                path: "/event/company",
                name: "major",
                component: () =>
                    import('../pages/event/company.vue'),
                meta: {
                    title: "渠道管理"
                },
            },
            {
                path: "/order/index",
                name: "order",
                component: () =>
                    import('../pages/order/index.vue'),
                meta: {
                    title: "订单管理"
                },
            },
            {
                path: "/order/settlement",
                name: "settlement",
                component: () =>
                    import('../pages/order/settlement.vue'),
                meta: {
                    title: "结账管理"
                },
            },
            {
                path: "/sys/baseconfig",
                name: "baseconfig",
                component: () =>
                    import('../pages/sys/baseconfig.vue'),
                meta: {
                    title: "参数配置"
                },
            },

            {
                path: "/sys/payconfig",
                name: "payconfig",
                component: () =>
                    import('../pages/sys/payconfig.vue'),
                meta: {
                    title: "支付配置"
                },
            },
            {
                path: "/sys/role",
                name: "role",
                component: () =>
                    import('../pages/sys/role.vue'),
                meta: {
                    title: "角色管理"
                },
            },
            {
                path: "/sys/user",
                name: "user",
                component: () =>
                    import('../pages/sys/user.vue'),
                meta: {
                    title: "人员管理"
                },
            },
        ]
    },

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值