From 9fef439e59ab9c5d8cf1de23a1f4ab819f453afb Mon Sep 17 00:00:00 2001 From: sjl <1716605279@qq.com> Date: Thu, 23 Oct 2025 16:28:13 +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 | 96 ++++++++++++++++--- 1 file changed, 81 insertions(+), 15 deletions(-) diff --git a/frontend/src/views/home/components/channelPairing.vue b/frontend/src/views/home/components/channelPairing.vue index 5ff9e59..d8951a6 100644 --- a/frontend/src/views/home/components/channelPairing.vue +++ b/frontend/src/views/home/components/channelPairing.vue @@ -36,6 +36,7 @@ import CustomEdge from './RemoveableEdge.vue' // 导入自定义连接线组件 import { jwtUtil } from '@/utils/jwtUtil' import { useCheckStore } from '@/stores/modules/check' import { ipc } from '@/utils/ipcRenderer' +import { fa, tr } from 'element-plus/es/locale' const vueFlowElement = ref(442) const checkStore = useCheckStore() const dialogVisible = ref(false) @@ -68,7 +69,7 @@ const prop = defineProps({ const dialogHeight = ref(600) // 初始化 VueFlow,注册自定义连线类型 -const { edges, setViewport } = useVueFlow({ +const { edges, setViewport,removeEdges } = useVueFlow({ edgeTypes: { default: CustomEdge } @@ -295,57 +296,122 @@ const createLabel3 = (text: string) => { const handleConnectStart = (params: any) => { onPaneReady() + } +// const handleConnectEnd = (params: any) => { +// console.log('handleConnectEnd',edges.value,edges.value.length) +// onPaneReady() +// } + +// const handleConnect = (params: any) => { +// const sourceNode = nodes.value.find(node => node.id === params.source) +// const targetNode = nodes.value.find(node => node.id === params.target) +// const isValidConnection = sourceNode?.type === 'input' && targetNode?.type === 'output' +// if (!isValidConnection) { +// removeEdge(params) +// ElMessage.warning('只能从被检通道连接到标准通道') +// 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 + +// if (duplicateSource) { +// removeEdge(params) +// ElMessage.warning('该被检通道已经连接,不能重复连接') +// return +// } + +// if (duplicateTarget) { +// removeEdge(params) +// ElMessage.warning('该标准通道已经连接,不能重复连接') +// return +// } +// } +// } + +// // 删除不合法连接 +// const removeEdge = (params: any) => { +// // console.log('删除不合法连接:', params); +// // console.log('删除连接信息:', edges.value); +// // console.log('11111===', edges.value.length); +// const edgeIndex = edges.value.findIndex(edge => edge.source === params.source && edge.target === params.target) +// console.log('删除连接索引:', edgeIndex); +// if (edgeIndex !== -1) { +// edges.value.splice(edgeIndex , 1) +// } + +// } + + + +// 添加一个响应式变量来存储需要删除的连接信息 +const pendingRemoveEdge = ref(null) + const handleConnectEnd = (params: any) => { + // 在连接结束时检查是否有待删除的连接 + if (pendingRemoveEdge.value) { + removeEdge(pendingRemoveEdge.value) + pendingRemoveEdge.value = null // 清空待删除连接 + } + onPaneReady() } const handleConnect = (params: any) => { const sourceNode = nodes.value.find(node => node.id === params.source) const targetNode = nodes.value.find(node => node.id === params.target) - - // 连接规则验证 const isValidConnection = sourceNode?.type === 'input' && targetNode?.type === 'output' - + if (!isValidConnection) { - removeEdge(params) + // 设置待删除连接而不是立即删除 + pendingRemoveEdge.value = params ElMessage.warning('只能从被检通道连接到标准通道') 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 if (duplicateSource) { - removeEdge(params) + // 设置待删除连接而不是立即删除 + pendingRemoveEdge.value = params ElMessage.warning('该被检通道已经连接,不能重复连接') return } if (duplicateTarget) { - removeEdge(params) + + // 设置待删除连接而不是立即删除 + pendingRemoveEdge.value = params ElMessage.warning('该标准通道已经连接,不能重复连接') return } } + + // 如果没有问题,清空待删除连接 + pendingRemoveEdge.value = null } // 删除不合法连接 const removeEdge = (params: any) => { - console.log('删除不合法连接:', params); - console.log('删除连接信息:', edges.value); const edgeIndex = edges.value.findIndex(edge => edge.source === params.source && edge.target === params.target) - console.log('删除连接索引:', edgeIndex); - if (edgeIndex !== -1) { - edges.value.splice(edgeIndex, 1) - } - + + if (edgeIndex !== -1) { + edges.value.splice(edgeIndex, 1) + } } const nodes = ref([])