// 从 "element-plus/es/components/table/src/table-column/defaults" 导入 TableColumnCtx 类型 // TableColumnCtx 可能是 Element Plus 中表格列的上下文类型,包含了表格列的一些默认属性和方法 import { TableColumnCtx } from "element-plus/es/components/table/src/table-column/defaults"; // 从 "@/components/Grid/interface" 导入 BreakPoint 和 Responsive 类型 // BreakPoint 可能表示响应式布局中的不同断点(如 xs, sm, md, lg, xl 等) // Responsive 可能用于描述在不同断点下的响应式配置 import { BreakPoint, Responsive } from "@/components/Grid/interface"; // 定义一个接口 EnumProps,用于描述枚举属性 export interface EnumProps { // 选项框显示的文字,类型为字符串 label: string; // 选项框值,可以是任意类型 value: any; // 是否禁用此选项,可选,默认为 undefined,类型为布尔值 disabled?: boolean; // 当 tag 为 true 时,此选择会指定 tag 显示类型,可选,默认为 undefined,类型为字符串 tagType?: string; // 为树形选择时,可以通过 children 属性指定子选项,可选,默认为 undefined,类型为 EnumProps 数组 children?: EnumProps[]; // 允许添加任意其他属性,属性名和值的类型都为任意类型 [key: string]: any; } // 定义一个类型别名 TypeProp,其值只能是 "index"、"selection" 或 "expand" 中的一个 export type TypeProp = "index" | "selection" | "expand"; // 定义一个类型别名 SearchType,用于表示搜索框的类型 // 可以是 "input"、"input-number" 等多种 Element Plus 组件类型 export type SearchType = | "input" | "input-number" | "select" | "select-v2" | "tree-select" | "cascader" | "date-picker" | "time-picker" | "time-select" | "switch" | "slider"; // 定义一个接口 SearchProps,用于描述搜索项的属性 export type SearchProps = { // 当前项搜索框的类型,类型为 SearchType el: SearchType; // 搜索项参数,根据 element plus 官方文档来传递,该属性所有值会透传到组件,可选,默认为 undefined props?: any; // 当搜索项 key 不为 prop 属性时,可通过 key 指定,可选,默认为 undefined,类型为字符串 key?: string; // 搜索项排序(从大到小),可选,默认为 undefined,类型为数字 order?: number; // 搜索项所占用的列数,默认为 1 列,可选,默认为 undefined,类型为数字 span?: number; // 搜索字段左侧偏移列数,可选,默认为 undefined,类型为数字 offset?: number; // 搜索项默认值,可以是字符串、数字、布尔值或任意类型的数组,可选,默认为 undefined defaultValue?: string | number | boolean | any[]; // 扩展为包含 BreakPoint 类型的键和 Responsive 类型的值的部分记录,用于实现响应式配置 } & Partial>; // 定义一个接口 ColumnProps,用于描述表格列的属性 // 扩展自 Partial, "children" | "renderHeader" | "renderCell">>,表示部分继承 TableColumnCtx 类型并去除 "children"、"renderHeader" 和 "renderCell" 属性 export interface ColumnProps extends Partial, "children" | "renderHeader" | "renderCell">> { // 是否是标签展示,可选,默认为 undefined,类型为布尔值 tag?: boolean; // 是否显示在表格当中,可选,默认为 undefined,类型为布尔值 isShow?: boolean; // 搜索项配置,可选,默认为 undefined,类型为 SearchProps 或 undefined search?: SearchProps | undefined; // 枚举类型(渲染值的字典),可以是 EnumProps 数组或一个返回 Promise 的函数,可选,默认为 undefined enum?: EnumProps[] | ((params?: any) => Promise); // 当前单元格值是否根据 enum 格式化(示例:enum 只作为搜索项数据),可选,默认为 undefined,类型为布尔值 isFilterEnum?: boolean; // 指定 label && value 的 key 值,可选,默认为 undefined,类型为包含 label 和 value 键的对象 fieldNames?: { label: string; value: string }; // 自定义表头内容渲染(tsx语法),可选,默认为 undefined,类型为一个接受 ColumnProps 类型参数并返回任意类型的函数 headerRender?: (row: ColumnProps) => any; // 自定义单元格内容渲染(tsx语法),可选,默认为 undefined,类型为一个接受包含 row 属性且类型为 T 的对象并返回任意类型的函数 render?: (scope: { row: T }) => any; // 多级表头,可选,默认为 undefined,类型为 ColumnProps 数组 _children?: ColumnProps[]; }