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

news/2025/1/16 4:39:16 标签: 前端

数据: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.niftyadmin.cn/n/5824630.html

相关文章

linux手动安装mysql5.7

一、下载mysql5.7 1、可以去官方网站下载mysql-5.7.24-linux-glibc2.12-x86_64.tar压缩包&#xff1a; https://downloads.mysql.com/archives/community/ 2、在线下载&#xff0c;使用wget命令&#xff0c;直接从官网下载到linux服务器上 wget https://downloads.mysql.co…

【微服务】面试 4、限流

微服务限流技术总结 一、微服务业务面试题引入 在微服务业务面试中&#xff0c;限流是重要考点&#xff0c;常与分布式事务、分布式服务接口幂等解决方案、分布式任务调度等一同被考查。面试官一般会询问项目中是否实施限流及具体做法&#xff0c;回答需涵盖限流原因、采用的方…

C# 中对 Task 中的异常进行捕获

以下是在 C# 中对 Task 中的异常进行捕获的几种常见方法&#xff1a; 方法一&#xff1a;使用 try-catch 语句 你可以使用 try-catch 语句来捕获 Task 中的异常&#xff0c;尤其是当你使用 await 关键字等待任务完成时。 using System; using System.Threading.Tasks;class …

AI知识-TF-IDF技术(Term Frequency-Inverse Document Frequency)

摘要 TF-IDF&#xff08;Term Frequency-Inverse Document Frequency&#xff09;是一种常见的统计方法&#xff0c;用于评估一个词对于一个文档集或一个语料库中的其中一份文档的重要性。本文将全面阐述TF-IDF的通俗理解、技术原理、应用场景&#xff0c;并做以总结。 通俗理…

MYSQL学习笔记(一):准备数据和数据库的最基本命令

前言&#xff1a; 学习和使用数据库可以说是程序员必须具备能力&#xff0c;这里将更新关于MYSQL的使用讲解&#xff0c;大概应该会更新30篇&#xff0c;涵盖入门、进阶、高级(一些原理分析);这一篇是入门准备数据和一些关于数据库的操作命令&#xff1b;虽然MYSQL命令很多&…

探索 AI 自动化编程:效率革命与未来教育的转型

随着人工智能技术的快速发展&#xff0c;AI 自动化编程工具正日益影响软件开发行业。从代码生成到项目管理&#xff0c;这些工具不仅加速了开发流程&#xff0c;还引发了对编程职业未来的深入思考。那么&#xff0c;AI 自动化编程的现状如何&#xff1f;它如何影响程序员的日常…

C++笔记:打包独立运行的exe(在静态库中使用MFC)

从window7到window11都默认安装有C依赖库&#xff0c;见如下 但是一些企业用的特殊window版本可能没有这个依赖库&#xff0c;导致Visual Studio生成的exe无法运行&#xff08;报缺失dll&#xff09;&#xff0c;就需要打包生成时使用静态库依赖。 共两步&#xff1a; 第一步…

【Axure视频教程】中继器表格——拖动排序

今天教大家在Axure用中继器制作拖动排序效果的原型模板&#xff0c;我们可以通过拖动的方式&#xff0c;将对应的行摆放到任意位置&#xff0c;效果如下图所示&#xff1a; 这个原型模板是用中继器制作的&#xff0c;所以使用也很简单&#xff0c;只需要在中继器表格里填写对应…