Skip to content

FlowNode 流程节点组件

提供节点的基本结构和样式,可扩展为具体的业务节点。

基础用法

⚙️数据处理
处理输入数据并输出结果
vue
<template>
  <x-flow-node
    :title="'数据处理'"
    :description="'处理输入数据并输出结果'"
    :icon="'⚙️'"
    :color="'primary'"
    :show-input-handle="true"
    :show-output-handle="true"
    @click="handleClick"
    @dblclick="handleDblClick"
  />
</template>

<script setup>
import { FlowNode } from '@xto/flow'

const handleClick = (event) => {
  console.log('点击节点')
}

const handleDblClick = (event) => {
  console.log('双击节点')
}
</script>

颜色主题

支持多种颜色主题。

默认
🔵主要
成功
⚠️警告
危险
ℹ️信息
vue
<template>
  <div style="display: flex; gap: 16px;">
    <!-- 默认 -->
    <x-flow-node :title="'默认'" :color="'default'" />
    
    <!-- 主要 -->
    <x-flow-node :title="'主要'" :color="'primary'" :icon="'🔵'" />
    
    <!-- 成功 -->
    <x-flow-node :title="'成功'" :color="'success'" :icon="'✅'" />
    
    <!-- 警告 -->
    <x-flow-node :title="'警告'" :color="'warning'" :icon="'⚠️'" />
    
    <!-- 危险 -->
    <x-flow-node :title="'危险'" :color="'danger'" :icon="'❌'" />
    
    <!-- 信息 -->
    <x-flow-node :title="'信息'" :color="'info'" :icon="'ℹ️'" />
  </div>
</template>

端口控制

控制输入输出端口的显示。

vue
<template>
  <!-- 只有输入端口 -->
  <x-flow-node :title="'终点'" :show-output-handle="false" />

  <!-- 只有输出端口 -->
  <x-flow-node :title="'起点'" :show-input-handle="false" />

  <!-- 无端口 -->
  <x-flow-node :title="'独立节点'" :show-input-handle="false" :show-output-handle="false" />
</template>

自定义内容

使用插槽自定义节点内容。

vue
<template>
  <x-flow-node :title="'AI 处理'">
    <!-- 默认插槽 -->
    <div class="custom-content">
      <p>模型: GPT-4</p>
      <p>温度: 0.7</p>
    </div>
    
    <!-- 底部插槽 -->
    <template #footer>
      <div class="node-footer">
        <span>状态: 运行中</span>
      </div>
    </template>
  </x-flow-node>
</template>

禁用状态

禁用节点
vue
<template>
  <x-flow-node :title="'禁用节点'" :disabled="true" />
</template>

自定义数据

vue
<template>
  <x-flow-node
    :title="'自定义节点'"
    :data="{ customProp: 'value', config: { ... } }"
  />
</template>

在 FlowEditor 中使用

FlowNode 通常配合 FlowEditor 使用,作为自定义节点类型。

vue
<template>
  <x-flow-editor :nodes="nodes" :node-types="nodeTypes" />
</template>

<script setup>
import { markRaw } from 'vue'
import { FlowEditor, FlowNode } from '@xto/flow'

// 自定义节点类型
const nodeTypes = {
  custom: markRaw(FlowNode)
}

const nodes = [
  {
    id: '1',
    type: 'custom',
    position: { x: 100, y: 100 },
    data: {
      title: '处理节点',
      description: '数据处理',
      icon: '⚙️',
      color: 'primary'
    }
  }
]
</script>

API

Props

属性说明类型默认值
title节点标题string'节点'
description节点描述string''
icon节点图标string''
color节点颜色主题'primary' | 'success' | 'warning' | 'danger' | 'info' | 'default''default'
showInputHandle是否显示输入端口booleantrue
showOutputHandle是否显示输出端口booleantrue
disabled是否禁用booleanfalse
data自定义数据Record<string, any>{}

Slots

插槽名说明
default节点内容
footer节点底部

Events

事件名说明
click点击节点时触发
dblclick双击节点时触发

基于 MIT 许可发布