From 32dc1e5ab408fd84dfac056d8e4c5051e616aac4 Mon Sep 17 00:00:00 2001 From: danshihao Date: Wed, 25 Sep 2024 19:18:14 +0800 Subject: [PATCH] =?UTF-8?q?[update=20=E6=8B=86=E5=88=86=E6=8E=92=E5=BA=8F]?= =?UTF-8?q?=20=E8=B0=83=E6=95=B4=E6=8B=96=E6=8B=BD=EF=BC=8C=E4=BC=A0?= =?UTF-8?q?=E6=9C=80=E5=BA=95=E5=B1=82=E7=9A=84=E6=9C=80=E5=90=8E=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E8=8A=82=E7=82=B9=E7=9A=84=E5=BA=8F=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../documentSplit/DocumentSplitDetail.vue | 21 ++++++++++++++++++ .../modules/SplitTreeOrderModal.vue | 22 ++++++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/views/documentTool/documentSplit/DocumentSplitDetail.vue b/src/views/documentTool/documentSplit/DocumentSplitDetail.vue index 4538b60..962ec80 100644 --- a/src/views/documentTool/documentSplit/DocumentSplitDetail.vue +++ b/src/views/documentTool/documentSplit/DocumentSplitDetail.vue @@ -386,10 +386,18 @@ export default { // 拖拽到某个节点下方,就取该节点的序号 if (dropPos > nodePos) { params.displaySeq = info.node.dataRef.displaySeq + // 递归拿到最内层的最后一个节点的序号 + if (info.node.dataRef.children && info.node.dataRef.children.length) { + params.displaySeq = this.getLastLeafNode(info.node.dataRef.children) + } } else { // 拖拽到某个节点之上,就要找到上一个节点的序号,如果没有就传0 const preNodeData = this.getPrevNode(this.treeData, info.node.eventKey) params.displaySeq = preNodeData ? preNodeData.displaySeq : 0 + // 递归拿到最内层的最后一个节点的序号 + if (preNodeData && preNodeData.children && preNodeData.children.length) { + params.displaySeq = this.getLastLeafNode(preNodeData.children) + } } params.sourceId = info.dragNode.eventKey // 拖拽到节点的父节点id @@ -418,6 +426,19 @@ export default { } this.treeNodeSort({ sourceId, targetId, displaySeq }) }, + // 获取最底层叶子节点的序号 + getLastLeafNode (children) { + let displaySeq = 0 + while (true) { + if (children && children.length) { + displaySeq = children[children.length - 1].displaySeq + children = children[children.length - 1].children || [] + } else { + break + } + } + return displaySeq + }, // 发请求 treeNodeSort (params) { this.loading = true diff --git a/src/views/documentTool/documentSplit/modules/SplitTreeOrderModal.vue b/src/views/documentTool/documentSplit/modules/SplitTreeOrderModal.vue index 2ad4f02..445ded7 100644 --- a/src/views/documentTool/documentSplit/modules/SplitTreeOrderModal.vue +++ b/src/views/documentTool/documentSplit/modules/SplitTreeOrderModal.vue @@ -116,10 +116,18 @@ export default { // 拖拽到某个节点之下,就取该节点的序号 if (dropPos > nodePos) { params.displaySeq = info.node.dataRef.displaySeq + // 递归拿到最内层的最后一个节点的序号 + if (info.node.dataRef.children && info.node.dataRef.children.length) { + params.displaySeq = this.getLastLeafNode(info.node.dataRef.children || []) + } } else { // 拖拽到某个节点之上,就要找到上一个节点的序号,如果没有就传0 const preNodeData = this.getPrevNode(this.treeData, info.node.eventKey) params.displaySeq = preNodeData ? preNodeData.displaySeq : 0 + // 递归拿到最内层的最后一个节点的序号 + if (preNodeData && preNodeData.children && preNodeData.children.length) { + params.displaySeq = this.getLastLeafNode(preNodeData.children) + } } // 复选框勾选的节点 params.sourceId = this.checkTreeKeys.checked.join(',') @@ -146,7 +154,19 @@ export default { } this.treeNodeSort({ sourceId, targetId, displaySeq }) }, - + // 获取最底层叶子节点的序号 + getLastLeafNode (children) { + let displaySeq = 0 + while (true) { + if (children && children.length) { + displaySeq = children[children.length - 1].displaySeq + children = children[children.length - 1].children || [] + } else { + break + } + } + return displaySeq + }, // 发请求 treeNodeSort (params) { this.confirmLoading = true