| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- import type { XYPosition } from '@repo/workflow'
- import type { FormItemRule } from 'element-plus'
- import type { VNode } from 'vue'
- /**
- * 渲染回调参数
- */
- export interface RenderCallbackParams {
- [key: string]: any
- }
- /**
- * 表单项配置模型
- */
- export interface ConfigSchema {
- // 其他未明确指定的属性
- [fieldName: string]: any
- /**
- * 子节点列表,可选
- */
- children?: ConfigSchema[]
- /**
- * 表单控件属性,可选
- * @example { type: 'input', options: [{ label: '用户名', value: 'username' }] }
- */
- componentProps?: any
- /**
- * 节点字段path,可选 获取参考lodash get方法
- * @example 'data.username'
- */
- field?: string
- // 是否为表单输入组件,可选
- input?: boolean
- // 节点标签,可选
- label?: string
- /**
- * 标签配置
- */
- labelConfig?: {
- /**
- * 宽度,可选
- */
- width?: number
- /**
- * 是否显示,可选
- */
- show?: boolean
- /**
- * 位置,可选
- */
- position?: 'top' | 'left'
- /**
- * 配置提示
- */
- tooltip?: string
- }
- // 是否无需表单项,可选
- noFormItem?: boolean
- // 事件绑定
- // 表单验证规则,可选
- rules?: FormItemRule[]
- // 是否显示(属性编辑组件可以添加函数动态显示隐藏),可选
- show?: ((renderCallbackParams: RenderCallbackParams) => boolean) | boolean
- // 插槽名称(组件为插槽类型时,需要设置插槽name),可选
- slotName?: string
- // 插槽列表,可选
- slots?: { [slotName: string]: ConfigSchema[] }
- /**
- * 节点类型,必选
- * @example 'text' | 'textarea' | 'select' | 'checkbox' | 'radio' | 'switch' | 'date' | 'time' | 'datetime' | 'color' | 'file' | 'image' | 'video' | 'audio' | 'range' | 'number' | 'password' | 'hidden' | 'button' | 'reset' | 'submit' | 'html' | 'custom'
- */
- valueType: string
- // 渲染表单项
- render?: (renderCallbackParams: RenderCallbackParams) => Element
- // 渲染组件
- renderItem?: (renderCallbackParams: RenderCallbackParams) => Element
- }
- type EndpointType = string | { type: string; label: string }
- export interface INodeType {
- /**
- * 版本信息
- */
- version: string[]
- /**
- * 展示名称
- */
- displayName: string
- /**
- * 名称
- */
- name: string
- /**
- * 副标题 带格式化信息
- */
- subtitle?: string
- /**
- * 描述
- */
- description?: string
- /**
- * 节点图标 默认使用iconify图标名称
- * @example 'mdi:home'
- * 参考 https://icon-sets.iconify.design/
- */
- icon?: string
- /**
- * 图标颜色
- */
- iconColor?: string
- /**
- * 输入端口列表
- */
- inputs: EndpointType[] | ((params: any) => EndpointType[])
- /**
- * 输出端口列表
- */
- outputs: EndpointType[] | ((params: any) => EndpointType[])
- /**
- * 输出端口名称
- */
- schema: {
- // 流程id
- appAgentId?: string
- // 父级节点Id
- parentId?: string
- // 节点位置
- position: XYPosition
- // 节点宽度
- width: number
- // 节点高度
- height: number
- // 当前是否选中
- selected: boolean
- // 节点类型
- nodeType: string
- // 节点层级
- zIndex: number
- // 节点业务数据 存储配置等
- data: Record<string, any>
- }
- /**
- * 表单配置
- */
- formConfig?: ConfigSchema[]
- /**
- * 节点自定义渲染
- */
- render?: (renderCallbackParams: RenderCallbackParams) => Element | VNode
- // 其他配置
- [key: string]: any
- }
- /**
- * 节点连接类型
- */
- export const NodeConnectionTypes = {
- main: 'main'
- }
|