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

el-table 树形数据,子行数据可以异步加载

1、

<el-tableborder:header-cell-style="tableStyle?.headerCellStyle"ref="tableRef":data="tableData"row-key="id":default-expand-all="false" // 默认不展开所有树形节点:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"/*配置树形结构的属性,children:指定子节点数据的字段名,hasChildren:指定一个布尔值字段,表示是否有子节点这样组件就知道如何递归渲染树形结构。*/lazy // 启用懒加载模式(子节点数据不会一次性加载,而是当用户展开某个节点时,通过load方法动态加载):load="load"/*指定懒加载时调用的方法,这里绑定的是load方法。当用户展开一个节点时,会触发这个方法,传入当前行的数据和resolve回调函数,用于异步加载子节点数据。*/
></el-table>import { treeByParentId } from '/@/api/admin/dept';const tableData = ref([])
let nowRowId = ref('')const getTableList = (parentId) => {return new Promise(resolve => {treeByParentId({parentId}).then(res => {if(res.code == 0 && Array.isArray(res.data)){resolve(res.data)} else {resolve([])useMessage().error(res.msg || '数据已加载完毕')}}).catch(() => {resolve([])})})
}const load = async (row, treeNode, resolve) => {if (!row.hasChildren) {return resolve([])} else {nowRowId.value = row.idconst data = await getTableList(row.id)row.children = dataresolve(data)}
}const getData = async (parentId = nowRowId.value) => {// 查询的时候,如果deptName的值不为空,parentId置为空if(state.queryForm.deptName != ''){parentId = ''}const { data } = await treeByParentId({ parentId, deptName: state.queryForm.deptName })tableData.value = data
}onMounted(() => {getData()
})// 重置
const reset = () => {nowRowId.value = ''state.queryForm.deptName = ''getData()
}

2、

接口的数据结构:


{"code": 0,"data": [{"id": "唯一标识","name": "节点名称","hasChildren": true,  // 必须字段!"children": []        // 必须字段(即使为空数组)},// ...其他节点]
}
http://www.lqws.cn/news/137899.html

相关文章:

  • Vue指令修饰符、v-bind对样式控制的增强、computed计算属性、watch监视器
  • Deepfashion2 数据集使用笔记
  • MyBatis-Plus LambdaQuery 高级用法:JSON 路径查询与条件拼接的全场景解析
  • sqli-labs靶场38-45关(堆叠注入)
  • 2025年五一数学建模竞赛A题-支路车流量推测问题详细建模与源代码编写(一)
  • fmod产生的误差应该如何解决?
  • Android studio初体验
  • yoloe优化:可支持点提示进行检测分割
  • AI系统提示词:Claude 4 Opus
  • 《PyTorch Hub:解锁深度学习模型的百宝箱》
  • Linux网络socket套接字(上)(2)
  • 【Linux】线程同步
  • 如何轻松地将文件从 PC 传输到 iPhone?
  • c++ STL 仿函数和适配器(算法常用)
  • 在树莓派上添加音频输入设备的几种方法
  • Deepin 安装 Nginx
  • 【JVM】Java类加载机制
  • fastadmin+workman环境搭建
  • Rust学习(1)
  • [Java 基础]枚举
  • Linux操作系统shell脚本
  • [Java 基础]面向对象-多态
  • 关于物联网的基础知识(一)
  • 职坐标IT教育物联网全栈开发实战:传感器到云平台全链路
  • ‌RF Choke(射频扼流圈)
  • 第十三节:第二部分:集合框架:Map系列集合:概述、常用方法
  • thymeleaf直接调用Spring Bean中定义的方法
  • Python 开发效率秘籍:PyCharm、VS Code 与 Anaconda 配置与实战全解
  • 【会员专享数据】1960—2023年我国省市县三级逐年降水量数据(Shp/Excel格式)
  • UDP包大小与丢包率的关系:原理分析与优化实践