import type { TagProps, ButtonType, ElForm } from "element-plus"; import Table from "/@/components/table/index.vue"; declare global { /* baTable */ interface BaTable { ref?: typeof Table pk?: string data?: TableRow[] remark?: string | null loading?: boolean expandAll?: boolean selection?: TableRow[] dblClickNotEditColumn?: (string | undefined)[] column: TableColumn[] total?: number filter?: anyObj defaultOrder?: { prop: string; order: string } dragSortLimitField?: string acceptQuery?: boolean extend?: anyObj actionStruct?: actionStruct, tableName?: string, rowStyle?: string, headerRowStyle?: string } /* baTableForm */ interface BaTableForm { ref?: InstanceType | undefined; labelWidth?: number; operate?: string; operateIds?: string[]; items?: anyObj; submitLoading?: boolean; defaultItems?: anyObj; loading?: boolean; extend?: anyObj; } /* BaTable前置处理函数(前置埋点) */ interface BaTableBefore { getIndex?: Function; postDel?: Function; requestEdit?: Function; onTableDblclick?: Function; toggleForm?: Function; onSubmit?: Function; onTableAction?: Function; onTableHeaderAction?: Function; mount?: Function; [key: string]: Function | undefined; } /* BaTable后置处理函数(后置埋点) */ interface BaTableAfter { getIndex?: Function; postDel?: Function; requestEdit?: Function; onTableDblclick?: Function; toggleForm?: Function; onSubmit?: Function; onTableAction?: Function; onTableHeaderAction?: Function; mount?: Function; [key: string]: Function | undefined; } interface ComSearch { form: anyObj; fieldData: Map; } /* 表格列 */ interface TableColumn extends ElTableColumn { // 是否显示 show?: boolean; // 渲染为:icon|switch|image|images|tag|url|datetime|buttons render?: string; // 操作按钮组 buttons?: OptButton[]; // 渲染为Tag时:el-tag 组件的主题 effect?: TagProps["effect"]; // 渲染为Tag时:el-tag 组件的size size?: TagProps["size"]; // 自定义数据:比如渲染为Tag时,可以指定不同值时的Tag的Type属性 { open: 'success', close: 'info' } custom?: any; // 渲染为链接时,链接的打开方式 target?: aTarget; // 渲染为:a|buttons的点击事件 click?: Function; // 渲染为 datetime 时的格式化方式,字母可以自由组合:y=年,m=月,d=日,h=时,M=分,s=秒 timeFormat?: "yyyy-mm-dd hh:MM:ss"; // 默认值 default?: any; // 值替换数据,如{open: '开'} replaceValue?: any; // 自定义渲染方式时,渲染时对值的预处理方法 renderFormatter?: Function; // 通用搜索操作符,默认值为=,false禁用此字段通用搜索,支持的操作符见下定义 operator?: boolean | OperatorStr; // 通用搜索框的placeholder operatorPlaceholder?: string; } /* 表格右侧操作按钮 */ interface OptButton { // 渲染方式:tipButton=带tip的按钮,confirmButton=带确认框的按钮,moveButton=移动按钮 render: string; name: string; title?: string; text?: string; class?: string; type: ButtonType; icon: string; popconfirm?: any; disabledTip?: boolean; } /* 表格行 */ interface TableRow extends anyObj { children?: TableRow[]; } /* 表头支持的按钮 */ type HeaderOptButton = "refresh" | "add" | "edit" | "delete" | "unfold" | "recycle bin" | "comSearch" /* 通用搜索操作符支持的值 */ type OperatorStr = | "=" // 等于,默认值 | "<>" | ">" | ">=" | "<" | "<=" | "LIKE" | "NOT LIKE" | "IN" | "NOT IN" | "RANGE" // 范围,将生成两个输入框 以输入最小值和最大值 | "NOT RANGE" | "NULL" // 是否为NULL,将生成单个复选框 | "NOT NULL" | "FIND_IN_SET" /* 链接打开方式 */ type aTarget = "_blank" | "_self" /* 通用搜索事件返回的Data */ interface comSearchData { field: string; val: string; operator: string; render: string; } interface ElTreeData { label: string; children?: ElTreeData[]; } interface actionStruct { name: string; data: any; } } /* * ElTableColumn可用属性 * 未找到方法直接导出tableColumn的props类型定义 * https://element-plus.org/zh-CN/component/table.html#table-column-attributes */ interface ElTableColumn { type?: "selection" | "index" | "expand"; index?: number | Function; label?: string; "column-key"?: string; prop?: string; width?: string | number; "min-width"?: string | number; fixed?: string | boolean; "render-header"?: Function; sortable?: string | boolean; "sort-method"?: Function; "sort-by"?: Function; "sort-orders"?: string[] | null[]; resizable?: boolean; formatter?: Function; "show-overflow-tooltip"?: boolean; align?: "left" | "center" | "right"; "header-align"?: "left" | "center" | "right"; "class-name"?: string; "label-class-name"?: string; selectable?: Function; "reserve-selection"?: boolean; filters?: { key: string; value: string }[]; "filter-placement"?: string; "filter-multiple"?: boolean; "filter-method"?: Function; "filtered-value"?: any[]; }