diff --git a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application.Contracts/LINGYUN/Abp/Identity/IOrganizationUnitAppService.cs b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application.Contracts/LINGYUN/Abp/Identity/IOrganizationUnitAppService.cs index 631a1bdef..9991efcc2 100644 --- a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application.Contracts/LINGYUN/Abp/Identity/IOrganizationUnitAppService.cs +++ b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application.Contracts/LINGYUN/Abp/Identity/IOrganizationUnitAppService.cs @@ -22,6 +22,8 @@ namespace LINGYUN.Abp.Identity Task> FindChildrenAsync(OrganizationUnitGetChildrenDto input); + Task> GetRoleNamesAsync(Guid id); + Task> GetRolesAsync(OrganizationUnitGetRoleByPagedDto input); Task> GetUsersAsync(OrganizationUnitGetUserDto input); diff --git a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application/LINGYUN/Abp/Identity/OrganizationUnitAppService.cs b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application/LINGYUN/Abp/Identity/OrganizationUnitAppService.cs index 56aa0694a..17bb80e91 100644 --- a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application/LINGYUN/Abp/Identity/OrganizationUnitAppService.cs +++ b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Application/LINGYUN/Abp/Identity/OrganizationUnitAppService.cs @@ -98,6 +98,13 @@ namespace LINGYUN.Abp.Identity ObjectMapper.Map, List>(origanizationUnits)); } + [Authorize(IdentityPermissions.OrganizationUnits.ManageRoles)] + public virtual async Task> GetRoleNamesAsync(Guid id) + { + var inOrignizationUnitRoleNames = await UserRepository.GetRoleNamesInOrganizationUnitAsync(id); + return new ListResultDto(inOrignizationUnitRoleNames); + } + [Authorize(IdentityPermissions.OrganizationUnits.ManageRoles)] public virtual async Task> GetRolesAsync(OrganizationUnitGetRoleByPagedDto input) { diff --git a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.HttpApi/LINGYUN/Abp/Identity/OrganizationUnitController.cs b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.HttpApi/LINGYUN/Abp/Identity/OrganizationUnitController.cs index 7aa254430..0a106b8e7 100644 --- a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.HttpApi/LINGYUN/Abp/Identity/OrganizationUnitController.cs +++ b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.HttpApi/LINGYUN/Abp/Identity/OrganizationUnitController.cs @@ -84,6 +84,13 @@ namespace LINGYUN.Abp.Identity return await OrganizationUnitAppService.GetListAsync(input); } + [HttpGet] + [Route("management-roles/{id}")] + public virtual async Task> GetRoleNamesAsync(Guid id) + { + return await OrganizationUnitAppService.GetRoleNamesAsync(id); + } + [HttpGet] [Route("management-roles")] public virtual async Task> GetRolesAsync(OrganizationUnitGetRoleByPagedDto input) diff --git a/vueJs/src/api/apiresources.ts b/vueJs/src/api/apiresources.ts index d89b6c259..3df9704b4 100644 --- a/vueJs/src/api/apiresources.ts +++ b/vueJs/src/api/apiresources.ts @@ -23,7 +23,9 @@ export default class ApiResourceService { let _url = '/api/IdentityServer/ApiResources' _url += '?filter=' + payload.filter _url += '&sorting=' + payload.sorting - _url += '&skipCount=' + pagerFormat(payload.skipCount) + // abp设计原因,需要前端计算分页 + _url += '&skipCount=' + pagerFormat(payload.skipCount) * payload.maxResultCount + // _url += '&skipCount=' + pagerFormat(payload.skipCount) _url += '&maxResultCount=' + payload.maxResultCount return ApiService.Get>(_url, serviceUrl) } diff --git a/vueJs/src/api/clients.ts b/vueJs/src/api/clients.ts index ba27d5dc8..1a12fee29 100644 --- a/vueJs/src/api/clients.ts +++ b/vueJs/src/api/clients.ts @@ -15,7 +15,8 @@ export default class ClientService { let _url = '/api/IdentityServer/Clients' _url += '?filter=' + payload.filter _url += '&sorting=' + payload.sorting - _url += '&skipCount=' + pagerFormat(payload.skipCount) + // 因为abp设计的原因, 需要前端组合页面 + _url += '&skipCount=' + pagerFormat(payload.skipCount) * payload.maxResultCount _url += '&maxResultCount=' + payload.maxResultCount return ApiService.Get>(_url, serviceUrl) } diff --git a/vueJs/src/api/identityresources.ts b/vueJs/src/api/identityresources.ts index dcff8cfc8..2bf09eec4 100644 --- a/vueJs/src/api/identityresources.ts +++ b/vueJs/src/api/identityresources.ts @@ -27,7 +27,9 @@ export default class IdentityResourceService { let _url = '/api/IdentityServer/IdentityResources' _url += '?filter=' + payload.filter _url += '&sorting=' + payload.sorting - _url += '&skipCount=' + pagerFormat(payload.skipCount) + // abp设计原因,需要前端计算分页 + _url += '&skipCount=' + pagerFormat(payload.skipCount) * payload.maxResultCount + // _url += '&skipCount=' + pagerFormat(payload.skipCount) _url += '&maxResultCount=' + payload.maxResultCount return ApiService.Get>(_url, serviceUrl) } diff --git a/vueJs/src/api/organizationunit.ts b/vueJs/src/api/organizationunit.ts index 74ad331c2..231af13ac 100644 --- a/vueJs/src/api/organizationunit.ts +++ b/vueJs/src/api/organizationunit.ts @@ -120,7 +120,9 @@ export default class OrganizationUnitService { _url += '?id=' + payload.id _url += '&filter=' + payload.filter _url += '&sorting=' + payload.sorting - _url += '&skipCount=' + pagerFormat(payload.skipCount) + // abp设计原因,需要前端计算分页 + _url += '&skipCount=' + pagerFormat(payload.skipCount) * payload.maxResultCount + // _url += '&skipCount=' + pagerFormat(payload.skipCount) _url += '&maxResultCount=' + payload.maxResultCount return ApiService.Get>(_url, serviceUrl) } diff --git a/vueJs/src/api/roles.ts b/vueJs/src/api/roles.ts index e80d45f97..cc2334a31 100644 --- a/vueJs/src/api/roles.ts +++ b/vueJs/src/api/roles.ts @@ -1,13 +1,24 @@ +import { pagerFormat } from '@/utils/index' import ApiService from './serviceBase' -import { ListResultDto } from './types' +import { ListResultDto, PagedAndSortedResultRequestDto, PagedResultDto } from './types' const IdentityServiceUrl = process.env.VUE_APP_BASE_API export default class RoleService { - public static getRoles() { + public static getAllRoles() { return ApiService.Get>('/api/identity/roles', IdentityServiceUrl) } + public static getRoles(payload: RoleGetPagedDto) { + let _url = '/api/identity/roles' + // 因为abp设计的原因, 需要前端组合页面 + _url += '?skipCount=' + pagerFormat(payload.skipCount) * payload.maxResultCount + _url += '&maxResultCount=' + payload.maxResultCount + _url += '&sorting=' + payload.sorting + _url += '&filter=' + payload.filter + return ApiService.Get>(_url, IdentityServiceUrl) + } + public static getRoleById(id: string) { let _url = '/api/identity/roles/' _url += id @@ -43,6 +54,10 @@ export class RoleDto extends RoleBaseDto { concurrencyStamp?: string } +export class RoleGetPagedDto extends PagedAndSortedResultRequestDto { + filter?: string +} + export class CreateRoleDto extends RoleBaseDto { constructor() { super() diff --git a/vueJs/src/api/tenant.ts b/vueJs/src/api/tenant.ts index d2c372231..34adb082a 100644 --- a/vueJs/src/api/tenant.ts +++ b/vueJs/src/api/tenant.ts @@ -21,7 +21,8 @@ export default class TenantService { let _url = '/api/multi-tenancy/tenants' _url += '?filter=' + payload.filter _url += '&sorting=' + payload.sorting - _url += '&skipCount=' + pagerFormat(payload.skipCount) + // 因为abp设计的原因, 需要前端组合页面 + _url += '&skipCount=' + pagerFormat(payload.skipCount) * payload.maxResultCount _url += '&maxResultCount=' + payload.maxResultCount return ApiService.Get>(_url, serviceUrl) } diff --git a/vueJs/src/api/users.ts b/vueJs/src/api/users.ts index f7d018e10..a9470ef63 100644 --- a/vueJs/src/api/users.ts +++ b/vueJs/src/api/users.ts @@ -10,7 +10,8 @@ export default class UserApiService { public static getUsers(input: UsersGetPagedDto) { let _url = '/api/identity/users' - _url += '?skipCount=' + pagerFormat(input.skipCount) + // 因为abp设计的原因, 需要前端组合页面 + _url += '?skipCount=' + pagerFormat(input.skipCount) * input.maxResultCount _url += '&maxResultCount=' + input.maxResultCount if (input.sorting) { _url += '&sorting=' + input.sorting diff --git a/vueJs/src/components/MarkdownEditor/index.vue b/vueJs/src/components/MarkdownEditor/index.vue index 3e14cc5d6..f0fc7abab 100644 --- a/vueJs/src/components/MarkdownEditor/index.vue +++ b/vueJs/src/components/MarkdownEditor/index.vue @@ -74,10 +74,8 @@ export default class extends Vue { private initEditor() { const editorElement = document.getElementById(this.id) if (!editorElement) return - this.markdownEditor = new TuiEditor({ - el: editorElement, - ...this.editorOptions - }) + this.editorOptions.el = editorElement + this.markdownEditor = new TuiEditor(this.editorOptions) if (this.value) { this.markdownEditor.setValue(this.value) } diff --git a/vueJs/src/views/admin/components/RoleReference.vue b/vueJs/src/views/admin/components/RoleReference.vue new file mode 100644 index 000000000..352574a7e --- /dev/null +++ b/vueJs/src/views/admin/components/RoleReference.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/vueJs/src/views/admin/components/UserReference.vue b/vueJs/src/views/admin/components/UserReference.vue new file mode 100644 index 000000000..4d4b05902 --- /dev/null +++ b/vueJs/src/views/admin/components/UserReference.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/vueJs/src/views/admin/organization-unit/components/EditOrganizationUint.vue b/vueJs/src/views/admin/organization-unit/components/EditOrganizationUint.vue index d16bcbc0e..a82a524d3 100644 --- a/vueJs/src/views/admin/organization-unit/components/EditOrganizationUint.vue +++ b/vueJs/src/views/admin/organization-unit/components/EditOrganizationUint.vue @@ -43,12 +43,24 @@ + + + +