perf: One click beautification within the loop node
Some checks are pending
sync2gitee / repo-sync (push) Waiting to run
Typos Check / Spell Check with Typos (push) Waiting to run

This commit is contained in:
wangdan-fit2cloud 2025-11-20 15:17:37 +08:00
parent c114eff9b6
commit dfd26dea40
4 changed files with 26 additions and 7 deletions

View File

@ -9,7 +9,7 @@
</el-button> </el-button>
<el-button <el-button
@click="changeCursor(false)" @click="changeCursor(false)"
style="border: none; padding: 4px; height: 24px;margin-left: 8px;" style="border: none; padding: 4px; height: 24px; margin-left: 8px"
:class="{ 'is-drag-active': !isDrag }" :class="{ 'is-drag-active': !isDrag }"
> >
<AppIcon iconName="app-raisehand" :size="16"></AppIcon> <AppIcon iconName="app-raisehand" :size="16"></AppIcon>
@ -113,6 +113,12 @@ function fitView() {
} }
const layout = () => { const layout = () => {
props.lf?.extension.dagre.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 = () => { const retract = () => {
props.lf?.graphModel.nodes.forEach((element: any) => { props.lf?.graphModel.nodes.forEach((element: any) => {

View File

@ -108,8 +108,6 @@ const renderGraphData = (data?: any) => {
// //
data.nodeModel.clear_next_node_field(false) data.nodeModel.clear_next_node_field(false)
}) })
// lf.value.openSelectionSelect()
// lf.value.extension.selectionSelect.setSelectionSense(true, false)
setTimeout(() => { setTimeout(() => {
lf.value?.fitView() lf.value?.fitView()
}, 500) }, 500)

View File

@ -16,6 +16,7 @@
/> />
<h4 class="ellipsis-1 break-all">{{ nodeModel.properties.stepName }}</h4> <h4 class="ellipsis-1 break-all">{{ nodeModel.properties.stepName }}</h4>
</div> </div>
<!-- 放大缩小按钮 --> <!-- 放大缩小按钮 -->
<el-button link @click="enlargeHandle"> <el-button link @click="enlargeHandle">
<AppIcon <AppIcon
@ -121,6 +122,10 @@ import { WorkflowMode } from '@/enums/application'
provide('workflowMode', WorkflowMode.ApplicationLoop) provide('workflowMode', WorkflowMode.ApplicationLoop)
const props = defineProps<{
nodeModel: any
}>()
const titleFormRef = ref() const titleFormRef = ref()
const nodeNameDialogVisible = ref<boolean>(false) const nodeNameDialogVisible = ref<boolean>(false)
const form = ref<any>({ const form = ref<any>({
@ -176,9 +181,6 @@ const showicon = ref<number | null>(null)
const height = ref<number>(600) const height = ref<number>(600)
const props = defineProps<{
nodeModel: any
}>()
const nodeFields = computed(() => { const nodeFields = computed(() => {
if (props.nodeModel.properties.config.fields) { if (props.nodeModel.properties.config.fields) {
const fields = props.nodeModel.properties.config.fields?.map((field: any) => { const fields = props.nodeModel.properties.config.fields?.map((field: any) => {

View File

@ -156,14 +156,27 @@ const renderGraphData = (data?: any) => {
}, 500) }, 500)
} }
} }
const loopLayout = () => {
lf.value?.extension?.dagre.layout()
}
onMounted(() => { onMounted(() => {
renderGraphData(cloneDeep(props.nodeModel.properties.workflow)) renderGraphData(cloneDeep(props.nodeModel.properties.workflow))
set(props.nodeModel, 'validate', validate) set(props.nodeModel, 'validate', validate)
set(props.nodeModel, 'set_loop_body', set_loop_body) set(props.nodeModel, 'set_loop_body', set_loop_body)
set(props.nodeModel, 'loopLayout', loopLayout)
}) })
onUnmounted(() => { onUnmounted(() => {
disconnectByFlow(lf.value.graphModel.flowId) disconnectByFlow(lf.value.graphModel.flowId)
lf.value = null lf.value = null
}) })
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped>
.loop-beautify-button {
position: absolute;
top: 35px;
right: 70px;
border: none;
z-index: 10;
}
</style>