// 定义 el-menu 所需的标准类型
export interface ElMenuItem {
  id: number;
  label: string;       // 菜单显示名称
  path: string;        // 路由路径（对应 el-menu 的 index）
  icon: string;       // 图标名称（Element Plus 图标）
  children?: ElMenuItem[];
}

// 🌟 核心修改：基于后端 path 字段做图标映射（仅一级菜单）
// key = 后端返回的 path 值，value = Element Plus 图标名称
const pathToIconMap: Record<string, string> = {
  '/#': 'Tools',     // 系统管理 path=/# → Setting 图标
  "/menu-11": 'WarningFilled'
};

/**
 * 格式化后端菜单数据为 el-menu 标准格式
 * - 路由路径：优先用后端 path 字段，其次用 api 字段
 * - 图标映射：仅一级菜单基于 path 字段映射，二级菜单无图标
 * @param rawMenuList 后端返回的 menus_info 数组
 * @returns 适配 el-menu 的菜单数据
 */
export const formatMenuToElMenu = (rawMenuList: any[]): ElMenuItem[] => {
  // 递归处理菜单，增加 isFirstLevel 标记是否为一级菜单
  const formatSubMenu = (menu: any, isFirstLevel: boolean): ElMenuItem => {
    // 1. 处理路由路径（逻辑保留，优先用后端 path 字段）
    let path = '';
    if (menu.path && menu.path !== '/') {
      path = menu.path;
    } else if (menu.api && menu.api !== '/#') {
      path = menu.api;
    } else {
      path = `/menu-${menu.id}`;
      if (menu.name === '首页') {
        path = '/dashboard';
      }
    }

    // 2. 处理图标：仅一级菜单基于 path 映射，二级菜单无图标
    let icon: string = menu.icon as string;
    // 二级菜单：不赋值 icon → 自动无图标

    // 3. 基础菜单项
    const elMenuItem: ElMenuItem = {
      id: menu.id,
      label: menu.name,
      path: path,
      icon: icon // 一级菜单有值，二级菜单 undefined（无图标）
    };

    // 4. 处理子菜单（son 数组），标记为非一级菜单
    if (menu.son && menu.son.length > 0) {
      elMenuItem.children = menu.son.map((subMenu: any) => formatSubMenu(subMenu, false));
    }

    return elMenuItem;
  };

  // 遍历一级菜单，标记 isFirstLevel = true
  return rawMenuList.map(menu => formatSubMenu(menu, true));
};
