From 7a1c1f72e50791b1badb05425203a8bbbc5f238f Mon Sep 17 00:00:00 2001 From: colin Date: Tue, 22 Apr 2025 09:56:12 +0800 Subject: [PATCH 1/5] feat(vben5): add `@abp/text-templating` package --- .../@abp/text-templating/package.json | 38 +++++++++++++++++++ .../@abp/text-templating/src/api/index.ts | 0 .../text-templating/src/components/index.ts | 0 .../@abp/text-templating/src/index.ts | 3 ++ .../@abp/text-templating/src/types/index.ts | 0 .../@abp/text-templating/tsconfig.json | 6 +++ 6 files changed, 47 insertions(+) create mode 100644 apps/vben5/packages/@abp/text-templating/package.json create mode 100644 apps/vben5/packages/@abp/text-templating/src/api/index.ts create mode 100644 apps/vben5/packages/@abp/text-templating/src/components/index.ts create mode 100644 apps/vben5/packages/@abp/text-templating/src/index.ts create mode 100644 apps/vben5/packages/@abp/text-templating/src/types/index.ts create mode 100644 apps/vben5/packages/@abp/text-templating/tsconfig.json diff --git a/apps/vben5/packages/@abp/text-templating/package.json b/apps/vben5/packages/@abp/text-templating/package.json new file mode 100644 index 000000000..b39bba55e --- /dev/null +++ b/apps/vben5/packages/@abp/text-templating/package.json @@ -0,0 +1,38 @@ +{ + "name": "@abp/text-templating", + "version": "9.0.4", + "homepage": "https://github.com/colinin/abp-next-admin", + "bugs": "https://github.com/colinin/abp-next-admin/issues", + "repository": { + "type": "git", + "url": "git+https://github.com/colinin/abp-next-admin.git", + "directory": "packages/@abp/text-templating" + }, + "license": "MIT", + "type": "module", + "sideEffects": [ + "**/*.css" + ], + "exports": { + ".": { + "types": "./src/index.ts", + "default": "./src/index.ts" + } + }, + "dependencies": { + "@abp/core": "workspace:*", + "@abp/request": "workspace:*", + "@abp/saas": "workspace:*", + "@abp/ui": "workspace:*", + "@ant-design/icons-vue": "catalog:", + "@vben/access": "workspace:*", + "@vben/common-ui": "workspace:*", + "@vben/hooks": "workspace:*", + "@vben/icons": "workspace:*", + "@vben/layouts": "workspace:*", + "@vben/locales": "workspace:*", + "ant-design-vue": "catalog:", + "vue": "catalog:*", + "vxe-table": "catalog:" + } +} diff --git a/apps/vben5/packages/@abp/text-templating/src/api/index.ts b/apps/vben5/packages/@abp/text-templating/src/api/index.ts new file mode 100644 index 000000000..e69de29bb diff --git a/apps/vben5/packages/@abp/text-templating/src/components/index.ts b/apps/vben5/packages/@abp/text-templating/src/components/index.ts new file mode 100644 index 000000000..e69de29bb diff --git a/apps/vben5/packages/@abp/text-templating/src/index.ts b/apps/vben5/packages/@abp/text-templating/src/index.ts new file mode 100644 index 000000000..314dad0cd --- /dev/null +++ b/apps/vben5/packages/@abp/text-templating/src/index.ts @@ -0,0 +1,3 @@ +export * from './api'; +export * from './components'; +export * from './types'; diff --git a/apps/vben5/packages/@abp/text-templating/src/types/index.ts b/apps/vben5/packages/@abp/text-templating/src/types/index.ts new file mode 100644 index 000000000..e69de29bb diff --git a/apps/vben5/packages/@abp/text-templating/tsconfig.json b/apps/vben5/packages/@abp/text-templating/tsconfig.json new file mode 100644 index 000000000..ce1a891fb --- /dev/null +++ b/apps/vben5/packages/@abp/text-templating/tsconfig.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@vben/tsconfig/web.json", + "include": ["src"], + "exclude": ["node_modules"] +} From 441a40bc547cc74bc8bc77856a748274a94f365e Mon Sep 17 00:00:00 2001 From: colin Date: Tue, 22 Apr 2025 11:11:27 +0800 Subject: [PATCH 2/5] 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'; From 3f041adb12f0df95856c70c6fc677377ceefd117 Mon Sep 17 00:00:00 2001 From: colin Date: Tue, 22 Apr 2025 12:00:43 +0800 Subject: [PATCH 3/5] feat(vben5): add text-template modal --- .../@abp/text-templating/package.json | 1 + .../definitions/TemplateDefinitionModal.vue | 289 ++++++++++++++++++ .../definitions/TemplateDefinitionTable.vue | 20 +- 3 files changed, 307 insertions(+), 3 deletions(-) create mode 100644 apps/vben5/packages/@abp/text-templating/src/components/definitions/TemplateDefinitionModal.vue diff --git a/apps/vben5/packages/@abp/text-templating/package.json b/apps/vben5/packages/@abp/text-templating/package.json index b39bba55e..ea42ea6cb 100644 --- a/apps/vben5/packages/@abp/text-templating/package.json +++ b/apps/vben5/packages/@abp/text-templating/package.json @@ -21,6 +21,7 @@ }, "dependencies": { "@abp/core": "workspace:*", + "@abp/localization": "workspace:*", "@abp/request": "workspace:*", "@abp/saas": "workspace:*", "@abp/ui": "workspace:*", diff --git a/apps/vben5/packages/@abp/text-templating/src/components/definitions/TemplateDefinitionModal.vue b/apps/vben5/packages/@abp/text-templating/src/components/definitions/TemplateDefinitionModal.vue new file mode 100644 index 000000000..1c7506d7c --- /dev/null +++ b/apps/vben5/packages/@abp/text-templating/src/components/definitions/TemplateDefinitionModal.vue @@ -0,0 +1,289 @@ + + + + + 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 c27b692e9..91c887875 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 @@ -6,9 +6,10 @@ import type { VbenFormProps } from '@vben/common-ui'; import type { TextTemplateDefinitionDto } from '../../types/definitions'; -import { h, onMounted, reactive, ref } from 'vue'; +import { defineAsyncComponent, h, onMounted, reactive, ref } from 'vue'; import { useAccess } from '@vben/access'; +import { useVbenModal } from '@vben/common-ui'; import { $t } from '@vben/locales'; import { useLocalization, useLocalizationSerializer } from '@abp/core'; @@ -153,6 +154,12 @@ const [Grid, gridApi] = useVbenVxeGrid({ gridOptions, }); +const [TemplateDefinitionModal, modalApi] = useVbenModal({ + connectedComponent: defineAsyncComponent( + () => import('./TemplateDefinitionModal.vue'), + ), +}); + async function onGet(input?: Record) { try { gridApi.setLoading(true); @@ -192,9 +199,15 @@ function onPageChange() { }); } -function onCreate() {} +function onCreate() { + modalApi.setData({}); + modalApi.open(); +} -function onUpdate(_row: TextTemplateDefinitionDto) {} +function onUpdate(row: TextTemplateDefinitionDto) { + modalApi.setData(row); + modalApi.open(); +} function onMenuClick(_row: TextTemplateDefinitionDto, info: MenuInfo) { switch (info.key) { @@ -288,6 +301,7 @@ onMounted(onGet); + From d083d20a94ed2283a101c4af0ac232d4c31d7207 Mon Sep 17 00:00:00 2001 From: colin Date: Wed, 23 Apr 2025 10:59:54 +0800 Subject: [PATCH 4/5] feat(vben5): add component `MarkdownViewer` --- .../@abp/components/src/vditor/Viewer.vue | 82 +++++++++++++++++++ .../@abp/components/src/vditor/index.ts | 1 + 2 files changed, 83 insertions(+) create mode 100644 apps/vben5/packages/@abp/components/src/vditor/Viewer.vue diff --git a/apps/vben5/packages/@abp/components/src/vditor/Viewer.vue b/apps/vben5/packages/@abp/components/src/vditor/Viewer.vue new file mode 100644 index 000000000..de960fbda --- /dev/null +++ b/apps/vben5/packages/@abp/components/src/vditor/Viewer.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/apps/vben5/packages/@abp/components/src/vditor/index.ts b/apps/vben5/packages/@abp/components/src/vditor/index.ts index 7ceb1995b..437fcb85c 100644 --- a/apps/vben5/packages/@abp/components/src/vditor/index.ts +++ b/apps/vben5/packages/@abp/components/src/vditor/index.ts @@ -1 +1,2 @@ export { default as MarkdownEditor } from './Editor.vue'; +export { default as MarkdownViewer } from './Viewer.vue'; From 1e24bee02bc3fbca705f4243bffaa12f9c587c55 Mon Sep 17 00:00:00 2001 From: colin Date: Wed, 23 Apr 2025 11:02:10 +0800 Subject: [PATCH 5/5] 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';