feat: 定时任务批次支持参数传递
This commit is contained in:
parent
34424ad9b2
commit
8b15a96ab4
@ -60,3 +60,12 @@ export function fetchTriggerJob(jobId: string) {
|
|||||||
method: 'post'
|
method: 'post'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** job name list */
|
||||||
|
export function fetchGetJobNameList(params?: Api.Job.JobNameListSearchParams) {
|
||||||
|
return request<Api.Job.Job[]>({
|
||||||
|
url: '/job/job-name/list',
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
});
|
||||||
|
}
|
||||||
|
6
src/typings/api.d.ts
vendored
6
src/typings/api.d.ts
vendored
@ -980,6 +980,12 @@ declare namespace Api {
|
|||||||
|
|
||||||
/** 2、固定时间 3、CRON表达式 99、工作流 */
|
/** 2、固定时间 3、CRON表达式 99、工作流 */
|
||||||
type TriggerType = 2 | 3 | 99;
|
type TriggerType = 2 | 3 | 99;
|
||||||
|
|
||||||
|
type JobNameListSearchParams = CommonType.RecordNullable<{
|
||||||
|
groupName?: string;
|
||||||
|
jobId?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}>;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
<script setup lang="tsx">
|
<script setup lang="tsx">
|
||||||
import { NButton, NTag } from 'naive-ui';
|
import { NButton, NTag } from 'naive-ui';
|
||||||
import { useBoolean } from '@sa/hooks';
|
import { useBoolean } from '@sa/hooks';
|
||||||
import { ref } from 'vue';
|
import { ref, watch } from 'vue';
|
||||||
import { fetchGetJobBatchList } from '@/service/api';
|
import { useRoute } from 'vue-router';
|
||||||
|
import { fetchGetJobBatchList, fetchGetJobNameList } from '@/service/api';
|
||||||
import { $t } from '@/locales';
|
import { $t } from '@/locales';
|
||||||
import { useAppStore } from '@/store/modules/app';
|
import { useAppStore } from '@/store/modules/app';
|
||||||
import { useTable } from '@/hooks/common/table';
|
import { useTable } from '@/hooks/common/table';
|
||||||
@ -12,6 +13,7 @@ import JobBatchSearch from './modules/job-batch-search.vue';
|
|||||||
import JobBatchDetailDrawer from './modules/job-batch-detail-drawer.vue';
|
import JobBatchDetailDrawer from './modules/job-batch-detail-drawer.vue';
|
||||||
|
|
||||||
const appStore = useAppStore();
|
const appStore = useAppStore();
|
||||||
|
const route = useRoute();
|
||||||
|
|
||||||
/** 详情页属性数据 */
|
/** 详情页属性数据 */
|
||||||
const detailData = ref<Api.JobBatch.JobBatch | null>();
|
const detailData = ref<Api.JobBatch.JobBatch | null>();
|
||||||
@ -97,6 +99,31 @@ const { columns, data, getData, loading, mobilePagination, searchParams, resetSe
|
|||||||
function detail(id: string) {
|
function detail(id: string) {
|
||||||
console.log(id);
|
console.log(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 处理路由 query 参数变化 */
|
||||||
|
async function handleQueryChanged(jobId: number) {
|
||||||
|
if (jobId === 0) {
|
||||||
|
searchParams.jobName = null;
|
||||||
|
} else {
|
||||||
|
const { data: jobList, error } = await fetchGetJobNameList({ jobId });
|
||||||
|
if (!error && jobList.length > 0) {
|
||||||
|
const jobName = jobList[0].jobName;
|
||||||
|
searchParams.jobName = jobName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getData();
|
||||||
|
}
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => route.query,
|
||||||
|
() => {
|
||||||
|
if (route.name === 'job_batch' && route.query.jobId) {
|
||||||
|
const jobId = Number(route.query.jobId);
|
||||||
|
handleQueryChanged(jobId);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import SelectGroup from '@/components/common/select-group.vue';
|
||||||
import TaskBatchStatus from '@/components/common/task-batch-status.vue';
|
import TaskBatchStatus from '@/components/common/task-batch-status.vue';
|
||||||
import { $t } from '@/locales';
|
import { $t } from '@/locales';
|
||||||
|
|
||||||
@ -27,7 +28,7 @@ function search() {
|
|||||||
<template>
|
<template>
|
||||||
<SearchForm :model="model" @search="search" @reset="reset">
|
<SearchForm :model="model" @search="search" @reset="reset">
|
||||||
<NFormItemGi span="24 s:12 m:6" :label="$t('page.jobBatch.groupName')" path="groupName" class="pr-24px">
|
<NFormItemGi span="24 s:12 m:6" :label="$t('page.jobBatch.groupName')" path="groupName" class="pr-24px">
|
||||||
<NInput v-model:value="model.groupName" :placeholder="$t('page.jobBatch.form.groupName')" />
|
<SelectGroup v-model:value="model.groupName" />
|
||||||
</NFormItemGi>
|
</NFormItemGi>
|
||||||
<NFormItemGi span="24 s:12 m:6" :label="$t('page.jobBatch.jobName')" path="jobName" class="pr-24px">
|
<NFormItemGi span="24 s:12 m:6" :label="$t('page.jobBatch.jobName')" path="jobName" class="pr-24px">
|
||||||
<NInput v-model:value="model.jobName" :placeholder="$t('page.jobBatch.form.jobName')" />
|
<NInput v-model:value="model.jobName" :placeholder="$t('page.jobBatch.form.jobName')" />
|
||||||
|
@ -8,11 +8,13 @@ import { useAppStore } from '@/store/modules/app';
|
|||||||
import { useTable, useTableOperate } from '@/hooks/common/table';
|
import { useTable, useTableOperate } from '@/hooks/common/table';
|
||||||
import { blockStrategyRecord, taskTypeRecord, triggerTypeRecord } from '@/constants/business';
|
import { blockStrategyRecord, taskTypeRecord, triggerTypeRecord } from '@/constants/business';
|
||||||
import StatusSwitch from '@/components/common/status-switch.vue';
|
import StatusSwitch from '@/components/common/status-switch.vue';
|
||||||
|
import { useRouterPush } from '@/hooks/common/router';
|
||||||
import JobTaskOperateDrawer from './modules/job-task-operate-drawer.vue';
|
import JobTaskOperateDrawer from './modules/job-task-operate-drawer.vue';
|
||||||
import JobTaskSearch from './modules/job-task-search.vue';
|
import JobTaskSearch from './modules/job-task-search.vue';
|
||||||
import JobTaskDetailDrawer from './modules/job-task-detail-drawer.vue';
|
import JobTaskDetailDrawer from './modules/job-task-detail-drawer.vue';
|
||||||
|
|
||||||
const appStore = useAppStore();
|
const appStore = useAppStore();
|
||||||
|
const { routerPushByKey } = useRouterPush();
|
||||||
|
|
||||||
/** 详情页属性数据 */
|
/** 详情页属性数据 */
|
||||||
const detailData = ref<Api.Job.Job | null>();
|
const detailData = ref<Api.Job.Job | null>();
|
||||||
@ -162,7 +164,7 @@ const { columns, data, getData, loading, mobilePagination, searchParams, resetSe
|
|||||||
key: 'operate',
|
key: 'operate',
|
||||||
title: $t('common.operate'),
|
title: $t('common.operate'),
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 130,
|
width: 260,
|
||||||
render: row => (
|
render: row => (
|
||||||
<div class="flex-center gap-8px">
|
<div class="flex-center gap-8px">
|
||||||
<NButton type="primary" ghost size="small" onClick={() => edit(row.id!)}>
|
<NButton type="primary" ghost size="small" onClick={() => edit(row.id!)}>
|
||||||
@ -188,6 +190,9 @@ const { columns, data, getData, loading, mobilePagination, searchParams, resetSe
|
|||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
</NPopconfirm>
|
</NPopconfirm>
|
||||||
|
<NButton type="primary" ghost size="small" onClick={() => goToBatch(row.id!)}>
|
||||||
|
{$t('common.batchList')}
|
||||||
|
</NButton>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -223,6 +228,10 @@ async function handleTriggerJob(id: string) {
|
|||||||
window.$message?.error($t('common.executeFailed'));
|
window.$message?.error($t('common.executeFailed'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function goToBatch(jobId: string) {
|
||||||
|
routerPushByKey('job_batch', { query: { jobId } });
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
Loading…
Reference in New Issue
Block a user