/**
 * 后端保存菜单的详细信息
 * 其中 0 - false，1 - true
 */
export interface MenuDetailItem {
  // 主键ID
  id: number | null;
  // 父级菜单主键ID
  parentId: number | null;
  // 菜单编码
  menuCode: string;
  // 菜单名
  menuName: string;
  // 前端路由 name
  routeName: string;
  // 前端路由 path 
  routeUrl: string;
  // 路由参数
  query: string;
  // 路由对应的组件
  component: string;
  // 默认跳转路由
  redirect: string;
  // 显示顺序
  orderNum: number | null;
  // 菜单icon
  icon: string;
  // 菜单是否隐藏
  isHidden: 0 | 1;
  // 菜单是否禁用
  isDisabled: 0 | 1;
  // 菜单是否缓存
  isCache: 0 | 1;
  // 是否固定多标签
  isAffix: 0 | 1;
  // 简化路由
  isAlwaysShow: 0 | 1;
  // 是否根路由
  isRoot: 0 | 1;
  // 是否是外链接
  isFrame: 0 | 1;
  // 外连接
  frameSrc?: string;
  // 1 - 当前窗口； 2 - 新窗口
  openType?: 1 | 2;
  // 选中路由名称
  activeMenu?: string;
  // 创建时间
  createdAt?: string;
  // 创建人
  createdBy?: string;
  // 更新时间
  updatedAt?: string;
  // 更新人
  updatedBy?: string;
  // 路由是否删除（逻辑删除）
  isDeleted?: number;
}

export type MenuDetail = MenuDetailItem & { children?: MenuDetailItem[] | null };
export type MenuDetailTree = MenuDetail[];



/**
 * 用于 element-plus 树形控件 展示
 */
export interface MenuItem {
  // 菜单名
  label: string;
  // 菜单主键ID
  id: number;
  // 路由 name
  routeName: string;
}

export type Menu = MenuItem & { children?: MenuItem[] | null };
export type MenuTree = Menu[];