Files
everything-is-suitable/everything-is-suitable-admin/src/api/menu.ts
T
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

86 lines
1.9 KiB
TypeScript

import request from '@/utils/request';
export interface Menu {
id?: number;
parentId?: number;
name: string;
code: string;
type?: 'MENU' | 'BUTTON';
path?: string;
component?: string;
icon?: string;
sort?: number;
sortOrder?: number;
status?: string;
description?: string;
children?: Menu[];
createdAt?: string;
updatedAt?: string;
}
export interface MenuTree extends Menu {
children?: MenuTree[];
}
export interface MenuQueryParams {
name?: string;
code?: string;
type?: 'MENU' | 'BUTTON';
status?: 'ENABLED' | 'DISABLED';
current?: number;
size?: number;
}
export interface MenuPageResponse {
records: Menu[];
total: number;
current: number;
size: number;
}
export const menuApi = {
getMenus: (params?: MenuQueryParams) => {
return request.get<MenuPageResponse>('/sys/menu', { params });
},
getMenuTree: () => {
return request.get<MenuTree[]>('/sys/menu/tree');
},
getMenuById: (id: number) => {
return request.get<Menu>(`/sys/menu/${id}`);
},
createMenu: (data: Menu) => {
return request.post<Menu>('/sys/menu', data);
},
updateMenu: (id: number, data: Menu) => {
return request.put<Menu>(`/sys/menu/${id}`, data);
},
deleteMenu: (id: number) => {
return request.delete(`/sys/menu/${id}`);
},
getMenusByRole: (roleId: number) => {
return request.get<Menu[]>(`/sys/role/${roleId}/menus`);
},
assignMenusToRole: (roleId: number, menuIds: number[]) => {
return request.post(`/sys/role/${roleId}/menus`, { menuIds });
},
assignMenuToRole: (data: { roleId: number; menuIds: number[] }) => {
return request.post('/sys/menu/assign', data);
},
getMenusByUserId: (userId: number) => {
return request.get<Menu[]>(`/sys/menu/user/${userId}`);
},
removeMenuFromRole: (roleId: number, menuId: number) => {
return request.delete(`/sys/menu/role/${roleId}/menu/${menuId}`);
}
};