perf: 批量修改定时时间支持随机时间

This commit is contained in:
xiaojunnuo
2025-12-25 22:20:54 +08:00
parent 5b5deac7d9
commit d0f653da9a
2 changed files with 59 additions and 1 deletions

View File

@@ -22,6 +22,8 @@ async function batchUpdateRequest(form: any) {
title: "定时触发",
type: "timer",
props: form.clear ? false : form.props,
random: form.random,
randomRange: form.randomRange,
});
emit("change");
}
@@ -56,6 +58,46 @@ async function openFormDialog() {
},
},
},
random: {
title: "随机时间",
form: {
value: true,
helper: "是否给流水线随机设置一个时间",
component: {
name: "fs-dict-switch",
vModel: "checked",
dict: dict({
data: [
{
label: "随机时间",
value: true,
},
{
label: "固定时间",
value: false,
},
],
}),
},
},
},
randomRange: {
title: "随机时间范围",
form: {
value: ["00:00:00", "08:00:00"],
helper: "随机时间范围,单位秒",
component: {
// <a-time-range-picker :bordered="false" />
name: "a-time-range-picker",
vModel: "value",
valueFormat: "HH:mm:ss",
},
show: compute(({ form }) => {
return form.clear !== true && form.random === true;
}),
rules: [{ required: true, message: "请选择随机时间范围" }],
},
},
"props.cron": {
title: t("certd.schedule"),
form: {
@@ -64,7 +106,7 @@ async function openFormDialog() {
vModel: "modelValue",
},
show: compute(({ form }) => {
return form.clear !== true;
return form.clear !== true && form?.random !== true;
}),
rules: [{ required: true, message: t("certd.selectCron") }],
},

View File

@@ -827,6 +827,22 @@ export class PipelineService extends BaseService<PipelineEntity> {
//清除trigger
pipeline.triggers = []
} else {
if(trigger.random === true){
//随机时间
const start = dayjs().format("YYYY-MM-DD") + " " + trigger.randomRange[0];
let end = dayjs().format("YYYY-MM-DD") + " " + trigger.randomRange[1];
if(trigger.randomRange[1]<trigger.randomRange[0]){
//跨天
end = dayjs().add(1, "day").format("YYYY-MM-DD") + " " + trigger.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();
set(trigger,"props.cron", `${time} * * *`)
}
delete trigger.random
delete trigger.randomRange;
pipeline.triggers = [{
id: nanoid(),
title: "定时触发",