树形递归 树形图-以前用递归,现在用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()));
}
posted @ 2025-03-06 10:04  寒冷的雨呢  阅读(45)  评论(0)    收藏  举报