html 拖拽树状表格,基于Vue实现可以拖拽的树形表格实例详解

本文介绍了如何使用Vue实现一个支持拖拽排序的树状表格。通过自定义组件`drag-tree-table`,实现了递归生成树形结构、拖拽排序功能。详细讲解了组件的安装、使用方式及实现原理,包括递归组件、拖拽逻辑和单元格自定义展示。文章还分享了项目源代码和npm包。
摘要由CSDN通过智能技术生成

因业务需求,需要一个树形表格,并且支持拖拽排序,任意未知插入,github搜了下,真不到合适的,大部分树形表格都没有拖拽功能,所以决定自己实现一个。这里分享一下实现过程,项目源代码请看github,插件已打包封装好,发布到npm上

本博文会分为两部分,第一部分为使用方式,第二部分为实现方式

ccba506987281f2c96aecf7987f92a06.gif

安装方式

npm i drag-tree-table --save-dev

使用方式

import dragTreeTable from 'drag-tree-table'

模版写法

data参数示例

{

lists: [

{

"id":40,

"parent_id":0,

"order":0,

"name":"动物类",

"open":true,

"lists":[]

},{

"id":5,

"parent_id":0,

"order":1,

"name":"昆虫类",

"open":true,

"lists":[

{

"id":12,

"parent_id":5,

"open":true,

"order":0,

"name":"蚂蚁",

"lists":[]

}

]

},

{

"id":19,

"parent_id":0,

"order":2,

"name":"植物类",

"open":true,

"lists":[]

}

],

columns: [

{

type: 'selection',

title: '名称',

field: 'name',

width: 200,

align: 'center',

formatter: (item) => {

return ''+item.name+''

}

},

{

title: '操作',

type: 'action',

width: 350,

align: 'center',

actions: [

{

text: '查看角色',

onclick: this.onDetail,

formatter: (item) => {

return '查看角色'

}

},

{

text: '编辑',

onclick: this.onEdit,

formatter: (item) => {

return '编辑'

}

}

]

},

]

}

onDrag在表格拖拽时触发,返回新的list

onTreeDataChange(lists) {

this.treeData.lists = lists

}

到这里组件的使用方式已经介绍完毕

实现

•递归生成树姓结构(非JSX方式实现)

•实现拖拽排序(借助H5的dragable属性)

•单元格内容自定义展示

组件拆分-共分为四个组件

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值