vue框架 element导航菜单el-submenu 简单使用方法--以侧边栏举例

1、目标

实现动态增删菜单栏的效果,所以要在数据库中建表

2 、建表

2.1、表样式

2.2、表数据

3、实体类

java 复制代码
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class PcMenu {
    private Integer id;
    private String name;//菜单名称
    private Integer parentId;//父级
    private String link;//前端链接
    private Integer status;//1:正常 0:禁用
    private String icon;//图标
    private List<PcMenu> childrenMenu;//子菜单
}

4、sql语句

xml 复制代码
 <select id="queryUserMenu" resultType="com.woniu.pc.entity.PcMenu">
    SELECT id, name, link, parentid, icon
    FROM t_pc_menu
</select>

5 、前端

xml 复制代码
<template>
  <el-container style="height: 100%" bcak>
    <el-header height="100px" style="background-color: cadetblue"> Header </el-header>
    <el-container>
      <el-aside width="200px" style="background-color: rgb(84, 92, 100)">
        <el-menu
          router
          class="el-menu-vertical-demo"
          background-color="#545c64"
          text-color="#fff"
          active-text-color="#ffd04b">
          <!-- 一级菜单循环体是el-submenu 二级菜单循环体是el-menu-item -->
          <!-- index  key 必须要转成字符串,不然控制台会报错-->
          <el-submenu :index="menu.id+''" v-for="menu in menuList" :key="menu.id">
            <template slot="title">
              <i :class="menu.icon"></i>
              <span>{{ menu.name }}</span>
            </template>
            <el-menu-item :index="c.link" v-for="c in menu.childrenMenu" :key="c.id+''">
              {{ c.name }}
            </el-menu-item>
          </el-submenu>
        </el-menu>
      </el-aside>
      <el-main style="background-color: rgb(255, 255, 255)">
        <router-view></router-view>
      </el-main>
    </el-container>
  </el-container>
</template>

<script>
  export default {
    data() {
      return {
        menuList: [],
      };
    },
    methods: {
      //查询用户拥有的菜单
      queryUserMenu() {
        this.$axios.get("api/employee/queryUserMenu").then((res) => {
          console.log(res.data);
          if (res.data.code == 200) {
            this.menuList = res.data.data;
          }
        });
      },
    },
    created() {
      this.queryUserMenu();
    },
  };
</script>

<style scope></style>
相关推荐
clawdashi27 分钟前
2026 办公 Agent 选型指南:按场景分五类,一次讲清
前端·人工智能
BreezeJiang33 分钟前
JWT 登录不是存个 token:React 鉴权真正要闭合的是一条数据流
javascript·react.js·axios
驳是33 分钟前
代码洁癖患者会喜欢的几款 CLI 小工具
前端
Csvn34 分钟前
🛋️ requestIdleCallback:把非关键任务塞进浏览器的"空闲时间",告别卡顿
前端
江华森35 分钟前
从 fork 到协程:一次完整的操作系统并发编程实操
前端·程序员
四千岁38 分钟前
稀疏向量BM25Retriever不支持中文怎么办?jieba来帮忙
前端·javascript·后端
这是个栗子41 分钟前
【JS代码分析】前端鉴权基础:Token 的本地存储与状态重置实践
开发语言·前端·javascript
颜进强42 分钟前
14 - OpenSpec 老页面改造骨架:定位 + 增量 + 回归三件套
前端·后端·ai编程
做前端的娜娜子43 分钟前
async/await 错误处理:try...catch vs .catch() 完全指南
前端·面试·掘金·金石计划
半个落月1 小时前
React 性能优化入门:用 memo 避免无关的子组件重复渲染
前端·react.js