wujingjing
2025-02-18 67e50265b5cdae1c28f39b924ccb277857f4acea
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>