diff --git a/service-web/client/src/components/flow/node/OutputNode.tsx b/service-web/client/src/components/flow/node/OutputNode.tsx index 39cecb3..13f957d 100644 --- a/service-web/client/src/components/flow/node/OutputNode.tsx +++ b/service-web/client/src/components/flow/node/OutputNode.tsx @@ -1,22 +1,75 @@ import type {NodeProps} from '@xyflow/react' +import {Tag} from 'antd' import React, {useCallback} from 'react' import {useContextStore} from '../store/ContextStore.ts' import {useDataStore} from '../store/DataStore.ts' import {useFlowStore} from '../store/FlowStore.ts' import AmisNode, {EndNodeHandler, inputsFormColumns} from './AmisNode.tsx' +const typeMap: Record = { + markdown: 'Markdown', + json: 'JSON', + 'template-markdown': 'Markdown 模板', + 'template-rich-text': '富文本模板', +} + const OutputNode = (props: NodeProps) => { const {getNodes, getEdges} = useFlowStore() - const {getData} = useDataStore() + const {getData, getDataById} = useDataStore() const {getInputSchema} = useContextStore() + + const nodeData = getDataById(props.id) + const columnsSchema = useCallback( - () => inputsFormColumns(props.id, getInputSchema(), getNodes(), getEdges(), getData()), + () => [ + ...inputsFormColumns(props.id, getInputSchema(), getNodes(), getEdges(), getData()), + { + type: 'divider', + }, + { + type: 'select', + name: 'type', + label: '输出类型', + required: true, + selectFirst: true, + options: Object.keys(typeMap).map(key => ({label: typeMap[key], value: key})), + }, + { + visibleOn: 'type === \'template-markdown\'', + type: 'editor', + required: true, + label: '模板内容', + name: 'template', + language: 'markdown', + options: { + wordWrap: 'bounded', + }, + }, + { + visibleOn: 'type === \'template-rich-text\'', + type: 'input-rich-text', + required: true, + name: 'template', + label: '模板内容', + options: { + min_height: 500, + }, + }, + ], [props.id], ) return ( + 输出类型 + {typeMap[nodeData.type]} + + : <> + } columnSchema={columnsSchema} handler={} />