table.d.ts 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. import type { TagProps, ButtonType, ElForm } from "element-plus";
  2. import Table from "/@/components/table/index.vue";
  3. declare global {
  4. /* baTable */
  5. interface BaTable {
  6. ref?: typeof Table
  7. pk?: string
  8. data?: TableRow[]
  9. remark?: string | null
  10. loading?: boolean
  11. expandAll?: boolean
  12. selection?: TableRow[]
  13. dblClickNotEditColumn?: (string | undefined)[]
  14. column: TableColumn[]
  15. total?: number
  16. filter?: anyObj
  17. defaultOrder?: { prop: string; order: string }
  18. dragSortLimitField?: string
  19. acceptQuery?: boolean
  20. extend?: anyObj
  21. actionStruct?: actionStruct,
  22. tableName?: string,
  23. rowStyle?: string,
  24. headerRowStyle?: string
  25. }
  26. /* baTableForm */
  27. interface BaTableForm {
  28. ref?: InstanceType<typeof ElForm> | undefined;
  29. labelWidth?: number;
  30. operate?: string;
  31. operateIds?: string[];
  32. items?: anyObj;
  33. submitLoading?: boolean;
  34. defaultItems?: anyObj;
  35. loading?: boolean;
  36. extend?: anyObj;
  37. }
  38. /* BaTable前置处理函数(前置埋点) */
  39. interface BaTableBefore {
  40. getIndex?: Function;
  41. postDel?: Function;
  42. requestEdit?: Function;
  43. onTableDblclick?: Function;
  44. toggleForm?: Function;
  45. onSubmit?: Function;
  46. onTableAction?: Function;
  47. onTableHeaderAction?: Function;
  48. mount?: Function;
  49. [key: string]: Function | undefined;
  50. }
  51. /* BaTable后置处理函数(后置埋点) */
  52. interface BaTableAfter {
  53. getIndex?: Function;
  54. postDel?: Function;
  55. requestEdit?: Function;
  56. onTableDblclick?: Function;
  57. toggleForm?: Function;
  58. onSubmit?: Function;
  59. onTableAction?: Function;
  60. onTableHeaderAction?: Function;
  61. mount?: Function;
  62. [key: string]: Function | undefined;
  63. }
  64. interface ComSearch {
  65. form: anyObj;
  66. fieldData: Map<string, any>;
  67. }
  68. /* 表格列 */
  69. interface TableColumn extends ElTableColumn {
  70. // 是否显示
  71. show?: boolean;
  72. // 渲染为:icon|switch|image|images|tag|url|datetime|buttons
  73. render?: string;
  74. // 操作按钮组
  75. buttons?: OptButton[];
  76. // 渲染为Tag时:el-tag 组件的主题
  77. effect?: TagProps["effect"];
  78. // 渲染为Tag时:el-tag 组件的size
  79. size?: TagProps["size"];
  80. // 自定义数据:比如渲染为Tag时,可以指定不同值时的Tag的Type属性 { open: 'success', close: 'info' }
  81. custom?: any;
  82. // 渲染为链接时,链接的打开方式
  83. target?: aTarget;
  84. // 渲染为:a|buttons的点击事件
  85. click?: Function;
  86. // 渲染为 datetime 时的格式化方式,字母可以自由组合:y=年,m=月,d=日,h=时,M=分,s=秒
  87. timeFormat?: "yyyy-mm-dd hh:MM:ss";
  88. // 默认值
  89. default?: any;
  90. // 值替换数据,如{open: '开'}
  91. replaceValue?: any;
  92. // 自定义渲染方式时,渲染时对值的预处理方法
  93. renderFormatter?: Function;
  94. // 通用搜索操作符,默认值为=,false禁用此字段通用搜索,支持的操作符见下定义
  95. operator?: boolean | OperatorStr;
  96. // 通用搜索框的placeholder
  97. operatorPlaceholder?: string;
  98. }
  99. /* 表格右侧操作按钮 */
  100. interface OptButton {
  101. // 渲染方式:tipButton=带tip的按钮,confirmButton=带确认框的按钮,moveButton=移动按钮
  102. render: string;
  103. name: string;
  104. title?: string;
  105. text?: string;
  106. class?: string;
  107. type: ButtonType;
  108. icon: string;
  109. popconfirm?: any;
  110. disabledTip?: boolean;
  111. }
  112. /* 表格行 */
  113. interface TableRow extends anyObj {
  114. children?: TableRow[];
  115. }
  116. /* 表头支持的按钮 */
  117. type HeaderOptButton = "refresh" | "add" | "edit" | "delete" | "unfold" | "recycle bin" | "comSearch"
  118. /* 通用搜索操作符支持的值 */
  119. type OperatorStr =
  120. | "=" // 等于,默认值
  121. | "<>"
  122. | ">"
  123. | ">="
  124. | "<"
  125. | "<="
  126. | "LIKE"
  127. | "NOT LIKE"
  128. | "IN"
  129. | "NOT IN"
  130. | "RANGE" // 范围,将生成两个输入框 以输入最小值和最大值
  131. | "NOT RANGE"
  132. | "NULL" // 是否为NULL,将生成单个复选框
  133. | "NOT NULL"
  134. | "FIND_IN_SET"
  135. /* 链接打开方式 */
  136. type aTarget = "_blank" | "_self"
  137. /* 通用搜索事件返回的Data */
  138. interface comSearchData {
  139. field: string;
  140. val: string;
  141. operator: string;
  142. render: string;
  143. }
  144. interface ElTreeData {
  145. label: string;
  146. children?: ElTreeData[];
  147. }
  148. interface actionStruct {
  149. name: string;
  150. data: any;
  151. }
  152. }
  153. /*
  154. * ElTableColumn可用属性
  155. * 未找到方法直接导出tableColumn的props类型定义
  156. * https://element-plus.org/zh-CN/component/table.html#table-column-attributes
  157. */
  158. interface ElTableColumn {
  159. type?: "selection" | "index" | "expand";
  160. index?: number | Function;
  161. label?: string;
  162. "column-key"?: string;
  163. prop?: string;
  164. width?: string | number;
  165. "min-width"?: string | number;
  166. fixed?: string | boolean;
  167. "render-header"?: Function;
  168. sortable?: string | boolean;
  169. "sort-method"?: Function;
  170. "sort-by"?: Function;
  171. "sort-orders"?: string[] | null[];
  172. resizable?: boolean;
  173. formatter?: Function;
  174. "show-overflow-tooltip"?: boolean;
  175. align?: "left" | "center" | "right";
  176. "header-align"?: "left" | "center" | "right";
  177. "class-name"?: string;
  178. "label-class-name"?: string;
  179. selectable?: Function;
  180. "reserve-selection"?: boolean;
  181. filters?: { key: string; value: string }[];
  182. "filter-placement"?: string;
  183. "filter-multiple"?: boolean;
  184. "filter-method"?: Function;
  185. "filtered-value"?: any[];
  186. }