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 b5b1400f0..7e50c1168 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 @@ -42,7 +42,9 @@ }, "notifications": { "title": "Notifications", - "myNotifilers": "My Notifilers" + "myNotifilers": "My Notifilers", + "groups": "Groups", + "definitions": "Definitions" } }, "openiddict": { 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 6cc746f9c..7976ea8f7 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 @@ -42,7 +42,9 @@ }, "notifications": { "title": "通知管理", - "myNotifilers": "我的通知" + "myNotifilers": "我的通知", + "groups": "通知分组", + "definitions": "通知定义" } }, "openiddict": { 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 b0c6ea5fc..3504f198a 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 @@ -202,6 +202,26 @@ const routes: RouteRecordRaw[] = [ component: () => import('#/views/notifications/my-notifilers/index.vue'), }, + { + meta: { + title: $t('abp.manage.notifications.groups'), + icon: 'lucide:group', + }, + name: 'NotificationGroupDefinitions', + path: '/manage/notifications/groups', + component: () => + import('#/views/notifications/groups/index.vue'), + }, + { + meta: { + title: $t('abp.manage.notifications.definitions'), + icon: 'nimbus:notification', + }, + name: 'NotificationDefinitions', + path: '/manage/notifications/definitions', + component: () => + import('#/views/notifications/definitions/index.vue'), + }, ], }, ], diff --git a/apps/vben5/apps/app-antd/src/views/notifications/definitions/index.vue b/apps/vben5/apps/app-antd/src/views/notifications/definitions/index.vue new file mode 100644 index 000000000..a42bc0e17 --- /dev/null +++ b/apps/vben5/apps/app-antd/src/views/notifications/definitions/index.vue @@ -0,0 +1,15 @@ + + + diff --git a/apps/vben5/apps/app-antd/src/views/notifications/groups/index.vue b/apps/vben5/apps/app-antd/src/views/notifications/groups/index.vue new file mode 100644 index 000000000..bf2763d47 --- /dev/null +++ b/apps/vben5/apps/app-antd/src/views/notifications/groups/index.vue @@ -0,0 +1,15 @@ + + + diff --git a/apps/vben5/packages/@abp/notifications/package.json b/apps/vben5/packages/@abp/notifications/package.json index 1fa83a136..caf1a3720 100644 --- a/apps/vben5/packages/@abp/notifications/package.json +++ b/apps/vben5/packages/@abp/notifications/package.json @@ -34,6 +34,7 @@ "@vben/locales": "workspace:*", "ant-design-vue": "catalog:", "dayjs": "catalog:", - "vue": "catalog:*" + "vue": "catalog:*", + "vxe-table": "catalog:" } } diff --git a/apps/vben5/packages/@abp/notifications/src/api/index.ts b/apps/vben5/packages/@abp/notifications/src/api/index.ts index b3dc5aa58..8e7bebea4 100644 --- a/apps/vben5/packages/@abp/notifications/src/api/index.ts +++ b/apps/vben5/packages/@abp/notifications/src/api/index.ts @@ -1,3 +1,5 @@ export { useMyNotifilersApi } from './useMyNotifilersApi'; export { useMySubscribesApi } from './useMySubscribesApi'; +export { useNotificationDefinitionsApi } from './useNotificationDefinitionsApi'; +export { useNotificationGroupDefinitionsApi } from './useNotificationGroupDefinitionsApi'; export { useNotificationsApi } from './useNotificationsApi'; diff --git a/apps/vben5/packages/@abp/notifications/src/api/useNotificationDefinitionsApi.ts b/apps/vben5/packages/@abp/notifications/src/api/useNotificationDefinitionsApi.ts new file mode 100644 index 000000000..839e8e2d3 --- /dev/null +++ b/apps/vben5/packages/@abp/notifications/src/api/useNotificationDefinitionsApi.ts @@ -0,0 +1,100 @@ +import type { ListResultDto } from '@abp/core'; + +import type { + NotificationDefinitionCreateDto, + NotificationDefinitionDto, + NotificationDefinitionGetListInput, + NotificationDefinitionUpdateDto, +} from '../types/definitions'; + +import { useRequest } from '@abp/request'; + +export function useNotificationDefinitionsApi() { + const { cancel, request } = useRequest(); + + /** + * 删除通知定义 + * @param name 通知名称 + */ + function deleteApi(name: string): Promise { + return request(`/api/notifications/definitions/notifications/${name}`, { + method: 'DELETE', + }); + } + + /** + * 查询通知定义 + * @param name 通知名称 + * @returns 通知定义数据传输对象 + */ + function getApi(name: string): Promise { + return request( + `/api/notifications/definitions/notifications/${name}`, + { + method: 'GET', + }, + ); + } + + /** + * 查询通知定义列表 + * @param input 通知过滤条件 + * @returns 通知定义数据传输对象列表 + */ + function getListApi( + input?: NotificationDefinitionGetListInput, + ): Promise> { + return request>( + `/api/notifications/definitions/notifications`, + { + method: 'GET', + params: input, + }, + ); + } + + /** + * 创建通知定义 + * @param input 通知定义参数 + * @returns 通知定义数据传输对象 + */ + function createApi( + input: NotificationDefinitionCreateDto, + ): Promise { + return request( + '/api/notifications/definitions/notifications', + { + data: input, + method: 'POST', + }, + ); + } + + /** + * 更新通知定义 + * @param name 通知名称 + * @param input 通知定义参数 + * @returns 通知定义数据传输对象 + */ + function updateApi( + name: string, + input: NotificationDefinitionUpdateDto, + ): Promise { + return request( + `/api/notifications/definitions/notifications/${name}`, + { + data: input, + method: 'PUT', + }, + ); + } + + return { + cancel, + createApi, + deleteApi, + getApi, + getListApi, + updateApi, + }; +} diff --git a/apps/vben5/packages/@abp/notifications/src/api/useNotificationGroupDefinitionsApi.ts b/apps/vben5/packages/@abp/notifications/src/api/useNotificationGroupDefinitionsApi.ts new file mode 100644 index 000000000..530551417 --- /dev/null +++ b/apps/vben5/packages/@abp/notifications/src/api/useNotificationGroupDefinitionsApi.ts @@ -0,0 +1,100 @@ +import type { ListResultDto } from '@abp/core'; + +import type { + NotificationGroupDefinitionCreateDto, + NotificationGroupDefinitionDto, + NotificationGroupDefinitionGetListInput, + NotificationGroupDefinitionUpdateDto, +} from '../types'; + +import { useRequest } from '@abp/request'; + +export function useNotificationGroupDefinitionsApi() { + const { cancel, request } = useRequest(); + + /** + * 删除通知分组定义 + * @param name 通知分组名称 + */ + function deleteApi(name: string): Promise { + return request(`/api/notifications/definitions/groups/${name}`, { + method: 'DELETE', + }); + } + + /** + * 查询通知分组定义 + * @param name 通知分组名称 + * @returns 通知分组定义数据传输对象 + */ + function getApi(name: string): Promise { + return request( + `/api/notifications/definitions/groups/${name}`, + { + method: 'GET', + }, + ); + } + + /** + * 查询通知分组定义列表 + * @param input 通知分组过滤条件 + * @returns 通知分组定义数据传输对象列表 + */ + function getListApi( + input?: NotificationGroupDefinitionGetListInput, + ): Promise> { + return request>( + `/api/notifications/definitions/groups`, + { + method: 'GET', + params: input, + }, + ); + } + + /** + * 创建通知分组定义 + * @param input 通知分组定义参数 + * @returns 通知分组定义数据传输对象 + */ + function createApi( + input: NotificationGroupDefinitionCreateDto, + ): Promise { + return request( + '/api/notifications/definitions/groups', + { + data: input, + method: 'POST', + }, + ); + } + + /** + * 更新通知分组定义 + * @param name 通知分组名称 + * @param input 通知分组定义参数 + * @returns 通知分组定义数据传输对象 + */ + function updateApi( + name: string, + input: NotificationGroupDefinitionUpdateDto, + ): Promise { + return request( + `/api/notifications/definitions/groups/${name}`, + { + data: input, + method: 'PUT', + }, + ); + } + + return { + cancel, + createApi, + deleteApi, + getApi, + getListApi, + updateApi, + }; +} diff --git a/apps/vben5/packages/@abp/notifications/src/api/useNotificationsApi.ts b/apps/vben5/packages/@abp/notifications/src/api/useNotificationsApi.ts index 5934f3d11..484cfc089 100644 --- a/apps/vben5/packages/@abp/notifications/src/api/useNotificationsApi.ts +++ b/apps/vben5/packages/@abp/notifications/src/api/useNotificationsApi.ts @@ -2,6 +2,7 @@ import type { ListResultDto } from '@abp/core'; import type { NotificationGroupDto, + NotificationProviderDto, NotificationTemplateDto, } from '../types/definitions'; import type { @@ -13,6 +14,20 @@ import { useRequest } from '@abp/request'; export function useNotificationsApi() { const { cancel, request } = useRequest(); + /** + * 获取可用通知提供者列表 + * @returns {Promise>} 可用通知提供者列表 + */ + function getAssignableProvidersApi(): Promise< + ListResultDto + > { + return request>( + '/api/notifications/assignable-providers', + { + method: 'GET', + }, + ); + } /** * 获取可用通知列表 * @returns {Promise>} 可用通知列表 @@ -69,6 +84,7 @@ export function useNotificationsApi() { return { cancel, getAssignableNotifiersApi, + getAssignableProvidersApi, getAssignableTemplatesApi, sendNotiferApi, sendTemplateNotiferApi, diff --git a/apps/vben5/packages/@abp/notifications/src/components/definitions/groups/NotificationGroupDefinitionModal.vue b/apps/vben5/packages/@abp/notifications/src/components/definitions/groups/NotificationGroupDefinitionModal.vue new file mode 100644 index 000000000..0b27ec15d --- /dev/null +++ b/apps/vben5/packages/@abp/notifications/src/components/definitions/groups/NotificationGroupDefinitionModal.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/apps/vben5/packages/@abp/notifications/src/components/definitions/groups/NotificationGroupDefinitionTable.vue b/apps/vben5/packages/@abp/notifications/src/components/definitions/groups/NotificationGroupDefinitionTable.vue new file mode 100644 index 000000000..7a1dff33f --- /dev/null +++ b/apps/vben5/packages/@abp/notifications/src/components/definitions/groups/NotificationGroupDefinitionTable.vue @@ -0,0 +1,262 @@ + + + + + diff --git a/apps/vben5/packages/@abp/notifications/src/components/definitions/notifications/NotificationDefinitionModal.vue b/apps/vben5/packages/@abp/notifications/src/components/definitions/notifications/NotificationDefinitionModal.vue new file mode 100644 index 000000000..0f3411654 --- /dev/null +++ b/apps/vben5/packages/@abp/notifications/src/components/definitions/notifications/NotificationDefinitionModal.vue @@ -0,0 +1,311 @@ + + + + + diff --git a/apps/vben5/packages/@abp/notifications/src/components/definitions/notifications/NotificationDefinitionTable.vue b/apps/vben5/packages/@abp/notifications/src/components/definitions/notifications/NotificationDefinitionTable.vue new file mode 100644 index 000000000..888f87ca2 --- /dev/null +++ b/apps/vben5/packages/@abp/notifications/src/components/definitions/notifications/NotificationDefinitionTable.vue @@ -0,0 +1,418 @@ + + + + + diff --git a/apps/vben5/packages/@abp/notifications/src/components/definitions/notifications/NotificationSendModal.vue b/apps/vben5/packages/@abp/notifications/src/components/definitions/notifications/NotificationSendModal.vue new file mode 100644 index 000000000..787e5cfe8 --- /dev/null +++ b/apps/vben5/packages/@abp/notifications/src/components/definitions/notifications/NotificationSendModal.vue @@ -0,0 +1,143 @@ + + +