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 fb7826de2..cf0bec37c 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 @@ -97,7 +97,8 @@ "title": "Message Manage", "email": "Email Messages", "sms": "Sms Messages" - } + }, + "dataDictionaries": "Data Dictionaries" }, "saas": { "title": "Saas", 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 275e9f92d..d5334ae22 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 @@ -97,7 +97,8 @@ "title": "消息管理", "email": "邮件消息", "sms": "短信消息" - } + }, + "dataDictionaries": "数据字典" }, "saas": { "title": "Saas", 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 62625ed22..020a35e98 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 @@ -399,6 +399,16 @@ const routes: RouteRecordRaw[] = [ icon: 'ep:platform', }, children: [ + { + meta: { + title: $t('abp.platform.dataDictionaries'), + icon: 'material-symbols:dictionary-outline', + }, + name: 'PlatformDataDictionaries', + path: '/platform/data-dictionaries', + component: () => + import('#/views/platform/data-dictionaries/index.vue'), + }, { meta: { title: $t('abp.platform.messages.title'), diff --git a/apps/vben5/apps/app-antd/src/views/platform/data-dictionaries/index.vue b/apps/vben5/apps/app-antd/src/views/platform/data-dictionaries/index.vue new file mode 100644 index 000000000..2ed4fd7ce --- /dev/null +++ b/apps/vben5/apps/app-antd/src/views/platform/data-dictionaries/index.vue @@ -0,0 +1,15 @@ + + + + + + + diff --git a/apps/vben5/packages/@abp/platform/src/api/index.ts b/apps/vben5/packages/@abp/platform/src/api/index.ts index 340455006..481660d28 100644 --- a/apps/vben5/packages/@abp/platform/src/api/index.ts +++ b/apps/vben5/packages/@abp/platform/src/api/index.ts @@ -1,2 +1,3 @@ +export { useDataDictionariesApi } from './useDataDictionariesApi'; export { useEmailMessagesApi } from './useEmailMessagesApi'; export { useSmsMessagesApi } from './useSmsMessagesApi'; diff --git a/apps/vben5/packages/@abp/platform/src/api/useDataDictionariesApi.ts b/apps/vben5/packages/@abp/platform/src/api/useDataDictionariesApi.ts new file mode 100644 index 000000000..c6f172aea --- /dev/null +++ b/apps/vben5/packages/@abp/platform/src/api/useDataDictionariesApi.ts @@ -0,0 +1,110 @@ +import type { ListResultDto, PagedResultDto } from '@abp/core'; + +import type { + DataCreateDto, + DataDto, + DataItemCreateDto, + DataItemUpdateDto, + DataMoveDto, + DataUpdateDto, + GetDataListInput, +} from '../types/dataDictionaries'; + +import { useRequest } from '@abp/request'; + +export function useDataDictionariesApi() { + const { cancel, request } = useRequest(); + + function createApi(input: DataCreateDto): Promise { + return request('/api/platform/datas', { + data: input, + method: 'POST', + }); + } + + function deleteApi(id: string): Promise { + return request(`/api/platform/datas/${id}`, { + method: 'DELETE', + }); + } + + function createItemApi(id: string, input: DataItemCreateDto): Promise { + return request(`/api/platform/datas/${id}/items`, { + data: input, + method: 'POST', + }); + } + + function deleteItemApi(id: string, name: string): Promise { + return request(`/api/platform/datas/${id}/items/${name}`, { + method: 'DELETE', + }); + } + + function getApi(id: string): Promise { + return request(`/api/platform/datas/${id}`, { + method: 'GET', + }); + } + + function getByNameApi(name: string): Promise { + return request(`/api/platform/datas/by-name/${name}`, { + method: 'GET', + }); + } + + function getAllApi(): Promise> { + return request>(`/api/platform/datas/all`, { + method: 'GET', + }); + } + + function getPagedListApi( + input?: GetDataListInput, + ): Promise> { + return request>(`/api/platform/datas`, { + method: 'GET', + params: input, + }); + } + + function moveApi(id: string, input: DataMoveDto): Promise { + return request(`/api/platform/datas/${id}/move`, { + data: input, + method: 'PUT', + }); + } + + function updateApi(id: string, input: DataUpdateDto): Promise { + return request(`/api/platform/datas/${id}`, { + data: input, + method: 'PUT', + }); + } + + function updateItemApi( + id: string, + name: string, + input: DataItemUpdateDto, + ): Promise { + return request(`/api/platform/datas/${id}/items/${name}`, { + data: input, + method: 'PUT', + }); + } + + return { + cancel, + createApi, + createItemApi, + deleteApi, + deleteItemApi, + getAllApi, + getApi, + getByNameApi, + getPagedListApi, + moveApi, + updateApi, + updateItemApi, + }; +} diff --git a/apps/vben5/packages/@abp/platform/src/components/data-dictionaries/DataDictionaryItemDrawer.vue b/apps/vben5/packages/@abp/platform/src/components/data-dictionaries/DataDictionaryItemDrawer.vue new file mode 100644 index 000000000..124c8ebe0 --- /dev/null +++ b/apps/vben5/packages/@abp/platform/src/components/data-dictionaries/DataDictionaryItemDrawer.vue @@ -0,0 +1,222 @@ + + + + + + + + {{ $t('AppPlatform.Data:AppendItem') }} + + + + + + + + + + + + {{ $t('AbpUi.Edit') }} + + + {{ $t('AbpUi.Delete') }} + + + + + + + + diff --git a/apps/vben5/packages/@abp/platform/src/components/data-dictionaries/DataDictionaryTable.vue b/apps/vben5/packages/@abp/platform/src/components/data-dictionaries/DataDictionaryTable.vue new file mode 100644 index 000000000..c945b6af9 --- /dev/null +++ b/apps/vben5/packages/@abp/platform/src/components/data-dictionaries/DataDictionaryTable.vue @@ -0,0 +1,213 @@ + + + + + + + {{ $t('AppPlatform.Data:AddNew') }} + + + + {{ row.name }} + + + + + {{ $t('AbpUi.Edit') }} + + + {{ $t('AbpUi.Delete') }} + + + + onMenuClick(row, info)"> + + + + {{ $t('AppPlatform.Data:AddChildren') }} + + + + + + {{ $t('AppPlatform.Data:Items') }} + + + + + + + + + + + + + diff --git a/apps/vben5/packages/@abp/platform/src/components/index.ts b/apps/vben5/packages/@abp/platform/src/components/index.ts index c1a40b9f7..7c7cc632e 100644 --- a/apps/vben5/packages/@abp/platform/src/components/index.ts +++ b/apps/vben5/packages/@abp/platform/src/components/index.ts @@ -1,2 +1,3 @@ +export { default as DataDictionaryTable } from './data-dictionaries/DataDictionaryTable.vue'; export { default as EmailMessageTable } from './messages/email/EmailMessageTable.vue'; export { default as SmsMessageTable } from './messages/sms/SmsMessageTable.vue'; diff --git a/apps/vben5/packages/@abp/platform/src/types/dataDictionaries.ts b/apps/vben5/packages/@abp/platform/src/types/dataDictionaries.ts new file mode 100644 index 000000000..2c050e714 --- /dev/null +++ b/apps/vben5/packages/@abp/platform/src/types/dataDictionaries.ts @@ -0,0 +1,76 @@ +import type { EntityDto, PagedAndSortedResultRequestDto } from '@abp/core'; + +enum ValueType { + Array = 5, + Boolean = 2, + Date = 3, + DateTime = 4, + Numeic = 1, + Object = 6, + String = 0, +} + +interface DataItemDto extends EntityDto { + allowBeNull: boolean; + defaultValue?: string; + description?: string; + displayName: string; + name: string; + valueType: ValueType; +} + +interface DataDto extends EntityDto { + code: string; + description?: string; + displayName: string; + items: DataItemDto[]; + name: string; + parentId?: string; +} + +interface DataCreateOrUpdateDto { + description?: string; + displayName: string; + name: string; +} + +interface DataCreateDto extends DataCreateOrUpdateDto { + parentId?: string; +} + +interface DataItemCreateOrUpdateDto { + allowBeNull: boolean; + defaultValue?: string; + description?: string; + displayName: string; + valueType: ValueType; +} + +interface DataItemCreateDto extends DataItemCreateOrUpdateDto { + name: string; +} + +interface GetDataListInput extends PagedAndSortedResultRequestDto { + filter?: string; +} + +interface DataMoveDto { + parentId?: string; +} + +type DataUpdateDto = DataCreateOrUpdateDto; + +type DataItemUpdateDto = DataItemCreateOrUpdateDto; + +export { ValueType }; + +export type { + DataCreateDto, + DataDto, + DataItemCreateDto, + DataItemDto, + DataItemUpdateDto, + DataMoveDto, + DataUpdateDto, + GetDataListInput, +}; diff --git a/apps/vben5/packages/@abp/platform/src/types/index.ts b/apps/vben5/packages/@abp/platform/src/types/index.ts index e4f239712..7ddde6be9 100644 --- a/apps/vben5/packages/@abp/platform/src/types/index.ts +++ b/apps/vben5/packages/@abp/platform/src/types/index.ts @@ -1 +1,2 @@ +export * from './dataDictionaries'; export * from './messages';