From ab56385c8a119ff6fa4fda9af300cc6a4386b23b Mon Sep 17 00:00:00 2001 From: lanyuanxiaoyao Date: Tue, 24 Jun 2025 10:15:08 +0800 Subject: [PATCH] =?UTF-8?q?feat(web):=20=E5=A2=9E=E5=8A=A0=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E8=BE=93=E5=87=BA=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/ai/flow/node/AmisNode.tsx | 55 +++++++++++++++++-- .../client/src/pages/ai/flow/node/EndNode.tsx | 28 +--------- .../client/src/pages/ai/flow/node/LlmNode.tsx | 6 +- .../src/pages/ai/flow/node/StartNode.tsx | 4 +- 4 files changed, 60 insertions(+), 33 deletions(-) diff --git a/service-web/client/src/pages/ai/flow/node/AmisNode.tsx b/service-web/client/src/pages/ai/flow/node/AmisNode.tsx index 7c80e30..76257e9 100644 --- a/service-web/client/src/pages/ai/flow/node/AmisNode.tsx +++ b/service-web/client/src/pages/ai/flow/node/AmisNode.tsx @@ -1,12 +1,59 @@ +import {DeleteFilled, EditFilled} from '@ant-design/icons' import {Handle, type NodeProps, Position} from '@xyflow/react' import type {Schema} from 'amis' import {Card, Dropdown} from 'antd' -import {DeleteFilled, EditFilled} from '@ant-design/icons' import {isEmpty, isEqual} from 'licia' import type {JSX} from 'react' +import {horizontalFormOptions} from '../../../../util/amis.tsx' export type AmisNodeType = 'normal' | 'start' | 'end' +export function outputsFormColumns(editable: boolean = false, preload?: any): Schema[] { + return [ + { + disabled: !editable, + type: 'input-kvs', + name: 'outputs', + label: '输出变量', + value: preload, + addButtonText: '新增输出', + draggable: false, + keyItem: { + ...horizontalFormOptions(), + label: '参数名称', + }, + valueItems: [ + { + ...horizontalFormOptions(), + type: 'select', + name: 'type', + label: '参数', + required: true, + selectFirst: true, + options: [ + { + label: '文本', + value: 'string', + }, + { + label: '数字', + value: 'number', + }, + { + label: '文本数组', + value: 'array-string', + }, + { + label: '对象数组', + value: 'array-object', + }, + ], + }, + ], + }, + ] +} + const AmisNode = ( props: NodeProps, type: AmisNodeType, @@ -67,10 +114,10 @@ const AmisNode = ( placeholder: nodeDescription, }, { - type: 'divider' + type: 'divider', }, - ...(columnSchema ?? []) - ] + ...(columnSchema ?? []), + ], ) break case 'remove': diff --git a/service-web/client/src/pages/ai/flow/node/EndNode.tsx b/service-web/client/src/pages/ai/flow/node/EndNode.tsx index e0584ad..d23ae8c 100644 --- a/service-web/client/src/pages/ai/flow/node/EndNode.tsx +++ b/service-web/client/src/pages/ai/flow/node/EndNode.tsx @@ -1,6 +1,5 @@ import type {NodeProps} from '@xyflow/react' -import AmisNode from './AmisNode.tsx' -import {horizontalFormOptions} from '../../../../util/amis.tsx' +import AmisNode, {outputsFormColumns} from './AmisNode.tsx' const EndNode = (props: NodeProps) => AmisNode( props, @@ -8,30 +7,7 @@ const EndNode = (props: NodeProps) => AmisNode( '结束节点', '定义输出变量', undefined, - [ - { - type: 'input-kvs', - name: 'outputVariables', - label: '输出变量', - addButtonText: '新增输出', - draggable: false, - keyItem: { - ...horizontalFormOptions(), - label: '参数名称', - }, - valueItems: [ - { - ...horizontalFormOptions(), - type: 'select', - name: 'type', - label: '参数', - required: true, - selectFirst: true, - options: [], - }, - ], - }, - ], + outputsFormColumns(true), ) export default EndNode \ No newline at end of file diff --git a/service-web/client/src/pages/ai/flow/node/LlmNode.tsx b/service-web/client/src/pages/ai/flow/node/LlmNode.tsx index 530f10f..815d874 100644 --- a/service-web/client/src/pages/ai/flow/node/LlmNode.tsx +++ b/service-web/client/src/pages/ai/flow/node/LlmNode.tsx @@ -1,5 +1,5 @@ import type {NodeProps} from '@xyflow/react' -import AmisNode from './AmisNode.tsx' +import AmisNode, {outputsFormColumns} from './AmisNode.tsx' const LlmNode = (props: NodeProps) => AmisNode( props, @@ -31,6 +31,10 @@ const LlmNode = (props: NodeProps) => AmisNode( label: '系统提示词', required: true, }, + { + type: 'divider', + }, + ...outputsFormColumns(false, {text: {type: 'string'}}), ], ) diff --git a/service-web/client/src/pages/ai/flow/node/StartNode.tsx b/service-web/client/src/pages/ai/flow/node/StartNode.tsx index 5cc08fd..d7e7f3e 100644 --- a/service-web/client/src/pages/ai/flow/node/StartNode.tsx +++ b/service-web/client/src/pages/ai/flow/node/StartNode.tsx @@ -1,6 +1,6 @@ import type {NodeProps} from '@xyflow/react' -import AmisNode from './AmisNode.tsx' import {horizontalFormOptions} from '../../../../util/amis.tsx' +import AmisNode from './AmisNode.tsx' const StartNode = (props: NodeProps) => AmisNode( props, @@ -11,7 +11,7 @@ const StartNode = (props: NodeProps) => AmisNode( [ { type: 'input-kvs', - name: 'inputVariables', + name: 'inputs', label: '输入变量', addButtonText: '新增入参', draggable: false,