import * as React from 'react'; import { PaginationConfig } from '@jy-fe/utils/es/joyowoUmi'; import { TableRowSelection } from 'antd/es/table/interface.d'; import { NodeType as SearchHeadNodeType } from '../xui-search-head/xui-search-head.d'; import { NodeType as SearchBarNodeType } from '../xui-search-bar/xui-search-bar.d'; import { XuiOperationNodeType } from '../xui-operation-list/xui-operation-list.d'; import { StandardProps } from '../@types/common'; export type GetTableDataType = (extraParams?: { /** 是否保持勾选项 */ holdSelected?: boolean; /** 是否为搜索操作 */ isSearch?: boolean; /** 额外传参 */ params?: { pageNum?: number; pageSize?: number; [key: string]: any }; /** 请求后回调 */ callback?: (res: { dataSource: { [key: string]: any }[]; disabledRowKeys: React.ReactText[]; mandatoryRowKeys: React.ReactText[]; selectedRowKeys: React.ReactText[]; selectedRows: { [key: string]: any }[]; }) => void; }) => void; export interface InitialStateType { /** 列表数据 */ current: number; dataSource: { [key: string]: any; }[]; /** 默认值 */ defaultValues: { [key: string]: any }; /** 禁用的选中项 */ disabledRowKeys: React.ReactText[]; /** 列表loading */ loading: boolean; /** 强制选中项 */ mandatoryRowKeys: React.ReactText[]; pageSize: number; /** 筛选参数 */ searchState: { [key: string]: any; }; /** 选中项id */ selectedRowKeys: (string | number)[]; /** 选中项record */ selectedRows: { [key: string]: any }[]; total: number; } export type SearchComponentType = 'searchHead' | 'searchBar' | 'searchFrame'; export interface XuiTablePageHandles { /** 当前表格数据 */ dataSource: { [key: string]: any; }[]; pageNum: number; pageSize: number; /** 当前筛选的参数 */ searchState: { [key: string]: any }; /** 勾选的id */ selectedRowKeys: (string | number)[]; /** 勾选的行 */ selectedRows: { [key: string]: any }[]; /** 列标条目数量 */ total: number; /** 清除筛选条件 */ clearSearchParams: () => void; /** 清空选中项数组 */ clearSelectedRows: () => void; /** 请求表格数据 */ getTableData: GetTableDataType; /** 初始化 */ init: (isAtuo?: boolean) => void; /** 清空部分筛选项内容 */ resetSearchParams: (paramNameList: string[]) => void; /** 更新表格数据 */ updateState: (newState: Partial) => void; } export interface XuiTablePageProps extends StandardProps { /** 功能权限id, 存在时覆盖 aidMap */ aid?: React.ReactText; /** 功能权限ids */ aidMap?: { [key: string]: React.ReactText }; /** 关闭分页,paginationCallback paginationChange paginationConfig openLocalPagination 失效 */ closePagination?: boolean; /** 表格数据 */ columns: any[]; id?: React.ReactText; /** 操作列配置 */ operationColumnsConfig?: { fontSize?: number; padding?: number }; /** ref */ ref?: React.MutableRefObject; /** 标题 */ title?: string; /** 表格模式,默认为page,用于表格可视宽度计算 */ listType?: 'table' | 'drawer900' | 'drawer600'; /** 表格可视区域高度 */ tableHeight?: number; /** 位于title和筛选头之间的额外头部内容 */ extraHead?: JSX.Element | JSX.Element[]; /** 位于table和筛选头之间的额外头部内容 */ renderBeforeTable?: JSX.Element | JSX.Element[]; /** 筛选栏默认值 */ defaultSearchValues?: { [key: string]: any }; /** title 右侧额外区域 */ extraContent?: JSX.Element | JSX.Element[]; /** 接口额外传参 */ extraData?: { [key: string]: any }; /** 接口额外请求头参数 */ extraOptions?: { [key: string]: any }; /** 重置筛选条件时,保留默认筛选值 */ keepDefaultValuesOnReset?: boolean; /** 开启本地分页,paginationCallback paginationChange paginationConfig 失效 */ openLocalPagination?: boolean; /** 分页插件配置 覆盖,paginationCallback paginationChange 失效 */ paginationConfig?: PaginationConfig; /** 表格数据 */ propDataSource?: { [key: string]: any }[]; /** 外部传入的 loading */ propLoading?: boolean; /** 角色id */ roleId?: React.ReactText; /** 唯一索引 */ rowKey: string; /** 开启勾选列 */ rowSelection?: boolean | TableRowSelection; /** 筛选组件 */ searchComponentType?: SearchComponentType; /** 打开查询条件缓存,默认为true */ isSearchCache?: boolean; /** 列表最大宽度 */ maxWidth?: number; /** 自定义空列表展示 */ customNoData?: | boolean | { img?: JSX.Element; tip?: string; }; /** 筛选栏 @xbz/ui > NodeType */ searchNode?: SearchHeadNodeType[] | SearchBarNodeType[]; /** 初始化调用接口前,调用的方法, 返回boolean表示是否阻断第一次调取接口, 返回对象表示第一次返回接口附带的传参 */ beforeInitRequest?: () => void | { [key: string]: any } | boolean; /** 判断是否禁用勾选 */ disableSelection?: (record?: any) => boolean; /** 判断是否强制勾选 */ mandatorySelection?: (record?: any) => boolean; /** 选中项change事件 */ onSelectionChange?: (selectedRowKeys: React.ReactText[], selectedRows?: any[]) => void; /** 强制勾选后,点击交互事件 */ onMandatorySelection?: (record?: any) => void; /** 禁用勾选后,点击交互事件 */ onDisableSelection?: (record?: any) => void; /** 操作列 */ operationColumns?: (record?: any) => XuiOperationNodeType[]; /** 分页插件回调 非覆盖 */ paginationCallback?: (current: number, pageSize?: number) => void; /** 分页插件回调 覆盖 */ paginationChange?: (current: number, pageSize?: number) => void; /** 自定义列表接口返回数据处理方法 */ processResponseData?: ( data: any, ) => { list: { [key: string]: any }; pageNum: number; pageSize: number; total: number; }; /** 处理调取接口的传参 */ processValues?: (values: { [key: string]: any }) => { [key: string]: any }; /** 表格请求接口方法 */ request?: (params: any, extraOptions?: any) => Promise; } declare const XuiTablePage: React.ComponentType; export default XuiTablePage;