当前位置: 首页 > article >正文

使用el-tree根据切割规则切割数据生成树形结构

数据:dataList: [‘10000’, ‘10000001’, ‘10000001001’, ‘20000’, ‘20000002’]

需要的效果:1. 8-3切割的效果
在这里插入图片描述
2. 5-3-3切割的效果
在这里插入图片描述
在这里插入图片描述

<template>
  <div id="app">
    <el-tree :data="treeData" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
  </div>
</template>

<script>
export default {
  name: 'App',
  data() {
    return {
      // 动态规则,例如 "5-3-3"
      rule: '8-3',
      // 动态数据列表
      dataList: ['10000', '10000001', '10000001001', '20000', '20000002'],
      treeData: [], // 将会填充的树形结构数据
      defaultProps: {
        children: 'children',
        label: 'label'
      }
    };
  },
  created() {
    this.generateTree();
  },
  methods: {
    generateTree() {
      const segments = this.rule.split('-').map(Number);
      const root = {};
      this.dataList.forEach(id => {
        let node = root;
        let start = 0;
        for (let i = 0; i < segments.length; i++) {
          const end = start + segments[i];
          const segment = id.slice(start, end);
          if (!node[segment]) {
            node[segment] = { label: segment, children: {} };
          }
          node = node[segment].children;
          start = end;
        }
      });

      function toTreeArray(node) {
        return Object.keys(node).map(key => ({
          ...node[key],
          children: toTreeArray(node[key].children)
        })).filter(item => item.label !== '');
      }

      this.treeData = toTreeArray(root);
    },
    handleNodeClick(data) {
      console.log('Node clicked:', data);
    }
  },
  watch: {
    // 监听规则或数据的变化以重新生成树
    rule: 'generateTree',
    dataList: 'generateTree'
  }
};
</script>

<style>
/* 添加样式 */
</style>


http://www.kler.cn/a/506118.html

相关文章:

  • http转化为https生成自签名证书
  • 本地部署Web-Check网站检测与分析利器并实现远程访问实时监测
  • 使用 WPF 和 C# 将纹理应用于三角形
  • 信凯科技业绩波动明显:毛利率远弱行业,资产负债率偏高
  • Go-Zero整合Goose实现MySQL数据库版本管理
  • 学成在线_内容管理模块_创建模块工程
  • Python猜数小游戏
  • idea上git log面板的使用
  • openharmony标准系统方案之瑞芯微RK3568移植案例
  • 用ChatGPT进行酒店评论情感分析
  • HTTP:TIME_WAIT累积与端口耗尽
  • delphi 调用 c++Dll 函数获取纯真ip地址
  • 浅谈云计算15 | 存储可靠性技术(RAID)
  • 如何在谷歌浏览器中设置自定义安全警告
  • k8s 集群组件
  • android 主题都表示什么意思
  • 怎么防止SQL注入攻击
  • Uniapp-运行到手机安卓基座报错
  • 穷举vs暴搜vs深搜vs回溯vs剪枝系列一>优美的排列
  • 【力扣Hot 100】普通数组1
  • Oracle FLOOR函数的用法
  • week07_nlp文本分类任务
  • React封装倒计时按钮
  • msck批量
  • 案例|富唯智能复合机器人CNC柔性上下料
  • Python|【Pytorch】基于小波时频图与SwinTransformer的轴承故障诊断研究