From a430284aa21e3ae1f0d5654e55b2ad2852519cc2 Mon Sep 17 00:00:00 2001 From: wwf <yearningwang@iqtogether.com> Date: 星期三, 04 六月 2025 15:17:49 +0800 Subject: [PATCH] 初始化 --- app/components/workflow/nodes/_base/components/before-run-form/index.tsx | 75 ++++++++++++++++++------------------- 1 files changed, 37 insertions(+), 38 deletions(-) diff --git a/app/components/workflow/nodes/_base/components/before-run-form/index.tsx b/app/components/workflow/nodes/_base/components/before-run-form/index.tsx index ad8d0b9..d7e2a95 100644 --- a/app/components/workflow/nodes/_base/components/before-run-form/index.tsx +++ b/app/components/workflow/nodes/_base/components/before-run-form/index.tsx @@ -17,10 +17,10 @@ import Toast from '@/app/components/base/toast' import { TransferMethod } from '@/types/app' import { getProcessedFiles } from '@/app/components/base/file-uploader/utils' +import type { NodeTracing } from '@/types/workflow' +import RetryResultPanel from '@/app/components/workflow/run/retry-result-panel' import type { BlockEnum } from '@/app/components/workflow/types' import type { Emoji } from '@/app/components/tools/types' -import type { SpecialResultPanelProps } from '@/app/components/workflow/run/special-result-panel' -import SpecialResultPanel from '@/app/components/workflow/run/special-result-panel' const i18nPrefix = 'workflow.singleRun' @@ -32,14 +32,15 @@ onRun: (submitData: Record<string, any>) => void onStop: () => void runningStatus: NodeRunningStatus - result?: React.JSX.Element + result?: JSX.Element forms: FormProps[] - showSpecialResultPanel?: boolean -} & Partial<SpecialResultPanelProps> + retryDetails?: NodeTracing[] + onRetryDetailBack?: any +} function formatValue(value: string | any, type: InputVarType) { if (type === InputVarType.number) - return Number.parseFloat(value) + return parseFloat(value) if (type === InputVarType.json) return JSON.parse(value) if (type === InputVarType.contexts) { @@ -50,11 +51,8 @@ if (type === InputVarType.multiFiles) return getProcessedFiles(value) - if (type === InputVarType.singleFile) { - if (Array.isArray(value)) - return getProcessedFiles(value) + if (type === InputVarType.singleFile) return getProcessedFiles([value])[0] - } return value } @@ -68,8 +66,8 @@ runningStatus, result, forms, - showSpecialResultPanel, - ...restResultPanelParams + retryDetails, + onRetryDetailBack = () => { }, }) => { const { t } = useTranslation() @@ -91,20 +89,9 @@ let errMsg = '' forms.forEach((form) => { form.inputs.forEach((input) => { - const value = form.values[input.variable] as any + const value = form.values[input.variable] if (!errMsg && input.required && (value === '' || value === undefined || value === null || (input.type === InputVarType.files && value.length === 0))) errMsg = t('workflow.errorMsg.fieldRequired', { field: typeof input.label === 'object' ? input.label.variable : input.label }) - - if (!errMsg && (input.type === InputVarType.singleFile || input.type === InputVarType.multiFiles) && value) { - let fileIsUploading = false - if (Array.isArray(value)) - fileIsUploading = value.find(item => item.transferMethod === TransferMethod.local_file && !item.uploadedId) - else - fileIsUploading = value.transferMethod === TransferMethod.local_file && !value.uploadedId - - if (fileIsUploading) - errMsg = t('appDebug.errorMessage.waitForFileUpload') - } }) }) if (errMsg) { @@ -123,7 +110,7 @@ const value = formatValue(form.values[input.variable], input.type) submitData[input.variable] = value } - catch { + catch (e) { parseErrorJsonField = input.variable } }) @@ -139,29 +126,41 @@ onRun(submitData) }, [forms, onRun, t]) return ( - <div className='absolute inset-0 z-10 rounded-2xl bg-background-overlay-alt pt-10'> - <div className='flex h-full flex-col rounded-2xl bg-components-panel-bg'> - <div className='flex h-8 shrink-0 items-center justify-between pl-4 pr-3 pt-3'> - <div className='truncate text-base font-semibold text-text-primary'> + <div className='absolute inset-0 z-10 rounded-2xl pt-10' style={{ + backgroundColor: 'rgba(16, 24, 40, 0.20)', + }}> + <div className='h-full rounded-2xl bg-white flex flex-col'> + <div className='shrink-0 flex justify-between items-center h-8 pl-4 pr-3 pt-3'> + <div className='text-base font-semibold text-gray-900 truncate'> {t(`${i18nPrefix}.testRun`)} {nodeName} </div> - <div className='ml-2 shrink-0 cursor-pointer p-1' onClick={() => { + <div className='ml-2 shrink-0 p-1 cursor-pointer' onClick={() => { onHide() }}> - <RiCloseLine className='h-4 w-4 text-text-tertiary ' /> + <RiCloseLine className='w-4 h-4 text-gray-500 ' /> </div> </div> { - showSpecialResultPanel && ( + retryDetails?.length && ( <div className='h-0 grow overflow-y-auto pb-4'> - <SpecialResultPanel {...restResultPanelParams} /> + <RetryResultPanel + list={retryDetails.map((item, index) => ({ + ...item, + title: `${t('workflow.nodes.common.retry.retry')} ${index + 1}`, + node_type: nodeType!, + extras: { + icon: toolIcon!, + }, + }))} + onBack={onRetryDetailBack} + /> </div> ) } { - !showSpecialResultPanel && ( + !retryDetails?.length && ( <div className='h-0 grow overflow-y-auto pb-4'> - <div className='mt-3 space-y-4 px-4'> + <div className='mt-3 px-4 space-y-4'> {forms.map((form, index) => ( <div key={index}> <Form @@ -176,14 +175,14 @@ <div className='mt-4 flex justify-between space-x-2 px-4' > {isRunning && ( <div - className='cursor-pointer rounded-lg border border-divider-regular bg-components-button-secondary-bg p-2 shadow-xs' + className='p-2 rounded-lg border border-gray-200 bg-white shadow-xs cursor-pointer' onClick={onStop} > - <StopCircle className='h-4 w-4 text-text-tertiary' /> + <StopCircle className='w-4 h-4 text-gray-500' /> </div> )} <Button disabled={!isFileLoaded || isRunning} variant='primary' className='w-0 grow space-x-2' onClick={handleRun}> - {isRunning && <RiLoader2Line className='h-4 w-4 animate-spin' />} + {isRunning && <RiLoader2Line className='animate-spin w-4 h-4 text-white' />} <div>{t(`${i18nPrefix}.${isRunning ? 'running' : 'startRun'}`)}</div> </Button> </div> -- Gitblit v1.8.0