From dfd26dea40c87d7dc7f9d2c7e9e60d520e4daf33 Mon Sep 17 00:00:00 2001 From: wangdan-fit2cloud Date: Thu, 20 Nov 2025 15:17:37 +0800 Subject: [PATCH] perf: One click beautification within the loop node --- ui/src/workflow/common/NodeControl.vue | 8 +++++++- ui/src/workflow/index.vue | 2 -- .../nodes/loop-body-node/LoopBodyContainer.vue | 8 +++++--- ui/src/workflow/nodes/loop-body-node/index.vue | 15 ++++++++++++++- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/ui/src/workflow/common/NodeControl.vue b/ui/src/workflow/common/NodeControl.vue index 2666ecc10..d0406b8ac 100644 --- a/ui/src/workflow/common/NodeControl.vue +++ b/ui/src/workflow/common/NodeControl.vue @@ -9,7 +9,7 @@ @@ -113,6 +113,12 @@ function fitView() { } const layout = () => { props.lf?.extension.dagre.layout() + console.log(props.lf) + props.lf?.graphModel.nodes.forEach((node: any) => { + if (node.type === 'loop-body-node') { + node?.loopLayout?.() + } + }) } const retract = () => { props.lf?.graphModel.nodes.forEach((element: any) => { diff --git a/ui/src/workflow/index.vue b/ui/src/workflow/index.vue index 73a17a437..b7f7f55b1 100644 --- a/ui/src/workflow/index.vue +++ b/ui/src/workflow/index.vue @@ -108,8 +108,6 @@ const renderGraphData = (data?: any) => { // 清除当前节点下面的子节点的所有缓存 data.nodeModel.clear_next_node_field(false) }) - // lf.value.openSelectionSelect() - // lf.value.extension.selectionSelect.setSelectionSense(true, false) setTimeout(() => { lf.value?.fitView() }, 500) diff --git a/ui/src/workflow/nodes/loop-body-node/LoopBodyContainer.vue b/ui/src/workflow/nodes/loop-body-node/LoopBodyContainer.vue index 6597f2e76..808344e04 100644 --- a/ui/src/workflow/nodes/loop-body-node/LoopBodyContainer.vue +++ b/ui/src/workflow/nodes/loop-body-node/LoopBodyContainer.vue @@ -16,6 +16,7 @@ />

{{ nodeModel.properties.stepName }}

+ () + const titleFormRef = ref() const nodeNameDialogVisible = ref(false) const form = ref({ @@ -176,9 +181,6 @@ const showicon = ref(null) const height = ref(600) -const props = defineProps<{ - nodeModel: any -}>() const nodeFields = computed(() => { if (props.nodeModel.properties.config.fields) { const fields = props.nodeModel.properties.config.fields?.map((field: any) => { diff --git a/ui/src/workflow/nodes/loop-body-node/index.vue b/ui/src/workflow/nodes/loop-body-node/index.vue index 4fffd1195..d5cb55165 100644 --- a/ui/src/workflow/nodes/loop-body-node/index.vue +++ b/ui/src/workflow/nodes/loop-body-node/index.vue @@ -156,14 +156,27 @@ const renderGraphData = (data?: any) => { }, 500) } } + +const loopLayout = () => { + lf.value?.extension?.dagre.layout() +} onMounted(() => { renderGraphData(cloneDeep(props.nodeModel.properties.workflow)) set(props.nodeModel, 'validate', validate) set(props.nodeModel, 'set_loop_body', set_loop_body) + set(props.nodeModel, 'loopLayout', loopLayout) }) onUnmounted(() => { disconnectByFlow(lf.value.graphModel.flowId) lf.value = null }) - +