From fd2c11cf90a41917b97917de1aa4243e9306ca88 Mon Sep 17 00:00:00 2001 From: sjl <1716605279@qq.com> Date: Thu, 23 Oct 2025 16:32:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/home/components/channelPairing.vue | 46 +++++++++++-------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/frontend/src/views/home/components/channelPairing.vue b/frontend/src/views/home/components/channelPairing.vue index d8951a6..e9bee19 100644 --- a/frontend/src/views/home/components/channelPairing.vue +++ b/frontend/src/views/home/components/channelPairing.vue @@ -377,28 +377,34 @@ const handleConnect = (params: any) => { return } - // 过滤掉当前连接,检查是否还有重复的 - const existingEdges = edges.value.filter(edge => edge.source === params.source || edge.target === params.target) - - // 如果同源或同目标的连接超过1个,说明有重复 - if (existingEdges.length > 1) { - const duplicateSource = existingEdges.filter(edge => edge.source === params.source).length > 1 - const duplicateTarget = existingEdges.filter(edge => edge.target === params.target).length > 1 + // 检查是否已经存在完全相同的连接(精确匹配源和目标) + const isAlreadyConnected = edges.value.some(edge => + edge.source === params.source && edge.target === params.target + ) + + if (isAlreadyConnected) { + // 设置待删除连接而不是立即删除 + pendingRemoveEdge.value = params + ElMessage.warning('这两个通道已经连接,不能重复连接') + return + } - if (duplicateSource) { - // 设置待删除连接而不是立即删除 - pendingRemoveEdge.value = params - ElMessage.warning('该被检通道已经连接,不能重复连接') - return - } + // 检查源节点是否已经被连接(一个被检通道只能连接一个标准通道) + const isSourceConnected = edges.value.some(edge => edge.source === params.source) + if (isSourceConnected) { + // 设置待删除连接而不是立即删除 + pendingRemoveEdge.value = params + ElMessage.warning('该被检通道已经连接,不能重复连接') + return + } - if (duplicateTarget) { - - // 设置待删除连接而不是立即删除 - pendingRemoveEdge.value = params - ElMessage.warning('该标准通道已经连接,不能重复连接') - return - } + // 检查目标节点是否已经被连接(一个标准通道只能连接一个被检通道) + const isTargetConnected = edges.value.some(edge => edge.target === params.target) + if (isTargetConnected) { + // 设置待删除连接而不是立即删除 + pendingRemoveEdge.value = params + ElMessage.warning('该标准通道已经连接,不能重复连接') + return } // 如果没有问题,清空待删除连接