树形递归 树形图-以前用递归,现在用Hutool工具类TreeUtil
https://blog.csdn.net/ZHOU_VIP/article/details/121757259
https://element.eleme.cn/#/zh-CN/component/cascader
https://www.hutool.cn/docs/#/core/语言特性/树结构/树结构工具-TreeUtil
<template>
<div>
<span class="demonstration">默认 click 触发子菜单</span>
<el-cascader
v-model="value"
:options="options"
@change="handleChange"></el-cascader>
</div>
</template>
<script>
export default {
name: "indexSee",
data() {
return {
value: [],
options: [{
value: 'zhinan',
label: '指南',
children: [{
value: 'shejiyuanze',
label: '设计原则',
}, {
value: 'daohang',
label: '导航',
}]
}, {
value: 'zujian',
label: '组件',
children: [{
value: 'basic',
label: 'Basic',
},]
}, {
value: 'ziyuan',
label: '资源',
}]
};
},
methods: {
handleChange(value) {
console.log(value);
}
}
}
</script>
@GetMapping(value = "/treeSelect")
public R treeSelect(){
List<entityX> list = new ArrayList<>();
List<TreeNode<Integer>> collect = list.stream().map(type -> {
TreeNode<Integer> treeNode = new TreeNode();
treeNode.setId(type.getId()); //id
treeNode.setParentId(type.getParentId()); //父亲id
treeNode.setName(type.getTypeName()); //名称
treeNode.setWeight((type.getTypeOrder() == null ? 1 : type.getTypeOrder() + 1) * 10000 + type.getId()); //排序
//扩展
treeNode.setExtra(new HashMap<String, Object>() {
{
//Cascader 级联选择器 字段
put("value", type.getId());
put("label", type.getTypeName());
}
});
return treeNode;
}).collect(Collectors.toList());
return R.ok(TreeUtil.build(collect,list.size()==0?0: list.get(0).getParentId()));
}
择善人而交,择善书而读,择善言而听,择善行而从。