From 441a40bc547cc74bc8bc77856a748274a94f365e Mon Sep 17 00:00:00 2001 From: colin Date: Tue, 22 Apr 2025 11:11:27 +0800 Subject: [PATCH] feat(vben5): add text-template defintions route --- apps/vben5/apps/app-antd/package.json | 1 + .../app-antd/src/locales/langs/en-US/abp.json | 4 + .../app-antd/src/locales/langs/zh-CN/abp.json | 4 + .../app-antd/src/router/routes/modules/abp.ts | 20 ++ .../text-templating/definitions/index.vue | 15 + .../@abp/text-templating/src/api/index.ts | 1 + .../src/api/useTemplateDefinitionsApi.ts | 95 ++++++ .../definitions/TemplateDefinitionTable.vue | 293 ++++++++++++++++++ .../text-templating/src/components/index.ts | 1 + .../src/constants/permissions.ts | 10 + .../text-templating/src/types/definitions.ts | 47 +++ .../@abp/text-templating/src/types/index.ts | 1 + 12 files changed, 492 insertions(+) create mode 100644 apps/vben5/apps/app-antd/src/views/text-templating/definitions/index.vue create mode 100644 apps/vben5/packages/@abp/text-templating/src/api/useTemplateDefinitionsApi.ts create mode 100644 apps/vben5/packages/@abp/text-templating/src/components/definitions/TemplateDefinitionTable.vue create mode 100644 apps/vben5/packages/@abp/text-templating/src/constants/permissions.ts create mode 100644 apps/vben5/packages/@abp/text-templating/src/types/definitions.ts diff --git a/apps/vben5/apps/app-antd/package.json b/apps/vben5/apps/app-antd/package.json index 74ec14a0d..0d22aff5b 100644 --- a/apps/vben5/apps/app-antd/package.json +++ b/apps/vben5/apps/app-antd/package.json @@ -42,6 +42,7 @@ "@abp/saas": "workspace:*", "@abp/settings": "workspace:*", "@abp/tasks": "workspace:*", + "@abp/text-templating": "workspace:*", "@abp/ui": "workspace:*", "@abp/webhooks": "workspace:*", "@vben/access": "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 2bda6ce06..fb7826de2 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 @@ -120,5 +120,9 @@ "definitions": "Definitions", "subscriptions": "Subscriptions", "sendAttempts": "Send Attempts" + }, + "textTemplating": { + "title": "Text Templating", + "definitions": "Definitions" } } 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 5efb8914d..275e9f92d 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 @@ -120,5 +120,9 @@ "definitions": "Webhook定义", "subscriptions": "管理订阅", "sendAttempts": "发送记录" + }, + "textTemplating": { + "title": "文本模板", + "definitions": "模板定义" } } 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 11889b8f0..62625ed22 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 @@ -496,6 +496,26 @@ const routes: RouteRecordRaw[] = [ }, ], }, + { + meta: { + title: $t('abp.textTemplating.title'), + icon: 'tdesign:template', + }, + name: 'TextTemplating', + path: '/text-templating', + children: [ + { + meta: { + title: $t('abp.textTemplating.definitions'), + icon: 'qlementine-icons:template-16', + }, + name: 'TemplateDefinitions', + path: '/text-templating/definitions', + component: () => + import('#/views/text-templating/definitions/index.vue'), + }, + ], + }, { name: 'AbpDemo', path: '/abp/demos', diff --git a/apps/vben5/apps/app-antd/src/views/text-templating/definitions/index.vue b/apps/vben5/apps/app-antd/src/views/text-templating/definitions/index.vue new file mode 100644 index 000000000..1af35925d --- /dev/null +++ b/apps/vben5/apps/app-antd/src/views/text-templating/definitions/index.vue @@ -0,0 +1,15 @@ + + + diff --git a/apps/vben5/packages/@abp/text-templating/src/api/index.ts b/apps/vben5/packages/@abp/text-templating/src/api/index.ts index e69de29bb..752128b26 100644 --- a/apps/vben5/packages/@abp/text-templating/src/api/index.ts +++ b/apps/vben5/packages/@abp/text-templating/src/api/index.ts @@ -0,0 +1 @@ +export { useTemplateDefinitionsApi } from './useTemplateDefinitionsApi'; diff --git a/apps/vben5/packages/@abp/text-templating/src/api/useTemplateDefinitionsApi.ts b/apps/vben5/packages/@abp/text-templating/src/api/useTemplateDefinitionsApi.ts new file mode 100644 index 000000000..5d89e36fb --- /dev/null +++ b/apps/vben5/packages/@abp/text-templating/src/api/useTemplateDefinitionsApi.ts @@ -0,0 +1,95 @@ +import type { ListResultDto } from '@abp/core'; + +import type { + TextTemplateDefinitionCreateDto, + TextTemplateDefinitionDto, + TextTemplateDefinitionGetListInput, + TextTemplateDefinitionUpdateDto, +} from '../types/definitions'; + +import { useRequest } from '@abp/request'; + +export function useTemplateDefinitionsApi() { + const { cancel, request } = useRequest(); + + /** + * 新增模板定义 + * @param input 参数 + * @returns 模板定义数据传输对象 + */ + function createApi( + input: TextTemplateDefinitionCreateDto, + ): Promise { + return request( + '/api/text-templating/template/definitions', + { + data: input, + method: 'POST', + }, + ); + } + /** + * 删除模板定义 + * @param name 模板名称 + */ + function deleteApi(name: string): Promise { + return request(`/api/text-templating/template/definitions/${name}`, { + method: 'DELETE', + }); + } + /** + * 获取模板定义 + * @param name 模板名称 + * @returns 模板定义数据传输对象 + */ + function getApi(name: string): Promise { + return request( + `/api/text-templating/template/definitions/${name}`, + { + method: 'GET', + }, + ); + } + /** + * 获取模板定义列表 + * @param input 过滤参数 + * @returns 模板定义数据传输对象列表 + */ + function getListApi( + input?: TextTemplateDefinitionGetListInput, + ): Promise> { + return request>( + `/api/text-templating/template/definitions/${name}`, + { + method: 'GET', + params: input, + }, + ); + } + /** + * 更新模板定义 + * @param name 模板名称 + * @returns 模板定义数据传输对象 + */ + function updateApi( + name: string, + input: TextTemplateDefinitionUpdateDto, + ): Promise { + return request( + `/api/text-templating/template/definitions/${name}`, + { + data: input, + method: 'PUT', + }, + ); + } + + return { + cancel, + createApi, + deleteApi, + getApi, + getListApi, + updateApi, + }; +} diff --git a/apps/vben5/packages/@abp/text-templating/src/components/definitions/TemplateDefinitionTable.vue b/apps/vben5/packages/@abp/text-templating/src/components/definitions/TemplateDefinitionTable.vue new file mode 100644 index 000000000..c27b692e9 --- /dev/null +++ b/apps/vben5/packages/@abp/text-templating/src/components/definitions/TemplateDefinitionTable.vue @@ -0,0 +1,293 @@ + + + + + diff --git a/apps/vben5/packages/@abp/text-templating/src/components/index.ts b/apps/vben5/packages/@abp/text-templating/src/components/index.ts index e69de29bb..be1c268c7 100644 --- a/apps/vben5/packages/@abp/text-templating/src/components/index.ts +++ b/apps/vben5/packages/@abp/text-templating/src/components/index.ts @@ -0,0 +1 @@ +export { default as TemplateDefinitionTable } from './definitions/TemplateDefinitionTable.vue'; diff --git a/apps/vben5/packages/@abp/text-templating/src/constants/permissions.ts b/apps/vben5/packages/@abp/text-templating/src/constants/permissions.ts new file mode 100644 index 000000000..bc52ea18d --- /dev/null +++ b/apps/vben5/packages/@abp/text-templating/src/constants/permissions.ts @@ -0,0 +1,10 @@ +/** 模板定义权限 */ +export const WebhookDefinitionsPermissions = { + /** 新增 */ + Create: 'AbpTextTemplating.TextTemplateDefinitions.Create', + Default: 'AbpTextTemplating.TextTemplateDefinitions', + /** 删除 */ + Delete: 'AbpTextTemplating.TextTemplateDefinitions.Delete', + /** 更新 */ + Update: 'AbpTextTemplating.TextTemplateDefinitions.Update', +}; diff --git a/apps/vben5/packages/@abp/text-templating/src/types/definitions.ts b/apps/vben5/packages/@abp/text-templating/src/types/definitions.ts new file mode 100644 index 000000000..44b37260d --- /dev/null +++ b/apps/vben5/packages/@abp/text-templating/src/types/definitions.ts @@ -0,0 +1,47 @@ +import type { ExtensibleObject, IHasConcurrencyStamp } from '@abp/core'; + +interface TextTemplateDefinitionDto + extends ExtensibleObject, + IHasConcurrencyStamp { + defaultCultureName?: string; + displayName: string; + isInlineLocalized: boolean; + isLayout: boolean; + isStatic: boolean; + layout?: string; + localizationResourceName?: string; + name: string; + renderEngine?: string; +} + +interface TextTemplateDefinitionCreateOrUpdateDto { + defaultCultureName?: string; + displayName: string; + isInlineLocalized: boolean; + isLayout: boolean; + layout?: string; + localizationResourceName?: string; + renderEngine?: string; +} + +interface TextTemplateDefinitionCreateDto + extends TextTemplateDefinitionCreateOrUpdateDto { + name: string; +} + +interface TextTemplateDefinitionUpdateDto + extends IHasConcurrencyStamp, + TextTemplateDefinitionCreateOrUpdateDto {} + +interface TextTemplateDefinitionGetListInput { + filter?: string; + isLayout?: boolean; + isStatic?: boolean; +} + +export type { + TextTemplateDefinitionCreateDto, + TextTemplateDefinitionDto, + TextTemplateDefinitionGetListInput, + TextTemplateDefinitionUpdateDto, +}; diff --git a/apps/vben5/packages/@abp/text-templating/src/types/index.ts b/apps/vben5/packages/@abp/text-templating/src/types/index.ts index e69de29bb..9b9d6c8af 100644 --- a/apps/vben5/packages/@abp/text-templating/src/types/index.ts +++ b/apps/vben5/packages/@abp/text-templating/src/types/index.ts @@ -0,0 +1 @@ +export * from './definitions';