From 67e50265b5cdae1c28f39b924ccb277857f4acea Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期二, 18 二月 2025 14:08:36 +0800 Subject: [PATCH] 一些必填 --- src/components/vue-flow/ui/nodes/TextResourceNode.vue | 76 ++++++++++++++++++++++++++----------- 1 files changed, 53 insertions(+), 23 deletions(-) diff --git a/src/components/vue-flow/ui/nodes/TextResourceNode.vue b/src/components/vue-flow/ui/nodes/TextResourceNode.vue index 7d77df3..71f9ddc 100644 --- a/src/components/vue-flow/ui/nodes/TextResourceNode.vue +++ b/src/components/vue-flow/ui/nodes/TextResourceNode.vue @@ -1,25 +1,38 @@ <template> - <NodeBasicLayout v-model:title="data.title" :type="NodeType.Code" :showOffset="false" :description="data.description"> + <NodeBasicLayout + v-model:title="data.title" + :type="NodeType.TextResource" + :showOffset="false" + :description="data.description" + :isViewMode="isViewMode" + > <Handle :id="targetHandleId" type="target" :position="Position.Left" /> - <FieldLayout :title="codeInput.name"> - <el-input class="w-full flex-0" v-model="codeInput.params[0].value" placeholder="鍙傛暟鍚�"> </el-input> - </FieldLayout> - <FieldLayout :title="codeStr.name"> - <CodeEditor - :title="codeStr.name" - :language="codeLanguage" - v-model:defaultLanguage="codeStr.params[0].defaultLanguage" - v-model:editValue="codeStr.params[0].value" - /> - <template #right> - <el-select size="small" class="w-[100px]" v-model="codeStr.params[0].defaultLanguage"> - <el-option v-for="item in codeLanguage" :key="item" :value="item" :label="textTypeMap[item]"></el-option> - </el-select> - </template> - </FieldLayout> - + <el-form ref="formRef" :model="data" :rules="formRules" label-position="right" label-width="60px" :show-message="false"> + <FieldLayout :title="codeInput.name" required> + <el-form-item prop="group_params.0.params.0.value" labelWidth="0"> + <el-input class="w-full flex-0" v-model="codeInput.params[0].value" placeholder="鍙傛暟鍚�" :readonly="isViewMode"> </el-input> + </el-form-item> + </FieldLayout> + <FieldLayout :title="codeStr.name" required> + <el-form-item prop="group_params.1.params.0.value" labelWidth="0"> + <CodeEditor + class="w-full" + :disabled="isViewMode" + :title="codeStr.name" + :language="codeLanguage" + v-model:defaultLanguage="codeStr.params[0].defaultLanguage" + v-model:editValue="codeStr.params[0].value" + :readonly="isViewMode" + /> + </el-form-item> + <template #right> + <el-select v-if="!isViewMode" size="small" class="w-[100px]" v-model="codeStr.params[0].defaultLanguage"> + <el-option v-for="item in codeLanguage" :key="item" :value="item" :label="textTypeMap[item]"></el-option> + </el-select> + </template> + </FieldLayout> + </el-form> <Handle :id="sourceHandleId" type="source" :position="Position.Right" /> - </NodeBasicLayout> </template> @@ -28,17 +41,24 @@ import { vscodeDark } from '@uiw/codemirror-theme-vscode'; import type { NodeProps } from '@vue-flow/core'; import { Handle, Position, useNode } from '@vue-flow/core'; -import { computed, ref } from 'vue'; +import { onMounted, ref } from 'vue'; import { VueFlowHelper } from '../../VueFlowHelper'; import { NodeType, ParameterType } from '../../vueFlowEnum'; -import CodeEditDialog from './components/CodeEditDlg.vue'; import FieldLayout from './components/FieldLayout.vue'; import NodeBasicLayout from './components/NodeBasicLayout.vue'; import type { LLMNodeData, LLMNodeEvents } from './index'; import CodeEditor from '/@/components/input/codeEditor/index.vue'; import { textTypeMap } from '/@/components/input/codeEditor/types'; +import { validateForm } from './utils'; -defineProps<NodeProps<LLMNodeData, LLMNodeEvents>>(); +defineProps< + NodeProps<LLMNodeData, LLMNodeEvents> & { + isViewMode?: boolean; + } +>(); +const emit = defineEmits<{ + (e: 'register', data: { validateForm: () => Promise<{ isValid: boolean; invalidFields?: any }> }): void; +}>(); const node = useNode(); const targetHandleId = ref(VueFlowHelper.getHandleId(node.node, 'target')); const sourceHandleId = ref(VueFlowHelper.getHandleId(node.node, 'source')); @@ -83,6 +103,16 @@ codeInput.value.params[0].value.push(getInputEmptyItem()); }; +const formRef = ref(); +const formRules = ref({ + 'group_params.0.params.0.value': [{ required: true, message: '璇疯緭鍏ュ弬鏁板悕', trigger: 'blur' }], + 'group_params.1.params.0.value': [{ required: true, message: '璇疯緭鍏ュ弬鏁板��', trigger: 'blur' }], +}); - +// 娉ㄥ唽鑺傜偣瀹炰緥 +onMounted(() => { + emit('register', { + validateForm: validateForm(formRef) as any, + }); +}); </script> -- Gitblit v1.9.3