diff --git a/src/service/api/system/menu/index.ts b/src/service/api/system/menu/index.ts index 4ddc1b3..a55974e 100644 --- a/src/service/api/system/menu/index.ts +++ b/src/service/api/system/menu/index.ts @@ -16,6 +16,7 @@ export type { MenuQueryBo, MenuRouterBo, MenuVo, + RoleMenuPermissionBo, } from './types' // 兼容性类型别名 @@ -120,8 +121,14 @@ export function getMenuIdsByRoleId(roleId: string) { * 保存角色和菜单权限之间的关系 */ export function saveRoleMenuPermission(roleId: string, menuIds: string[]) { - const menuIdsStr = menuIds.length > 0 ? menuIds.join(',') : '-1' - return request.Post>(`/coder/sysMenu/saveRoleMenu/${roleId}/${menuIdsStr}`) + // 空数组时传递 ["-1"] 表示取消所有权限 + // 保持字符串格式避免精度丢失 + const menuIdsStr = menuIds.length > 0 ? menuIds : ['-1'] + + return request.Post>('/coder/sysMenu/saveRoleMenu', { + roleId, + menuIds: menuIdsStr, + }) } // 兼容性导出 - 保持原有函数名以确保向后兼容 diff --git a/src/service/api/system/menu/types.ts b/src/service/api/system/menu/types.ts index 6f8b431..0aa5b68 100644 --- a/src/service/api/system/menu/types.ts +++ b/src/service/api/system/menu/types.ts @@ -95,3 +95,9 @@ export interface MenuNormalResponse { menuList: MenuVo[] spreadList: string[] // 改为字符串数组避免大整数精度丢失 } + +// 角色菜单权限分配请求参数 +export interface RoleMenuPermissionBo { + roleId: string // 字符串格式避免精度丢失 + menuIds: string[] // 字符串格式避免精度丢失 +}