import { MenuTypeEnum } from '@/enums/MenuTypeEnum';


/**
 * 菜单树形结构类型
 */
export interface DeptTreeOption {
    id: string;
    treeId: string;
    label: string;
    parentId: string;
    weight: number;
    type: number;
    children?: DeptTreeOption[];
}

/**
 * 菜单树形结构类型
 */
export interface MenuTreeOption {
  id: string;
  title: string;
  parentId: string;
  weight: number;
  children?: MenuTreeOption[];
}

export interface RoleMenuTree {
  menus: MenuTreeOption[];
  checkedKeys: string[];
}

/**
 * 菜单查询参数类型
 */
export interface MenuQuery {
  keywords?: string;
  menuName?: string;
  status?: string;
  types?: number[];
}

/**
 * 菜单视图对象类型
 */
export interface MenuVO extends BaseEntity {
    id: string | number;
  parentName: string;
  parentId: string | number;
  pid: string | number;
  children: MenuVO[];
  menuId: string | number;
  menuName: string;
  orderNum: number;
  path: string;
  component: string;
  queryParam: string;
  isFrame: string;
  isCache: string;
  menuType: MenuTypeEnum;
  visible: string;
  status: string;
  icon: string;
  remark: string;
}

export interface MenuForm {
  parentName?: string;
  parentId?: string | number;
    pid?: string | number;
    id?: string | number;
  children?: MenuForm[];
  menuId?: string | number;
  menuName: string;
  orderNum?: number;
  path: string;
  component?: string;
  queryParam?: string;
  isFrame?: string;
  isCache?: string;
  menuType?: MenuTypeEnum;
  visible?: string;
  status?: string;
  icon?: string;
  remark?: string;
  query?: string;
  perms?: string;
}
/**
 * 菜单视图对象类型
 */
export interface MenuVOEntity {
  /**
   * 菜单资源ID(对应对应Controller上或 Controller+方法上的@Auth()的值)
   */
  id: string | number;

  /**
   * 菜单名称
   */
  menuName: string;

  /**
   *
   */
  menuCode: string;

  /**
   * 父级ID(仅type=1时为0 或>1时 为其对应上级菜单ID)
   */
  pid: string | number;

  /**
   * 所属app应用id
   */
  appId: string | number;

  /**
   * 菜单的请求路径
   */
  path: string;

  /**
   * UI组件路径
   */
  component: string;

  /**
   * UI路由名称
   */
  routerName: string;

  /**
   * UI菜单的图标
   */
  icon: string;

  /**
   * 菜单类型(1:目录 2:菜单 3:接口)
   */
  menuType: number;

  /**
   * 菜单对应权限标识(在type为3时 有值)
   */
  perms: string;

  /**
   *
   */
  isCache: number;

  /**
   *
   */
  isFrame: number;

  /**
   * 是否隐藏(0:否 1:是)[默认0]
   */
  visible: number;

  /**
   * 备注
   */
  remark: string;

  /**
   * 拥有者
   */
  ownerBy: number;

  /**
   * 是否删除：0未删除，1已删除
   */
  isDelete: number;

  /**
   * 是否启用:1:启用,0:不启用
   */
  enabled: number;

  /**
   * 显示顺序
   */
  sort: number;
  children: MenuVOEntity[];
}

export interface MenuFormEntity extends BaseEntity {
  /**
   * 菜单资源ID(对应对应Controller上或 Controller+方法上的@Auth()的值)
   */
  id?: string | number;

  /**
   * 菜单名称
   */
  menuName?: string;

  /**
   *
   */
  menuCode?: string;

  /**
   * 父级ID(仅type=1时为0 或>1时 为其对应上级菜单ID)
   */
  pid?: string | number;

  /**
   * 所属app应用id
   */
  appId?: string | number;

  /**
   * 菜单的请求路径
   */
  path?: string;

  /**
   * UI组件路径
   */
  component?: string;

  /**
   * UI路由名称
   */
  routerName?: string;

  /**
   * UI菜单的图标
   */
  icon?: string;

  /**
   * 菜单类型(1:目录 2:菜单 3:接口)
   */
  menuType?: number;

  /**
   * 菜单对应权限标识(在type为3时 有值)
   */
  perms?: string;

  /**
   *
   */
  isCache?: number;

  /**
   *
   */
  isFrame?: number;

  /**
   * 是否隐藏(0:否 1:是)[默认0]
   */
  visible?: number;

  /**
   * 备注
   */
  remark?: string;
    queryParam?: string;

  /**
   * 拥有者
   */
  ownerBy?: number;

  /**
   * 是否删除：0未删除，1已删除
   */
  isDelete?: number;

  /**
   * 是否启用:1:启用,0:不启用
   */
  enabled?: Boolean;

  /**
   * 显示顺序
   */
  sort?: number;

}
