@data@apimodel(description = "数据字典")@tablename("dict")public class dict { private static final long rialversionuid = 1l; @apimodelproperty(value = "id") private long id; @apimodelproperty(value = "创建时间") @jsonformat(pattern = "yyyy-mm-dd hh:mm:ss") @tablefield("create_time") private date createtime; @apimodelproperty(value = "更新时间") @tablefield("update_time") private date updatetime; @apimodelproperty(value = "逻辑删除(1:已删除,0:未删除)") @tablelogic @tablefield("is_deleted") private integer isdeleted; @apimodelproperty(value = "其他参数") @tablefield(exist = fal) private map<string,object> param = new hashmap<>(); @apimodelproperty(value = "上级id") @tablefield("parent_id") private long parentid; @apimodelproperty(value = "名称") @tablefield("name") private string name; @apimodelproperty(value = "值") @tablefield("value") private string value; @apimodelproperty(value = "编码") @tablefield("dict_code") private st一片冰心在玉壶的全诗ring dictcode; @apimodelproperty(value = "是否包含子节点") @tablefield(exist = fal) private boolean haschildren;}
上面必须包含一个haschildren属性,即使数据库中没有该属性,这是element框架要求的。
如果完全用后端实现的话,那写个递归把所有数据按照层次结构查询完并封装好即可。但element的table组件给我们封装好了一些东西,我们只需要在这里根据上级id查询子数据列表即可。
controller代码:
//根据上级id查询子数据列表 @apioperation(value = "根据上级id查询子数据列表") @getmapping("findchilddata/{id}") public result findchilddata(@pathvariable long id){ list<dict> list = dictrvice.findchilddata(id); return result.ok(list); }
rvice
rvice实现类
@rvicepublic class dictrviceimpl extends rviceimpl<dictmapper, dict> implements dictrvice { //根据上级id查询子数据列表 @override public list<dict> findchilddata(long id) { querywrapper<dict> wrapper=new querywrapper<>(); wrapper.eq("parent_id",id); list<dict> list = bamapper.lectlist(wrapper); //向list集合中的每个dict对象中设置haschildren list.foreach(x->{ long dictid = x.getid(); boolean ischild = this.ischildren(dictid); x.thaschildren(ischild); }); return list; } //判断id下面是否有子数据 private boolean ischildren(long id){ querywrapper<dict> wrapper=new querywrapper<>(); wrapper.eq("parent_id",id);非主流图片男生 integer count = bamapper.lectcount(wrapper); return count > 0; }}
list.vue
<template> <div class="app-container"> <el-table :data="l诗经中的颂指的是ist" style="width: 100%" row-key="id" border lazy :load="getchildrens" :tree-props="{children: 'children', haschildren: 'haschildren'}"> <el-table-column label="名称" width="230" align="left"> <template slot-scope="scope"> <span>{{ scope.row.name }}</span> </template> </el-table-column> <el-table-column label="编码" width="220"> <template slot-scope="{row}"> {{ row.dictcode }} </template> </el-table-column> <el-table-column label="值" width="230" align="left"> <template slot-scope="scope"> <span>{{ scope.row.value }}</span> </template> </el-table-column> <el-table-column label="创建时间" align="center"> <template slot-scope="scope"> <span>{{ scope.row.createtime }}</span> </template> </el-table-column> </el-table> </div></template><script>import dict from '@/api/dict'export default { name: 'list', data(){ return{ list:[], //数据字典列表数组 dialogimportvisible:fal, //设置弹框是否弹出 } }, created() { this.getdictlist(1) }, methods:{ //数据字典列表 getdictlist(id){ dict.dictlist(id) .then(respon=>{ this.list=respon.data }) }, getchildrens(tree, treenode, reso美宝莲隔离霜lve) { dict.dictlist(tree.id).then(respon => { resolve(respon.data) }) }, }}</script><style scoped></style>
上面关键的方法是getchildrens这个方法,在每一层调用后端接情人节情话口将子节点数据查询出来,并加入树形结构的表格数据中。
调用后端结构的工具js文件 dict.js
import request from '@/utils/request'export default { //数据字典列表 dictlist(id){ return request({ url: `/admin/cmn/dict/findchilddata/${id}`, method: 'get' }) },}
前后端测试都没有问题,由于使用的是懒加载,只有去点击父节点的时候,子节点的数据才会被加载,避免因数据量太大导致系统卡顿。
到此这篇关于vue elementui实现树形结构表格与懒加载的文章就介绍到这了,更多相关vue elementui内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 11:33:25,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/a3a9a5a22d34d4d9a4626c8f847f0bcb.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Vue elementUI实现树形结构表格与懒加载.doc
本文 PDF 下载地址:Vue elementUI实现树形结构表格与懒加载.pdf
留言与评论(共有 0 条评论) |