| | |
| | | <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> |
| | | |
| | |
| | | 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')); |
| | |
| | | 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> |