interface BasicOption {
  label: string
  value: string
}

type SelectOption = BasicOption

type TabOption = BasicOption

interface Role {
  code: string
  id: string
  name: string
}

interface Authority {
  authority: string
}

export interface Menu {
  children: Menu[]
  componentName: string
  componentPath: string
  delFlag: number
  icon: string
  id: string
  keepalive: number
  link: any
  name: string
  openType: number
  path: string
  permission: any
  pid: string
  pids: string
  props: any
  redirect: any
  remark: any
  sort: number
  status: number
  type: number
  visible: string
}

interface UserInfo {
  account: string
  accountNonExpired: boolean
  accountNonLocked: boolean
  adminKey: string
  adminType: number
  authorities: Authority[]
  avatar: string
  birthday: any
  buyerFlag: boolean
  canBuildQuestion: boolean
  canShowCoinTrade: boolean
  clientTypeEnum: any
  credentialsNonExpired: boolean
  dataScopes: any
  email: string
  enabled: boolean
  id: string
  // 是否为财务人员
  isFinance: boolean
  // 只是学校的员工身份
  isOnlyStaff: boolean
  isSelf: boolean
  // 是否为服务商的员工
  isSpStaff: boolean
  // 是否为学校的员工
  isStaff: boolean
  isSuperAdmin: boolean
  lastLoginAddress: string
  lastLoginBrowser: string
  lastLoginIp: string
  lastLoginOs: string
  lastLoginTime: string
  // 服务商乐学金
  learnAmount: any
  loginEmpInfo: any
  menus: Menu[]
  name: string
  nickName: string
  openid: any
  password: any
  permissions: string[]
  personConfig: any
  phone: string
  platformType: number
  // 服务商乐贝
  providerCurrency: any
  // 服务商
  providerId: any
  providerName: any
  // 是否为公益组织
  publicOrgFlag: boolean
  roles: Role[]
  schoolId: any
  schoolName: string
  sellerFlag: boolean
  sex: number
  simSerialNumber: any
  username: string
  vid: number
  vipEndTime: string
}

type ClassType = Array<object | string> | object | string

export type { BasicOption, ClassType, SelectOption, TabOption, UserInfo }
