后台菜单数据递归展示

后台菜单数据递归展示

    • 效果示例图
    • 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>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ADS使用记录之使用RFPro进行版图联合仿真

ADS使用记录之使用RFPro进行版图联合仿真 在ADS中&#xff0c;我们往往使用EM仿真来明确电路的实际性能&#xff0c;但是常规的方法我们只会得到S参数&#xff0c;对于场还有电路的电流分布往往不进行检查。但是在实际中&#xff0c;观察场和电流分布是非常有意义的&#xff0…

Qt编译和使用freetype矢量字库方法

在之前讲过QT中利用freetype提取字库生成图片的方法&#xff1a; #QT利用freetype提取字库图片_qt freetype-CSDN博客文章浏览阅读1.2k次。这是某个项目中要用到的片段&#xff0c;结合上一篇文章#QT从字体名获取字库文件路径使用// 保存位图int SaveBitmapToFile(HBITMAP hBi…

如何使用一段传输线表示电感和电容

文中部分图片来自于《complete Wireless design》 如何使用一段传输线来表示电感和电容&#xff0c;本文将就此内容展开&#xff1a;

Python 渗透测试:反弹 shell (反弹 后门 || 程序免杀)

什么叫 反弹 shell 反弹 shell (Reverse Shell) 是一种常见的渗透测试技术,它指的是受害者主机主动连接攻击者的主机,从而让攻击者获得对受害者主机的控制权。在一个典型的反弹 shell 攻击中,攻击者会在自己的主机上监听一个特定的端口,然后诱使目标主机主动连接到这个端口。当…

react18【系列实用教程】useReducer —— 升级版的 useState (2024最新版)

useReducer 可看做升级版的 useState &#xff0c;其强大之处在于&#xff0c;可以自定义复杂的响应式变量修改逻辑。 useReducer 语法 useReducer 是 hook 函数 第一个参数&#xff08;必要&#xff09;&#xff1a; 自定义的 reducer 函数&#xff08;详见下文介绍&#xff…

图片转base64【Vue + 纯Html】

1.template <el-form-item label"图片"><div class"image-upload-container"><input type"file" id"imageUpload" class"image-upload" change"convertToBase64" /><label for"imageU…

AI图书推荐:ChatGPT 和Power BI驱动未来金融投资变革

《ChatGPT 和Power BI驱动未来金融变革》&#xff08;The Future of Finance with ChatGPT and Power BI&#xff09;由James Bryant和Aloke Mukherjee撰写&#xff0c;探讨了ChatGPT和Power BI在金融领域的应用。 主要特点&#xff1a; - 使用ChatGPT自动化Power BI&#xff…

工厂数字化解决方案

在数字化浪潮席卷全球的今天&#xff0c;工业4.0已不再是遥不可及的梦想&#xff0c;而是制造业转型升级的必由之路。面对日益激烈的市场竞争和消费者需求的快速变化&#xff0c;传统工厂如何借助数字化技术实现智能化、高效化、柔性化生产&#xff0c;成为了摆在每一个企业面前…

创新指南 | 企业AI战略实施方案探讨(下):如何基于AI重构业务流程并落地实施

人工智能&#xff08;AI&#xff09;的浪潮已经席卷全球&#xff0c;成为推动现代企业发展的强大动力。AI技术不仅提升了企业的运营效率&#xff0c;还催生了新的商业模式和市场机会。本文将深入探讨AI的革新性应用案例&#xff0c;并提供一套企业落地AI的具体实施方案&#xf…

一次tomcat闪退处理

双击tomcat目录下bin目录中startup.bat 在我的电脑上是一闪而过&#xff0c;不能正常地启动tomcat软件 以记事本打开startup.bat文件&#xff0c;在文件的结尾处加上pause 然后再双击该bat执行&#xff0c;此时窗口就不会关闭&#xff0c;并会将错误信息打印在提示框中 可能是…

信息系统项目管理师0601:项目立项管理 — 考点总结(可直接理解记忆)

点击查看专栏目录 项目立项管理 — 考点总结(可直接理解记忆) 1.项目建议书(又称立项申请)是项目建设单位向上级主管部门提交项目申请时所必须的文件,是对拟建项目提出的框架性的总体设想。在项目建议书批准后,方可开展对外工作(掌握)。 2.项目建议书应该包括的核心内…

绝地求生:PGS3参赛队伍跳点一览,17压力有点大,4AM与PeRo大概率不roll点

在PCL春季赛结束后&#xff0c;PGS3的参赛队伍名单以及分组就正式确定了&#xff0c;最后确定名额的DDT和NH被安排在了A组和B组&#xff0c;感觉这次PGS3的分组比较均衡&#xff0c;没有“死亡之组”一说。这段时间已经有网友汇总了PGS3队伍在各个地图的跳点&#xff0c;并且把…

总结!AI Agent开发的常见方法

全球首位AI程序员Devin诞生了&#xff0c;还是个全栈工程师&#xff0c;能够熟练进行云端部署、编写底层代码、改bug、甚至连训练和微调AI大模型都轻车熟路&#xff0c;说好的AI替代人类&#xff0c;难道先从程序员下手了&#xff1f; 实际上用AI打造程序员并不是那么新鲜的事情…

读人工智能时代与人类未来笔记04_理性时代

1. 理性时代 1.1. 康德在《永久和平论》一文中带着些许的怀疑主义提出&#xff0c;和平可以通过应用达成一致的规则管理独立国家之间的关系来实现 1.2. 理性则借助高等理论物理学的形式&#xff0c;开始进一步探索康德的“自在之物”&#xff0c;并产生…

Leetcode—3148. 矩阵中的最大得分【中等】

2024每日刷题&#xff08;137&#xff09; Leetcode—3148. 矩阵中的最大得分 算法思想 实现代码 class Solution { public:int maxScore(vector<vector<int>>& grid) {int m grid.size();int n grid[0].size();int ans INT_MIN;vector<vector<int&…

RocketMQ-Dashboard 控制台使用详解

1 安装部署 具体部署启动请参考&#xff1a;RocketMQ从安装、压测到运维一站式文档_rocketmq benchmark压测-CSDN博客 RocketMq的dashboard&#xff0c;有运维页面&#xff0c;驾驶舱&#xff0c;集群页面&#xff0c;主题页面&#xff0c;消费者页面&#xff0c;生产者页面&…

2D Chests Assets - Mega Pack

科幻/奇幻/经典主题的箱子和容器。AAA质量,高分辨率,VFX,源PSD文件。 这是一个带有手绘套装的大包装: -【梦幻之栗】 -【科幻钱包】 AAA质量。高分辨率。一切都已准备就绪,可供使用。包括PSD文件。 在1.1版本中添加了VFX并将项目更新为URP。请注意,新的VFX仅适用于URP/HD…

ModuleNotFoundError: No module named ‘sklearn‘

ModuleNotFoundError: No module named sklearn 解决办法&#xff1a; pip install scikit-learn

GitHub配置SSH协议|什么是SSH

前言 之前用云服务器和GitHub的时候&#xff0c;因为比较懒一直没有配置过ssh。随着最近项目的迫在眉睫&#xff0c;通过Vs Code链接服务器和从GitHub白嫖代码的频率的大幅增加&#xff0c;拒绝接触新事物鼠鼠我只好转求ssh。此篇文章记录了我自己创建ssh密钥、配置ssh密钥的步…

每日5题Day2 - LeetCode 6 - 10

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;6. Z 字形变换 - 力扣&#xff08;LeetCode&#xff09; class Solution {public String convert(String s, int numRows) {//特殊情况的判定if(numRows < 2){…