From 1e24bee02bc3fbca705f4243bffaa12f9c587c55 Mon Sep 17 00:00:00 2001 From: colin Date: Wed, 23 Apr 2025 11:02:10 +0800 Subject: [PATCH] feat(vben5): Complete text template --- .../@abp/text-templating/package.json | 1 + .../@abp/text-templating/src/api/index.ts | 1 + .../src/api/useTemplateContentsApi.ts | 69 ++++++ .../TemplateContentCurtuleModal.vue | 216 ++++++++++++++++++ .../definitions/TemplateContentModal.vue | 171 ++++++++++++++ .../definitions/TemplateDefinitionTable.vue | 10 +- .../text-templating/src/types/contents.ts | 26 +++ .../@abp/text-templating/src/types/index.ts | 1 + 8 files changed, 494 insertions(+), 1 deletion(-) create mode 100644 apps/vben5/packages/@abp/text-templating/src/api/useTemplateContentsApi.ts create mode 100644 apps/vben5/packages/@abp/text-templating/src/components/definitions/TemplateContentCurtuleModal.vue create mode 100644 apps/vben5/packages/@abp/text-templating/src/components/definitions/TemplateContentModal.vue create mode 100644 apps/vben5/packages/@abp/text-templating/src/types/contents.ts diff --git a/apps/vben5/packages/@abp/text-templating/package.json b/apps/vben5/packages/@abp/text-templating/package.json index ea42ea6cb..ec4efb8c5 100644 --- a/apps/vben5/packages/@abp/text-templating/package.json +++ b/apps/vben5/packages/@abp/text-templating/package.json @@ -20,6 +20,7 @@ } }, "dependencies": { + "@abp/components": "workspace:*", "@abp/core": "workspace:*", "@abp/localization": "workspace:*", "@abp/request": "workspace:*", 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 752128b26..03e35288d 100644 --- a/apps/vben5/packages/@abp/text-templating/src/api/index.ts +++ b/apps/vben5/packages/@abp/text-templating/src/api/index.ts @@ -1 +1,2 @@ +export { useTemplateContentsApi } from './useTemplateContentsApi'; export { useTemplateDefinitionsApi } from './useTemplateDefinitionsApi'; diff --git a/apps/vben5/packages/@abp/text-templating/src/api/useTemplateContentsApi.ts b/apps/vben5/packages/@abp/text-templating/src/api/useTemplateContentsApi.ts new file mode 100644 index 000000000..1e5fa5a99 --- /dev/null +++ b/apps/vben5/packages/@abp/text-templating/src/api/useTemplateContentsApi.ts @@ -0,0 +1,69 @@ +import type { + TextTemplateContentDto, + TextTemplateContentGetInput, + TextTemplateContentUpdateDto, + TextTemplateRestoreInput, +} from '../types/contents'; + +import { useRequest } from '@abp/request'; + +export function useTemplateContentsApi() { + const { cancel, request } = useRequest(); + /** + * 获取模板内容 + * @param input 参数 + * @returns 模板内容数据传输对象 + */ + function getApi( + input: TextTemplateContentGetInput, + ): Promise { + let url = '/api/text-templating/templates/content'; + url += input.culture ? `/${input.culture}/${input.name}` : `/${input.name}`; + return request(url, { + method: 'GET', + }); + } + /** + * 重置模板内容为默认值 + * @param name 模板名称 + * @param input 参数 + * @returns 模板定义数据传输对象列表 + */ + function restoreToDefaultApi( + name: string, + input: TextTemplateRestoreInput, + ): Promise { + return request( + `/api/text-templating/templates/content/${name}/restore-to-default`, + { + data: input, + method: 'PUT', + }, + ); + } + /** + * 更新模板内容 + * @param name 模板名称 + * @param input 参数 + * @returns 模板内容数据传输对象 + */ + function updateApi( + name: string, + input: TextTemplateContentUpdateDto, + ): Promise { + return request( + `/api/text-templating/templates/content/${name}`, + { + data: input, + method: 'PUT', + }, + ); + } + + return { + cancel, + getApi, + restoreToDefaultApi, + updateApi, + }; +} diff --git a/apps/vben5/packages/@abp/text-templating/src/components/definitions/TemplateContentCurtuleModal.vue b/apps/vben5/packages/@abp/text-templating/src/components/definitions/TemplateContentCurtuleModal.vue new file mode 100644 index 000000000..8ce007057 --- /dev/null +++ b/apps/vben5/packages/@abp/text-templating/src/components/definitions/TemplateContentCurtuleModal.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/apps/vben5/packages/@abp/text-templating/src/components/definitions/TemplateContentModal.vue b/apps/vben5/packages/@abp/text-templating/src/components/definitions/TemplateContentModal.vue new file mode 100644 index 000000000..564030291 --- /dev/null +++ b/apps/vben5/packages/@abp/text-templating/src/components/definitions/TemplateContentModal.vue @@ -0,0 +1,171 @@ + + + + + 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 index 91c887875..7a3addee4 100644 --- a/apps/vben5/packages/@abp/text-templating/src/components/definitions/TemplateDefinitionTable.vue +++ b/apps/vben5/packages/@abp/text-templating/src/components/definitions/TemplateDefinitionTable.vue @@ -159,6 +159,11 @@ const [TemplateDefinitionModal, modalApi] = useVbenModal({ () => import('./TemplateDefinitionModal.vue'), ), }); +const [TemplateContentModal, contentModalApi] = useVbenModal({ + connectedComponent: defineAsyncComponent( + () => import('./TemplateContentModal.vue'), + ), +}); async function onGet(input?: Record) { try { @@ -209,9 +214,11 @@ function onUpdate(row: TextTemplateDefinitionDto) { modalApi.open(); } -function onMenuClick(_row: TextTemplateDefinitionDto, info: MenuInfo) { +function onMenuClick(row: TextTemplateDefinitionDto, info: MenuInfo) { switch (info.key) { case 'contents': { + contentModalApi.setData(row); + contentModalApi.open(); break; } } @@ -302,6 +309,7 @@ onMounted(onGet); + diff --git a/apps/vben5/packages/@abp/text-templating/src/types/contents.ts b/apps/vben5/packages/@abp/text-templating/src/types/contents.ts new file mode 100644 index 000000000..4469c36fe --- /dev/null +++ b/apps/vben5/packages/@abp/text-templating/src/types/contents.ts @@ -0,0 +1,26 @@ +interface TextTemplateContentDto { + content?: string; + culture?: string; + name: string; +} + +interface TextTemplateContentGetInput { + culture?: string; + name: string; +} + +interface TextTemplateRestoreInput { + culture?: string; +} + +interface TextTemplateContentUpdateDto { + content: string; + culture?: string; +} + +export type { + TextTemplateContentDto, + TextTemplateContentGetInput, + TextTemplateContentUpdateDto, + TextTemplateRestoreInput, +}; 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 9b9d6c8af..836cc4689 100644 --- a/apps/vben5/packages/@abp/text-templating/src/types/index.ts +++ b/apps/vben5/packages/@abp/text-templating/src/types/index.ts @@ -1 +1,2 @@ +export * from './contents'; export * from './definitions';