<el-tree
:data="treeData"
node-key="id"
:indent="0"
default-expand-all
@node-click="treeNodeClick"
:expand-on-click-node="false"
draggable
:allow-drop="allowDrop"
@node-drop="handleDrop"
>
<div class="custom-tree-node" slot-scope="{ node, data }">
....
</div>
</el-tree>
1. 主要是用到了allow-drop这个方法,然后去判断元素被放置的位置是否和当前元素的父级id一致
// tree拖拽成功完成时触发的事件
handleDrop(draggingNode, dropNode, dropType, ev) {
console.log(this.treeData);
this.getProjectVolumeTree();
},
// 拖拽时判定目标节点能否被放置
// 'prev'、'inner' 和 'next',分前、插入、后
allowDrop(draggingNode, dropNode, type) {
if (draggingNode.data.level === dropNode.data.level) {
if (draggingNode.data.parentId === dropNode.data.parentId) {
return type === "prev" || type === "next";
} else {
return false;
}
} else {
// 不同级进行处理
return false;
}
},