|
@@ -12,6 +12,7 @@ import Split from '@/app/components/workflow/nodes/_base/components/split'
|
|
|
import { InputVarType, NodeRunningStatus } from '@/app/components/workflow/types'
|
|
|
import ResultPanel from '@/app/components/workflow/run/result-panel'
|
|
|
import Toast from '@/app/components/base/toast'
|
|
|
+import { TransferMethod } from '@/types/app'
|
|
|
|
|
|
const i18nPrefix = 'workflow.singleRun'
|
|
|
|
|
@@ -51,7 +52,18 @@ const BeforeRunForm: FC<BeforeRunFormProps> = ({
|
|
|
|
|
|
const isFinished = runningStatus === NodeRunningStatus.Succeeded || runningStatus === NodeRunningStatus.Failed
|
|
|
const isRunning = runningStatus === NodeRunningStatus.Running
|
|
|
+ const isFileLoaded = (() => {
|
|
|
+ // system files
|
|
|
+ const filesForm = forms.find(item => !!item.values['#files#'])
|
|
|
+ if (!filesForm)
|
|
|
+ return true
|
|
|
|
|
|
+ const files = filesForm.values['#files#'] as any
|
|
|
+ if (files?.some((item: any) => item.transfer_method === TransferMethod.local_file && !item.upload_file_id))
|
|
|
+ return false
|
|
|
+
|
|
|
+ return true
|
|
|
+ })()
|
|
|
const handleRun = useCallback(() => {
|
|
|
let errMsg = ''
|
|
|
forms.forEach((form) => {
|
|
@@ -129,7 +141,7 @@ const BeforeRunForm: FC<BeforeRunFormProps> = ({
|
|
|
<StopCircle className='w-4 h-4 text-gray-500' />
|
|
|
</div>
|
|
|
)}
|
|
|
- <Button disabled={isRunning} type='primary' className='w-0 grow !h-8 flex items-center space-x-2 text-[13px]' onClick={handleRun}>
|
|
|
+ <Button disabled={!isFileLoaded || isRunning} type='primary' className='w-0 grow !h-8 flex items-center space-x-2 text-[13px]' onClick={handleRun}>
|
|
|
{isRunning && <Loading02 className='animate-spin w-4 h-4 text-white' />}
|
|
|
<div>{t(`${i18nPrefix}.${isRunning ? 'running' : 'startRun'}`)}</div>
|
|
|
</Button>
|