From 5cd7db9dc319ce7e2e81511910ec03f9aed34b0b Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期四, 12 十二月 2024 09:49:35 +0800 Subject: [PATCH] refactor(components): 优化节点组件并添加输入框自动聚焦功能 --- src/components/vue-flow/ui/nodes/StartNode.vue | 38 +++++++++++++++++++++++++------------- 1 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/components/vue-flow/ui/nodes/StartNode.vue b/src/components/vue-flow/ui/nodes/StartNode.vue index 551f1a2..5f2e58a 100644 --- a/src/components/vue-flow/ui/nodes/StartNode.vue +++ b/src/components/vue-flow/ui/nodes/StartNode.vue @@ -29,14 +29,14 @@ <img src="/@/components/vue-flow/ui/assets/images/icon_Start.png" class="h-4 w-4" alt="Start icon" /> <div class="flex flex-col gap-y-1"> <p v-if="!titleIsEdit" class="text-xl font-bold text-gray-500" @click="titleIsEdit = true">{{ data.title }}</p> - <el-input v-else v-model="data.title" @blur="() => (titleIsEdit = false)"></el-input> + <el-input v-elInputFocus v-else v-model="data.title" @blur="() => (titleIsEdit = false)"></el-input> </div> </div> </div> <div class="flex-auto gap-y-2 flex-col flex nodrag"> <div class="text-lg font-bold">鍙傛暟</div> - <el-table size="small" class="flex-auto" :data="parameterTable" border> + <el-table size="small" class="flex-auto" :data="varList" border> <el-table-column prop="name" width="90" label="鍙傛暟鍚�" fixed> <template #default="scope"> <el-input v-model="scope.row.name"></el-input> @@ -79,7 +79,7 @@ <el-button class="w-fit" type="primary" @click="handleClickAddBtn">娣诲姞鍙傛暟</el-button> </div> </div> - <Handle type="source" :position="Position.Right" /> + <Handle :id="handleId" type="source" :position="Position.Right" /> </div> <!-- <div> @@ -91,11 +91,12 @@ <script lang="ts" setup> import { Handle, Position, useNode, useVueFlow } from '@vue-flow/core'; -import { ref } from 'vue'; +import { ref, watchEffect } from 'vue'; import type { NodeProps } from '@vue-flow/core'; import { computed } from 'vue'; import { VueFlowConstant } from '../../VueFlowConstant'; +import { VueFlowHelper } from '../../VueFlowHelper'; import { parameterTypeMap } from '../../vueFlowEnum'; import { LLMNodeData, LLMNodeEvents } from './index'; import { deepClone } from '/@/utils/other'; @@ -103,16 +104,24 @@ defineProps<NodeProps<LLMNodeData, LLMNodeEvents>>(); const node = useNode(); +const handleId = ref(VueFlowHelper.getHandleId(node.node, 'source')); const data = ref(node.node.data); -const titleIsEdit = ref(false); -const parameterTable = computed(() => data.value[VueFlowConstant.PARAMS_KEY]); -function handleClickAddBtn() { - if (!data.value[VueFlowConstant.PARAMS_KEY]) { - data.value[VueFlowConstant.PARAMS_KEY] = []; - } - data.value[VueFlowConstant.PARAMS_KEY].push({ +const getVarList = () =>{ + const varList = data.value[VueFlowConstant.GROUP_PARAMS_KEY][0][VueFlowConstant.PARAMS_KEY].find( + (item) => item.key === 'condition' + ).value; + return varList; +} + +const varList = ref(VueFlowHelper.getFieldValue(data.value,'var_list')); +const titleIsEdit = ref(false); + +function handleClickAddBtn() { + + + varList.value.push({ name: '', description: '', type: '', @@ -121,14 +130,14 @@ } function handleClickDeleteBtn(index: number) { - data.value[VueFlowConstant.PARAMS_KEY].splice(index, 1); + varList.value.splice(index, 1); } const { removeNodes, nodes, addNodes } = useVueFlow(); function handleClickDuplicateBtn() { const { type, position, data } = node.node; const newNode = { - id: (nodes.value.length + 1).toString(), + id: VueFlowHelper.genGeometryId(), type, position: { x: position.x + 100, @@ -141,4 +150,7 @@ const clickDeleteBtn = () => { removeNodes(node.id); }; + + + </script> -- Gitblit v1.9.3