import { SorterResult } from '@/types/table'

//


export const table = {
  // 表格接口请求通用配置，可在组件prop覆盖
  // 支持 xxx.xxx.xxx格式
  fetchSetting: {
    // 传给后台的当前页字段
    pageField: 'pageNo',
    // 传给后台的每页显示多少条的字段
    sizeField: 'pageSize',
    // 接口返回表格数据的字段
    listField: 'list',
    // 接口返回表格总数的字段
    totalField: 'total'
  },
  // 可选的分页选项
  pageSizeOptions: [10, 20, 50, 80, 100],
  // 默认每页显示多少条
  defaultPageSize: 20,
  // 默认排序方法
  defaultSize: 'middle',
  // 自定义通用排序功能
  defaultSortFn: (sortInfo: SorterResult) => {
    const { field, order } = sortInfo
    if (field && order) {
      return {
        // 排序字段
        field,
        // 排序方式 asc/desc
        order
      }
    } else {
      return {}
    }
  },
  // 自定义过滤方法
  defaultFilterFn: (data: Partial<Recordable<string[]>>) => {
    return data
  }
}

const {
  pageSizeOptions,
  defaultPageSize,
  fetchSetting,
  defaultSize,
  defaultSortFn,
  defaultFilterFn
} = table

export const ROW_KEY = 'columnKey'


export const PAGE_SIZE_OPTIONS = pageSizeOptions


export const PAGE_SIZE = defaultPageSize


export const FETCH_SETTING = fetchSetting


export const DEFAULT_SIZE = defaultSize


export const DEFAULT_SORT_FN = defaultSortFn

export const DEFAULT_FILTER_FN = defaultFilterFn



export const DEFAULT_ALIGN = 'center'

export const INDEX_COLUMN_FLAG = 'index'

export const ACTION_COLUMN_FLAG = 'action'
