diff --git a/src/service/api/job.ts b/src/service/api/job.ts index 6c7be6a..905bf38 100644 --- a/src/service/api/job.ts +++ b/src/service/api/job.ts @@ -88,6 +88,15 @@ export function fetchTriggerJob(jobId: string) { }); } +/** trigger Job by id */ +export function fetchTriggerJobParams(data: Api.Job.TriggerJobParams) { + return request({ + url: '/job/trigger', + method: 'post', + data + }); +} + /** job name list */ export function fetchGetJobNameList(params?: Api.Job.JobNameListSearchParams) { return request({ diff --git a/src/typings/api.d.ts b/src/typings/api.d.ts index 104768d..068a700 100644 --- a/src/typings/api.d.ts +++ b/src/typings/api.d.ts @@ -1006,6 +1006,11 @@ declare namespace Api { notifyScene?: string; }>; + type TriggerJobParams = { + jobId?: string; + tmpArgsStr?: string; + }; + /** JobTask search params */ type JobSearchParams = CommonType.RecordNullable< Pick< diff --git a/src/views/job/task/index.vue b/src/views/job/task/index.vue index e6d5f64..53fbc5f 100644 --- a/src/views/job/task/index.vue +++ b/src/views/job/task/index.vue @@ -2,7 +2,7 @@ import { NButton, NDropdown, NPopconfirm, NTag } from 'naive-ui'; import { useBoolean } from '@sa/hooks'; import { ref } from 'vue'; -import { fetchBatchDeleteJob, fetchGetJobPage, fetchTriggerJob, fetchUpdateJobStatus } from '@/service/api'; +import { fetchBatchDeleteJob, fetchGetJobPage, fetchUpdateJobStatus } from '@/service/api'; import { $t } from '@/locales'; import { useAppStore } from '@/store/modules/app'; import { useTable, useTableOperate } from '@/hooks/common/table'; @@ -12,6 +12,7 @@ import { useRouterPush } from '@/hooks/common/router'; import { useAuth } from '@/hooks/business/auth'; import { downloadFetch } from '@/utils/download'; import JobTaskOperateDrawer from './modules/job-task-operate-drawer.vue'; +import JobTaskTriggerModal from './modules/job-task-trigger-modal.vue'; import JobTaskSearch from './modules/job-task-search.vue'; import JobTaskDetailDrawer from './modules/job-task-detail-drawer.vue'; @@ -24,6 +25,8 @@ const { routerPushByKey } = useRouterPush(); const detailData = ref(); /** 详情页可见状态 */ const { bool: detailVisible, setTrue: openDetail } = useBoolean(false); +const triggerData = ref(); +const { bool: triggerVisible, setTrue: openTriggerModal } = useBoolean(false); const { columnChecks, columns, data, getData, loading, mobilePagination, searchParams, resetSearchParams } = useTable({ apiFn: fetchGetJobPage, @@ -245,16 +248,9 @@ const { columnChecks, columns, data, getData, loading, mobilePagination, searchP - handleTriggerJob(row.id!)}> - {{ - default: () => $t('common.confirmExecute'), - trigger: () => ( - - {$t('common.execute')} - - ) - }} - + handleTriggerJob(row)}> + {$t('common.execute')} + @@ -312,13 +308,9 @@ function copy(id: string) { handleCopy(id); } -async function handleTriggerJob(id: string) { - const { error } = await fetchTriggerJob(id); - if (error) { - window.$message?.error($t('common.executeFailed')); - } else { - window.$message?.success($t('common.executeSuccess')); - } +async function handleTriggerJob(job: Api.Job.Job) { + triggerData.value = job; + openTriggerModal(); } function goToBatch(jobId: string) { @@ -404,6 +396,7 @@ function handleExport() { @submitted="getData" /> + diff --git a/src/views/job/task/modules/job-task-trigger-modal.vue b/src/views/job/task/modules/job-task-trigger-modal.vue new file mode 100644 index 0000000..f3ec20a --- /dev/null +++ b/src/views/job/task/modules/job-task-trigger-modal.vue @@ -0,0 +1,402 @@ + + + + +