import { Key, ReactNode } from 'react'; import { TableProps } from 'antd/es/table/Table'; import { ColumnType, GetRowKey, RowSelectionType } from 'antd/es/table/interface'; import { FormInstance } from 'antd'; interface SummaryColumnProps { key: string | string[]; index: number; title?: string; colSpan?: number; valueType?: string; precision?: number; prefix?: ReactNode | string; suffix?: ReactNode | string; } export interface ProTableSummaryProps { columns: SummaryColumnProps[]; total?: boolean; fixed?: boolean; } export interface ProTableColumn extends Omit, 'dataIndex'> { dataIndex: string | string[]; width?: number | string; minWidth?: number; valueType?: ProTableValueType; format?: string; precision?: number; code?: string | string[] | (() => string); copyable?: boolean; originalTip?: boolean; prefix?: string | ReactNode | ((value: any, record?: any, index?: number) => any); suffix?: string | ReactNode | ((value: any, record?: any, index?: number) => any); tooltip?: ReactNode | { title?: ReactNode; icon?: ReactNode; }; transform?: (value: any, record?: any) => string[]; } export interface ProTableProps extends Omit, 'summary' | 'columns'> { tableId?: string; rowKey?: string | GetRowKey; headerRender?: ReactNode | (() => ReactNode); quickConfig?: boolean; resizeColumn?: boolean; sortRow?: boolean | 'drag' | 'move'; columnConfig?: boolean; cacheTime?: number | boolean; sortColumnText?: string; storage?: 'localStorage' | 'sessionStorage'; footerRender?: ReactNode | (() => ReactNode); emptyText?: string | ReactNode | (() => ReactNode); summary?: ProTableSummaryProps | TableProps['summary']; /** * 斑马纹设置 */ stripe?: boolean; columns: ProTableColumn[]; originalDataSource?: any[]; } export type ProTableValueType = 'percentage' | 'permillage' | 'thousandth' | 'datePicker' | 'enumName' | 'enumCodeName' | 'address' | 'thousandthCNY' | 'date' | 'dateTime' | 'dateStartTime' | 'dateEndTime' | 'dateStartEndTime'; export interface Response { data: T; status: number; message: string; } export interface PaginationProps { pageNum: number; pageSize: number; } export interface RequestOptions { form?: FormInstance; isResetQuery?: boolean; rowKey?: string | GetRowKey; rowSelection?: boolean; rowSelectType?: RowSelectionType; rowSelections?: boolean; extraParams?: Partial; page?: PaginationProps; crossPageSelect?: boolean; onPageChange?: (page: PaginationProps) => void; transformParams?: (params: any, requestParams: any) => any; transformResponse?: (res: any) => ListResponse; } export interface Params extends PaginationProps { queryBean?: Partial; [key: string]: any; } export interface List { pageNum?: number; pageSize?: number; total: number; list: T[]; } export type ListResponse = Response>; export type Service = (params?: Params) => Promise>; export interface UseAntdTableState { data: R[]; total: number; selectedRecords: R[]; selectedRowKeys: Key[]; searchValues: I; extraFilter: any; allSelected: boolean; } export {};