aaa943a86d
menu-manage-model.ts 增 createMenuForm/flattenMenuNodes/nextSiblingSort;menu-manage-api.ts 增 createMenu POST /api/admin/permission-menus(unwrap+解析落库节点);MenusPage 新增菜单 Dialog(名称/标识/父菜单/路由/排序)校验后提交并刷新。8 用例全过,403 单测 + build 绿。
34 lines
1.3 KiB
TypeScript
34 lines
1.3 KiB
TypeScript
/** 菜单管理列表加载适配(任务 54):GET /api/admin/permission-menus(admin) → 展示树。 */
|
|
import { http } from '@/api/http'
|
|
import { unwrap } from '@/api/envelope'
|
|
import {
|
|
ADMIN_MENU_TYPE,
|
|
buildMenuManageTree,
|
|
parseMenuManageItem,
|
|
parseMenuManageList,
|
|
toMenuCreateRequest,
|
|
type MenuManageForm,
|
|
type MenuManageNode,
|
|
} from './menu-manage-model'
|
|
|
|
export const MENUS_ENDPOINT = '/api/admin/permission-menus'
|
|
|
|
/** 拉取扁平可编辑菜单节点。 */
|
|
export async function fetchMenuManageNodes(): Promise<MenuManageNode[]> {
|
|
const { data } = await http.get<unknown>(MENUS_ENDPOINT, { params: { menuType: ADMIN_MENU_TYPE } })
|
|
return parseMenuManageList(data)
|
|
}
|
|
|
|
/** 拉取并按 parentId 组装成展示树。 */
|
|
export async function loadMenuManageTree(): Promise<MenuManageNode[]> {
|
|
return buildMenuManageTree(await fetchMenuManageNodes())
|
|
}
|
|
|
|
/** 新建菜单:POST /api/admin/permission-menus,返回后端落库节点。 */
|
|
export async function createMenu(form: MenuManageForm): Promise<MenuManageNode> {
|
|
const { data } = await http.post<unknown>(MENUS_ENDPOINT, toMenuCreateRequest(form))
|
|
const created = parseMenuManageItem(unwrap<unknown>(data))
|
|
if (!created) throw new Error('创建菜单响应异常:缺少菜单数据')
|
|
return created
|
|
}
|