From f4cc428834bd27f25cfd8cf7590ffed1d85b2219 Mon Sep 17 00:00:00 2001 From: colin Date: Wed, 12 Mar 2025 15:45:57 +0800 Subject: [PATCH] feat(vben5): add language manage --- .../app-antd/src/locales/langs/en-US/abp.json | 3 +- .../app-antd/src/locales/langs/zh-CN/abp.json | 3 +- .../app-antd/src/router/routes/modules/abp.ts | 10 + .../views/localization/languages/index.vue | 15 ++ .../@abp/localization/src/api/index.ts | 1 + .../localization/src/api/useLanguagesApi.ts | 89 +++++++ .../@abp/localization/src/components/index.ts | 1 + .../languages/LocalizationLanguageModal.vue | 115 +++++++++ .../languages/LocalizationLanguageTable.vue | 240 ++++++++++++++++++ .../localization/src/constants/permissions.ts | 10 + .../@abp/localization/src/types/index.ts | 1 + .../@abp/localization/src/types/languages.ts | 30 +++ 12 files changed, 516 insertions(+), 2 deletions(-) create mode 100644 apps/vben5/apps/app-antd/src/views/localization/languages/index.vue create mode 100644 apps/vben5/packages/@abp/localization/src/api/useLanguagesApi.ts create mode 100644 apps/vben5/packages/@abp/localization/src/components/languages/LocalizationLanguageModal.vue create mode 100644 apps/vben5/packages/@abp/localization/src/components/languages/LocalizationLanguageTable.vue create mode 100644 apps/vben5/packages/@abp/localization/src/types/languages.ts 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 c1bf002b0..5156e2b28 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 @@ -48,7 +48,8 @@ }, "localization": { "title": "Localization", - "resources": "Resources" + "resources": "Resources", + "languages": "Languages" } }, "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 9572acc11..5ea364714 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 @@ -48,7 +48,8 @@ }, "localization": { "title": "本地化管理", - "resources": "资源管理" + "resources": "资源管理", + "languages": "语言管理" } }, "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 8a8f6477a..43b422883 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 @@ -193,6 +193,16 @@ const routes: RouteRecordRaw[] = [ component: () => import('#/views/localization/resources/index.vue'), }, + { + meta: { + title: $t('abp.manage.localization.languages'), + icon: 'cil:language', + }, + name: 'LocalizationLanguages', + path: '/manage/localization/languages', + component: () => + import('#/views/localization/languages/index.vue'), + }, ], }, { diff --git a/apps/vben5/apps/app-antd/src/views/localization/languages/index.vue b/apps/vben5/apps/app-antd/src/views/localization/languages/index.vue new file mode 100644 index 000000000..b2c23dd24 --- /dev/null +++ b/apps/vben5/apps/app-antd/src/views/localization/languages/index.vue @@ -0,0 +1,15 @@ + + + diff --git a/apps/vben5/packages/@abp/localization/src/api/index.ts b/apps/vben5/packages/@abp/localization/src/api/index.ts index d0bdf1313..6857e0bad 100644 --- a/apps/vben5/packages/@abp/localization/src/api/index.ts +++ b/apps/vben5/packages/@abp/localization/src/api/index.ts @@ -1,2 +1,3 @@ +export { useLanguagesApi } from './useLanguagesApi'; export { useLocalizationsApi } from './useLocalizationsApi'; export { useResourcesApi } from './useResourcesApi'; diff --git a/apps/vben5/packages/@abp/localization/src/api/useLanguagesApi.ts b/apps/vben5/packages/@abp/localization/src/api/useLanguagesApi.ts new file mode 100644 index 000000000..3b6469063 --- /dev/null +++ b/apps/vben5/packages/@abp/localization/src/api/useLanguagesApi.ts @@ -0,0 +1,89 @@ +import type { ListResultDto } from '@abp/core'; + +import type { + LanguageCreateDto, + LanguageDto, + LanguageGetListInput, + LanguageUpdateDto, +} from '../types/languages'; + +import { useRequest } from '@abp/request'; + +export function useLanguagesApi() { + const { cancel, request } = useRequest(); + + /** + * 查询语言列表 + * @param input 参数 + * @returns 语言列表 + */ + function getListApi( + input?: LanguageGetListInput, + ): Promise> { + return request>( + '/api/abp/localization/languages', + { + method: 'GET', + params: input, + }, + ); + } + + /** + * 查询语言 + * @param name 语言名称 + * @returns 查询的语言 + */ + function getApi(name: string): Promise { + return request(`/api/localization/languages/${name}`, { + method: 'GET', + }); + } + + /** + * 删除语言 + * @param name 语言名称 + */ + function deleteApi(name: string): Promise { + return request(`/api/localization/languages/${name}`, { + method: 'DELETE', + }); + } + + /** + * 创建语言 + * @param input 参数 + * @returns 创建的语言 + */ + function createApi(input: LanguageCreateDto): Promise { + return request(`/api/localization/languages`, { + data: input, + method: 'POST', + }); + } + + /** + * 编辑语言 + * @param name 语言名称 + * @param input 参数 + * @returns 编辑的语言 + */ + function updateApi( + name: string, + input: LanguageUpdateDto, + ): Promise { + return request(`/api/localization/languages/${name}`, { + data: input, + method: 'PUT', + }); + } + + return { + cancel, + createApi, + deleteApi, + getApi, + getListApi, + updateApi, + }; +} diff --git a/apps/vben5/packages/@abp/localization/src/components/index.ts b/apps/vben5/packages/@abp/localization/src/components/index.ts index 78dfadb28..a338e40b0 100644 --- a/apps/vben5/packages/@abp/localization/src/components/index.ts +++ b/apps/vben5/packages/@abp/localization/src/components/index.ts @@ -1 +1,2 @@ +export { default as LocalizationLanguageTable } from './languages/LocalizationLanguageTable.vue'; export { default as LocalizationResourceTable } from './resources/LocalizationResourceTable.vue'; diff --git a/apps/vben5/packages/@abp/localization/src/components/languages/LocalizationLanguageModal.vue b/apps/vben5/packages/@abp/localization/src/components/languages/LocalizationLanguageModal.vue new file mode 100644 index 000000000..096a9a2f0 --- /dev/null +++ b/apps/vben5/packages/@abp/localization/src/components/languages/LocalizationLanguageModal.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/apps/vben5/packages/@abp/localization/src/components/languages/LocalizationLanguageTable.vue b/apps/vben5/packages/@abp/localization/src/components/languages/LocalizationLanguageTable.vue new file mode 100644 index 000000000..20862327a --- /dev/null +++ b/apps/vben5/packages/@abp/localization/src/components/languages/LocalizationLanguageTable.vue @@ -0,0 +1,240 @@ + + + + + diff --git a/apps/vben5/packages/@abp/localization/src/constants/permissions.ts b/apps/vben5/packages/@abp/localization/src/constants/permissions.ts index f8efa3338..20a7fb03a 100644 --- a/apps/vben5/packages/@abp/localization/src/constants/permissions.ts +++ b/apps/vben5/packages/@abp/localization/src/constants/permissions.ts @@ -8,3 +8,13 @@ export const ResourcesPermissions = { /** 更新 */ Update: 'LocalizationManagement.Resource.Update', }; +/** 语言管理权限 */ +export const LanguagesPermissions = { + /** 新增 */ + Create: 'LocalizationManagement.Language.Create', + Default: 'LocalizationManagement.Language', + /** 删除 */ + Delete: 'LocalizationManagement.Language.Delete', + /** 更新 */ + Update: 'LocalizationManagement.Language.Update', +}; diff --git a/apps/vben5/packages/@abp/localization/src/types/index.ts b/apps/vben5/packages/@abp/localization/src/types/index.ts index 00e67e02e..62604a6ae 100644 --- a/apps/vben5/packages/@abp/localization/src/types/index.ts +++ b/apps/vben5/packages/@abp/localization/src/types/index.ts @@ -1 +1,2 @@ +export * from './languages'; export * from './resources'; diff --git a/apps/vben5/packages/@abp/localization/src/types/languages.ts b/apps/vben5/packages/@abp/localization/src/types/languages.ts new file mode 100644 index 000000000..8fd933704 --- /dev/null +++ b/apps/vben5/packages/@abp/localization/src/types/languages.ts @@ -0,0 +1,30 @@ +import type { AuditedEntityDto } from '@abp/core'; + +interface LanguageDto extends AuditedEntityDto { + cultureName: string; + displayName: string; + twoLetterISOLanguageName?: string; + uiCultureName: string; +} + +interface LanguageGetListInput { + filter?: string; +} + +interface LanguageCreateOrUpdateDto { + displayName: string; +} + +interface LanguageCreateDto extends LanguageCreateOrUpdateDto { + cultureName: string; + uiCultureName?: string; +} + +type LanguageUpdateDto = LanguageCreateOrUpdateDto; + +export type { + LanguageCreateDto, + LanguageDto, + LanguageGetListInput, + LanguageUpdateDto, +};