86 lines
1.9 KiB
TypeScript
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}`);
|
|
}
|
|
};
|