perf: 批量设置定时,支持清除定时

This commit is contained in:
xiaojunnuo
2025-12-16 00:21:31 +08:00
parent e4e16bc6a6
commit 63d8bcf882
5 changed files with 72 additions and 27 deletions
@@ -3,10 +3,11 @@
</template>
<script setup lang="ts">
import { useFormWrapper } from "@fast-crud/fast-crud";
import { compute, dict, useFormWrapper } from "@fast-crud/fast-crud";
import * as api from "../api";
import { useSettingStore } from "/@/store/settings";
import { useI18n } from "/src/locales";
import { computed } from "vue";
const { t } = useI18n();
const props = defineProps<{
@@ -20,7 +21,7 @@ async function batchUpdateRequest(form: any) {
await api.BatchUpdateTrigger(props.selectedRowKeys, {
title: "定时触发",
type: "timer",
props: form.props,
props: form.clear ? false : form.props,
});
emit("change");
}
@@ -33,6 +34,28 @@ async function openFormDialog() {
settingStore.checkPlus();
const crudOptions: any = {
columns: {
clear: {
title: "设置/清空",
form: {
value: false,
component: {
name: "fs-dict-switch",
vModel: "checked",
dict: dict({
data: [
{
label: "设置定时",
value: false,
},
{
label: "清空定时",
value: true,
},
],
}),
},
},
},
"props.cron": {
title: t("certd.schedule"),
form: {
@@ -40,12 +63,18 @@ async function openFormDialog() {
name: "cron-editor",
vModel: "modelValue",
},
show: compute(({ form }) => {
return form.clear !== true;
}),
rules: [{ required: true, message: t("certd.selectCron") }],
},
},
},
form: {
mode: "edit",
initialForm: {
clear: false,
},
//@ts-ignore
async doSubmit({ form }) {
await batchUpdateRequest(form);
@@ -121,6 +121,7 @@ export class EmailService implements IEmailService {
data: {
title: '测试邮件,from certd',
content: '测试邮件,from certd',
url:"https://certd.handfree.work",
},
email: {
receivers: [receiver],
@@ -803,11 +803,17 @@ export class PipelineService extends BaseService<PipelineEntity> {
for (const item of list) {
const pipeline = JSON.parse(item.content);
if (trigger.props === false) {
//清除trigger
pipeline.triggers = []
} else {
pipeline.triggers = [{
id: nanoid(),
title: "定时触发",
...trigger
}];
}
await this.doUpdatePipelineJson(item, pipeline);
}
@@ -25,13 +25,16 @@ export class EmailNotification extends BaseNotification {
const templateData = {
...body,
}
const emailSend:any = {
receivers: this.receivers,
}
if (body.attachments && body.attachments.length > 0) {
emailSend.attachments = body.attachments;
}
await this.ctx.emailService.sendByTemplate({
type: body.notificationType,
data: templateData,
email: {
receivers: this.receivers,
attachments: body.attachments,
}
email: emailSend
})
// await this.ctx.emailService.send({
@@ -61,8 +61,14 @@ export class BaseEmailTemplateProvider extends BaseAddon implements ITemplatePro
async buildContent(params: BuildContentReq): Promise<EmailContent> {
const title = this.compile(this.titleTemplate)(params.data)
const content = this.compile(this.contentTemplate)(params.data)
const data = {
title:"",
content:"",
url:"",
...params.data,
}
const title = this.compile(this.titleTemplate)(data)
const content = this.compile(this.contentTemplate)(data)
const body: any = {
subject: title,