feat: 菜单管理

This commit is contained in:
dap
2024-09-22 21:37:32 +08:00
parent e61c3e9058
commit 664e97daa1
5 changed files with 500 additions and 4 deletions

View File

@@ -0,0 +1,61 @@
import type { Menu, MenuOption, MenuResp } from './model';
import type { ID, IDS, PageQuery } from '#/api/common';
import { requestClient } from '#/api/request';
enum Api {
menuList = '/system/menu/list',
menuTreeSelect = '/system/menu/treeselect',
roleMenuTree = '/system/menu/roleMenuTreeselect',
root = '/system/menu',
tenantPackageMenuTreeselect = '/system/menu/tenantPackageMenuTreeselect',
}
export function menuList(params?: PageQuery) {
return requestClient.get<Menu[]>(Api.menuList, { params });
}
export function menuInfo(menuId: ID) {
return requestClient.get<Menu>(`${Api.root}/${menuId}`);
}
export function menuAdd(data: any) {
return requestClient.postWithMsg<void>(Api.root, data);
}
export function menuUpdate(data: any) {
return requestClient.putWithMsg<void>(Api.root, data);
}
export function menuRemove(menuIds: IDS) {
return requestClient.deleteWithMsg<void>(`${Api.root}/${menuIds}`);
}
/**
* 返回对应角色的菜单
* @param roleId id
* @returns resp
*/
export function roleMenuTreeSelect(roleId: ID) {
return requestClient.get<MenuResp>(`${Api.roleMenuTree}/${roleId}`);
}
/**
* 下拉框使用 返回所有的菜单
* @returns []
*/
export function menuTreeSelect() {
return requestClient.get<MenuOption[]>(Api.menuTreeSelect);
}
/**
* 租户套餐使用
* @param packageId packageId
* @returns resp
*/
export function tenantPackageMenuTreeSelect(packageId: ID) {
return requestClient.get<MenuResp>(
`${Api.tenantPackageMenuTreeselect}/${packageId}`,
);
}

View File

@@ -0,0 +1,46 @@
export interface Menu {
createBy?: any;
createTime: string;
updateBy?: any;
updateTime?: any;
remark?: any;
menuId: number;
menuName: string;
parentName?: string;
parentId: number;
orderNum: number;
path: string;
component?: string;
query: string;
isFrame: string;
isCache: string;
menuType: string;
visible: string;
status: string;
perms: string;
icon: string;
children: Menu[];
}
/**
* @description 菜单信息
* @param label 菜单名称
*/
export interface MenuOption {
id: number;
parentId: number;
label: string;
weight: number;
children: MenuOption[];
key: string; // 实际上不存在 ide报错
}
/**
* @description 菜单返回
* @param checkedKeys 选中的菜单id
* @param menus 菜单信息
*/
export interface MenuResp {
checkedKeys: number[];
menus: MenuOption[];
}