feat: add tenant role template console

This commit is contained in:
Codex
2026-06-29 14:29:36 +08:00
parent c00992aab5
commit 1b01b923e8
9 changed files with 471 additions and 36 deletions

View File

@@ -249,6 +249,54 @@ export interface TenantOverview {
publicConfig?: Record<string, unknown>;
}
export interface TenantPermissionCatalogItem {
key: string;
label?: string;
description?: string;
}
export interface TenantPermissionsPayload {
current?: Record<string, unknown>;
permissions?: TenantPermissionCatalogItem[];
menuGroups?: TenantPermissionCatalogItem[];
fieldGroups?: TenantPermissionCatalogItem[];
fieldCatalog?: TenantPermissionCatalogItem[];
roleDefaults?: Record<string, string[]>;
}
export interface TenantRoleTemplateItem {
id: string;
code: string;
name: string;
description?: string | null;
baseRole?: string;
status?: string;
permissions?: Record<string, boolean>;
menuPermissions?: Record<string, boolean>;
modulePermissions?: Record<string, boolean>;
fieldPermissions?: Record<string, boolean>;
dataScope?: Record<string, unknown>;
isSystem?: boolean;
sortOrder?: number;
createdAt?: string;
updatedAt?: string;
}
export interface TenantRoleTemplateInput {
id?: string;
code: string;
name: string;
description?: string | null;
baseRole: string;
status?: string;
permissions?: Record<string, boolean>;
menuPermissions?: Record<string, boolean>;
modulePermissions?: Record<string, boolean>;
fieldPermissions?: Record<string, boolean>;
dataScope?: Record<string, unknown>;
sortOrder?: number;
}
export async function loadTenantDashboard(timeRange = '30d') {
return apiRequest<{ item?: TenantDashboard }>('/api/tenant-admin/dashboard', { query: { timeRange } });
}
@@ -258,7 +306,7 @@ export async function loadTenantOverview() {
}
export async function loadTenantPermissions() {
return apiRequest<{ items?: Record<string, unknown>[]; modules?: Record<string, unknown>[] }>('/api/tenant-admin/permissions');
return apiRequest<TenantPermissionsPayload>('/api/tenant-admin/permissions');
}
export async function loadTenantClasses(limit = 50) {
@@ -394,7 +442,21 @@ export async function loadAuthProviders() {
}
export async function loadRoleTemplates() {
return apiRequest<{ items?: Record<string, unknown>[] }>('/api/tenant-admin/role-templates');
return apiRequest<{ items?: TenantRoleTemplateItem[] }>('/api/tenant-admin/role-templates');
}
export async function upsertRoleTemplate(input: TenantRoleTemplateInput) {
return apiRequest<{ item?: TenantRoleTemplateItem }>('/api/tenant-admin/role-templates', {
method: 'PUT',
body: input,
});
}
export async function disableRoleTemplate(roleTemplateId: string) {
return apiRequest<{ item?: TenantRoleTemplateItem }>('/api/tenant-admin/role-templates/disable', {
method: 'POST',
body: { roleTemplateId },
});
}
export async function loadCrmQueue(limit = 20) {