角色权限的设置

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>
相关推荐
rzl0210 分钟前
java web5(黑马)
java·开发语言·前端
Amy.Wang12 分钟前
前端如何实现电子签名
前端·javascript·html5
海天胜景13 分钟前
vue3 el-table 行筛选 设置为单选
javascript·vue.js·elementui
今天又在摸鱼14 分钟前
Vue3-组件化-Vue核心思想之一
前端·javascript·vue.js
蓝婷儿16 分钟前
每天一个前端小知识 Day 21 - 浏览器兼容性与 Polyfill 策略
前端
百锦再18 分钟前
Vue中对象赋值问题:对象引用被保留,仅部分属性被覆盖
前端·javascript·vue.js·vue·web·reactive·ref
jingling55523 分钟前
面试版-前端开发核心知识
开发语言·前端·javascript·vue.js·面试·前端框架
拾光拾趣录28 分钟前
CSS 深入解析:提升网页样式技巧与常见问题解决方案
前端·css
莫空000029 分钟前
深入理解JavaScript属性描述符:从数据属性到存取器属性
前端·面试
guojl29 分钟前
深度剖析Kafka读写机制
前端