角色权限的设置

1.先在登录页把角色存起来

2.然后分成普通管理员路由和超级管理员路由的动态路由

3.在导航栏这边接收循环路由以及文字等

4.给路由加属性看是否展示在导航栏ismenu

5.在templat标签上面循环

js 复制代码
<template>
  <div class="asders">
    <el-aside width="200px">
      <div class="boxbody">
        <div>源码外卖</div>
        <el-switch v-model="isCollapse" :active-value="true" :inactive-value="false"></el-switch>
      </div>

      <el-menu
        :collapse="isCollapse"
        router
        unique-opened
        :default-active="$router.path"
        class="el-menu-vertical-demo"
        background-color="rgba(220,38,38,0.2)"
        text-color="#fff"
        active-text-color="#ffd04b"
      >
      这里拿一个隐藏标签在上面循环
        <template v-for="(v,i) in routers">
        这个是一级菜单循环,v-if判断你的子标签只有一个  就用一级路由
          <el-menu-item :index="v.path" :key="i" v-if="v.children.length<=1">
            <i class="el-icon-menu"></i>
            <span slot="title">{{v.meta.title}}</span>
          </el-menu-item>


     这是二级路由他的子标签  超过一个 就可以用  所以用 v-else
          <el-submenu :index="v.path" v-else>
            <template slot="title">
              <i class="el-icon-location"></i>
              <span>{{v.meta.title}}</span>
            </template>
            
            这个返回出来的  就是 v.children里面的路由
            <el-menu-item-group>
              <el-menu-item
              
              v.children要过滤不然全都显示  
                v-for="(v2,i2) in v.children.filter(v=>v.ismenu)"
                :key="i2"
                :index="v2.path"
              >{{v2.meta.title}}</el-menu-item>
            </el-menu-item-group>
          </el-submenu>
        </template>
      </el-menu>
    </el-aside>
  </div>
</template>

<script>
import { showrouters } from "@/router/index";
export default {
  data() {
    return {
      isCollapse: false,
      routers: []
    };
  },
  methods: {
    change() {
      this.isCollapse = !this.isCollapse;
    },
    handleResize() {
      console.log(document.body.offsetWidth);
      if (document.body.offsetWidth <= 700) {
        this.isCollapse = true;
      } else {
        this.isCollapse = false;
      }
    }
  },
  created() {
    this.handleResize;
    window.addEventListener("resize", this.handleResize);
    this.routers = showrouters().filter(v => v.ismenu);
    console.log(this.routers);
  }
};
</script>

<style lang="scss" scoped>
.asders {
  height: 100%;
  background: url("../../assets/OIP-C.jpg") center, center/cover;
}
.el-menu {
  height: 100%;
  transition: all linear 0.3s;
}
.boxbody {
  height: 50px;
  display: flex;
  padding: 30px;
  align-items: center;

  background: url("../../assets/OIP-C.jpg") center center/cover;
  div {
    text-align: center;
    color: rgb(83, 50, 50);
    font-size: 18px;
    font-weight: bold;
  }
}
.el-aside {
  color: #333;
  text-align: center;
  line-height: 200px;
  height: 100%;
}
</style>
相关推荐
为美好的生活献上中指7 分钟前
java每日精进 5.11【WebSocket】
java·javascript·css·网络·sql·websocket·网络协议
augenstern41639 分钟前
webpack重构优化
前端·webpack·重构
海拥✘42 分钟前
CodeBuddy终极测评:中国版Cursor的开发革命(含安装指南+HTML游戏实战)
前端·游戏·html
寧笙(Lycode)1 小时前
React系列——HOC高阶组件的封装与使用
前端·react.js·前端框架
asqq81 小时前
CSS 中的 ::before 和 ::after 伪元素
前端·css
拖孩2 小时前
【Nova UI】十五、打造组件库之滚动条组件(上):滚动条组件的起步与进阶
前端·javascript·css·vue.js·ui组件库
苹果电脑的鑫鑫2 小时前
element中表格文字剧中可以使用的属性
javascript·vue.js·elementui
Hejjon2 小时前
Vue2 elementUI 二次封装命令式表单弹框组件
前端·vue.js
一丝晨光2 小时前
数值溢出保护?数值溢出应该是多少?Swift如何让整数计算溢出不抛出异常?类型最大值和最小值?
java·javascript·c++·rust·go·c·swift
小堃学编程3 小时前
前端学习(3)—— CSS实现热搜榜
前端·学习