后台菜单数据递归展示

news2025/1/21 18:40:47

后台菜单数据递归展示

    • 效果示例图
    • aslide.vue
    • aslideItem.vue
    • menu

效果示例图

在这里插入图片描述

aslide.vue

<script setup>
	import {
		ref
	} from 'vue';
	const props = defineProps({
		isCollapse: {
			type: Boolean,
			default: false
		}
	});
	import AslideItem from "./aslideItem.vue"

	const defaultActive = ref('1');
	const menuList = ref([{
		id: 1,
		name: '地址管理',
		path: '',
		type: 'M',
		icon: '',
		children: [{
			id: 2,
			name: '地址列表',
			path: '',
			type: 'C',
			icon: ''
		}, {
			id: 3,
			name: '订单地址列表',
			path: '',
			type: 'C',
			icon: ''
		}, {
			id: 4,
			name: '商品地址管理',
			path: '',
			type: 'M',
			icon: '',
			children: [{
				id: 5,
				name: '商品地址列表',
				path: '',
				type: 'C',
				icon: ''
			}, {
				id: 6,
				name: '关联地址列表',
				path: '',
				type: 'C',
				icon: ''
			}, {
				id: 9,
				name: '数据管理',
				path: '',
				type: 'M',
				icon: '',
				children: [{
					id: 10,
					name: '数据列表',
					path: '',
					type: 'C',
					icon: ''
				}]
			}]
		}]
	}, {
		id: 7,
		name: '系统列表',
		path: '',
		type: 'C',
		icon: '',
	}, {
		id: 8,
		name: '用户列表',
		path: '',
		type: 'C',
		icon: '',
	}, {
		id: 11,
		name: '订单管理',
		path: '',
		type: "M",
		icon: '',
		children: []
	}])

	//点击-目录菜单
	const menuItemHandle = (row) => {
		defaultActive.value = row.id;
	}
</script>

<template>
	<el-menu :default-active="defaultActive.toString()" class="el-menu-vertical-demo" :collapse="isCollapse">
		<template v-for="item in menuList" :key="item.id">
			<AslideItem :item="item" @clickEvent="menuItemHandle" />
		</template>
	</el-menu>
</template>

<style lang="scss" scoped>
</style>

aslideItem.vue

<template>
	<template v-if="item.children">
		<el-sub-menu :index="item.id.toString()">
			<template #title>
				<el-icon>
					<location />
				</el-icon>
				<span>{{item.name}}</span>
			</template>
			<template v-for="child in item.children" :key="child.id">
				<AslideItem :item="child" @clickEvent="menuItemHandle" />
			</template>
		</el-sub-menu>
	</template>
	<template v-else>
		<el-menu-item :index="item.id.toString()" @click="menuItemHandle(item)">
			<el-icon>
				<Setting />
			</el-icon>
			<template #title>{{item.name}}</template>
		</el-menu-item>
	</template>
</template>

<script>
	export default {
		name: 'AslideItem',
		props: {
			item: {
				type: Object,
				default: () => {
					return {}
				}
			}
		},
		mounted() {

		},
		methods: {
			menuItemHandle(row) {
				this.$emit("clickEvent", row)
			}
		}
	}
</script>

<style lang="scss" scoped>
</style>

menu

<el-menu class="el-menu-vertical-demo">
		<el-sub-menu index="1">
			<template #title>
				<el-icon>
					<location />
				</el-icon>
				<span>地址管理</span>
			</template>
			<el-menu-item index="1-1" @click="menuItemHandle('1-1')">
				<el-icon>
					<Memo />
				</el-icon>
				<span>地址列表</span>
			</el-menu-item>
			<el-menu-item index="1-2" @click="menuItemHandle('1-2')">
				<el-icon>
					<Memo />
				</el-icon>
				<span>订单地址列表</span>
			</el-menu-item>
			<el-sub-menu index="1-3">
				<template #title>
					<el-icon>
						<Menu />
					</el-icon>
					<span>商品地址管理</span>
				</template>
				<el-menu-item index="1-3-1" @click="menuItemHandle('1-3-1')">
					<el-icon>
						<Memo />
					</el-icon>
					<span>商品地址列表</span>
				</el-menu-item>
				<el-menu-item index="1-3-2" @click="menuItemHandle('1-3-2')">
					<el-icon>
						<Memo />
					</el-icon>
					<span>关联地址列表</span>
				</el-menu-item>
			</el-sub-menu>
		</el-sub-menu>

		<el-menu-item index="2" @click="menuItemHandle('2')">
			<el-icon>
				<Setting />
			</el-icon>
			<template #title>系统管理</template>
		</el-menu-item>

		<el-menu-item index="3" @click="menuItemHandle('3')">
			<el-icon>
				<UserFilled />
			</el-icon>
			<template #title>用户管理</template>
		</el-menu-item>
</el-menu>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1681797.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JETBRAINS IDES 分享一个2099通用试用码!DataGrip 2024 版 ,支持一键升级

文章目录 废话不多说上教程&#xff1a;&#xff08;动画教程 图文教程&#xff09;一、动画教程激活 与 升级&#xff08;至最新版本&#xff09; 二、图文教程 &#xff08;推荐&#xff09;Stage 1.下载安装 toolbox-app&#xff08;全家桶管理工具&#xff09;Stage 2 : 下…

CST电磁仿真软件什么是Schematic?三维模型和电路协同仿真【小白必学教程】

什么是Schematic? 使用CST Design Studio进行的各种分析&#xff01; Schematic 进行三维仿真时&#xff0c;有时需要将3D模型和电路图放在一起进行仿真分析。比如需要天线和匹配电路协同仿真&#xff0c;两者构成完整的电路图可以系统地分析In/0ut特性。按下3D工作界面下方…

了解RFID技术如何改善危化品仓储管理效率

随着科学的发展&#xff0c;我国化工行业也迎来飞速进步的黄金时期&#xff0c;而生产加工快速化的同时也导致一些危险化学品的使用量与存储量不断增加。由于危险化学品种类较多&#xff0c;使用和存储的方法都不一样&#xff0c;还具有易燃、易爆、腐蚀、毒害等特性&#xff0…

c语言中数字字符串和数字互转

#include <getopt.h> #include <stdio.h> #include <stdlib.h>#define MAX_PATH 256 char filename[MAX_PATH 5]; int main(int argc, char** argv) {//数字字符串转数字const char* kk "689";int zhi atoi(kk) 8;//数字字符串转doubledoub…

面对《消费者告知法》严查与技术BUG频发,亚马逊卖家如何巧妙应对挑战?

五一假期期间&#xff0c;亚马逊大量发送《美国消费者告知法案》验证邮件通知&#xff0c;在这个本该是卖家们忙碌而喜悦的时刻&#xff0c;亚马逊平台上的卖家们却遭遇了一场前所未有的“灾难”——《消费者告知法》验证问题的爆发&#xff0c;以及随之而来的一系列技术BUG&am…

Linux ps命令详细参数

一、简介 在Linux系统中&#xff0c;ps(Process Status的缩写)命令常常用来用来列出系统中当前运行的进程。ps命令列出的是当前那些进程的快照&#xff0c;就是执行ps命令的那个时刻的那些进程&#xff0c;如果想要动态的显示进程信息&#xff0c;就可以使用top命令。要对进程…

java基础之对线程的理解

目录 程序、进程、线程 什么是进程&#xff1f; 什么是线程 线程与进程的区别&#xff1f; 二、多线程 实现多线程方式一&#xff1a;继承Thread类 实现多线程方式二&#xff1a;实现Runnable接口 实现多线程方式三: 实现Callable接口 ​ 三种实现方式的对比 设置和获…

echers配置项:X轴,Y轴颜色修改

如上图绿框所示&#xff0c;修改x&#xff0c;y轴的颜色 let option {xAxis: {axisLine:{lineStyle:{color:red}},},yAxis: {type: value,axisLine:{lineStyle:{color:red}},}, }

胎压模块对贴片晶振的要求

在没有胎压监测的时代&#xff0c;有数据统计得出&#xff0c;在高速公路发生的事故中&#xff0c;由轮胎故障引发的占了46%&#xff0c;其中爆胎就占了70%以上&#xff0c;事故风险频有发生。且轮胎在爆炸中所产生的的冲击波&#xff0c;足以把人炸开至1米开外&#xff0c;在这…

sqlserver正确配置

一、启动sql server 服务&#xff0c;右键–>启动 二、设置网络协议 三、启动sa用户 1.使用windows用户验证登录Studio工具 2.选择安全性–>登录名–>sa, 右键选择属性 3.设置服务器身份验证模式 4.导入数据库文件

【小项目】简单实现博客系统(一)(前后端结合)

一、实现逻辑 1&#xff09;实现博客列表页 让页面从服务器拿到博客数据&#xff08;数据库&#xff09; 2&#xff09;实现博客详情页 点击博客的时候&#xff0c;可以从服务器拿到博客的完整数据 3&#xff09;实现登录功能&#xff08;跟之前写的登录页面逻辑一致&…

OpenCompass大模型离线测评

一、目录 环境配置环境测试本地模型测评 二、实现 环境配置 >>创建环境 conda create --name opencompass python3.10 pytorch torchvision pytorch-cuda -c nvidia -c pytorch -ysource activate opencompass git clone https://github.com/open-compass/opencompas…

Ollama:本地大模型运行指南

Ollama 简介 Ollama 是一个基于 Go 语言开发的可以本地运行大模型的开源框架。 官网&#xff1a;ollama.com/ GitHub 地址&#xff1a;github.com/ollama/olla… Ollama 安装 下载安装 Ollama 在 Ollama 官网根据操作系统类型选择对应的安装包&#xff0c;这里选择 macOS…

带插画的登录页火爆一时,不过好像有点过气了,是么?

插画在B端登录页中的作用是通过增加视觉吸引力、塑造品牌形象、提升用户体验和增加可视化指引等方式&#xff0c;为用户提供一个愉悦、易用、具有个性化的登录体验。这有助于提高用户对企业或组织的认知和好感度&#xff0c;增加用户的参与度和忠诚度。 当年这种分割很火爆呀&…

npm install [Error]

npm install 依赖的时候报错 依赖版本问题的冲突&#xff0c;忽视即可 使用 npm install --legacy-peer-deps

基于MCAL的S32K312 SPI使用

本文参考“大胡子喵喵猪”大佬《S32K312配置SPI&#xff08;基于MCAL&#xff09;》https://blog.csdn.net/m0_64944741/article/details/134930744 0、简介 相比于参考文章&#xff0c;本文基于S32K312 介绍SPI的使用&#xff0c;主要是记录开发流程&#xff0c;本文基于《基…

后端之路第一站——Maven

前提&#xff1a;得会基础java 前言&#xff1a;不知道出于什么原因&#xff0c;可能是喜欢犯贱吧&#xff0c;本人从大一到大二都一直在专研前端开发&#xff0c;一点也没接触过后端&#xff0c;但是突然抽风想学后端了&#xff0c;想试着自己全栈搞一下项目&#xff0c;于是在…

邮件API接口的优势有哪些?如何有效整合?

邮件API怎么选&#xff1f;SendCloud与AokSend的性能对比分析&#xff1f; 邮件API接口作为企业与用户沟通的重要桥梁&#xff0c;其重要性不言而喻。Aok将深入探讨邮件API接口的优势、有效整合的方法、选择标准以及SendCloud与AokSend两款邮件发送服务的性能对比分析。 邮件…

【全开源】场地预定小程序支持微信小程序+微信公众号+H5

XYvenue是基于FastAdminUniApp开发的多场馆场地预定小程序&#xff0c;提供运动场馆运营解决方案&#xff0c;适用于体育馆、羽毛球馆、兵乒球馆、篮球馆、网球馆等场馆。 功能特性 1、场馆管理 可添加多个预约场馆&#xff0c;小程序端切换场馆显示。 2、场地管理 可添加多…

无线领夹麦克风怎么挑选?多款高性价比无线领夹麦克风推荐

说到领夹麦克风&#xff0c;可能有些朋友对这个名字感觉很陌生&#xff0c;但是对于互联网从业者以及短视频创作者应该会对这个名字比较熟悉。如果你是打算成为短视频创作者或者参与拍摄直播等项目&#xff0c;那这个设备就很有必要去了解甚至使用到。 因为想要拍摄出来的视频作…