export {}

declare module '*.json'
declare module 'hammerjs'
declare module 'echarts'

declare const $xxl: any
declare global {
  type anyObj = Record<string, any>
  type anyFuc = ((...args: any[]) => anyObj) | ((...args: any[]) => void)
  interface Window {
    existLoading: boolean
    unique: number
    tokenRefreshing: boolean
    requests: <T = any>() => []
    eventSource: EventSource
    __QY_APP_TOKEN__?: string
    $xxl: any
    $xxl_universal: any
    xxl_cb: Record<string, anyFuc>
    setAppsInfo: anyFuc
    setUploadProgress: anyFuc
    webViewGoBack: anyFuc
    initDevTool: anyFuc
    destroyDevTool: anyFuc
    goTo: anyFuc
    $pageSpy: any
    PageSpy: any
  }

  interface XbTable {
    // 表格 ref，通常在 页面onMounted 时赋值
    ref?: typeof Table
    // 表格对应数据表的主键字段
    pk?: string
    // 表格数据，通过getIndex加载
    data?: TableRow[]
    // 路由 remark，后台菜单规则备注信息
    remark?: string | null
    // 表格加载状态
    loading?: boolean
    // 当前选中行
    selection?: TableRow[]
    // 表格列定义
    column: TableColumn[]
    // 分页数据
    page: Page
    // 表单事件
    action?: { [key: string]: () => void }
    // 字段搜索,快速搜索,分页等数据
    // filter?: {
    //     page?: number
    //     limit?: number
    //     order?: string
    //     quick_search?: string
    //     search?: comSearchData[]
    //     [key: string]: any
    // }
    // 默认排序字段和排序方式
    defaultOrder?: { prop: string; order: string }
    // 拖动排序限位字段:例如拖动行pid=1,那么拖动目的行pid也需要为1
    dragSortLimitField?: string
    // 接受url的query参数并自动触发通用搜索
    acceptQuery?: boolean
    // 显示公共搜索
    showComSearch?: boolean
    // 不需要'双击编辑'的字段，type=selection的列为 undefined
    dblClickNotEditColumn?: (string | undefined)[]
    // 是否展开所有子项，树状表格专用属性
    expandAll?: boolean
    // 表格扩展数据，随意定义，以便一些自定义数据可以随baTable实例传递
    extend?: anyObj
    // 分页选项
    pageSizes?: number[]
    // 移动行数据
    moveRow?: anyObj
    // 移动目的行数据
    replaceRow?: anyObj
    // 移动目的行前的数据
    replaceRowBefore?: anyObj
    // 移动目的行后的数据
    replaceRowAfter?: anyObj
    // 移动后触发事件
    onRowMove?: () => void
    // 是否有边框
    border?: boolean
    // 是否开启斑马纹
    stripe?: boolean
    // 布局
    layout?: {
      // 分页是否简化
      shrink?: boolean
    }
    expandRowKeys?: string[]
    // 表格头样式
    headerRowStyle?: anyObj
    headerCellStyle?: anyObj
  }
}
