当前位置: 首页 > 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": []        // 必须字段(即使为空数组)},// ...其他节点]
}

相关文章:

  • 录制mp4
  • 【设计模式-4.8】行为型——中介者模式
  • OPENCV重点结构体Mat的讲解
  • C语言数据结构笔记3:Union联合体+结构体取8位Bool量
  • CentOS7关闭防火墙、Linux开启关闭防火墙
  • WebFuture:Ubuntu 系统上在线安装.NET Core 8 的步骤
  • OpenCV 键盘响应来切换图像
  • 实现C语言中srand()和rand()函数
  • .NET Core接口IServiceProvider
  • iptables实战案例
  • 【.net core】【watercloud】树形组件combotree导入及调用
  • Asp.net Core 通过依赖注入的方式获取用户
  • itop-3568开发板机器视觉opencv开发手册-图像绘制-画线
  • 【p2p、分布式,区块链笔记 MESH】 论文阅读 Thread/OpenThread Low-Power Wireless Multihop Net
  • Mac/iOS 如何解压 RAR 格式压缩包:常用工具与详细操作步骤
  • 【vue3学习】vue3入门
  • Flink进阶之路:解锁大数据处理新境界
  • iOS上传应用包错误问题 “Invalid bundle. The “UIInterfaceOrientationPortrait”“
  • ios版本的Tiktok二次安装不上,提示:Unable to Install “TikTok”
  • 使用 Amazon Q Developer CLI 快速搭建各种场景的 Flink 数据同步管道
  • 如何把网站建设成营销型网站/线上推广平台
  • 做ebay货物查找的网站/网页怎么做出来的
  • 专门做二手手机的网站吗/策划方案
  • wordpress相关网站/哪家网络推广好
  • 东莞网站平台价格/宣传推广方案范文
  • jsp做网站 案例/长沙seo培训