import type { ElTable, ElTableColumn, TableColumnCtx } from 'element-plus/lib/components/table' // import type { ElTable, ElTableColumn, TableColumnCtx } from 'element-plus/es/components/table' export type LeColumnSlots = { // default?: ((scope: Record) => any) | string // header?: ((scope: Record) => any) | string default?: ((scope: { row; column; $index }) => HTMLDivElement | string) | string header?: ((scope: { column; $index }) => HTMLDivElement | string) | string } export type LeColumnProps = { // 多语言label转义字符 t_label?: string // 插槽 slots?: LeColumnSlots // 多级表头 children?: LeTableColumnProps[] } /* Column */ export type LeTableColumnProps = InstanceType['$props'] & LeColumnProps // Options 配置 export type Options = { // el-table参数 height?: string maxHeight?: string size?: string // 表格分页器 pageSizes (默认:[10, 20, 50, 100]) pageSizes?: number[] // 表格分页器 layout (默认:'total, sizes, prev, pager, next, jumper') layout?: string // 表格分页器 背景 (默认:true) background?: boolean // 额外table参数 // 表格loading (默认:false) loading?: boolean // 是否多选类型 (默认:false) multipleSelect?: boolean // 多选类型|(currentRowKey当前行选中key)选中标记唯一key (默认:'id') 【table $prop属性之一】 rowKey?: (row) => any | string // 根据 该值 查找当前页面数据是否包含当前数据 添加 高亮状态 (默认:'id') currentRowKey?: string // table 默认 column 对齐方式 (默认:'center') align?: string // table 默认 column 是否允许拖动 (默认:true) resizable?: boolean // table 默认 column 是否允许拖动 (默认:true) showOverflowTooltip?: boolean // 是否展示数据序列号 (默认:true) showIndex?: boolean // 展示数据序列号_label (默认:'序号') indexLabel?: string // table 默认 column 是否允许拖动 (默认:true) showPagination?: boolean // 其他 [key: string]: any } /* TableOptions */ export type LeTableOptions = InstanceType['$props'] & Options // TableProps export type LeTableProps = { // 数据列表 list?: Record[] // columns列表 columns: LeTableColumnProps[] // 选中column的配置参数 checkedOptions?: LeTableColumnProps[] // 自定义列配置相关 columnsConfig?: { defaultCheckedOptions?: LeTableColumnProps[] columns?: LeTableColumnProps[] } // 搜索条件 searchParams?: SearchParams // 数组总数 total?: number // 表格的控制参数 options?: LeTableOptions curRow?: { [key: string]: any } | null } /* TableActions */ export type LeTableActions = { // reload: (opt?: FetchParams) => Promise } export type SearchParams = { page: number pageSize: number [key: string]: any } export type RenderScope = { row: T $index: number column: TableColumnCtx [key: string]: any }