export interface UserInfo {
  /** 用户id */
  id: string
  /** 用户名称 */
  name: string
  /** 用户标识 2 - B端身份, 4 - C 端身份, 6 - B+C 端身份 */
  flag: number
  /** 租户id */
  tenantId: string
}

export interface PersonalInfo {
  /** id */
  id: string
  /** 名称 */
  name: string
  /** 手机号 */
  phone: string
  /** 用户名称 */
  userName: string
  /** 邮箱 */
  email: string
  /** 头像 */
  headPicture: string
}

export interface TenantInfo {
  /** 用户ID */
  userId: string
  /** 用户名 */
  userName: string
  /** 用户名称 */
  name: string
  /** 昵称 */
  nickName: string
  /** 手机号 */
  phone: string
  /** 邮箱 */
  email: string
  /** 性别 1 男 2 女 */
  gender: number
  /** 用户状态 1 正常 2 锁定 3 禁用*/
  status: number
  /** 状态名称 */
  statusName: string
  /** 用户类型。0：普通 1：管理员 */
  type: number
  /** 租户信息 */
  tenant: {
    /** 租户ID */
    id: string
    /** 租户名 */
    name: string
    /** 域，如：qq，das */
    domain: string
    /** 管理员用户ID */
    adminUserId: string
    /** 租户描述 */
    description: string
    /** 是否开通三员权限管理，0表示未开通，1表示已开通。 */
    thirdManaged: number
  }
  /** 用户标识 2 - B端身份, 4 - C 端身份, 6 - B+C 端身份 */
  flag: number
  /** 当前区号 */
  areaCode: string
  /** 地区 */
  region: string
  /** 地址 */
  address: string
  /** 描述 */
  description: string

  /** 头像 */
  headPicture: string
  /** 用户标签 */
  tags: {
    id: number
    key: string
    value: string
    desc: string
  }[]
}

export interface HomeInfo {
  /** 应用code */
  applicationCode: string
  /** 应用path */
  applicationPath: string
  /** 是否启用 */
  enable: boolean
  originalCode: string
  routeUrl: string
  /** 首页展示位置 1在应用中心左侧 2在应用中心右侧 */
  displayPosition: 1 | 2
  type: number | null
}

export interface PersonalConfigInfo {
  /** 侧边栏菜单风格（1:弹出式；2:内嵌式 ）*/
  style: 1 | 2
  /** 皮肤风格 （default:默认皮肤；kjl:科技蓝；cjb:纯净白；ssl:深邃蓝）*/
  skinStyle: 'default' | 'kjl' | 'cjb' | 'ssl'
}

export interface ProjectInfo {
  /** 项目id */
  id: string
  /** 项目编码 */
  code: string
  /** 项目名称 */
  name: string
  /** 项目类型: 1: 集团、 2:公司、3: 区域、4: 分公司、 5: 子公司、6: 管理中心、 7: 项目、8: 部门、 9: 组 */
  type: string
  /** 父级id */
  parentId?: string
  /** 父级名称 */
  parentName?: string
  /** 父级项目类型:1: 集团、 2:公司、3: 区域、4: 分公司、 5: 子公司、6: 管理中心、 7: 项目、8: 部门、 9: 组  */
  parentType?: number
  /** 租户id */
  tenantId?: string
  /** 是否父级节点 */
  isParent?: boolean
  /** 是否叶子节点 */
  leaf?: boolean
  /** 是否可用 */
  optional?: boolean
}

export interface ProjectMessage {
  /** 主键id */
  id: number | string
  /** 项目名称 */
  projectName: string
  /** 省级（省份、直辖市、自治区）编码 */
  provinceCode: string
  /** 地级（城市）编码 */
  cityCode: string
  /** 县级（区县）编码 */
  areaCode: string
  /** 详细位置 */
  address: string
  /** 项目简介 */
  projectDesc: string
  /** 项目图片路径 */
  logoPath: string
  /** 项目类型 */
  projectType: string
  /** 项目类型code */
  projectTypeCode: string
  /** 经度 */
  longitude: string
  /** 纬度 */
  latitude: string
  /** 项目开始时间 */
  projectStartDate: string
  /** 项目有效期 */
  projectExpiryDate: string
  /** 项目编码 */
  projectCode: string
  /** 地图配置是否开启 */
  mapConfiguration: boolean
  /** 地级（城市）名称 */
  cityName: string
  /** 地级（城市）名称拼音 */
  cityNamePinyin: string
  /** 时区ID */
  timezone: string
  /** 是否自动设定时区 */
  autoTimezone: boolean
  /** 货币信息(currencyCode:ISO 4217货币编码（例：CNY）;currencyUnit:货币单位，例：元（中文），CNY（英文）;currencySymbol:货币符号，例：¥) */
  currency: Record<'currencyCode' | 'currencyUnit' | 'currencySymbol', string>
}

export interface SubAppsInfo {
  /** 所有应用信息 */
  appcategorys: any[]
  /** 当前应用完整信息 */
  currentSubApp: {
    /** 当前菜单code */
    currentMenuCode: string
    /** 当前应用下的菜单数据 */
    menus: any[]
    [key: string]: any
  }
  /** 当前应用code */
  currentSubAppCode: string
  /** 当前打开的应用 */
  subAppList: any[]
  /** 常用应用 */
  fixedApps: any[]
  /** 当前菜单折叠的应用key集合 */
  menuCollapses: any[]
}

interface TabItem {
  /** 当前应用url */
  currentApplication: string
  /** 当前加载的应用 */
  applicationPath: string
  applicationCode: string
  menuId: string
  name: string
  path: string
  code: string
  query?: any
}
export interface TabInfo {
  /** 当前tabs key */
  currentCode?: string
  /** 当前tabs */
  currentTab?: TabItem
  /** 用于记录该应用上次开启的tab */
  preTab?: Record<string, TabItem>
  /** 当前打开的tabs(微前端环境会存入) */
  tabMap?: Record<string, TabItem[]>
}

export type permissionBtnInfo = { code?: string; name?: string }[]
