From e11b3becfd4abe6547e84d09adc38ebd6e1c4b87 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Wed, 18 Jun 2025 12:29:43 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=94=AF=E6=8C=81=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=80=9A=E7=9F=A5=E5=92=8C=E5=AE=9A=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/pipeline/src/dt/pipeline.ts | 9 +- .../src/views/certd/pipeline/api.ts | 19 +++ .../components/change-notification.vue | 96 +++++++++++++++ .../pipeline/components/change-trigger.vue | 62 ++++++++++ .../src/views/certd/pipeline/index.vue | 10 +- .../component/notification-form/index.vue | 48 ++++---- .../pipeline/component/trigger-form/index.vue | 45 +++---- .../user/pipeline/pipeline-controller.ts | 13 ++ .../pipeline/service/pipeline-service.ts | 112 +++++++++++++++--- 9 files changed, 340 insertions(+), 74 deletions(-) create mode 100644 packages/ui/certd-client/src/views/certd/pipeline/components/change-notification.vue create mode 100644 packages/ui/certd-client/src/views/certd/pipeline/components/change-trigger.vue diff --git a/packages/core/pipeline/src/dt/pipeline.ts b/packages/core/pipeline/src/dt/pipeline.ts index 66ddfdfe..839b6990 100644 --- a/packages/core/pipeline/src/dt/pipeline.ts +++ b/packages/core/pipeline/src/dt/pipeline.ts @@ -52,7 +52,9 @@ export type Stage = Runnable & { export type Trigger = { id: string; title: string; - cron: string; + props: { + cron: string; + }; type: string; }; @@ -78,14 +80,13 @@ export type EmailOptions = { receivers: string[]; }; export type NotificationWhen = "error" | "success" | "turnToSuccess" | "start"; -export type NotificationType = "email" | "url"; +export type NotificationType = "email" | "other"; export type Notification = { type: NotificationType; when: NotificationWhen[]; - options: EmailOptions; + options?: EmailOptions; notificationId: number; title: string; - subType: string; }; export type Pipeline = Runnable & { diff --git a/packages/ui/certd-client/src/views/certd/pipeline/api.ts b/packages/ui/certd-client/src/views/certd/pipeline/api.ts index daeb6bb1..7a2764da 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/api.ts +++ b/packages/ui/certd-client/src/views/certd/pipeline/api.ts @@ -84,6 +84,23 @@ export async function BatchUpdateGroup(pipelineIds: number[], groupId: number): }); } +export async function BatchUpdateTrigger(pipelineIds: number[], trigger: any): Promise { + return await request({ + url: apiPrefix + "/batchUpdateTrigger", + method: "post", + data: { ids: pipelineIds, trigger }, + }); +} + +export async function BatchUpdateNotificaiton(pipelineIds: number[], notification: any): Promise { + return await request({ + url: apiPrefix + "/batchUpdateNotification", + method: "post", + data: { ids: pipelineIds, notification }, + }); +} + + export async function BatchDelete(pipelineIds: number[]): Promise { return await request({ url: apiPrefix + "/batchDelete", @@ -99,6 +116,8 @@ export async function BatchRerun(pipelineIds: number[]): Promise { }); } + + export async function GetFiles(pipelineId: number) { return await request({ url: historyApiPrefix + "/files", diff --git a/packages/ui/certd-client/src/views/certd/pipeline/components/change-notification.vue b/packages/ui/certd-client/src/views/certd/pipeline/components/change-notification.vue new file mode 100644 index 00000000..5ba5ccc9 --- /dev/null +++ b/packages/ui/certd-client/src/views/certd/pipeline/components/change-notification.vue @@ -0,0 +1,96 @@ + + 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 new file mode 100644 index 00000000..8f754712 --- /dev/null +++ b/packages/ui/certd-client/src/views/certd/pipeline/components/change-trigger.vue @@ -0,0 +1,62 @@ + + diff --git a/packages/ui/certd-client/src/views/certd/pipeline/index.vue b/packages/ui/certd-client/src/views/certd/pipeline/index.vue index f4e76516..727d7f19 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/index.vue +++ b/packages/ui/certd-client/src/views/certd/pipeline/index.vue @@ -7,9 +7,11 @@
已选择 {{ selectedRowKeys.length }} 项 - - + + + +
@@ -26,8 +28,10 @@ import { dict, useFs } from "@fast-crud/fast-crud"; import createCrudOptions from "./crud"; import PiCertdForm from "./certd-form/index.vue"; import ChangeGroup from "./components/change-group.vue"; +import ChangeTrigger from "./components/change-trigger.vue"; import { Modal, notification } from "ant-design-vue"; import * as api from "./api"; +import ChangeNotification from "/@/views/certd/pipeline/components/change-notification.vue"; defineOptions({ name: "PipelineManager", @@ -55,7 +59,7 @@ onActivated(async () => { await crudExpose.doRefresh(); }); -function groupChanged() { +function batchFinished() { crudExpose.doRefresh(); selectedRowKeys.value = []; } diff --git a/packages/ui/certd-client/src/views/certd/pipeline/pipeline/component/notification-form/index.vue b/packages/ui/certd-client/src/views/certd/pipeline/pipeline/component/notification-form/index.vue index 660e4c2e..0fb4d7c3 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/pipeline/component/notification-form/index.vue +++ b/packages/ui/certd-client/src/views/certd/pipeline/pipeline/component/notification-form/index.vue @@ -24,17 +24,17 @@ disabled: !editMode, options: [ { value: 'email', label: '邮件' }, - { value: 'other', label: '其他通知方式' } - ] + { value: 'other', label: '其他通知方式' }, + ], }, - rules: [{ required: true, message: '此项必填' }] + rules: [{ required: true, message: '此项必填' }], }" /> @@ -59,14 +59,14 @@ v-model="currentNotification.notificationId" :item="{ title: '通知配置', - key: 'type', + key: 'notificationId', component: { disabled: !editMode, name: NotificationSelector, - onSelectedChange + onSelectedChange, }, helper: '请选择通知方式', - rules: [{ required: true, message: '此项必填' }] + rules: [{ required: true, message: '此项必填' }], }" /> @@ -96,8 +96,8 @@ export default { props: { editMode: { type: Boolean, - default: true - } + default: true, + }, }, emits: ["update"], setup(props: any, context: any) { @@ -118,23 +118,23 @@ export default { { type: "string", required: true, - message: "请选择类型" - } + message: "请选择类型", + }, ], when: [ { type: "string", required: true, - message: "请选择通知时机" - } + message: "请选择通知时机", + }, ], notificationId: [ { type: "number", required: true, - message: "请选择通知配置" - } - ] + message: "请选择通知配置", + }, + ], }); const notificationDrawerShow = () => { @@ -195,7 +195,7 @@ export default { async onOk() { callback.value("delete"); notificationDrawerClose(); - } + }, }); }; @@ -222,21 +222,21 @@ export default { notificationDelete, rules, blankFn, - optionsRef + optionsRef, }; } return { ...useNotificationForm(), labelCol: { span: 6 }, - wrapperCol: { span: 16 } + wrapperCol: { span: 16 }, }; }, computed: { NotificationSelector() { return NotificationSelector; - } - } + }, + }, }; diff --git a/packages/ui/certd-client/src/views/certd/pipeline/pipeline/component/trigger-form/index.vue b/packages/ui/certd-client/src/views/certd/pipeline/pipeline/component/trigger-form/index.vue index b03f7463..ed97f8e0 100644 --- a/packages/ui/certd-client/src/views/certd/pipeline/pipeline/component/trigger-form/index.vue +++ b/packages/ui/certd-client/src/views/certd/pipeline/pipeline/component/trigger-form/index.vue @@ -1,12 +1,5 @@