wujingjing
2025-03-20 1598df378ab18d8388483d129439eec3cac38afe
src/components/vue-flow/MainCanvas.vue
@@ -2,13 +2,28 @@
   <div class="relative h-full w-full" id="main-canvas" @drop="handleOnDrop" @dragover="handleOnDragOver">
      <VueFlow v-model="elements" :node-types="nodeTypes" :connection-mode="ConnectionMode.Strict">
         <template #node-start="startNodeProps">
            <StartNode ref="nodeRef" v-bind="startNodeProps" :isViewMode="isViewMode" @register="(ref) => registerNodeRef(startNodeProps.id, ref)" />
            <StartNode
               ref="nodeRef"
               v-bind="startNodeProps"
               :isViewMode="isViewMode"
               @register="(ref) => registerNodeRef(startNodeProps.id, ref)"
            />
         </template>
         <template #node-condition="conditionNodeProps">
            <ConditionNode ref="nodeRef" v-bind="conditionNodeProps" :isViewMode="isViewMode" @register="(ref) => registerNodeRef(conditionNodeProps.id, ref)" />
            <ConditionNode
               ref="nodeRef"
               v-bind="conditionNodeProps"
               :isViewMode="isViewMode"
               @register="(ref) => registerNodeRef(conditionNodeProps.id, ref)"
            />
         </template>
         <template #node-output_msg="outputNodeProps">
            <OutputNode ref="nodeRef" v-bind="outputNodeProps" :isViewMode="isViewMode" @register="(ref) => registerNodeRef(outputNodeProps.id, ref)" />
            <OutputNode
               ref="nodeRef"
               v-bind="outputNodeProps"
               :isViewMode="isViewMode"
               @register="(ref) => registerNodeRef(outputNodeProps.id, ref)"
            />
         </template>
         <template #node-end="endNodeProps">
@@ -20,20 +35,50 @@
         </template>
         <template #node-agent="agentNodeProps">
            <AgentNode ref="nodeRef" v-bind="agentNodeProps" :agentNames="agentNames" :isViewMode="isViewMode" @register="(ref) => registerNodeRef(agentNodeProps.id, ref)" />
            <AgentNode
               ref="nodeRef"
               v-bind="agentNodeProps"
               :agentNames="agentNames"
               :isViewMode="isViewMode"
               @register="(ref) => registerNodeRef(agentNodeProps.id, ref)"
            />
         </template>
         <template #node-func="funcNodeProps">
            <FuncNode ref="nodeRef" v-bind="funcNodeProps" :funcNames="funcNames" :isViewMode="isViewMode" />
         </template>
         <template #node-code="codeNodeProps">
            <CodeNode ref="nodeRef" v-bind="codeNodeProps" :isViewMode="isViewMode" @register="(ref) => registerNodeRef(codeNodeProps.id, ref)" />
            <CodeNode
               ref="nodeRef"
               v-bind="codeNodeProps"
               :isViewMode="isViewMode"
               @register="(ref) => registerNodeRef(codeNodeProps.id, ref)"
            />
         </template>
         <template #node-python_code="pythonCodeNodeProps">
            <PythonCodeNode ref="nodeRef" v-bind="pythonCodeNodeProps" :isViewMode="isViewMode" @register="(ref) => registerNodeRef(pythonCodeNodeProps.id, ref)" />
            <PythonCodeNode
               ref="nodeRef"
               v-bind="pythonCodeNodeProps"
               :isViewMode="isViewMode"
               @register="(ref) => registerNodeRef(pythonCodeNodeProps.id, ref)"
            />
         </template>
         <template #node-n8n="n8nNodeProps">
            <N8nNode
               :workflowList="n8nWorkflowList"
               ref="nodeRef"
               v-bind="n8nNodeProps"
               :isViewMode="isViewMode"
               @register="(ref) => registerNodeRef(n8nNodeProps.id, ref)"
            />
         </template>
         <template #node-text_resource="textResourceNodeProps">
            <TextResourceNode ref="nodeRef" v-bind="textResourceNodeProps" :isViewMode="isViewMode" @register="(ref) => registerNodeRef(textResourceNodeProps.id, ref)" />
            <TextResourceNode
               ref="nodeRef"
               v-bind="textResourceNodeProps"
               :isViewMode="isViewMode"
               @register="(ref) => registerNodeRef(textResourceNodeProps.id, ref)"
            />
         </template>
         <template #node-analysis="analysisNodeProps">
@@ -78,8 +123,17 @@
import TextResourceNode from './ui/nodes/TextResourceNode.vue';
import { NodeType, nodeTypeMap } from './vueFlowEnum';
import { VueFlowHelper } from './VueFlowHelper';
import N8nNode from './ui/nodes/N8nNode.vue';
import { GetN8nWorkflowList } from '/@/api/n8n';
const props = defineProps(['flowJson', 'agentNames', 'funcNames', 'llmInfoList', 'isViewMode']);
const n8nWorkflowList = ref([]);
const getN8nWorkflowList = async () => {
   const res = await GetN8nWorkflowList({
      active: true,
   });
   n8nWorkflowList.value = res.values?.data ?? [];
};
const nodeTypes = {};
const elements = ref<Elements>();
@@ -136,7 +190,8 @@
   setInteractive(!props.isViewMode);
};
onMounted(() => {
onMounted(async () => {
   getN8nWorkflowList();
   setTimeout(() => {
      initFlowStatus();
   }, 30);