antd-vue a-tree任意节点拖拽排序方法,最小粒度变更受影响的记录(通用排序)

本文介绍如何在Ant Design Vue的a-tree组件中实现任意节点的拖拽排序,强调了与el-tree的区别,并提供了Vue文件的关键代码、DeptAPI的设置以及Java后端的处理方式,强调在实现过程中应根据实际数据格式进行调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近因为仿钉钉做内部IM,头觉得ElementUI功能有点简单了,不太适合当前业务需求,于是舍弃了,换成了 Ant Design Vue,这下好,之前做的功能全部重新修改…

没办法,谁让人生就是这样改来改去,推掉重来
在这里插入图片描述

在修改部门的时候,原本的组织架构拖拽排序并实时后台存储从el-tree 换成了 a-tree 后,之前的代码不能用了,但是思路大体还是一致,然后我找了找a-tree 的节点规律以及官方文档,自己重写了一个,原则上还是以尽可能的少改动数据为优先,在你拖拽结束后 不会全拿整棵树的数据排序然后再去修改,只会有当前受影响的最小粒度的数据变更范围

注:如果需要其他tree排序,请前往 tree拖拽排序通用合集(z-Tree、El-tree、a-tree)

首先我们的Vue文件声明如下(由于文件内容多,只贴关键代码),主要加入了draggable属性和drop事件,支持拖拽

<a-tree
   draggable
    :tree-data="data"
    :replace-fields="replaceFields"
    default-expand-all
    @select="handleNodeSelect"
    @drop="onDrop"
  >
</a-tree>

核心思路方向

在vue methods中添加onDrop方法,通过对info多次分析数据结构后,发现规律以及和el-tree的不同

  • el-tree的level规则判定和a-tree一样,第一层级level都为0,并且根节点上还有一层
  • el-tree拖拽完节点会发生改变,即使不更新后台,但是a-tree 只有tree的tree-data 发生改变,才会更改节点
  • 当我们拿到节点对应的data,el-tree的data会自动更新,比如新拖入一个就会自动加入,而a-tree你拿到的永远是一开始tree加载后的值,需要手动变更以及指定顺序

具体Vue文件实现如下,思路在注释中注明:

methods: {
   
    onDrop(info) {
   
      // 目标节点
      const node = info.node;
      // 拖拽节点
      const dragNode = info.dragNode;
      const dragNodeData 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小狐狸和小兔子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值