declare interface Window {
  webkitDevicePixelRatio: any
  mozDevicePixelRatio: any
}

declare const __SYSTEM_INFO__: {
  pkg: {
    version: Recordable<string>
    dependencies: Recordable<string>
    devDependencies: Recordable<string>
  }
  lastBuildTime: string
}

declare interface ISystemConfig {
  // 登录页项目LOGO+标题
  project?: {
    // 标题
    title?: {
      // 标题内容
      value?: string
      // 标题样式
      style?: string
    }
    logo?: {
      // LOGO内容
      value?: string
      // LOGO内容
      style?: string
    }
    // 位置 - 相对于左上角
    position?: {
      left?: number | string
      top?: number | string
    }
  }
  remberRoute?: boolean
  homePage: string // 首页路由
  // 不需要的配置项设置为 '' 即可
  // 配置的静态文件全部放在public/system-config文件夹下
  loginComponentPath: string | null // 登录页面vue文件地址
  loginOnlyBg: boolean // 登录页是否只显示背景图不显示其它元素
  loginBg: string // 登录页背景图
  loginBgDark: string // 登录页背景图（暗色）
  loginTitle: string // 登录页欢迎语 标题
  navBg?: string // 顶部导航栏背景图
  navBgDark?: string // 顶部导航栏背景图（暗色）
  navTitle?: string[] // 顶部导航栏内容
  navTitleMargin?: number // 顶部导航栏内容间隔

  sysTitle?: string // 平台名称 - 菜单顶部显示的名称
  sysTitleEn?: string // 平台名称 - 菜单顶部显示的英文名称
  sysIcon?: string // 平台图标
  sysAlign?: 'left' | 'center' | 'right' // 平台名称 - 菜单顶部显示的位置
  twoLine?: boolean

  // 平台顶部右侧操作图标是否显示
  // 未配置的默认显示
  tools: {
    org?: boolean // 组织
    tenant: boolean // 租户
    search: boolean // 搜索
    notice: boolean // 通知
    i18n: boolean // 国际化
    fullScreen: boolean // 全屏
    refresh: boolean // 刷新
    theme: boolean // 主题
    setting: boolean // 设置
    userInfo: boolean // 用户信息
  }

  // 登录页配置项
  loginTools: {
    forgetPassword: boolean // 忘记密码
    register: boolean // 注册
    remberMe: boolean // 记住我
    // 数组形式传递，可设置多个登录方式；传[]则不显示登录方式
    loginType: Array<'password' | 'phone' | 'wx' | 'dd'> // 登录方式 password: 密码登录 phone: 手机号登录 wx: 微信登录 dd: 钉钉登录
  }

  // 功能设计
  manageDesign?: {
    designMode: Array<'工程模式' | '功能模式' | '表单模式'>
  }

  // 用户管理新增 必填项配置
  // 未配置的默认 非必填
  user?: {
    // 姓名
    name?: boolean
    // 用户名
    username?: boolean
    // 昵称
    nickname?: boolean
    // 手机号
    phone?: boolean
    // 邮箱
    email?: boolean
    // 部门
    dept?: boolean
    // 角色
    role?: boolean
    // 岗位
    post?: boolean
  }
  // 消息下拉面板自定义 - 组件位置如(默认是MicroApp目录下，所以直接写MicroApp下的地址)：/views/xxx/xxx.vue
  newsComponentPath?: string
  // 点击 “进入消息列表” 时要跳转的地址
  newLinkPath?: string

  // 自定义审批项
  arrpove?: {
    // 自定义审批form表单vue文件路径 如(默认是MicroApp目录下，所以直接写MicroApp下的地址)：/views/xxx/xxx.vue
    componentPath: string
  }
  // 组织
  organiza?: {
    enable: boolean
  }
  // 登录页验证码配置
  loginImageValidate?: {
    width?: number // 宽度
    height?: number // 高度
    size?: number // 字体大小
    line?: boolean // 是否干扰线
    lineNum?: number // 干扰线数量
    num?: number // 验证码位数
    // 数字、字母、数字+字母  默认number
    type?: 'number' | 'letter' | 'all'
    // 区分大小写 默认true
    useCase?: boolean
    codeColor?: string[] // 验证码颜色
    background?: string // 背景色
    backgroundDark?: string // 暗色模式背景色
    rote?: boolean // 是否旋转
    point?: boolean // 是否干扰点
    pointNum?: number // 干扰点数量
  }
  // 表格内操作按钮显示方式
  table?: {
    btnType?: 'icon' | 'all' | 'title'
  }
}

declare interface ApiModel<T = any> {
  code: number
  data: T
  msg: string
  pages: number
  success: boolean
  total: number
}
