From 886cce1b9e043bfc9e8bb443cccd1f91dd5c98c4 Mon Sep 17 00:00:00 2001 From: chenxing Date: Thu, 27 Aug 2026 20:13:16 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=A8=E6=A0=A1=E8=BA=AB=E4=BB=BD=E6=9B=B4?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/apiDefinitions.ts | 4 +- src/api/globals.d.ts | 148 ++++++------------ src/components/MyTree.vue | 3 +- src/views/group-user/AdjustGroupContainer.vue | 2 +- src/views/group-user/index.vue | 31 +--- .../group-user/user/AddUserContainer.vue | 7 +- .../group-user/user/EditUserContainer.vue | 24 +-- src/views/group-user/user/UserForm.vue | 57 ++++++- 8 files changed, 118 insertions(+), 158 deletions(-) diff --git a/src/api/apiDefinitions.ts b/src/api/apiDefinitions.ts index 626f4d8..a799596 100644 --- a/src/api/apiDefinitions.ts +++ b/src/api/apiDefinitions.ts @@ -34,7 +34,6 @@ export default { 'SysGroup.sysGroupAdd': ['POST', '/api/sysgroup/Add'], 'PushSubscription.test': ['POST', '/api/push/Test'], 'PushSubscription.retry': ['POST', '/api/push/Retry/{id}'], - 'Identity.switchIdentity': ['POST', '/api/identity/switch'], 'GroupAuthz.setSchoolApp': ['POST', '/api/groupauthz/SetSchoolApp'], 'GroupAuthz.setGroupModule': ['POST', '/api/groupauthz/SetGroupModule'], 'GroupAuthz.saveModulePerms': ['POST', '/api/groupauthz/SaveModulePerms'], @@ -72,6 +71,7 @@ export default { 'Group.add_2': ['POST', '/oapi/group/add'], 'SysUser.list': ['GET', '/api/sysuser/List'], 'SysUser.getUserGroups': ['GET', '/api/sysuser/Groups/{userId}'], + 'SysUser.userIdentity': ['GET', '/api/sysuser/UserIdentity'], 'SysUser.export_': ['GET', '/api/sysuser/Export'], 'SysUser.downloadTemplate': ['GET', '/api/sysuser/DownloadTemplate'], 'SysGroup.sysGroupList': ['GET', '/api/sysgroup/List'], @@ -83,8 +83,6 @@ export default { 'SysOperationLog.operationLogDownload': ['GET', '/api/oplog/Download/{id}'], 'SysOapiLog.oapiLogList': ['GET', '/api/oapilog/List'], 'SysOapiLog.oapiLogDownload': ['GET', '/api/oapilog/Download/{id}'], - 'Identity.current': ['GET', '/api/identity/current'], - 'Identity.available': ['GET', '/api/identity/available'], 'GroupAuthz.userRoles': ['GET', '/api/groupauthz/UserRoles'], 'GroupAuthz.userPermissionTree': ['GET', '/api/groupauthz/UserPermissionTree'], 'GroupAuthz.userGroupTree': ['GET', '/api/groupauthz/UserGroupTree'], diff --git a/src/api/globals.d.ts b/src/api/globals.d.ts index 09c218d..072a235 100644 --- a/src/api/globals.d.ts +++ b/src/api/globals.d.ts @@ -114,10 +114,17 @@ export interface SysUserRequest { email?: string; gender?: number; profilePicture?: string; - roles?: number[]; + /** 身份归属学校(schoolId 解析后的真实组 id;编辑必传,新增可不传按 groupId 解析) */ + schoolId?: number; + /** 用户身份角色(SysRoleEnum.key 1-7),按 schoolId 全量覆盖保存;空数组=清空该校身份 */ + roleIds?: number[]; disabled?: number; expired?: boolean; } +export interface UserIdentityVo { + schoolId?: number; + roleIds?: number[]; +} export interface SysGroupSortRequest { pid: number; ids: number[]; @@ -146,10 +153,6 @@ export interface PushTestRequest { interfacePath?: string; targetIds?: number[]; } -export interface IdentitySwitchRequest { - roleId: number; - schoolId: number; -} export interface SchoolAppAuthzRequest { schid: number; appid: number; @@ -233,20 +236,6 @@ export interface SysGroupVo { sort?: number; children?: SysGroupVo[]; } -export interface IdentityCurrentVo { - roleId?: number; - roleName?: string; - schoolId?: number; - schoolName?: string; - fallback?: boolean; -} -export interface IdentityOptionVo { - roleId?: number; - roleName?: string; - schoolId?: number; - schoolName?: string; - isMain?: boolean; -} export interface AppItem { id?: number; name?: string; @@ -320,6 +309,8 @@ export interface SysUserVo { type?: number; sortNo?: number; groupStatus?: number; + /** 主校身份名(如「老师/校领导」):列表「用户身份」列展示字段(roles 列已停写) */ + identityNames?: string; expired?: boolean; createTime?: string; updateTime?: string; @@ -1282,6 +1273,40 @@ declare global { >( config: Config ): Alova2Method; + /** + * --- + * + * [GET] + * + * **path:** /api/sysuser/UserIdentity + * + * --- + * + * **Query Parameters** + * ```ts + * type QueryParameters = { + * userId: number + * groupId: number + * } + * ``` + * + * --- + * + * **Response** + * ```ts + * type Response = UserIdentityVo + * ``` + */ + userIdentity< + Config extends Alova2MethodConfig & { + params: { + userId: number; + groupId: number; + }; + } + >( + config: Config + ): Alova2Method; /** * --- * @@ -1836,91 +1861,6 @@ declare global { config: Config ): Alova2Method; }; - Identity: { - /** - * --- - * - * [POST] - * - * **path:** /api/identity/switch - * - * --- - * - * **RequestBody** - * ```ts - * type RequestBody = { - * roleId: number - * schoolId: number - * } - * ``` - * - * --- - * - * **Response** - * ```ts - * type Response = { - * roleId?: number - * roleName?: string - * schoolId?: number - * schoolName?: string - * fallback?: boolean - * } - * ``` - */ - switchIdentity< - Config extends Alova2MethodConfig & { - data: IdentitySwitchRequest; - } - >( - config: Config - ): Alova2Method; - /** - * --- - * - * [GET] - * - * **path:** /api/identity/current - * - * --- - * - * **Response** - * ```ts - * type Response = { - * roleId?: number - * roleName?: string - * schoolId?: number - * schoolName?: string - * fallback?: boolean - * } - * ``` - */ - current>( - config?: Config - ): Alova2Method; - /** - * --- - * - * [GET] - * - * **path:** /api/identity/available - * - * --- - * - * **Response** - * ```ts - * type Response = Array<{ - * roleId?: number - * roleName?: string - * schoolId?: number - * schoolName?: string - * isMain?: boolean - * }> - * ``` - */ - available>( - config?: Config - ): Alova2Method; - }; GroupAuthz: { /** * --- diff --git a/src/components/MyTree.vue b/src/components/MyTree.vue index cb39807..5c32ab2 100644 --- a/src/components/MyTree.vue +++ b/src/components/MyTree.vue @@ -69,7 +69,8 @@ export default { // console.log(event, treeId, treeNode, clickFlag); if (_this.isCheck) { var treeObj = $.fn.zTree.getZTreeObj(treeId); - treeObj.checkNode(treeNode, !treeNode.checked, true); + // 第4参 callbackFlag=true:点击文字切换勾选时同步触发 onCheck,与点击勾选框行为一致 + treeObj.checkNode(treeNode, !treeNode.checked, true, true); } _this.$emit("on-tree-click", treeNode); }; diff --git a/src/views/group-user/AdjustGroupContainer.vue b/src/views/group-user/AdjustGroupContainer.vue index 48344ca..dcda0c3 100644 --- a/src/views/group-user/AdjustGroupContainer.vue +++ b/src/views/group-user/AdjustGroupContainer.vue @@ -84,7 +84,7 @@ function onTreeData(tree: any[]) { async function loadUserGroups(userId: number) { try { - const groupIds: number[] = await Apis.SysUser.getGroups({ pathParams: { userId }, cacheFor: null }); + const groupIds: number[] = await Apis.SysUser.getUserGroups({ pathParams: { userId }, cacheFor: null }); if (treeData.value?.length) { initSelected(groupIds || []); } else { diff --git a/src/views/group-user/index.vue b/src/views/group-user/index.vue index 9260b38..7239d58 100644 --- a/src/views/group-user/index.vue +++ b/src/views/group-user/index.vue @@ -60,7 +60,6 @@