diff --git a/web/src/views/Tasks/Submit.vue b/web/src/views/Tasks/Submit.vue index 3f7db65..7f7b6e4 100644 --- a/web/src/views/Tasks/Submit.vue +++ b/web/src/views/Tasks/Submit.vue @@ -34,7 +34,7 @@ @@ -115,6 +121,33 @@ const showFilePicker = ref(false) const selectedApp = computed(() => appList.value.find(a => a.id === selectedAppId.value)) +const autoParams = new Set(['WORK_DIR']) + +const visibleParams = computed(() => + (selectedApp.value?.parameters || []).filter((p: any) => !autoParams.has(p.name)) +) + +const fileParams = computed(() => + (selectedApp.value?.parameters || []).filter( + (p: any) => p.type === 'file' || p.type === 'directory' + ) +) + +const fileParamMapping = computed(() => { + const mapping: Record = {} + fileParams.value.forEach((p: any, i: number) => { + if (selectedFiles.value[i]) { + mapping[p.name] = String(selectedFiles.value[i].id) + } + }) + return mapping +}) + +const getFileForParam = (param: any) => { + const index = fileParams.value.findIndex((p: any) => p.name === param.name) + return selectedFiles.value[index] +} + watch(selectedAppId, () => { values.value = {} }) onMounted(async () => { @@ -131,7 +164,8 @@ const handleSubmit = async () => { submitting.value = true try { const taskName = form.task_name.trim() || `task_${selectedAppId.value}_${Date.now()}` - const resp = await createTask({ ...form, task_name: taskName, job_name: taskName, app_id: selectedAppId.value, values: values.value, file_ids: selectedFiles.value.map(f => f.id) }) + const mergedValues = { ...values.value, ...fileParamMapping.value } + const resp = await createTask({ ...form, task_name: taskName, job_name: taskName, app_id: selectedAppId.value, values: mergedValues, file_ids: selectedFiles.value.map(f => f.id) }) if (resp.success) { ElMessage.success('任务提交成功') router.push('/tasks')