diff --git a/packages/ui/certd-client/src/views/certd/pipeline/certd-form/use.tsx b/packages/ui/certd-client/src/views/certd/pipeline/certd-form/use.tsx index de5b334dc..7024477b6 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/certd-form/use.tsx +++ b/packages/ui/certd-client/src/views/certd/pipeline/certd-form/use.tsx @@ -13,10 +13,27 @@ import { createNotificationApi } from "/@/views/certd/notification/api"; import GroupSelector from "../group/group-selector.vue"; import { useI18n } from "/src/locales"; import { useSettingStore } from "/@/store/settings"; +import dayjs from "dayjs"; export function fillPipelineByDefaultForm(pipeline: any, form: any) { const triggers = []; - if (form.triggerCron) { + + //根据随机时间设置触发时间 + if (form.random === true) { + // 随机时间 + const randomRange = form.randomRange; + const start = dayjs().format("YYYY-MM-DD") + " " + randomRange[0]; + let end = dayjs().format("YYYY-MM-DD") + " " + randomRange[1]; + if (randomRange[1] < randomRange[0]) { + //跨天 + end = dayjs().add(1, "day").format("YYYY-MM-DD") + " " + randomRange[1]; + } + const startTime = dayjs(start).valueOf(); + const endTime = dayjs(end).valueOf(); + const randomTime = Math.floor(Math.random() * (endTime - startTime)) + startTime; + const time = dayjs(randomTime).format(" ss:mm:HH").replaceAll(":", " ").replaceAll(" 0", " ").trim(); + triggers.push({ title: "定时触发", type: "timer", props: { cron: `${time} * * *` } }); + } else if (form.triggerCron) { triggers.push({ title: "定时触发", type: "timer", props: { cron: form.triggerCron } }); } if (form.webhookEnabled) { diff --git a/packages/ui/certd-client/src/views/certd/pipeline/components/change-trigger.vue b/packages/ui/certd-client/src/views/certd/pipeline/components/change-trigger.vue index edb377ad3..dbe2d36d7 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/components/change-trigger.vue +++ b/packages/ui/certd-client/src/views/certd/pipeline/components/change-trigger.vue @@ -67,8 +67,8 @@ async function openFormDialog() { return form.clear !== true; }), component: { - name: "fs-dict-switch", - vModel: "checked", + name: "fs-dict-radio", + vModel: "value", dict: dict({ data: [ { diff --git a/packages/ui/certd-client/src/views/certd/pipeline/template/use.tsx b/packages/ui/certd-client/src/views/certd/pipeline/template/use.tsx index a447384dd..67e3465a7 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/template/use.tsx +++ b/packages/ui/certd-client/src/views/certd/pipeline/template/use.tsx @@ -40,14 +40,18 @@ export function createExtraColumns() { random: { title: "定时类型", form: { + order: 100, value: true, helper: "是否给流水线随机设置一个时间", show: compute(({ form }) => { return form.clear !== true; }), + col: { + span: 24, + }, component: { - name: "fs-dict-switch", - vModel: "checked", + name: "fs-dict-radio", + vModel: "value", dict: dict({ data: [ { @@ -66,6 +70,7 @@ export function createExtraColumns() { randomRange: { title: "随机时间范围", form: { + order: 100, value: ["00:00:00", "08:00:00"], helper: "随机时间范围,单位秒", component: { @@ -83,6 +88,7 @@ export function createExtraColumns() { triggerCron: { title: t("certd.schedule"), form: { + order: 100, component: { name: "cron-editor", vModel: "modelValue", @@ -93,6 +99,12 @@ export function createExtraColumns() { rules: [{ required: true, message: t("certd.selectCron") }], }, }, + blank2: { + form: { + blank: true, + order: 100, + }, + }, notification: { title: "失败通知", type: "text",