diff --git a/apps/vben5/apps/app-antd/src/adapter/component/index.ts b/apps/vben5/apps/app-antd/src/adapter/component/index.ts index 199e349d2..87cd87bdf 100644 --- a/apps/vben5/apps/app-antd/src/adapter/component/index.ts +++ b/apps/vben5/apps/app-antd/src/adapter/component/index.ts @@ -14,6 +14,7 @@ import { $t } from '@vben/locales'; import { FeatureStateCheck, GlobalFeatureStateCheck } from '@abp/features'; import { PermissionStateCheck } from '@abp/permissions'; +import { TenantSelect } from '@abp/saas'; import { AutoComplete, Button, @@ -158,6 +159,7 @@ async function initComponentAdapter() { FeatureStateCheck, GlobalFeatureStateCheck, PermissionStateCheck, + TenantSelect, }; // 将组件注册到全局共享状态中 diff --git a/apps/vben5/packages/@abp/saas/package.json b/apps/vben5/packages/@abp/saas/package.json index d8fe93258..f536c9515 100644 --- a/apps/vben5/packages/@abp/saas/package.json +++ b/apps/vben5/packages/@abp/saas/package.json @@ -31,9 +31,11 @@ "@vben/hooks": "workspace:*", "@vben/icons": "workspace:*", "@vben/locales": "workspace:*", + "@vueuse/integrations": "catalog:", "ant-design-vue": "catalog:", "dayjs": "catalog:", "lodash.debounce": "catalog:", + "universal-cookie": "catalog:", "vue": "catalog:*", "vxe-table": "catalog:" }, diff --git a/apps/vben5/packages/@abp/saas/src/api/index.ts b/apps/vben5/packages/@abp/saas/src/api/index.ts index beba3fb43..3474130f9 100644 --- a/apps/vben5/packages/@abp/saas/src/api/index.ts +++ b/apps/vben5/packages/@abp/saas/src/api/index.ts @@ -1,2 +1,3 @@ export { useEditionsApi } from './useEditionsApi'; +export { useMultiTenancyApi } from './useMultiTenancyApi'; export { useTenantsApi } from './useTenantsApi'; diff --git a/apps/vben5/packages/@abp/saas/src/api/useMultiTenancyApi.ts b/apps/vben5/packages/@abp/saas/src/api/useMultiTenancyApi.ts new file mode 100644 index 000000000..cee4f0b22 --- /dev/null +++ b/apps/vben5/packages/@abp/saas/src/api/useMultiTenancyApi.ts @@ -0,0 +1,31 @@ +import type { FindTenantResultDto } from '../types/multiTenancys'; + +import { useRequest } from '@abp/request'; + +export function useMultiTenancyApi() { + const { cancel, request } = useRequest(); + + function findTenantByNameApi(name: string): Promise { + return request( + `/api/abp/multi-tenancy/tenants/by-name/${name}`, + { + method: 'GET', + }, + ); + } + + function findTenantByIdApi(id: string): Promise { + return request( + `/api/abp/multi-tenancy/tenants/by-id/${id}`, + { + method: 'GET', + }, + ); + } + + return { + cancel, + findTenantByIdApi, + findTenantByNameApi, + }; +} diff --git a/apps/vben5/packages/@abp/saas/src/components/index.ts b/apps/vben5/packages/@abp/saas/src/components/index.ts index 88de3efdf..05d1bd8ae 100644 --- a/apps/vben5/packages/@abp/saas/src/components/index.ts +++ b/apps/vben5/packages/@abp/saas/src/components/index.ts @@ -1,2 +1,3 @@ export { default as EditionTable } from './editions/EditionTable.vue'; +export { default as TenantSelect } from './tenants/TenantSelect.vue'; export { default as TenantTable } from './tenants/TenantTable.vue'; diff --git a/apps/vben5/packages/@abp/saas/src/components/tenants/TenantSelect.vue b/apps/vben5/packages/@abp/saas/src/components/tenants/TenantSelect.vue new file mode 100644 index 000000000..d1c0b6ee7 --- /dev/null +++ b/apps/vben5/packages/@abp/saas/src/components/tenants/TenantSelect.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/apps/vben5/packages/@abp/saas/src/components/tenants/TenantSelectModal.vue b/apps/vben5/packages/@abp/saas/src/components/tenants/TenantSelectModal.vue new file mode 100644 index 000000000..6ad05d021 --- /dev/null +++ b/apps/vben5/packages/@abp/saas/src/components/tenants/TenantSelectModal.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/apps/vben5/packages/@abp/saas/src/types/index.ts b/apps/vben5/packages/@abp/saas/src/types/index.ts index 7227f5ab1..ca6eda68d 100644 --- a/apps/vben5/packages/@abp/saas/src/types/index.ts +++ b/apps/vben5/packages/@abp/saas/src/types/index.ts @@ -1,2 +1,3 @@ export * from './editions'; +export * from './multiTenancys'; export * from './tenants'; diff --git a/apps/vben5/packages/@abp/saas/src/types/multiTenancys.ts b/apps/vben5/packages/@abp/saas/src/types/multiTenancys.ts new file mode 100644 index 000000000..25d596565 --- /dev/null +++ b/apps/vben5/packages/@abp/saas/src/types/multiTenancys.ts @@ -0,0 +1,9 @@ +interface FindTenantResultDto { + isActive: boolean; + name?: string; + normalizedName?: string; + success: boolean; + tenantId?: string; +} + +export type { FindTenantResultDto }; diff --git a/apps/vben5/pnpm-workspace.yaml b/apps/vben5/pnpm-workspace.yaml index 790065150..830b2a3e2 100644 --- a/apps/vben5/pnpm-workspace.yaml +++ b/apps/vben5/pnpm-workspace.yaml @@ -174,6 +174,7 @@ catalog: turbo: ^2.4.0 typescript: ^5.7.3 unbuild: ^3.3.1 + universal-cookie: ^7 unplugin-element-plus: ^0.9.0 vee-validate: ^4.15.0 vditor: ^3.10.9