elementUI级联选项器

news/2024/11/17 10:04:32/

 有两种方案,一种是前端转,一种是后端转,一般都是后端转

数据模型如下:一个List集合

//java传过来一个集合
[Menu(id=1, name=首页1, pid=0), Menu(id=2, name=首页2, pid=0), Menu(id=3, name=菜单1, pid=1), Menu(id=4, name=菜单2, pid=1), Menu(id=5, name=菜单3, pid=2), Menu(id=6, name=子项1, pid=3), Menu(id=7, name=子项2, pid=3), Menu(id=8, name=子项3, pid=4)
]

前端转换方案如下

<template><div><div class="block"><span class="demonstration">hover 触发子菜单</span><el-cascader v-model="value" :options="options" :props="{ expandTrigger: 'hover' }"@change="handleChange"></el-cascader></div></div>
</template> <script>
import axios from '../util/myaxios'
export default {
async mounted() {let resp = await axios.get('api/menu');//console.log(resp.data.data);const array = resp.data.data;const map = new Map();//1.把所有数据存入map集合(为了接下来查找效率)for(const ops of array){map.set(ops.id,{value:ops.id,label:ops.name,pid:ops.pid})}//2.建立父子关系//3.找到顶层对象  const top = [];for(const obj of map.values()){const parent = map.get(obj.pid);if (parent !== undefined) {parent.children ??=[];parent.children.push(obj);}else{top.push(obj);}}console.log(top);this.options = top;},data() {return {value:'',options:[]}},methods: {handleChange(value) {console.log(value);}}
}
</script><style>
</style>

后端转换方案如下:

        Map<Integer, Map<String, Object>> map = new HashMap<>();//1.把所有数据存入map集合(为了接下来查找效率)for (Menu menu : menus) {Map<String, Object> mapValue = new HashMap<>();mapValue.put("value", menu.getId());mapValue.put("label", menu.getName());mapValue.put("pid", menu.getPid());map.put(menu.getId(), mapValue);}//2.建立父子关系//3.找到顶层对象List<Map<String, Object>> top = new ArrayList<>();for (Map.Entry<Integer, Map<String, Object>> entry : map.entrySet()) {Map<String, Object> obj = entry.getValue();Map<String, Object> parent = map.get(obj.get("pid"));if (parent != null) {List<Map<String, Object>> children = (List<Map<String, Object>>) parent.get("children");if (children == null) {children = new ArrayList<>();parent.put("children", children);}children.add(obj);} else {top.add(obj);}}return R.success(top);


http://www.ppmy.cn/news/328036.html

相关文章

2010CAD激活码

我新买了一张2010版CAD碟片&#xff0c;可装好打开后&#xff0c;序列号和激活码都没有&#xff0c;然后在网上下载了一个&#xff0c;可以用&#xff0c;但到了下一步&#xff0c;又需要激活码&#xff0c;但网上找不到对应的&#xff0c;谁有这个激活码&#xff0c;请给我一个…

AutoCAD2010 激活不了,老是激活错误(0015.111)

后来发现乌龙了&#xff1a;没注意看&#xff0c;我一直在注册机的Request中填写序列号如400-45454545&#xff0c;其实应该填写申请号&#xff0c;如9NZQ GEN5 57FL T5XW 0HR4 7K4X WA8A TH3Z 另外参考了用管理员权限运行注册机http://www.jxcad.com.cn/topic_1123327.html

AutoCAD Electrical 2020 安装后无激活界面

无法出现提示激活的界面 这是因为 安装了高版本的 CAD系列其他软件&#xff0c; 附带安装了高版本的许可证识别器 需要把新版的许可证识别器删掉 进入 C:\Program Files (x86)\Common Files\Autodesk Shared\AdskLicensing&#xff0c;点击 把 v10 版本卸载&#xff0c;点击…

AutoCAD2014的安装与激活

1、安装包与激活文件的下载 链接&#xff1a;https://pan.baidu.com/s/1I2-x9T__sQAgtvjkOyc_1Q 密码&#xff1a;5pd1 2、CAD的安装 此过程没什么特殊要求&#xff0c;安装时随便输入一个序列号和密钥就行&#xff0c;我用的是下面这个&#xff1a; 序列号&#xff1a;356-723…

简化CAD软件:CorelCAD 2023(win/mac)激活版

可在交互式工作区使用的可自定义的二维制图工具和卓越的三维设计工具&#xff0c;以在所有工业类型中实现您的 CAD 目标。借助本地 .DWG 文件格式支持&#xff0c;实现与同事和业务伙伴的 CAD 文件无忧协作&#xff0c;以提高您的工作流程效率。拥有与 Ribbon UI 类似的工作环境…

autoucad2014激活就未响应_CAD2014激活错误怎么办,autocad2014激活错误的解决办法

自己安装CAD2014后注册机注册失败后经过诸多尝试&#xff0c;有用百度经验的解决办法&#xff0c;有其他论坛的解决办法&#xff0c;最后把遇到的问题百度翻译之后&#xff0c;自己尝试得出的很简单的解决办法。接下来小编就给大家分享一下autocad2014激活错误的解决办法&#…

【头歌-Python】8.5 中文词频统计(project) 1~5关

第1关&#xff1a;读文件 任务描述 本关任务&#xff1a;编写一个能读文件到字符串小程序。 一般来说&#xff0c;一篇文章的最重要的内容会反复出现&#xff0c;所以词频可以表示文章的重点&#xff0c;本项目将训练统计文件中的文本词频的能力。 编程要求 根据提示&…

word2010快速激活

刚安装完word2010打开的界面会是提醒你激活软件/更改密钥&#xff0c;不用担心&#xff0c;首先要下载office2010激活工具软件。&#xff08;百度云盘链接&#xff1a;http://pan.baidu.com/s/1eR5cit0&#xff09; 下载完成后&#xff0c;找到“word2010_Toolkit“打开并解压&…