From 21dcfce1bc1bb4d9cf7d1dc7d25a19748a5205c4 Mon Sep 17 00:00:00 2001 From: li-shengren-123456 Date: Fri, 24 Jan 2025 11:46:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=BF=9E=E7=BA=BF=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E6=B7=BB=E5=8A=A0=E6=B8=90=E5=8F=98=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/createapp/components/workFlow.vue | 83 ++++++++++++++--- .../components/workFlowConfig/CustomEdge.vue | 88 +++++++++++++++++-- 2 files changed, 152 insertions(+), 19 deletions(-) diff --git a/src/views/createapp/components/workFlow.vue b/src/views/createapp/components/workFlow.vue index 0138b19..3a4d89d 100644 --- a/src/views/createapp/components/workFlow.vue +++ b/src/views/createapp/components/workFlow.vue @@ -29,7 +29,7 @@ const editData = ref(); const dialogType = ref(''); const isEditYaml = ref(false); const flowZoom = ref(1); -const debugDialogVisible = ref(false) +const debugDialogVisible = ref(false); const isNodeAndLineConnect = ref(false); const emits = defineEmits(['validateConnect']); const hanleAsideVisible = () => { @@ -41,8 +41,19 @@ const hanleAsideVisible = () => { } }; -const { onConnect, addEdges, getNodes, getEdges, findNode, removeNodes, setViewport, getViewport, fitView } = - useVueFlow(); +const { + onConnect, + updateNode, + updateEdgeData, + addEdges, + getNodes, + getEdges, + findNode, + removeNodes, + setViewport, + getViewport, + fitView, +} = useVueFlow(); const { layout } = useLayout(); const { onDragOver, onDrop, onDragLeave, isDragOver, onDragStart } = useDragAndDrop(); @@ -115,8 +126,18 @@ const handleChangeZoom = zoomValue => { }; onConnect(e => { + // 边的起点和终点节点的两个状态 + const sourceItem = getNodes.value.find(item => item.id === e.source); + const targetItem = getNodes.value.find(item => item.id === e.target); + // 获取当前状态 + const sourceStatus = sourceItem?.data?.status || 'default'; + const targetStatus = targetItem?.data?.status || 'default'; addEdges({ ...e, + data: { + sourceStatus, + targetStatus, + }, type: 'custom', }); // 添加边连接时-判断节点是否都连接 @@ -197,10 +218,29 @@ const dropFunc = e => { nodeAndLineConnection(); }; -const handleDebugDialogOps = (visible)=>{ - debugDialogVisible.value = visible -} +// 更新节点状态--这里是测试第一个成功节点改变状态的方法【同时边也随之改变】 +const updateNodeTest = state => { + // 获取当前的success状态的 + const nodes = getNodes.value.filter(item => item.data.status === 'success'); + const id = nodes[0].id; + const data = nodes[0].data; + // 取第一个,状态改为error + updateNode(id, { data: { ...data, status: 'error' } }); + // 遍历获取以当前节点为起源节点的边和为目的节点的边 + const changeSourceEdges = [...getEdges.value.filter(item => item.source === id)]; + const changeTargetEdges = [...getEdges.value.filter(item => item.target === id)]; + // 分别遍历相应的边-并更新它们的状态为最新状态 + changeSourceEdges.forEach(item => { + updateEdgeData(item.id, { sourceStatus: 'error' }); + }); + changeTargetEdges.forEach(item => { + updateEdgeData(item.id, { targetStatus: 'error' }); + }); +}; +const handleDebugDialogOps = visible => { + debugDialogVisible.value = visible; +};