reactor:【infra 基础设施】infra 的 job、joblogger 描述的统一
parent
21f76355fa
commit
5ec4d8ab82
|
|
@ -228,16 +228,13 @@ export function useDetailSchema(): DescriptionItemSchema[] {
|
||||||
{
|
{
|
||||||
field: 'nextTimes',
|
field: 'nextTimes',
|
||||||
label: '后续执行时间',
|
label: '后续执行时间',
|
||||||
content: (data) => {
|
content: (data: InfraJobApi.Job) => {
|
||||||
if (!data?.nextTimes) {
|
if (!data?.nextTimes || data.nextTimes.length === 0) {
|
||||||
return '无后续执行时间';
|
|
||||||
}
|
|
||||||
if (data.nextTimes.length === 0) {
|
|
||||||
return '无后续执行时间';
|
return '无后续执行时间';
|
||||||
}
|
}
|
||||||
return h(Timeline, {}, () =>
|
return h(Timeline, {}, () =>
|
||||||
data.nextTimes.map((time: any) =>
|
data.nextTimes?.map((time: Date) =>
|
||||||
h(Timeline.Item, {}, () => formatDateTime(time)?.toString()),
|
h(Timeline.Item, {}, () => formatDateTime(time)),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,15 @@ import { useDetailSchema } from '../data';
|
||||||
const formData = ref<InfraJobApi.Job>(); // 任务详情
|
const formData = ref<InfraJobApi.Job>(); // 任务详情
|
||||||
const nextTimes = ref<Date[]>([]); // 下一次执行时间
|
const nextTimes = ref<Date[]>([]); // 下一次执行时间
|
||||||
|
|
||||||
|
const [Descriptions] = useDescription({
|
||||||
|
componentProps: {
|
||||||
|
bordered: true,
|
||||||
|
column: 1,
|
||||||
|
class: 'mx-4',
|
||||||
|
},
|
||||||
|
schema: useDetailSchema(),
|
||||||
|
});
|
||||||
|
|
||||||
const [Modal, modalApi] = useVbenModal({
|
const [Modal, modalApi] = useVbenModal({
|
||||||
async onOpenChange(isOpen: boolean) {
|
async onOpenChange(isOpen: boolean) {
|
||||||
if (!isOpen) {
|
if (!isOpen) {
|
||||||
|
|
@ -29,21 +38,13 @@ const [Modal, modalApi] = useVbenModal({
|
||||||
formData.value = await getJob(data.id);
|
formData.value = await getJob(data.id);
|
||||||
// 获取下一次执行时间
|
// 获取下一次执行时间
|
||||||
nextTimes.value = await getJobNextTimes(data.id);
|
nextTimes.value = await getJobNextTimes(data.id);
|
||||||
|
// 将 nextTimes 赋值给 formData,以便在 schema 中使用
|
||||||
formData.value.nextTimes = nextTimes.value;
|
formData.value.nextTimes = nextTimes.value;
|
||||||
} finally {
|
} finally {
|
||||||
modalApi.unlock();
|
modalApi.unlock();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const [Description] = useDescription({
|
|
||||||
componentProps: {
|
|
||||||
bordered: true,
|
|
||||||
column: 1,
|
|
||||||
class: 'mx-4',
|
|
||||||
},
|
|
||||||
schema: useDetailSchema(),
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|
@ -53,6 +54,6 @@ const [Description] = useDescription({
|
||||||
:show-cancel-button="false"
|
:show-cancel-button="false"
|
||||||
:show-confirm-button="false"
|
:show-confirm-button="false"
|
||||||
>
|
>
|
||||||
<Description :data="formData" />
|
<Descriptions :data="formData" />
|
||||||
</Modal>
|
</Modal>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ export namespace InfraJobApi {
|
||||||
retryInterval: number;
|
retryInterval: number;
|
||||||
monitorTimeout: number;
|
monitorTimeout: number;
|
||||||
createTime?: Date;
|
createTime?: Date;
|
||||||
|
nextTimes?: Date[];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,8 @@ import { DICT_TYPE } from '@vben/constants';
|
||||||
import { getDictOptions } from '@vben/hooks';
|
import { getDictOptions } from '@vben/hooks';
|
||||||
import { formatDateTime } from '@vben/utils';
|
import { formatDateTime } from '@vben/utils';
|
||||||
|
|
||||||
|
import { ElTimeline, ElTimelineItem } from 'element-plus';
|
||||||
|
|
||||||
import { DictTag } from '#/components/dict-tag';
|
import { DictTag } from '#/components/dict-tag';
|
||||||
|
|
||||||
/** 新增/修改的表单 */
|
/** 新增/修改的表单 */
|
||||||
|
|
@ -226,5 +228,19 @@ export function useDetailSchema(): DescriptionItemSchema[] {
|
||||||
: '未开启';
|
: '未开启';
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
field: 'nextTimes',
|
||||||
|
label: '后续执行时间',
|
||||||
|
content: (data: InfraJobApi.Job) => {
|
||||||
|
if (!data?.nextTimes || data.nextTimes.length === 0) {
|
||||||
|
return '无后续执行时间';
|
||||||
|
}
|
||||||
|
return h(ElTimeline, {}, () =>
|
||||||
|
data.nextTimes?.map((time: Date) =>
|
||||||
|
h(ElTimelineItem, {}, () => formatDateTime(time)),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ import type { InfraJobApi } from '#/api/infra/job';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
|
|
||||||
import { useVbenModal } from '@vben/common-ui';
|
import { useVbenModal } from '@vben/common-ui';
|
||||||
import { formatDateTime } from '@vben/utils';
|
|
||||||
|
|
||||||
import { getJob, getJobNextTimes } from '#/api/infra/job';
|
import { getJob, getJobNextTimes } from '#/api/infra/job';
|
||||||
import { useDescription } from '#/components/description';
|
import { useDescription } from '#/components/description';
|
||||||
|
|
@ -42,6 +41,8 @@ const [Modal, modalApi] = useVbenModal({
|
||||||
formData.value = await getJob(data.id);
|
formData.value = await getJob(data.id);
|
||||||
// 获取下一次执行时间
|
// 获取下一次执行时间
|
||||||
nextTimes.value = await getJobNextTimes(data.id);
|
nextTimes.value = await getJobNextTimes(data.id);
|
||||||
|
// 将 nextTimes 赋值给 formData,以便在 schema 中使用
|
||||||
|
formData.value.nextTimes = nextTimes.value;
|
||||||
} finally {
|
} finally {
|
||||||
modalApi.unlock();
|
modalApi.unlock();
|
||||||
}
|
}
|
||||||
|
|
@ -57,19 +58,5 @@ const [Modal, modalApi] = useVbenModal({
|
||||||
:show-confirm-button="false"
|
:show-confirm-button="false"
|
||||||
>
|
>
|
||||||
<Descriptions :data="formData" />
|
<Descriptions :data="formData" />
|
||||||
|
|
||||||
<!-- 后续执行时间 -->
|
|
||||||
<div v-if="nextTimes.length > 0" class="mt-4">
|
|
||||||
<h4 class="mb-2 text-lg font-medium">后续执行时间</h4>
|
|
||||||
<div class="max-h-[200px] overflow-y-auto rounded border p-2">
|
|
||||||
<div
|
|
||||||
v-for="(nextTime, index) in nextTimes"
|
|
||||||
:key="index"
|
|
||||||
class="py-1 text-sm text-gray-600"
|
|
||||||
>
|
|
||||||
第 {{ index + 1 }} 次:{{ formatDateTime(nextTime.toString()) }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</Modal>
|
</Modal>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue