diff --git a/apps/vben5/apps/app-antd/package.json b/apps/vben5/apps/app-antd/package.json index 4b1e3c565..74ec14a0d 100644 --- a/apps/vben5/apps/app-antd/package.json +++ b/apps/vben5/apps/app-antd/package.json @@ -43,6 +43,7 @@ "@abp/settings": "workspace:*", "@abp/tasks": "workspace:*", "@abp/ui": "workspace:*", + "@abp/webhooks": "workspace:*", "@vben/access": "workspace:*", "@vben/common-ui": "workspace:*", "@vben/constants": "workspace:*", diff --git a/apps/vben5/apps/app-antd/src/locales/langs/en-US/abp.json b/apps/vben5/apps/app-antd/src/locales/langs/en-US/abp.json index 0ba5e1273..ad4031f55 100644 --- a/apps/vben5/apps/app-antd/src/locales/langs/en-US/abp.json +++ b/apps/vben5/apps/app-antd/src/locales/langs/en-US/abp.json @@ -113,5 +113,9 @@ "jobInfo": { "title": "Job Manage" } + }, + "webhooks": { + "title": "Webhooks", + "groups": "Groups" } } diff --git a/apps/vben5/apps/app-antd/src/locales/langs/zh-CN/abp.json b/apps/vben5/apps/app-antd/src/locales/langs/zh-CN/abp.json index d6eaf0e02..e22314e36 100644 --- a/apps/vben5/apps/app-antd/src/locales/langs/zh-CN/abp.json +++ b/apps/vben5/apps/app-antd/src/locales/langs/zh-CN/abp.json @@ -113,5 +113,9 @@ "jobInfo": { "title": "作业管理" } + }, + "webhooks": { + "title": "Webhook管理", + "groups": "Webhook分组" } } diff --git a/apps/vben5/apps/app-antd/src/router/routes/modules/abp.ts b/apps/vben5/apps/app-antd/src/router/routes/modules/abp.ts index 1b4e0f24d..e4c7b825f 100644 --- a/apps/vben5/apps/app-antd/src/router/routes/modules/abp.ts +++ b/apps/vben5/apps/app-antd/src/router/routes/modules/abp.ts @@ -450,6 +450,25 @@ const routes: RouteRecordRaw[] = [ }, ], }, + { + meta: { + title: $t('abp.webhooks.title'), + icon: 'material-symbols:webhook', + }, + name: 'WebhooksManagement', + path: '/webhooks', + children: [ + { + meta: { + title: $t('abp.webhooks.groups'), + icon: 'lucide:group', + }, + name: 'WebhookGroupDefinitions', + path: '/webhooks/groups', + component: () => import('#/views/webhooks/groups/index.vue'), + }, + ], + }, { name: 'AbpDemo', path: '/abp/demos', diff --git a/apps/vben5/apps/app-antd/src/views/webhooks/groups/index.vue b/apps/vben5/apps/app-antd/src/views/webhooks/groups/index.vue new file mode 100644 index 000000000..660110dc7 --- /dev/null +++ b/apps/vben5/apps/app-antd/src/views/webhooks/groups/index.vue @@ -0,0 +1,15 @@ + + + + + + + diff --git a/apps/vben5/packages/@abp/webhooks/src/api/useWebhookGroupDefinitionsApi.ts b/apps/vben5/packages/@abp/webhooks/src/api/useWebhookGroupDefinitionsApi.ts new file mode 100644 index 000000000..2cbd2559e --- /dev/null +++ b/apps/vben5/packages/@abp/webhooks/src/api/useWebhookGroupDefinitionsApi.ts @@ -0,0 +1,100 @@ +import type { ListResultDto } from '@abp/core'; + +import type { + WebhookGroupDefinitionCreateDto, + WebhookGroupDefinitionDto, + WebhookGroupDefinitionGetListInput, + WebhookGroupDefinitionUpdateDto, +} from '../types/groups'; + +import { useRequest } from '@abp/request'; + +export function useWebhookGroupDefinitionsApi() { + const { cancel, request } = useRequest(); + + /** + * 删除Webhook分组定义 + * @param name Webhook分组名称 + */ + function deleteApi(name: string): Promise { + return request(`/api/webhooks/definitions/groups/${name}`, { + method: 'DELETE', + }); + } + + /** + * 查询Webhook分组定义 + * @param name Webhook分组名称 + * @returns Webhook分组定义数据传输对象 + */ + function getApi(name: string): Promise { + return request( + `/api/webhooks/definitions/groups/${name}`, + { + method: 'GET', + }, + ); + } + + /** + * 查询Webhook分组定义列表 + * @param input Webhook分组过滤条件 + * @returns Webhook分组定义数据传输对象列表 + */ + function getListApi( + input?: WebhookGroupDefinitionGetListInput, + ): Promise> { + return request>( + `/api/webhooks/definitions/groups`, + { + method: 'GET', + params: input, + }, + ); + } + + /** + * 创建Webhook分组定义 + * @param input Webhook分组定义参数 + * @returns Webhook分组定义数据传输对象 + */ + function createApi( + input: WebhookGroupDefinitionCreateDto, + ): Promise { + return request( + '/api/webhooks/definitions/groups', + { + data: input, + method: 'POST', + }, + ); + } + + /** + * 更新Webhook分组定义 + * @param name Webhook分组名称 + * @param input Webhook分组定义参数 + * @returns Webhook分组定义数据传输对象 + */ + function updateApi( + name: string, + input: WebhookGroupDefinitionUpdateDto, + ): Promise { + return request( + `/api/webhooks/definitions/groups/${name}`, + { + data: input, + method: 'PUT', + }, + ); + } + + return { + cancel, + createApi, + deleteApi, + getApi, + getListApi, + updateApi, + }; +} diff --git a/apps/vben5/packages/@abp/webhooks/src/components/definitions/groups/WebhookGroupDefinitionTable.vue b/apps/vben5/packages/@abp/webhooks/src/components/definitions/groups/WebhookGroupDefinitionTable.vue new file mode 100644 index 000000000..81caa231d --- /dev/null +++ b/apps/vben5/packages/@abp/webhooks/src/components/definitions/groups/WebhookGroupDefinitionTable.vue @@ -0,0 +1,234 @@ + + + + + + + {{ $t('WebhooksManagement.GroupDefinitions:AddNew') }} + + + + + + + {{ $t('AbpUi.Edit') }} + + + + + + {{ $t('AbpUi.Delete') }} + + + + + + onMenuClick(row, info)"> + + {{ $t('WebhooksManagement.Webhooks:AddNew') }} + + + + + + + + + + + + + diff --git a/apps/vben5/packages/@abp/webhooks/src/components/index.ts b/apps/vben5/packages/@abp/webhooks/src/components/index.ts index e69de29bb..5632abd6d 100644 --- a/apps/vben5/packages/@abp/webhooks/src/components/index.ts +++ b/apps/vben5/packages/@abp/webhooks/src/components/index.ts @@ -0,0 +1 @@ +export { default as WebhookGroupDefinitionTable } from './definitions/groups/WebhookGroupDefinitionTable.vue'; diff --git a/apps/vben5/packages/@abp/webhooks/src/constants/permissions.ts b/apps/vben5/packages/@abp/webhooks/src/constants/permissions.ts new file mode 100644 index 000000000..25334ca12 --- /dev/null +++ b/apps/vben5/packages/@abp/webhooks/src/constants/permissions.ts @@ -0,0 +1,10 @@ +/** 分组权限 */ +export const GroupDefinitionsPermissions = { + /** 新增 */ + Create: 'AbpWebhooks.GroupDefinitions.Create', + Default: 'AbpWebhooks.GroupDefinitions', + /** 删除 */ + Delete: 'AbpWebhooks.GroupDefinitions.Delete', + /** 更新 */ + Update: 'AbpWebhooks.GroupDefinitions.Update', +}; diff --git a/apps/vben5/packages/@abp/webhooks/src/types/groups.ts b/apps/vben5/packages/@abp/webhooks/src/types/groups.ts new file mode 100644 index 000000000..d02df50b7 --- /dev/null +++ b/apps/vben5/packages/@abp/webhooks/src/types/groups.ts @@ -0,0 +1,31 @@ +import type { IHasConcurrencyStamp, IHasExtraProperties } from '@abp/core'; + +interface WebhookGroupDefinitionDto extends IHasExtraProperties { + displayName: string; + isStatic: boolean; + name: string; +} + +interface WebhookGroupDefinitionCreateOrUpdateDto extends IHasExtraProperties { + displayName: string; +} + +interface WebhookGroupDefinitionCreateDto + extends WebhookGroupDefinitionCreateOrUpdateDto { + name: string; +} + +interface WebhookGroupDefinitionUpdateDto + extends IHasConcurrencyStamp, + WebhookGroupDefinitionCreateOrUpdateDto {} + +interface WebhookGroupDefinitionGetListInput { + filter?: string; +} + +export type { + WebhookGroupDefinitionCreateDto, + WebhookGroupDefinitionDto, + WebhookGroupDefinitionGetListInput, + WebhookGroupDefinitionUpdateDto, +}; diff --git a/apps/vben5/packages/@abp/webhooks/src/types/index.ts b/apps/vben5/packages/@abp/webhooks/src/types/index.ts index e69de29bb..d20b7e110 100644 --- a/apps/vben5/packages/@abp/webhooks/src/types/index.ts +++ b/apps/vben5/packages/@abp/webhooks/src/types/index.ts @@ -0,0 +1 @@ +export * from './groups';