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 |   63 +++++++++++++++++++++----------
 1 files changed, 43 insertions(+), 20 deletions(-)

diff --git a/src/components/vue-flow/ui/nodes/TextResourceNode.vue b/src/components/vue-flow/ui/nodes/TextResourceNode.vue
index 504151e..71f9ddc 100644
--- a/src/components/vue-flow/ui/nodes/TextResourceNode.vue
+++ b/src/components/vue-flow/ui/nodes/TextResourceNode.vue
@@ -7,25 +7,31 @@
 		: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="鍙傛暟鍚�" :readonly="isViewMode"> </el-input>
-		</FieldLayout>
-		<FieldLayout :title="codeStr.name">
-			<CodeEditor
-				:disabled="isViewMode"
-				:title="codeStr.name"
-				:language="codeLanguage"
-				v-model:defaultLanguage="codeStr.params[0].defaultLanguage"
-				v-model:editValue="codeStr.params[0].value"
-				:readonly="isViewMode"
-			/>
-			<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 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>
@@ -35,7 +41,7 @@
 import { vscodeDark } from '@uiw/codemirror-theme-vscode';
 import type { NodeProps } from '@vue-flow/core';
 import { Handle, Position, useNode } from '@vue-flow/core';
-import { ref } from 'vue';
+import { onMounted, ref } from 'vue';
 import { VueFlowHelper } from '../../VueFlowHelper';
 import { NodeType, ParameterType } from '../../vueFlowEnum';
 import FieldLayout from './components/FieldLayout.vue';
@@ -43,12 +49,16 @@
 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> & {
 		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'));
@@ -92,4 +102,17 @@
 	}
 	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