diff --git a/web/app/components/app/text-generate/item/index.tsx b/web/app/components/app/text-generate/item/index.tsx index 7da907210e..c3086bc829 100644 --- a/web/app/components/app/text-generate/item/index.tsx +++ b/web/app/components/app/text-generate/item/index.tsx @@ -267,6 +267,8 @@ const GenerationItem: FC = ({ ) + const [currentTab, setCurrentTab] = useState('DETAIL') + return (
= ({ )} {workflowProcessData && !isError && ( - + )} {isError && (
{t('share.generation.batchFailed.outputPlaceholder')}
@@ -320,19 +322,23 @@ const GenerationItem: FC = ({ ) } - { - if (typeof content === 'string') - copy(content) - else - copy(JSON.stringify(content)) - Toast.notify({ type: 'success', message: t('common.actionMsg.copySuccessfully') }) - }}> - - {!isMobile &&
{t('common.operation.copy')}
} -
+ {currentTab === 'RESULT' && ( + { + const content = workflowProcessData?.resultText + if (typeof content === 'string') + copy(content) + else + copy(JSON.stringify(content)) + Toast.notify({ type: 'success', message: t('common.actionMsg.copySuccessfully') }) + }}> + + {!isMobile &&
{t('common.operation.copy')}
} +
+ )} + {isInWebApp && ( <> {!isWorkflow && ( diff --git a/web/app/components/app/text-generate/item/result-tab.tsx b/web/app/components/app/text-generate/item/result-tab.tsx index 6a24acc843..3f48dd1b94 100644 --- a/web/app/components/app/text-generate/item/result-tab.tsx +++ b/web/app/components/app/text-generate/item/result-tab.tsx @@ -1,8 +1,6 @@ import { memo, useEffect, - // useRef, - useState, } from 'react' import cn from 'classnames' import { useTranslation } from 'react-i18next' @@ -16,15 +14,18 @@ import type { WorkflowProcess } from '@/app/components/base/chat/types' const ResultTab = ({ data, content, + currentTab, + onCurrentTabChange, }: { data?: WorkflowProcess content: any + currentTab: string + onCurrentTabChange: (tab: string) => void }) => { const { t } = useTranslation() - const [currentTab, setCurrentTab] = useState('DETAIL') const switchTab = async (tab: string) => { - setCurrentTab(tab) + onCurrentTabChange(tab) } useEffect(() => { if (data?.resultText) diff --git a/web/app/components/workflow/panel/workflow-preview.tsx b/web/app/components/workflow/panel/workflow-preview.tsx index 95b1d48e24..0f9997f06d 100644 --- a/web/app/components/workflow/panel/workflow-preview.tsx +++ b/web/app/components/workflow/panel/workflow-preview.tsx @@ -6,6 +6,7 @@ import { } from 'react' import cn from 'classnames' import { useTranslation } from 'react-i18next' +import copy from 'copy-to-clipboard' import ResultText from '../run/result-text' import ResultPanel from '../run/result-panel' import TracingPanel from '../run/tracing-panel' @@ -16,9 +17,12 @@ import { useStore } from '../store' import { WorkflowRunningStatus, } from '../types' +import { SimpleBtn } from '../../app/text-generate/item' +import Toast from '../../base/toast' import InputsPanel from './inputs-panel' import Loading from '@/app/components/base/loading' import { XClose } from '@/app/components/base/icons/src/vender/line/general' +import { Clipboard } from '@/app/components/base/icons/src/vender/line/files' const WorkflowPreview = () => { const { t } = useTranslation() @@ -108,12 +112,28 @@ const WorkflowPreview = () => { switchTab('RESULT')} /> )} {currentTab === 'RESULT' && ( - switchTab('DETAIL')} - /> + <> + switchTab('DETAIL')} + /> + { + const content = workflowRunningData?.resultText + if (typeof content === 'string') + copy(content) + else + copy(JSON.stringify(content)) + Toast.notify({ type: 'success', message: t('common.actionMsg.copySuccessfully') }) + }}> + +
{t('common.operation.copy')}
+
+ )} {currentTab === 'DETAIL' && ( {
)} +