From 77950e48c76f4a3b29d01831d43039caba29888a Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期二, 18 十一月 2025 14:12:42 +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