task-50(账号/权限页面): 实现用户菜单授权提交
buildUserColumnPermissionPayload 序列化勾选 id 为 {columnIds}(去重升序、空=清空),
镜像 Java UserColumnPermissionUpdateRequest;submitUserMenuAuth PUT /api/admin/
permission-users/{userId}/columns(menuType=admin) 整树替换,success=false 由 unwrap 抛后端 message。
8 用例全过,363 单测 + build 绿。
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
/** 用户菜单授权数据加载适配(任务 49):拉取可授权菜单树 + 用户已授权 id。 */
|
||||
import { http } from '@/api/http'
|
||||
import { unwrap } from '@/api/envelope'
|
||||
import {
|
||||
ADMIN_MENU_TYPE,
|
||||
buildMenuOptionTree,
|
||||
buildUserColumnPermissionPayload,
|
||||
parseMenuOptionList,
|
||||
parseUserGrantedColumnIds,
|
||||
type MenuOptionNode,
|
||||
@@ -35,3 +37,12 @@ export async function loadUserMenuAuth(userId: number): Promise<UserMenuAuthData
|
||||
const [tree, checkedIds] = await Promise.all([fetchGrantableMenus(), fetchUserGrantedColumnIds(userId)])
|
||||
return { tree, checkedIds }
|
||||
}
|
||||
|
||||
/** 提交某用户的直接授权菜单 id(整树替换);success=false 由 unwrap 抛后端 message。 */
|
||||
export async function submitUserMenuAuth(userId: number, columnIds: unknown): Promise<void> {
|
||||
const payload = buildUserColumnPermissionPayload(columnIds)
|
||||
const { data } = await http.put<unknown>(`${USER_PERMISSION_COLUMNS_ENDPOINT}/${userId}/columns`, payload, {
|
||||
params: { menuType: ADMIN_MENU_TYPE },
|
||||
})
|
||||
unwrap<unknown>(data)
|
||||
}
|
||||
|
||||
@@ -95,3 +95,8 @@ export function normalizeMenuIds(raw: unknown): number[] {
|
||||
}
|
||||
return [...ids].sort((a, b) => a - b)
|
||||
}
|
||||
|
||||
/** 提交授权请求体(任务 50):{columnIds} 与 Java UserColumnPermissionUpdateRequest 对齐。 */
|
||||
export function buildUserColumnPermissionPayload(raw: unknown): { columnIds: number[] } {
|
||||
return { columnIds: normalizeMenuIds(raw) }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user