Files
cunkebao_v3/SuperAdmin/lib/menu-api.ts
2025-04-10 11:54:21 +08:00

110 lines
2.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { apiRequest, ApiResponse } from './api-utils';
/**
* 菜单项接口
*/
export interface MenuItem {
id: number;
title: string;
path: string;
icon?: string;
parent_id: number;
status: number;
sort: number;
children?: MenuItem[];
}
/**
* 获取菜单树
* @param onlyEnabled 是否只获取启用的菜单
* @returns 菜单树
*/
export async function getMenus(onlyEnabled: boolean = true): Promise<MenuItem[]> {
try {
// 构建查询参数
const params = new URLSearchParams();
params.append('only_enabled', onlyEnabled ? '1' : '0');
const response = await apiRequest<MenuItem[]>(`/menu/tree?${params.toString()}`);
return response.data || [];
} catch (error) {
console.error('获取菜单树失败:', error);
return [];
}
}
/**
* 获取菜单列表
* @param page 页码
* @param limit 每页数量
* @returns 菜单列表
*/
export async function getMenuList(
page: number = 1,
limit: number = 20
): Promise<ApiResponse<{
list: MenuItem[];
total: number;
page: number;
limit: number;
}>> {
// 构建查询参数
const params = new URLSearchParams();
params.append('page', page.toString());
params.append('limit', limit.toString());
return apiRequest(`/menu/list?${params.toString()}`);
}
/**
* 保存菜单(新增或更新)
* @param menuData 菜单数据
* @returns 保存结果
*/
export async function saveMenu(menuData: Partial<MenuItem>): Promise<boolean> {
try {
const response = await apiRequest('/menu/save', 'POST', menuData);
return response.code === 200;
} catch (error) {
console.error('保存菜单失败:', error);
return false;
}
}
/**
* 删除菜单
* @param id 菜单ID
* @returns 删除结果
*/
export async function deleteMenu(id: number): Promise<boolean> {
try {
const response = await apiRequest(`/menu/delete/${id}`, 'DELETE');
return response.code === 200;
} catch (error) {
console.error('删除菜单失败:', error);
return false;
}
}
/**
* 更新菜单状态
* @param id 菜单ID
* @param status 状态1启用0禁用
* @returns 更新结果
*/
export async function updateMenuStatus(id: number, status: 0 | 1): Promise<boolean> {
try {
const response = await apiRequest('/menu/status', 'POST', {
id,
status
});
return response.code === 200;
} catch (error) {
console.error('更新菜单状态失败:', error);
return false;
}
}