fast-element-plus 2.0.21 → 2.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/component.d.ts +88 -67
  3. package/dist/components/avatar/index.d.ts +3 -3
  4. package/dist/components/avatar/index.mjs.map +1 -1
  5. package/dist/components/avatar/src/avatar.d.ts +7 -7
  6. package/dist/components/button/index.d.ts +3 -3
  7. package/dist/components/button/index.mjs.map +1 -1
  8. package/dist/components/button/src/button.d.ts +7 -7
  9. package/dist/components/carNumber/index.d.ts +1 -1
  10. package/dist/components/carNumber/index.mjs.map +1 -1
  11. package/dist/components/carNumber/src/carNumber.d.ts +5 -5
  12. package/dist/components/contextMenu/index.d.ts +1 -1
  13. package/dist/components/contextMenu/index.mjs.map +1 -1
  14. package/dist/components/contextMenu/src/contextMenu.type.d.ts +1 -1
  15. package/dist/components/dialog/index.d.ts +3 -3
  16. package/dist/components/dialog/index.mjs.map +1 -1
  17. package/dist/components/dialog/src/dialog.d.ts +3 -3
  18. package/dist/components/drawer/index.d.ts +3 -3
  19. package/dist/components/drawer/index.mjs.map +1 -1
  20. package/dist/components/drawer/src/drawer.d.ts +3 -3
  21. package/dist/components/form/index.d.ts +4 -4
  22. package/dist/components/form/index.mjs.map +1 -1
  23. package/dist/components/form/src/form.d.ts +3 -3
  24. package/dist/components/form/src/formItem.d.ts +6 -6
  25. package/dist/components/form/utils/form.d.ts +2 -2
  26. package/dist/components/form/utils/form.mjs +2 -2
  27. package/dist/components/form/utils/form.mjs.map +1 -1
  28. package/dist/components/formItemTip/index.d.ts +2 -2
  29. package/dist/components/formItemTip/index.mjs.map +1 -1
  30. package/dist/components/icon/index.d.ts +2 -2
  31. package/dist/components/icon/index.mjs.map +1 -1
  32. package/dist/components/iconSelector/index.d.ts +1 -1
  33. package/dist/components/iconSelector/index.mjs.map +1 -1
  34. package/dist/components/image/index.d.ts +2 -2
  35. package/dist/components/image/index.mjs.map +1 -1
  36. package/dist/components/image/src/image.d.ts +1 -1
  37. package/dist/components/image/src/image.mjs.map +1 -1
  38. package/dist/components/inputDialogPage/index.d.ts +3 -3
  39. package/dist/components/inputDialogPage/index.mjs.map +1 -1
  40. package/dist/components/layoutGrid/index.d.ts +2 -2
  41. package/dist/components/layoutGrid/index.mjs.map +1 -1
  42. package/dist/components/select/index.d.ts +4 -4
  43. package/dist/components/select/index.mjs.map +1 -1
  44. package/dist/components/select/src/select.d.ts +11 -11
  45. package/dist/components/select/src/select.type.d.ts +2 -2
  46. package/dist/components/selectPage/index.d.ts +3 -3
  47. package/dist/components/selectPage/index.mjs.map +1 -1
  48. package/dist/components/selectPage/src/selectPage.d.ts +11 -11
  49. package/dist/components/selectV2/index.d.ts +3 -3
  50. package/dist/components/selectV2/index.mjs.map +1 -1
  51. package/dist/components/selectV2/src/selectV2.d.ts +4 -4
  52. package/dist/components/table/index.d.ts +4 -4
  53. package/dist/components/table/index.mjs.map +1 -1
  54. package/dist/components/table/src/page.type.d.ts +2 -2
  55. package/dist/components/table/src/table.d.ts +32 -3
  56. package/dist/components/table/src/table.mjs +33 -24
  57. package/dist/components/table/src/table.mjs.map +1 -1
  58. package/dist/components/table/src/table.type.d.ts +6 -9
  59. package/dist/components/table/src/table.type.mjs.map +1 -1
  60. package/dist/components/table/src/tableColumn.d.ts +2 -2
  61. package/dist/components/table/src/tableColumn.mjs +1 -1
  62. package/dist/components/table/src/tableColumn.mjs.map +1 -1
  63. package/dist/components/table/src/tableColumnSettingDialog.mjs +0 -4
  64. package/dist/components/table/src/tableColumnSettingDialog.mjs.map +1 -1
  65. package/dist/components/table/src/useTable.mjs +5 -1
  66. package/dist/components/table/src/useTable.mjs.map +1 -1
  67. package/dist/components/table/utils/table.d.ts +18 -15
  68. package/dist/components/table/utils/table.mjs +18 -15
  69. package/dist/components/table/utils/table.mjs.map +1 -1
  70. package/dist/components/tree/index.d.ts +3 -3
  71. package/dist/components/tree/index.mjs.map +1 -1
  72. package/dist/components/tree/src/tree.props.d.ts +2 -2
  73. package/dist/components/tree/src/tree.type.d.ts +2 -2
  74. package/dist/components/treeSelect/index.d.ts +3 -3
  75. package/dist/components/treeSelect/index.mjs.map +1 -1
  76. package/dist/components/treeSelect/src/treeSelect.d.ts +11 -11
  77. package/dist/components/upload/index.d.ts +3 -3
  78. package/dist/components/upload/index.mjs.map +1 -1
  79. package/dist/components/upload/utils/upload.d.ts +15 -10
  80. package/dist/components/upload/utils/upload.mjs +15 -10
  81. package/dist/components/upload/utils/upload.mjs.map +1 -1
  82. package/dist/components/uploadImage/index.d.ts +3 -3
  83. package/dist/components/uploadImage/index.mjs.map +1 -1
  84. package/dist/components/uploadImages/index.d.ts +3 -3
  85. package/dist/components/uploadImages/index.mjs.map +1 -1
  86. package/dist/index.css +1 -1
  87. package/dist/index.css.map +1 -1
  88. package/dist/index.global.min.js +4 -4
  89. package/dist/index.global.min.js.map +1 -1
  90. package/dist/internal/props.d.ts +3 -3
  91. package/dist/internal/props.mjs.map +1 -1
  92. package/dist/utils/async/index.d.ts +4 -4
  93. package/dist/utils/async/index.mjs +9 -9
  94. package/dist/utils/async/index.mjs.map +1 -1
  95. package/dist/utils/date/index.d.ts +8 -8
  96. package/dist/utils/date/index.mjs +16 -16
  97. package/dist/utils/date/index.mjs.map +1 -1
  98. package/dist/utils/dom/index.d.ts +1 -1
  99. package/dist/utils/dom/index.mjs +4 -4
  100. package/dist/utils/dom/index.mjs.map +1 -1
  101. package/dist/utils/object/index.d.ts +10 -10
  102. package/dist/utils/object/index.mjs +6 -6
  103. package/dist/utils/object/index.mjs.map +1 -1
  104. package/dist/utils/string/index.d.ts +4 -4
  105. package/dist/utils/string/index.mjs +14 -40
  106. package/dist/utils/string/index.mjs.map +1 -1
  107. package/dist/utils/vue/emits.d.ts +8 -8
  108. package/dist/utils/vue/emits.mjs +7 -7
  109. package/dist/utils/vue/emits.mjs.map +1 -1
  110. package/dist/utils/vue/expose.d.ts +3 -3
  111. package/dist/utils/vue/expose.mjs +3 -3
  112. package/dist/utils/vue/expose.mjs.map +1 -1
  113. package/dist/utils/vue/func.d.ts +2 -2
  114. package/dist/utils/vue/func.mjs +2 -2
  115. package/dist/utils/vue/func.mjs.map +1 -1
  116. package/dist/utils/vue/install.d.ts +9 -9
  117. package/dist/utils/vue/install.mjs +24 -24
  118. package/dist/utils/vue/install.mjs.map +1 -1
  119. package/dist/utils/vue/props.d.ts +4 -4
  120. package/dist/utils/vue/props.mjs +5 -5
  121. package/dist/utils/vue/props.mjs.map +1 -1
  122. package/dist/utils/vue/render.d.ts +1 -1
  123. package/dist/utils/vue/render.mjs +2 -2
  124. package/dist/utils/vue/render.mjs.map +1 -1
  125. package/dist/utils/vue/slots.d.ts +4 -4
  126. package/dist/utils/vue/slots.mjs.map +1 -1
  127. package/dist/utils/vue/with.d.ts +1 -1
  128. package/dist/utils/vue/with.mjs +1 -1
  129. package/dist/utils/vue/with.mjs.map +1 -1
  130. package/dist/version.d.ts +1 -1
  131. package/dist/version.mjs +1 -1
  132. package/dist/version.mjs.map +1 -1
  133. package/package.json +4 -4
@@ -117,6 +117,13 @@ export declare const faTableProps: {
117
117
  type: PropType<FaTableDataRange>;
118
118
  default: string;
119
119
  };
120
+ /** 选择列 */
121
+ selectionColumn: BooleanConstructor;
122
+ /** 序号列 */
123
+ indexColumn: {
124
+ type: BooleanConstructor;
125
+ default: boolean;
126
+ };
120
127
  /** 分页 */
121
128
  pagination: {
122
129
  type: BooleanConstructor;
@@ -157,7 +164,7 @@ export declare const faTableProps: {
157
164
  */
158
165
  rowSelectable: PropType<TableColumnCtx<DefaultRow>["selectable"]>;
159
166
  size: {
160
- readonly type: PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "" | "default" | "small" | "large", never>>;
167
+ readonly type: PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "" | "default" | "large" | "small", never>>;
161
168
  readonly required: false;
162
169
  readonly validator: ((val: unknown) => boolean) | undefined;
163
170
  __epPropKey: true;
@@ -317,6 +324,12 @@ export type FaTableSlots = Record<string, unknown> & {
317
324
  toolButton: FaTableDefaultSlotsResult;
318
325
  /** 表格头部右侧高级操作按钮插槽,ElDropdownMenuItem 标签 */
319
326
  toolButtonAdv: FaTableDefaultSlotsResult;
327
+ /** 表格展开列插槽 */
328
+ expand: FaTableDefaultSlotsResult & {
329
+ row: DefaultRow;
330
+ column: TableColumnCtx<DefaultRow>;
331
+ $index: number;
332
+ };
320
333
  /** 表格操作列插槽 */
321
334
  operation: FaTableDefaultSlotsResult & {
322
335
  row: DefaultRow;
@@ -455,6 +468,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
455
468
  type: PropType<FaTableDataRange>;
456
469
  default: string;
457
470
  };
471
+ /** 选择列 */
472
+ selectionColumn: BooleanConstructor;
473
+ /** 序号列 */
474
+ indexColumn: {
475
+ type: BooleanConstructor;
476
+ default: boolean;
477
+ };
458
478
  /** 分页 */
459
479
  pagination: {
460
480
  type: BooleanConstructor;
@@ -495,7 +515,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
495
515
  */
496
516
  rowSelectable: PropType<TableColumnCtx<DefaultRow>["selectable"]>;
497
517
  size: {
498
- readonly type: PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "" | "default" | "small" | "large", never>>;
518
+ readonly type: PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "" | "default" | "large" | "small", never>>;
499
519
  readonly required: false;
500
520
  readonly validator: ((val: unknown) => boolean) | undefined;
501
521
  __epPropKey: true;
@@ -813,6 +833,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
813
833
  type: PropType<FaTableDataRange>;
814
834
  default: string;
815
835
  };
836
+ /** 选择列 */
837
+ selectionColumn: BooleanConstructor;
838
+ /** 序号列 */
839
+ indexColumn: {
840
+ type: BooleanConstructor;
841
+ default: boolean;
842
+ };
816
843
  /** 分页 */
817
844
  pagination: {
818
845
  type: BooleanConstructor;
@@ -853,7 +880,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
853
880
  */
854
881
  rowSelectable: PropType<TableColumnCtx<DefaultRow>["selectable"]>;
855
882
  size: {
856
- readonly type: PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "" | "default" | "small" | "large", never>>;
883
+ readonly type: PropType<import("element-plus/es/utils/vue/props/types.mjs").EpPropMergeType<StringConstructor, "" | "default" | "large" | "small", never>>;
857
884
  readonly required: false;
858
885
  readonly validator: ((val: unknown) => boolean) | undefined;
859
886
  __epPropKey: true;
@@ -1012,6 +1039,8 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
1012
1039
  hideSearchTime: boolean;
1013
1040
  futureSearchTime: boolean;
1014
1041
  dataSearchRange: FaTableDataRange;
1042
+ selectionColumn: boolean;
1043
+ indexColumn: boolean;
1015
1044
  pageSizes: number[];
1016
1045
  hideImage: boolean;
1017
1046
  single: boolean;
@@ -136,6 +136,13 @@ const faTableProps = {
136
136
  type: definePropType(String),
137
137
  default: "Past3D"
138
138
  },
139
+ /** 选择列 */
140
+ selectionColumn: Boolean,
141
+ /** 序号列 */
142
+ indexColumn: {
143
+ type: Boolean,
144
+ default: true
145
+ },
139
146
  /** 分页 */
140
147
  pagination: {
141
148
  type: Boolean,
@@ -639,18 +646,23 @@ var table_default = defineComponent({
639
646
  append: () => slots.append?.(),
640
647
  empty: () => createVNode("div", { "class": "fa-table__empty" }, [slots.empty ? slots.empty() : createVNode(Fragment, null, [createVNode(ElIcon, null, { default: () => [createVNode(NotData, null, null)] }), createVNode("div", null, [createTextVNode("暂无数据")])])]),
641
648
  default: () => createVNode(Fragment, null, [
642
- createVNode(ElTableColumn, {
643
- "className": "fa-table__index-column",
644
- "type": "index",
649
+ slots.expand && createVNode(ElTableColumn, {
650
+ "className": "fa-table__expand-column",
651
+ "type": "expand",
645
652
  "fixed": "left",
646
- "width": state.tablePagination.pageIndex * state.tablePagination.pageSize >= 100 ? state.tablePagination.pageIndex * state.tablePagination.pageSize >= 1e3 ? 50 : 40 : 30,
653
+ "width": 35,
647
654
  "align": "center",
648
- "index": indexMethod,
649
655
  "showOverflowTooltip": false,
650
656
  "resizable": false,
651
- "columnKey": "__table-index"
652
- }, null),
653
- createVNode(ElTableColumn, {
657
+ "columnKey": "__table-expand"
658
+ }, { default: ({ row, column, $index }) => slots.expand?.({
659
+ row,
660
+ column,
661
+ $index,
662
+ search: tableSearch,
663
+ ...getTableDefaultSlots(state)
664
+ }) }),
665
+ props.selectionColumn && createVNode(ElTableColumn, {
654
666
  "className": "fa-table__selection-column",
655
667
  "type": "selection",
656
668
  "fixed": "left",
@@ -662,26 +674,23 @@ var table_default = defineComponent({
662
674
  "columnKey": "__table-selection",
663
675
  "selectable": props.rowSelectable
664
676
  }, null),
665
- state.tableColumns.length === 0 ? slots.default?.() : state.tableColumns.map((col) => col.show && (col.type === "expand" ? createVNode(ElTableColumn, mergeProps(col, {
666
- "width": 35,
667
- "fixed": col.fixed ?? "left",
668
- "resizable": false
669
- }), { default: ({ row, column, $index }) => createVNode(Fragment, null, [col.render?.({
670
- row,
671
- column,
672
- $index,
673
- ...getTableDefaultSlots(state)
674
- }), col.slot && slots[col.slot]?.({
675
- row,
676
- column,
677
- $index,
678
- ...getTableDefaultSlots(state)
679
- })]) }) : col.prop && createVNode(tableColumn_default, mergeProps(omit(col, tableColumnOmitNames), {
677
+ props.indexColumn && createVNode(ElTableColumn, {
678
+ "className": "fa-table__index-column",
679
+ "type": "index",
680
+ "fixed": "left",
681
+ "width": state.tablePagination.pageIndex * state.tablePagination.pageSize >= 100 ? state.tablePagination.pageIndex * state.tablePagination.pageSize >= 1e3 ? 50 : 40 : 30,
682
+ "align": "center",
683
+ "index": indexMethod,
684
+ "showOverflowTooltip": false,
685
+ "resizable": false,
686
+ "columnKey": "__table-index"
687
+ }, null),
688
+ state.tableColumns.length === 0 ? slots.default?.() : state.tableColumns.map((col) => col.show && col.prop && createVNode(tableColumn_default, mergeProps(omit(col, tableColumnOmitNames), {
680
689
  "hideImage": props.hideImage,
681
690
  "resizable": true,
682
691
  "onImagePreview": handleImagePreview,
683
692
  "onCustomCellClick": handleCustomCellClick
684
- }), pick(slots, tableColumnSlotNames.value)))),
693
+ }), pick(slots, tableColumnSlotNames.value))),
685
694
  slots.operation && createVNode(ElTableColumn, {
686
695
  "fixed": "right",
687
696
  "width": state.operationColumnWidth,
@@ -1 +1 @@
1
- {"version":3,"file":"table.mjs","names":[],"sources":["../../../../src/components/table/src/table.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, onActivated, onBeforeUnmount, onMounted, shallowRef, watch, watchEffect } from \"vue\";\nimport { Eleme, More, Refresh, Search, Setting } from \"@element-plus/icons-vue\";\nimport {\n\tElButton,\n\tElDatePicker,\n\tElDropdown,\n\tElDropdownItem,\n\tElDropdownMenu,\n\tElIcon,\n\tElImageViewer,\n\tElInput,\n\tElPagination,\n\tElTable,\n\tElTableColumn,\n} from \"element-plus\";\nimport { NotData } from \"@fast-element-plus/icons-vue\";\nimport { tableProps } from \"../../../internal/props\";\nimport {\n\tcreateDateRangeShortcuts,\n\tcreateOneMonthRangeFromToday,\n\tdebounce,\n\tdefinePropType,\n\tmakeSlots,\n\tomit,\n\tpick,\n\trandomString,\n\tuseExpose,\n\tuseProps,\n\tuseRender,\n} from \"../../../utils\";\nimport { tableUtil } from \"../utils/table\";\nimport { getTableDefaultSlots } from \"./table.type\";\nimport FaTableColumn from \"./tableColumn\";\nimport FaTableColumnsSettingDialog from \"./tableColumnSettingDialog\";\nimport FaTablePagination from \"./tablePagination\";\nimport FaTableSearchForm from \"./tableSearchForm\";\nimport { useTable } from \"./useTable\";\nimport type { TableColumnCtx, TableProps } from \"element-plus\";\nimport type { PropType } from \"vue\";\nimport type { FaLayoutGridBreakpoint } from \"../../layoutGrid\";\nimport type { PagedInput, PagedResult, PagedSortInput } from \"../src/page.type\";\nimport type { DefaultRow } from \"./table.state\";\nimport type { FaTableColumnCtx, FaTableDataRange, FaTableDefaultSlotsResult } from \"./table.type\";\n\nexport { tableProps } from \"../../../internal/props\";\nexport type { TreeProps } from \"../../../internal/props\";\n\n/** FaTable 的运行时 Props 定义 */\nexport const faTableProps = {\n\t...tableProps,\n\t/** whether Table has vertical border */\n\tborder: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** whether current row is highlighted */\n\thighlightCurrentRow: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** key of row data, used for optimizing rendering. Required if `reserve-selection` is on or display tree data. When its type is String, multi-level access is supported, e.g. `user.info.id`, but `user.info[0].id` is not supported, in which case `Function` should be used */\n\trowKey: {\n\t\ttype: [String, Function] as PropType<NonNullable<TableProps<DefaultRow>[\"rowKey\"]>>,\n\t\tdefault: \"id\",\n\t},\n\t/** 组件封装,原生的已经失效 method that returns rowspan and colspan */\n\tspanMethod: {\n\t\ttype: Function as PropType<TableProps<DefaultRow>[\"spanMethod\"]>,\n\t\tvalidator: () => {\n\t\t\tconsole.warn(\"[Fast:FaTable]\", \"'spanMethod' 属性,组件已经封装,外部使用会失效。\");\n\t\t\treturn false;\n\t\t},\n\t},\n\t/** 表格Key */\n\ttableKey: {\n\t\ttype: String,\n\t\tdefault: () => randomString(8),\n\t},\n\t/** 表格数据 */\n\tdata: {\n\t\ttype: definePropType<DefaultRow[]>(Array),\n\t\tdefault: () => [],\n\t},\n\t/** 请求数据的函数 */\n\trequestApi: {\n\t\ttype: definePropType<(params?: PagedInput) => Promise<PagedResult<DefaultRow> | DefaultRow[]>>(Function),\n\t},\n\t/** 接口请求数据回调 */\n\tdataCallback: {\n\t\ttype: definePropType<(data: PagedResult<DefaultRow> | DefaultRow[]) => void>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | PagedInput | null>([String, Number, Object]),\n\t/** 列配置 */\n\tcolumns: {\n\t\ttype: definePropType<FaTableColumnCtx[] | false>([Array, Boolean]),\n\t\tdefault: () => false,\n\t},\n\t/** 表格列改变 */\n\tcolumnsChange: {\n\t\ttype: definePropType<(columns: FaTableColumnCtx[]) => Promise<void>>(Function),\n\t},\n\t/** 搜索表单 Grid布局列配置 */\n\tsearchFormCols: {\n\t\ttype: definePropType<string | number | Record<FaLayoutGridBreakpoint, number>>([String, Number, Object]),\n\t\tdefault: () => ({ xs: 2, sm: 3, md: 4, lg: 5, xl: 6 }),\n\t},\n\t/** 折叠搜索 */\n\tcollapsedSearch: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 高级搜索抽屉 */\n\tadvancedSearchDrawer: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\t/** 搜索表单 */\n\tsearchForm: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 头部卡片 */\n\theaderCard: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 刷新按钮 */\n\trefreshBtn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 搜索按钮 */\n\tsearchBtn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 列配置按钮 */\n\tcolumnSettingBtn: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\t/** 头部卡片右侧功能按钮 */\n\ttoolBtn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 隐藏搜索时间 */\n\thideSearchTime: Boolean,\n\t/** 未来搜索时间 */\n\tfutureSearchTime: Boolean,\n\t/** 搜索时间范围 */\n\tdataSearchRange: {\n\t\ttype: definePropType<FaTableDataRange>(String),\n\t\tdefault: \"Past3D\",\n\t},\n\t/** 分页 */\n\tpagination: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 页码 */\n\tpageSizes: {\n\t\ttype: definePropType<number[]>(Array),\n\t\tdefault: [20, 30, 50, 100],\n\t},\n\t/** 隐藏图片 */\n\thideImage: Boolean,\n\t/** 单选 */\n\tsingle: Boolean,\n\t/** 行点击选择 */\n\trowClickSelection: Boolean,\n\t/** 将父级数据的 children 展开为表格行,并把父级字段合并到子项;Element Plus 树表无需启用 */\n\ttreeData: Boolean,\n\t/** 配置选项 */\n\tprops: {\n\t\ttype: definePropType<{ span?: string; children?: string }>(Object),\n\t\tdefault: () => ({\n\t\t\tspan: undefined,\n\t\t\tchildren: \"children\",\n\t\t}),\n\t},\n\t/** 自动刷新,当传入 data 时候,如果存在更改则自动刷新 */\n\tautoRefresh: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * 等价于 Table-Column 的 selectable\n\t * function that determines if a certain row can be selected, works when `type` is 'selection'\n\t */\n\trowSelectable: Function as PropType<TableColumnCtx<DefaultRow>[\"selectable\"]>,\n};\n\n/** FaTable 的运行时 Emits 定义 */\nexport const faTableEmits = {\n\t/** 当用户手动勾选数据行的 Checkbox 时触发的事件 */\n\tselect: (selection: DefaultRow[], row: DefaultRow) => Array.isArray(selection) && typeof row === \"object\" && row !== null,\n\t/** 当用户手动勾选全选 Checkbox 时触发的事件 */\n\tselectAll: (selection: DefaultRow[]) => Array.isArray(selection),\n\t/** 当选择项发生变化时会触发该事件 */\n\tselectionChange: (newSelection: DefaultRow[]) => Array.isArray(newSelection),\n\t/** 当单元格 hover 进入时会触发该事件 */\n\tcellMouseEnter: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** 当单元格 hover 退出时会触发该事件 */\n\tcellMouseLeave: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** 当某个单元格被点击时会触发该事件 */\n\tcellClick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** 当某个单元格被双击击时会触发该事件 */\n\tcellDblclick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** 当某个单元格被鼠标右键点击时会触发该事件 */\n\tcellContextmenu: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** 当某一行被点击时会触发该事件 */\n\trowClick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, event: Event) =>\n\t\ttypeof row === \"object\" && row !== null && typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** 当某一行被鼠标右键点击时会触发该事件 */\n\trowContextmenu: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, event: Event) =>\n\t\ttypeof row === \"object\" && row !== null && typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** 当某一行被双击时会触发该事件 */\n\trowDblclick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, event: Event) =>\n\t\ttypeof row === \"object\" && row !== null && typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** 当某一列的表头被点击时会触发该事件 */\n\theaderClick: (column: TableColumnCtx<DefaultRow>, event: Event) => typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** 当某一列的表头被鼠标右键点击时触发该事件 */\n\theaderContextmenu: (column: TableColumnCtx<DefaultRow>, event: Event) => typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** 当表格的排序条件发生变化的时候会触发该事件 */\n\tsortChange: (data: { column: TableColumnCtx<DefaultRow>; prop: string; order: \"\" | \"ascending\" | \"descending\" }) =>\n\t\ttypeof data === \"object\" && data !== null,\n\t/** column 的 key, 如果需要使用 filter-change 事件,则需要此属性标识是哪个 column 的筛选条件 */\n\tfilterChange: (newFilters: Record<string, string[]>) => typeof newFilters === \"object\" && newFilters !== null,\n\t/** 当表格的当前行发生变化的时候会触发该事件,如果要高亮当前行,请打开表格的 highlight-current-row 属性 */\n\tcurrentChange: (currentRow: DefaultRow, oldCurrentRow: DefaultRow | null) =>\n\t\ttypeof currentRow === \"object\" &&\n\t\tcurrentRow !== null &&\n\t\t(oldCurrentRow === null || (typeof oldCurrentRow === \"object\" && oldCurrentRow !== null)),\n\t/** 当拖动表头改变了列的宽度的时候会触发该事件 */\n\theaderDragend: (newWidth: number, oldWidth: number, column: TableColumnCtx<DefaultRow>, event: MouseEvent) =>\n\t\ttypeof newWidth === \"number\" && typeof oldWidth === \"number\" && typeof column === \"object\" && column !== null && event instanceof MouseEvent,\n\t/** 当用户对某一行展开或者关闭的时候会触发该事件(展开行时,回调的第二个参数为 expandedRows;树形表格时第二参数为 expanded) */\n\texpandChange: (row: DefaultRow, expanded: boolean | DefaultRow[]) =>\n\t\ttypeof row === \"object\" && row !== null && (typeof expanded === \"boolean\" || Array.isArray(expanded)),\n\t/** 表格滚动时触发 */\n\tscroll: (data: { scrollLeft: number; scrollTop: number }) => typeof data === \"object\" && data !== null,\n\n\t/** 表格刷新事件 */\n\trefresh: (params: PagedInput) => typeof params === \"object\" && params !== null,\n\t/** 表格重置事件 */\n\treset: (params: PagedInput) => typeof params === \"object\" && params !== null,\n\t/** 分页页码改变事件 */\n\tsizeChange: (pageSize: number) => typeof pageSize === \"number\",\n\t/** 分页改变事件 */\n\tpaginationChange: (pageIndex: number, pageSize: number) => typeof pageIndex === \"number\" && typeof pageSize === \"number\",\n\t/** 自定义单元格点击事件 */\n\tcustomCellClick: (\n\t\temitName: string,\n\t\t{ row, column, $index }: { row: DefaultRow; column: FaTableColumnCtx; $index: number } & FaTableDefaultSlotsResult\n\t) =>\n\t\t(emitName == null || typeof emitName === \"string\") &&\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\ttypeof $index === \"number\",\n};\n\n/** FaTable 的插槽参数 */\nexport type FaTableSlots = Record<string, unknown> & {\n\t/** 默认内容插槽 */\n\tdefault: never;\n\t/** 插入至表格最后一行之后的内容, 如果需要对表格的内容进行无限滚动操作,可能需要用到这个 slot。 若表格有合计行,该 slot 会位于合计行之上。 */\n\tappend: never;\n\t/** 当数据为空时自定义的内容 */\n\tempty: never;\n\t/** 表格顶部插槽 */\n\ttopHeader: FaTableDefaultSlotsResult;\n\t/** 表格头部左侧插槽 */\n\theader: FaTableDefaultSlotsResult;\n\t/** 表格头部右侧功能按钮插槽 */\n\ttoolButton: FaTableDefaultSlotsResult;\n\t/** 表格头部右侧高级操作按钮插槽,ElDropdownMenuItem 标签 */\n\ttoolButtonAdv: FaTableDefaultSlotsResult;\n\t/** 表格操作列插槽 */\n\toperation: FaTableDefaultSlotsResult & {\n\t\trow: DefaultRow;\n\t\tcolumn: FaTableColumnCtx;\n\t\t$index: number;\n\t};\n\t/** 表格分页插槽 */\n\tpagination: {\n\t\tpageIndex: number;\n\t\tpageSize: number;\n\t\ttotalRows: number;\n\t\thandleSizeChange: (val: number) => void;\n\t\thandlePaginationChange: (val: number) => void;\n\t};\n\t/** 表格页脚插槽 */\n\tfooter: FaTableDefaultSlotsResult;\n\t/** 列配置 */\n\tcolumnSetting: never;\n} & Record<\n\t\tstring,\n\t\tFaTableDefaultSlotsResult & {\n\t\t\t/** slots为表格内容的时候才会返回 */\n\t\t\trow?: DefaultRow;\n\t\t\t/** slot为表头内容的时候返回 'TableColumnCtx<DefaultRow>' 否则返回 'FaTableColumnCtx' */\n\t\t\tcolumn?: TableColumnCtx<DefaultRow> | FaTableColumnCtx;\n\t\t\t/** slot为非搜索项的时候才会返回 */\n\t\t\t$index?: number;\n\t\t\t/** slot为搜索项的时候才会返回 */\n\t\t\tsearch?: () => Promise<void>;\n\t\t}\n\t>;\n\nexport default defineComponent({\n\tname: \"FaTable\",\n\tprops: faTableProps,\n\temits: faTableEmits,\n\tslots: makeSlots<FaTableSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst columnSettingRef = shallowRef<InstanceType<typeof FaTableColumnsSettingDialog> | null>(null);\n\n\t\tconst {\n\t\t\tglobalSize,\n\t\t\tstate,\n\t\t\telementRef,\n\t\t\ttableRef,\n\t\t\thandleTableColumnAutoWidth,\n\t\t\tloadTableColumns,\n\t\t\thandleSizeChange,\n\t\t\thandlePaginationChange,\n\t\t\tdefaultSearchTime,\n\t\t\ttableSearch,\n\t\t\ttableReset,\n\t\t\tdoRender,\n\t\t\tsetManualLoading,\n\t\t\tdoLoading,\n\t\t\thandleCustomCellClick,\n\t\t} = useTable(props, slots, emit);\n\n\t\tconst notifyColumnsChange = debounce(() => props.columnsChange?.(state.orgColumns), 500);\n\t\tconst resizeTableColumns = debounce(handleTableColumnAutoWidth, 100);\n\n\t\tconst unmountedError = new Error(\"FaTable 已卸载,列布局任务已取消。\");\n\t\tconst reportColumnTask = (task: Promise<unknown>) => {\n\t\t\ttask.catch((error: unknown) => {\n\t\t\t\tif (error !== unmountedError) console.error(\"FaTable 列更新失败。\", error);\n\t\t\t});\n\t\t};\n\n\t\tlet lastRowIndex = 0;\n\t\tconst getInitParam = (): Record<string, unknown> => {\n\t\t\treturn typeof props.initParam === \"object\" && props.initParam !== null ? props.initParam : {};\n\t\t};\n\t\tconst getRowKey = (row: DefaultRow) => {\n\t\t\tconst value: unknown = typeof props.rowKey === \"function\" ? props.rowKey(row) : tableUtil.handleRowAccordingToProp(row, props.rowKey);\n\t\t\treturn typeof value === \"string\" || typeof value === \"number\" ? value : undefined;\n\t\t};\n\n\t\tconst indexMethod = (index: number) => {\n\t\t\tif (index === 0) {\n\t\t\t\tlastRowIndex = 0;\n\t\t\t}\n\t\t\tif (state.spanColumns.length > 0) {\n\t\t\t\tconst rowspan = state.tableSpanData[\"__table-index\"]?.[index] ?? 0;\n\t\t\t\tif (rowspan === 0) {\n\t\t\t\t\treturn lastRowIndex + (state.tablePagination.pageIndex - 1) * state.tablePagination.pageSize + 1;\n\t\t\t\t} else {\n\t\t\t\t\tlastRowIndex++;\n\t\t\t\t\treturn lastRowIndex + (state.tablePagination.pageIndex - 1) * state.tablePagination.pageSize;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn index + (state.tablePagination.pageIndex - 1) * state.tablePagination.pageSize + 1;\n\t\t};\n\n\t\tconst handleSelect = (selection: DefaultRow[], row: DefaultRow) => {\n\t\t\t// 判断是否开启了单选\n\t\t\tif (props.single) {\n\t\t\t\ttableRef.value?.clearSelection();\n\t\t\t\tif (selection.length > 0) {\n\t\t\t\t\ttableRef.value?.toggleRowSelection(row);\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"select\", selection, row);\n\t\t};\n\n\t\tconst handleSelectAll = (selection: DefaultRow[]) => {\n\t\t\tif (props.single) {\n\t\t\t\t// 判断是否已经选中数据\n\t\t\t\tif (state.selected) {\n\t\t\t\t\t// 默认选中的第一行\n\t\t\t\t\tif (state.tableData.length > 0) {\n\t\t\t\t\t\ttableRef.value?.clearSelection();\n\t\t\t\t\t\tconst firstRow = state.tableData[0];\n\t\t\t\t\t\tif (firstRow) tableRef.value?.toggleRowSelection(firstRow);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttableRef.value?.clearSelection();\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"selectAll\", selection);\n\t\t};\n\n\t\tconst handleSelectionChange = (newSelection: DefaultRow[]) => {\n\t\t\tnewSelection.length === 0 ? (state.selected = false) : (state.selected = true);\n\t\t\t// 判断是否为单选\n\t\t\tif (props.single && newSelection.length > 0) {\n\t\t\t\t// 这里获取最后一个是因为选中改变的事件会触发多次,会带入旧的数据\n\t\t\t\tconst lastSelection = newSelection.at(-1);\n\t\t\t\tstate.selectedList = lastSelection === undefined ? [] : [lastSelection];\n\t\t\t} else {\n\t\t\t\tstate.selectedList = newSelection;\n\t\t\t}\n\t\t\t// 如果已经取消选择了,那么部分选择也应该要取消\n\t\t\tstate.indeterminateSelectedListIds = state.indeterminateSelectedListIds.filter((f) => state.selectedListIds.some((s) => s === f));\n\t\t\temit(\"selectionChange\", state.selectedList);\n\t\t};\n\n\t\tconst toggleRowIndeterminateSelection = (row: DefaultRow, selected?: boolean) => {\n\t\t\tconst rowKey = getRowKey(row);\n\t\t\tif (rowKey === undefined) return;\n\t\t\tconst curRow = state.tableData.find((item) => getRowKey(item) === rowKey);\n\t\t\tif (selected === true) {\n\t\t\t\tif (!state.indeterminateSelectedListIds.some((s) => s === rowKey)) {\n\t\t\t\t\tstate.indeterminateSelectedListIds.push(rowKey);\n\t\t\t\t}\n\t\t\t\tif (curRow) tableRef.value?.toggleRowSelection(curRow, true);\n\t\t\t} else if (selected === false) {\n\t\t\t\tconst fIndex = state.indeterminateSelectedListIds.findIndex((f) => f === rowKey);\n\t\t\t\tif (fIndex >= 0) {\n\t\t\t\t\tstate.indeterminateSelectedListIds.splice(fIndex, 1);\n\t\t\t\t}\n\t\t\t\tif (curRow) tableRef.value?.toggleRowSelection(curRow, false);\n\t\t\t} else {\n\t\t\t\tconst fIndex = state.indeterminateSelectedListIds.findIndex((f) => f === rowKey);\n\t\t\t\tif (fIndex >= 0) {\n\t\t\t\t\tstate.indeterminateSelectedListIds.splice(fIndex, 1);\n\t\t\t\t} else {\n\t\t\t\t\tstate.indeterminateSelectedListIds.push(rowKey);\n\t\t\t\t}\n\t\t\t\tif (curRow) tableRef.value?.toggleRowSelection(curRow);\n\t\t\t}\n\t\t};\n\n\t\tconst handleSortChange = ({\n\t\t\tcolumn,\n\t\t\tprop,\n\t\t}: {\n\t\t\tcolumn: TableColumnCtx<DefaultRow> & { multiOrder?: \"\" | \"ascending\" | \"descending\" };\n\t\t\tprop: string | null;\n\t\t\torder: \"\" | \"ascending\" | \"descending\" | null;\n\t\t}) => {\n\t\t\tconst normalizedProp = prop ?? column.property;\n\t\t\tif (!column.multiOrder) {\n\t\t\t\tcolumn.multiOrder = \"descending\";\n\t\t\t} else if (column.multiOrder === \"descending\") {\n\t\t\t\tcolumn.multiOrder = \"ascending\";\n\t\t\t} else {\n\t\t\t\tcolumn.multiOrder = undefined;\n\t\t\t}\n\t\t\t// 排序集合非空判断\n\t\t\tconst initSortList: unknown = getInitParam()[\"sortList\"];\n\t\t\tstate.searchParam.sortList = [\n\t\t\t\t...(Array.isArray(initSortList) ? (initSortList as PagedSortInput[]) : []),\n\t\t\t\t...(state.searchParam.sortList ?? []),\n\t\t\t].filter((item, index, list) => list.findIndex((candidate) => candidate.enField === item.enField) === index);\n\n\t\t\t// 去原来的列中查找表格的列数据\n\t\t\tconst orgColumn = state.orgColumns.find((f) => f.prop === normalizedProp);\n\t\t\tconst enField = orgColumn?.sortableField ?? orgColumn?.prop ?? column.property;\n\t\t\tconst fieldIndex = state.searchParam.sortList.findIndex((f: PagedSortInput) => f.enField === enField);\n\t\t\tif (!column.multiOrder && fieldIndex >= 0) {\n\t\t\t\t// 如果是空的,删除排序\n\t\t\t\tstate.searchParam.sortList.splice(fieldIndex, 1);\n\t\t\t} else if (fieldIndex === -1) {\n\t\t\t\tstate.searchParam.sortList.push({\n\t\t\t\t\tenField,\n\t\t\t\t\tcnField: column.label,\n\t\t\t\t\tmode: column.multiOrder,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst sortItem = state.searchParam.sortList[fieldIndex];\n\t\t\t\tif (sortItem) sortItem.mode = column.multiOrder;\n\t\t\t}\n\t\t\t// 判断最后的排序集合中是否还存在数据,如果不存在,则删除排序集合\n\t\t\tif (state.searchParam.sortList.length === 0) {\n\t\t\t\tdelete state.searchParam.sortList;\n\t\t\t}\n\t\t\temit(\"sortChange\", { column, prop: normalizedProp, order: column.multiOrder ?? \"\" });\n\t\t\ttableSearch();\n\t\t};\n\n\t\tconst handleCurrentChange = (currentRow: DefaultRow | null, oldCurrentRow: DefaultRow | null) => {\n\t\t\tif (!currentRow) {\n\t\t\t\t// 这里为空的时候,会导致 Header 中的不确定状态还是true的状态\n\t\t\t\t// tableRef.value.clearSelection();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (props.rowClickSelection) {\n\t\t\t\t// 判断是否为单选\n\t\t\t\tif (props.single && oldCurrentRow) {\n\t\t\t\t\ttableRef.value?.toggleRowSelection(oldCurrentRow);\n\t\t\t\t}\n\t\t\t\ttableRef.value?.toggleRowSelection(currentRow);\n\t\t\t}\n\t\t\temit(\"currentChange\", currentRow, oldCurrentRow);\n\t\t};\n\n\t\tconst handleCellClassName = ({\n\t\t\trow,\n\t\t\tcolumn,\n\t\t\trowIndex,\n\t\t\tcolumnIndex,\n\t\t}: {\n\t\t\trow: DefaultRow;\n\t\t\tcolumn: TableColumnCtx<DefaultRow>;\n\t\t\trowIndex: number;\n\t\t\tcolumnIndex: number;\n\t\t}) => {\n\t\t\tlet localCellClassName = \"\";\n\t\t\t// 判断是否为选择列\n\t\t\tif (column.type === \"selection\") {\n\t\t\t\t// 判断是否在部分选中的集合中\n\t\t\t\tconst rowKey = getRowKey(row);\n\t\t\t\tif (state.indeterminateSelectedListIds.some((s) => s === rowKey)) {\n\t\t\t\t\tlocalCellClassName = \"fa-table__selection-column__indeterminate\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst columnInfo = state.tableColumns.find((f) => f.prop === column.property);\n\t\t\tif (columnInfo?.dataDeleteField) {\n\t\t\t\tif (row[columnInfo.dataDeleteField] === true) {\n\t\t\t\t\tif (localCellClassName) {\n\t\t\t\t\t\tlocalCellClassName += \" fa-table__data-delete-column\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlocalCellClassName = \"fa-table__data-delete-column\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (props.cellClassName) {\n\t\t\t\tconst cellClassName =\n\t\t\t\t\ttypeof props.cellClassName === \"string\" ? props.cellClassName : props.cellClassName({ row, column, rowIndex, columnIndex });\n\t\t\t\tif (!cellClassName) {\n\t\t\t\t\treturn localCellClassName;\n\t\t\t\t}\n\t\t\t\tif (localCellClassName) {\n\t\t\t\t\treturn `${localCellClassName} ${cellClassName}`;\n\t\t\t\t} else {\n\t\t\t\t\treturn cellClassName;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn localCellClassName;\n\t\t\t}\n\t\t};\n\n\t\tconst handleHeaderCellClassName = ({\n\t\t\trow,\n\t\t\tcolumn,\n\t\t\trowIndex,\n\t\t\tcolumnIndex,\n\t\t}: {\n\t\t\trow: DefaultRow;\n\t\t\tcolumn: TableColumnCtx<DefaultRow> & { multiOrder?: \"\" | \"ascending\" | \"descending\" };\n\t\t\trowIndex: number;\n\t\t\tcolumnIndex: number;\n\t\t}) => {\n\t\t\t// TODO:不晓得这里有无问题,EL 更新了还未测试\n\t\t\tcolumn.order = column.multiOrder === \"ascending\" || column.multiOrder === \"descending\" ? column.multiOrder : null;\n\t\t\tif (props.headerCellClassName) {\n\t\t\t\tif (typeof props.headerCellClassName === \"function\") {\n\t\t\t\t\treturn props.headerCellClassName({ row, column, rowIndex, columnIndex });\n\t\t\t\t} else {\n\t\t\t\t\treturn props.headerCellClassName;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn \"\";\n\t\t};\n\n\t\tconst handleSpanMethod = ({\n\t\t\tcolumn,\n\t\t\trowIndex,\n\t\t}: {\n\t\t\trow: DefaultRow;\n\t\t\tcolumn: TableColumnCtx<DefaultRow>;\n\t\t\trowIndex: number;\n\t\t\tcolumnIndex: number;\n\t\t}) => {\n\t\t\t/** 原生的 span-method 会失效 */\n\t\t\tconst property = column.property as string | null | undefined;\n\t\t\tconst columnKey = column.columnKey as string | null | undefined;\n\t\t\tconst pKey = property ?? columnKey;\n\t\t\tif (pKey === undefined || pKey === null) return { rowspan: 1, colspan: 1 };\n\t\t\tif (state.spanColumns.findIndex((f) => f.prop === pKey) !== -1) {\n\t\t\t\tconst rowspan = state.tableSpanData[pKey]?.[rowIndex] ?? 0;\n\t\t\t\tif (rowspan > 0) {\n\t\t\t\t\treturn { rowspan, colspan: 1 };\n\t\t\t\t}\n\t\t\t\treturn { rowspan: 0, colspan: 0 };\n\t\t\t}\n\t\t\treturn { rowspan: 1, colspan: 1 };\n\t\t};\n\n\t\tconst handleHeaderDragend = (newWidth: number, oldWidth: number, column: TableColumnCtx<DefaultRow>, event: MouseEvent) => {\n\t\t\tstate.orgColumns.forEach((f) => {\n\t\t\t\tif (column.property === f.prop) {\n\t\t\t\t\tf.width = newWidth;\n\t\t\t\t\tf.smallWidth = newWidth;\n\t\t\t\t}\n\t\t\t});\n\t\t\temit(\"headerDragend\", newWidth, oldWidth, column, event);\n\t\t\tif (props.columnsChange) reportColumnTask(notifyColumnsChange());\n\t\t};\n\n\t\tconst handleImagePreview = (url: string) => {\n\t\t\tstate.previewList = [url];\n\t\t\tstate.imagePreview = true;\n\t\t};\n\n\t\tconst tableColumnOmitNames = [\"multiOrder\", \"columnId\", \"order\", \"sortableField\", \"disabledSortable\", \"spanProp\", \"pureSearch\", \"search\"];\n\t\tconst searchFormSlotNames = computed(() => [\n\t\t\t...new Set(state.searchColumns.flatMap((column) => (typeof column.search?.slot === \"string\" ? [column.search.slot] : []))),\n\t\t]);\n\t\tconst tableColumnSlotNames = computed(() => [\n\t\t\t...new Set(state.tableColumns.flatMap((column) => [column.slot, column.headerSlot].filter((name) => typeof name === \"string\"))),\n\t\t]);\n\t\tconst searchInputClearable = computed(() => {\n\t\t\tconst value = state.searchParam.searchValue;\n\t\t\treturn (value !== undefined && value !== \"\") || state.searchValueUpdate.length > 0;\n\t\t});\n\n\t\twatch(\n\t\t\t() => props.columns,\n\t\t\t() => {\n\t\t\t\tloadTableColumns();\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.initParam,\n\t\t\t() => {\n\t\t\t\t// 如果初始化参数改变了,则需要改变对应的搜索参数\n\t\t\t\tObject.entries(getInitParam()).forEach(([key, value]) => {\n\t\t\t\t\tstate.searchParam[key] = value;\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.data,\n\t\t\t() => {\n\t\t\t\tif (!props.requestApi && props.autoRefresh) {\n\t\t\t\t\treturn tableSearch();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatchEffect((onCleanup) => {\n\t\t\tconst element = elementRef.value;\n\t\t\tif (element) {\n\t\t\t\tconst observer = new ResizeObserver((entries) => {\n\t\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\t\tconst { width, height } = entry.contentRect;\n\t\t\t\t\t\tconst widthChanged = state.tableWidth !== width;\n\t\t\t\t\t\tstate.tableWidth = width;\n\t\t\t\t\t\tstate.tableHeight = height;\n\t\t\t\t\t\tif (widthChanged) reportColumnTask(resizeTableColumns());\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tobserver.observe(element);\n\n\t\t\t\tonCleanup(() => observer.disconnect());\n\t\t\t}\n\t\t});\n\n\t\tonBeforeUnmount(() => {\n\t\t\tnotifyColumnsChange.cancel(unmountedError);\n\t\t\tresizeTableColumns.cancel(unmountedError);\n\t\t});\n\n\t\tonMounted(async () => {\n\t\t\tstate.initParam = getInitParam();\n\t\t\tdefaultSearchTime();\n\t\t\t// 初始化搜索表单的时候,如果有默认搜索参数,则重置默认的搜索参数\n\t\t\tObject.entries(getInitParam()).forEach(([key, value]) => {\n\t\t\t\tstate.searchParam[key] = value;\n\t\t\t});\n\t\t\tawait tableSearch();\n\t\t\tloadTableColumns();\n\t\t\tif (!props.requestApi && props.autoRefresh) await tableSearch();\n\t\t});\n\n\t\tonActivated(() => {\n\t\t\t// 解决 keep-alive 后自动列宽失效的问题\n\t\t\thandleTableColumnAutoWidth();\n\t\t});\n\n\t\tconst elTableProps = useProps(props, tableProps, [\"data\", \"spanMethod\", \"headerCellClassName\", \"cellClassName\"]);\n\n\t\tuseRender(() => (\n\t\t\t<div\n\t\t\t\tref={elementRef}\n\t\t\t\tclass={[\"fa-table\", `fa-table-${globalSize.value}`, `fa-table__${props.tableKey}`, { fa__click__disabled: state.loading }]}\n\t\t\t\tstyle={{\n\t\t\t\t\t\"--fa-table-width\": state.tableWidth ? `${state.tableWidth}px` : \"\",\n\t\t\t\t\t\"--fa-table-height\": state.tableHeight ? `${state.tableHeight}px` : \"\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<FaTableSearchForm\n\t\t\t\t\tvSlots={pick(slots, searchFormSlotNames.value)}\n\t\t\t\t\tshow={props.searchForm && state.searchForm}\n\t\t\t\t\tcollapsedSearch={props.collapsedSearch}\n\t\t\t\t\tadvancedSearchDrawer={props.advancedSearchDrawer}\n\t\t\t\t\tcols={props.searchFormCols}\n\t\t\t\t\tsearch={tableSearch}\n\t\t\t\t\treset={tableReset}\n\t\t\t\t/>\n\t\t\t\t{slots.topHeader && (\n\t\t\t\t\t<div class=\"el-card fa-table__header\">{slots.topHeader({ search: tableSearch, ...getTableDefaultSlots(state) })}</div>\n\t\t\t\t)}\n\t\t\t\t<div class=\"el-card fa-table__main\">\n\t\t\t\t\t{props.headerCard && (\n\t\t\t\t\t\t<div class=\"fa-table__main-header\">\n\t\t\t\t\t\t\t<div class=\"fa-table__main-header-left\">{slots.header?.({ search: tableSearch, ...getTableDefaultSlots(state) })}</div>\n\t\t\t\t\t\t\t<div class=\"fa-table__main-header-right\">\n\t\t\t\t\t\t\t\t{props.toolBtn && (\n\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__main-header-right__div-search\">\n\t\t\t\t\t\t\t\t\t\t\t<ElInput\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"fa-table__main-header-right__input-search\"\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\tprefixIcon={Search}\n\t\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"关键字搜索\"\n\t\t\t\t\t\t\t\t\t\t\t\tvModel_trim={state.searchParam.searchValue}\n\t\t\t\t\t\t\t\t\t\t\t\tclearable={searchInputClearable.value}\n\t\t\t\t\t\t\t\t\t\t\t\tonCompositionupdate={(e: CompositionEvent) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.searchValueUpdate = e.data;\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tonCompositionend={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.searchValueUpdate = \"\";\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={tableSearch}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__main-header-right__div-search__hidden\">\n\t\t\t\t\t\t\t\t\t\t\t\t{state.searchParam.searchValue}\n\t\t\t\t\t\t\t\t\t\t\t\t{state.searchValueUpdate}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t{props.requestApi && !props.hideSearchTime && (\n\t\t\t\t\t\t\t\t\t\t\t<ElDatePicker\n\t\t\t\t\t\t\t\t\t\t\t\t{...{\n\t\t\t\t\t\t\t\t\t\t\t\t\t// ElDatePicker 的 JSX 类型未声明 change 事件,运行时由内部 Picker 触发。\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChange: tableSearch,\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"fa-table__main-header-right__data-search\"\n\t\t\t\t\t\t\t\t\t\t\t\tpopperClass=\"fa-table__main-header-right__data-search__popper\"\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"daterange\"\n\t\t\t\t\t\t\t\t\t\t\t\tvModel={state.searchParam.searchTimeList}\n\t\t\t\t\t\t\t\t\t\t\t\tdefaultTime={createOneMonthRangeFromToday(props.futureSearchTime)}\n\t\t\t\t\t\t\t\t\t\t\t\tshortcuts={createDateRangeShortcuts(props.futureSearchTime)}\n\t\t\t\t\t\t\t\t\t\t\t\tvalueFormat=\"YYYY-MM-DD HH:mm:ss\"\n\t\t\t\t\t\t\t\t\t\t\t\tclearable={false}\n\t\t\t\t\t\t\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t\t\t\t\t\t\t\tfallbackPlacements={[\"top\"]}\n\t\t\t\t\t\t\t\t\t\t\t\tunlinkPanels\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{props.refreshBtn && (\n\t\t\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"刷新\"\n\t\t\t\t\t\t\t\t\t\t\t\tcircle\n\t\t\t\t\t\t\t\t\t\t\t\ticon={Refresh}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={tableSearch}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{props.searchBtn && state.searchColumns.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle={state.searchForm ? \"隐藏搜索栏\" : \"显示搜索栏\"}\n\t\t\t\t\t\t\t\t\t\t\t\tcircle\n\t\t\t\t\t\t\t\t\t\t\t\ticon={Search}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => (state.searchForm = !state.searchForm)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{props.columnSettingBtn && props.columns && (\n\t\t\t\t\t\t\t\t\t\t\t<ElDropdown title=\"表格列配置\" trigger=\"click\">\n\t\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\t\tdefault: () => <ElButton loading={state.loading} loadingIcon={Eleme} circle icon={Setting} />,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdropdown: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{slots.columnSetting?.()}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElDropdownItem title=\"表格列配置\" divided onClick={() => columnSettingRef.value?.open()}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t表格列配置\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ElDropdownItem>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t</ElDropdown>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{slots.toolButton?.({ search: tableSearch, ...getTableDefaultSlots(state) })}\n\t\t\t\t\t\t\t\t\t\t{slots.toolButtonAdv && (\n\t\t\t\t\t\t\t\t\t\t\t<ElDropdown title=\"高级操作\" trigger=\"click\">\n\t\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\t\tdefault: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElButton loading={state.loading} loadingIcon={Eleme} circle icon={More}></ElButton>\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\tdropdown: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{slots.toolButtonAdv?.({ search: tableSearch, ...getTableDefaultSlots(state) })}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t</ElDropdown>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<ElTable\n\t\t\t\t\t\t{...elTableProps.value}\n\t\t\t\t\t\tref={tableRef}\n\t\t\t\t\t\tvLoading={state.loading}\n\t\t\t\t\t\telement-loading-text={state.loadingText}\n\t\t\t\t\t\tdata={state.tableData}\n\t\t\t\t\t\tspanMethod={handleSpanMethod}\n\t\t\t\t\t\theaderCellClassName={handleHeaderCellClassName}\n\t\t\t\t\t\tcellClassName={handleCellClassName}\n\t\t\t\t\t\tonSelection-change={handleSelectionChange}\n\t\t\t\t\t\tonSort-change={handleSortChange}\n\t\t\t\t\t\tonSelect={handleSelect}\n\t\t\t\t\t\tonSelect-all={handleSelectAll}\n\t\t\t\t\t\tonCurrent-change={handleCurrentChange}\n\t\t\t\t\t\tonHeader-dragend={handleHeaderDragend}\n\t\t\t\t\t\tonCell-mouse-enter={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellMouseEnter\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-mouse-leave={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellMouseLeave\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-click={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellClick\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-dblclick={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellDblclick\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-contextmenu={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellContextmenu\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonRow-click={(row: DefaultRow, column: TableColumnCtx<DefaultRow> | null, event: Event) => {\n\t\t\t\t\t\t\tif (column) emit(\"rowClick\", row, column, event);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRow-contextmenu={(row: DefaultRow, column: TableColumnCtx<DefaultRow> | null, event: Event) => {\n\t\t\t\t\t\t\tif (column) emit(\"rowContextmenu\", row, column, event);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRow-dblclick={(row: DefaultRow, column: TableColumnCtx<DefaultRow> | null, event: Event) => {\n\t\t\t\t\t\t\tif (column) emit(\"rowDblclick\", row, column, event);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonHeader-click={(column: TableColumnCtx<DefaultRow>, event: Event) => emit(\"headerClick\", column, event)}\n\t\t\t\t\t\tonHeader-contextmenu={(column: TableColumnCtx<DefaultRow>, event: Event) => emit(\"headerContextmenu\", column, event)}\n\t\t\t\t\t\tonFilter-change={(newFilters: Record<string, string[]>) => emit(\"filterChange\", newFilters)}\n\t\t\t\t\t\tonExpand-change={(row: DefaultRow, expanded: boolean | DefaultRow[]) => emit(\"expandChange\", row, expanded)}\n\t\t\t\t\t\tonScroll={(data: { scrollLeft: number; scrollTop: number }) => emit(\"scroll\", data)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\tappend: () => slots.append?.(),\n\t\t\t\t\t\t\tempty: () => (\n\t\t\t\t\t\t\t\t<div class=\"fa-table__empty\">\n\t\t\t\t\t\t\t\t\t{slots.empty ? (\n\t\t\t\t\t\t\t\t\t\tslots.empty()\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t<NotData />\n\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t<div>暂无数据</div>\n\t\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tdefault: () => (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\t\t\t\t\tclassName=\"fa-table__index-column\"\n\t\t\t\t\t\t\t\t\t\ttype=\"index\"\n\t\t\t\t\t\t\t\t\t\tfixed=\"left\"\n\t\t\t\t\t\t\t\t\t\twidth={\n\t\t\t\t\t\t\t\t\t\t\tstate.tablePagination.pageIndex * state.tablePagination.pageSize >= 100\n\t\t\t\t\t\t\t\t\t\t\t\t? state.tablePagination.pageIndex * state.tablePagination.pageSize >= 1000\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 50\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 40\n\t\t\t\t\t\t\t\t\t\t\t\t: 30\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\t\t\t\tindex={indexMethod}\n\t\t\t\t\t\t\t\t\t\tshowOverflowTooltip={false}\n\t\t\t\t\t\t\t\t\t\tresizable={false}\n\t\t\t\t\t\t\t\t\t\tcolumnKey=\"__table-index\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\t\t\t\t\tclassName=\"fa-table__selection-column\"\n\t\t\t\t\t\t\t\t\t\ttype=\"selection\"\n\t\t\t\t\t\t\t\t\t\tfixed=\"left\"\n\t\t\t\t\t\t\t\t\t\twidth={35}\n\t\t\t\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\t\t\t\treserveSelection\n\t\t\t\t\t\t\t\t\t\tshowOverflowTooltip={false}\n\t\t\t\t\t\t\t\t\t\tresizable={false}\n\t\t\t\t\t\t\t\t\t\tcolumnKey=\"__table-selection\"\n\t\t\t\t\t\t\t\t\t\tselectable={props.rowSelectable}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{state.tableColumns.length === 0\n\t\t\t\t\t\t\t\t\t\t? slots.default?.()\n\t\t\t\t\t\t\t\t\t\t: state.tableColumns.map(\n\t\t\t\t\t\t\t\t\t\t\t\t(col) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\tcol.show &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t(col.type === \"expand\" ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElTableColumn {...col} width={35} fixed={col.fixed ?? \"left\"} resizable={false}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdefault: ({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$index,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trow: DefaultRow;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn: FaTableColumnCtx;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$index: number;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{col.render?.({ row, column, $index, ...getTableDefaultSlots(state) })}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{col.slot &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tslots[col.slot]?.({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$index,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(state),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcol.prop && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FaTableColumn\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvSlots={pick(slots, tableColumnSlotNames.value)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{...omit(col, tableColumnOmitNames)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thideImage={props.hideImage}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresizable={true}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonImagePreview={handleImagePreview}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonCustomCellClick={handleCustomCellClick}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{slots.operation && (\n\t\t\t\t\t\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\t\t\t\t\t\tfixed=\"right\"\n\t\t\t\t\t\t\t\t\t\t\twidth={state.operationColumnWidth}\n\t\t\t\t\t\t\t\t\t\t\theaderAlign=\"center\"\n\t\t\t\t\t\t\t\t\t\t\talign=\"left\"\n\t\t\t\t\t\t\t\t\t\t\tshowOverflowTooltip={false}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"fa-table__operation-column\"\n\t\t\t\t\t\t\t\t\t\t\tresizable={false}\n\t\t\t\t\t\t\t\t\t\t\tcolumnKey=\"__table-operation\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\theader: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__auto-width-column__cell-header __fa-table__auto-width-column__cell-header____table-operation\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>操作</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\tdefault: ({ row, column, $index }: { row: DefaultRow; column: FaTableColumnCtx; $index: number }) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__auto-width-column__cell __fa-table__auto-width-column__cell____table-operation\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{slots.operation?.({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$index,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsearch: tableSearch,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(state),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}}\n\t\t\t\t\t</ElTable>\n\t\t\t\t\t<div class=\"fa-table__main-footer\">\n\t\t\t\t\t\t<div class=\"fa-table__main-footer__left\">{slots.footer?.({ search: tableSearch, ...getTableDefaultSlots(state) })}</div>\n\t\t\t\t\t\t{slots.pagination ? (\n\t\t\t\t\t\t\tslots.pagination({\n\t\t\t\t\t\t\t\tpageIndex: state.tablePagination.pageIndex,\n\t\t\t\t\t\t\t\tpageSize: state.tablePagination.pageSize,\n\t\t\t\t\t\t\t\ttotalRows: state.tablePagination.totalRows,\n\t\t\t\t\t\t\t\thandleSizeChange,\n\t\t\t\t\t\t\t\thandlePaginationChange,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t{props.pagination ? (\n\t\t\t\t\t\t\t\t\t<FaTablePagination\n\t\t\t\t\t\t\t\t\t\tpageSizes={props.pageSizes}\n\t\t\t\t\t\t\t\t\t\tonSizeChange={handleSizeChange}\n\t\t\t\t\t\t\t\t\t\tonCurrentChange={handlePaginationChange}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<ElPagination class=\"fa-table-pagination\" size=\"small\" layout=\"total\" total={state.tableData.length} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t{state.imagePreview && (\n\t\t\t\t\t<ElImageViewer\n\t\t\t\t\t\tcloseOnPressEscape\n\t\t\t\t\t\thideOnClickModal\n\t\t\t\t\t\tteleported\n\t\t\t\t\t\tshowProgress\n\t\t\t\t\t\tonClose={() => (state.imagePreview = false)}\n\t\t\t\t\t\turlList={state.previewList}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t{props.columnSettingBtn && <FaTableColumnsSettingDialog ref={columnSettingRef} change={props.columnsChange} />}\n\t\t\t</div>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** 用于多选表格,清空用户的选择 */\n\t\t\tclearSelection: computed(() => tableRef.value?.clearSelection),\n\t\t\t/** 返回当前选中的行 */\n\t\t\tgetSelectionRows: computed(() => tableRef.value?.getSelectionRows),\n\t\t\t/** 返回当前半选中的行。 */\n\t\t\tgetHalfSelectionRows: computed(() => tableRef.value?.getHalfSelectionRows),\n\t\t\t/** 用于多选表格,切换某一行的选中状态, 如果使用了第二个参数,则可直接设置这一行选中与否 */\n\t\t\ttoggleRowSelection: computed(() => tableRef.value?.toggleRowSelection),\n\t\t\t/** 用于多选表格,切换全选和全不选 */\n\t\t\ttoggleAllSelection: computed(() => tableRef.value?.toggleAllSelection),\n\t\t\t/** 用于可扩展的表格或树表格,如果某行被扩展,则切换。 使用第二个参数,您可以直接设置该行应该被扩展或折叠。 */\n\t\t\ttoggleRowExpansion: computed(() => tableRef.value?.toggleRowExpansion),\n\t\t\t/** 用于单选表格,设定某一行为选中行, 如果调用时不加参数,则会取消目前高亮行的选中状态。 */\n\t\t\tsetCurrentRow: computed(() => tableRef.value?.setCurrentRow),\n\t\t\t/** 用于清空排序条件,数据会恢复成未排序的状态 */\n\t\t\tclearSort: computed(() => tableRef.value?.clearSort),\n\t\t\t/** 传入由columnKey 组成的数组以清除指定列的过滤条件。 如果没有参数,清除所有过滤器 */\n\t\t\tclearFilter: computed(() => tableRef.value?.clearFilter),\n\t\t\t/** 对 Table 进行重新布局。 当表格可见性变化时,您可能需要调用此方法以获得正确的布局 */\n\t\t\tdoLayout: computed(() => tableRef.value?.doLayout),\n\t\t\t/** 手动排序表格。 参数 prop 属性指定排序列,order 指定排序顺序。 */\n\t\t\tsort: computed(() => tableRef.value?.sort),\n\t\t\t/** 滚动到一组特定坐标 */\n\t\t\tscrollTo: computed(() => tableRef.value?.scrollTo),\n\t\t\t/** 设置垂直滚动位置 */\n\t\t\tsetScrollTop: computed(() => tableRef.value?.setScrollTop),\n\t\t\t/** 设置水平滚动位置 */\n\t\t\tsetScrollLeft: computed(() => tableRef.value?.setScrollLeft),\n\t\t\t/** 获取表列的 context */\n\t\t\tcolumns: computed(() => tableRef.value?.columns),\n\t\t\t/** 适用于 lazy Table, 需要设置 rowKey, 更新 key children */\n\t\t\tupdateKeyChildren: computed(() => tableRef.value?.updateKeyChildren),\n\t\t\t/** 聚合加载状态;手动关闭不能结束内部任务。 */\n\t\t\tloading: computed({ get: () => state.loading, set: setManualLoading }),\n\t\t\t/** 表格数据 */\n\t\t\ttableData: computed(() => state.tableData),\n\t\t\t/** 分页数据 */\n\t\t\ttablePagination: computed(() => state.tablePagination),\n\t\t\t/** 搜索参数 */\n\t\t\tsearchParam: computed(() => state.searchParam),\n\t\t\t/** 选中状态 */\n\t\t\tselected: computed(() => state.selected),\n\t\t\t/** 选中数据列表 */\n\t\t\tselectedList: computed(() => state.selectedList),\n\t\t\t/** 选中数据 rowKey 列表 */\n\t\t\tselectedListIds: computed(() => state.selectedListIds),\n\t\t\t/** 部分选中数据 rowKey 列表 */\n\t\t\tindeterminateSelectedListIds: computed(() => state.indeterminateSelectedListIds),\n\t\t\t/** 表格宽度 */\n\t\t\ttableWidth: computed(() => state.tableWidth),\n\t\t\t/** 表格高度 */\n\t\t\ttableHeight: computed(() => state.tableHeight),\n\t\t\t/** 部分选中(样式不一样而已),用于多选表格,切换某一行的选中状态, 如果使用了第二个参数,则可直接设置这一行选中与否 */\n\t\t\ttoggleRowIndeterminateSelection,\n\t\t\t/** 异步方法,刷新表格 */\n\t\t\trefresh: tableSearch,\n\t\t\t/** 异步方法,重置表格 */\n\t\t\treset: tableReset,\n\t\t\t/** 对 Table 进行重新渲染。当 TableKey 发生变化的时候可以通过此方法重新渲染表格 */\n\t\t\tdoRender,\n\t\t\t/** Table 加载 */\n\t\t\tdoLoading,\n\t\t});\n\t},\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"table.mjs","names":[],"sources":["../../../../src/components/table/src/table.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, onActivated, onBeforeUnmount, onMounted, shallowRef, watch, watchEffect } from \"vue\";\nimport { Eleme, More, Refresh, Search, Setting } from \"@element-plus/icons-vue\";\nimport {\n\tElButton,\n\tElDatePicker,\n\tElDropdown,\n\tElDropdownItem,\n\tElDropdownMenu,\n\tElIcon,\n\tElImageViewer,\n\tElInput,\n\tElPagination,\n\tElTable,\n\tElTableColumn,\n} from \"element-plus\";\nimport { NotData } from \"@fast-element-plus/icons-vue\";\nimport { tableProps } from \"../../../internal/props\";\nimport {\n\tcreateDateRangeShortcuts,\n\tcreateOneMonthRangeFromToday,\n\tdebounce,\n\tdefinePropType,\n\tmakeSlots,\n\tomit,\n\tpick,\n\trandomString,\n\tuseExpose,\n\tuseProps,\n\tuseRender,\n} from \"../../../utils\";\nimport { tableUtil } from \"../utils/table\";\nimport { getTableDefaultSlots } from \"./table.type\";\nimport FaTableColumn from \"./tableColumn\";\nimport FaTableColumnsSettingDialog from \"./tableColumnSettingDialog\";\nimport FaTablePagination from \"./tablePagination\";\nimport FaTableSearchForm from \"./tableSearchForm\";\nimport { useTable } from \"./useTable\";\nimport type { TableColumnCtx, TableProps } from \"element-plus\";\nimport type { PropType } from \"vue\";\nimport type { FaLayoutGridBreakpoint } from \"../../layoutGrid\";\nimport type { PagedInput, PagedResult, PagedSortInput } from \"../src/page.type\";\nimport type { DefaultRow } from \"./table.state\";\nimport type { FaTableColumnCtx, FaTableDataRange, FaTableDefaultSlotsResult } from \"./table.type\";\n\nexport { tableProps } from \"../../../internal/props\";\nexport type { TreeProps } from \"../../../internal/props\";\n\n/** FaTable 的运行时 Props 定义 */\nexport const faTableProps = {\n\t...tableProps,\n\t/** whether Table has vertical border */\n\tborder: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** whether current row is highlighted */\n\thighlightCurrentRow: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** key of row data, used for optimizing rendering. Required if `reserve-selection` is on or display tree data. When its type is String, multi-level access is supported, e.g. `user.info.id`, but `user.info[0].id` is not supported, in which case `Function` should be used */\n\trowKey: {\n\t\ttype: [String, Function] as PropType<NonNullable<TableProps<DefaultRow>[\"rowKey\"]>>,\n\t\tdefault: \"id\",\n\t},\n\t/** 组件封装,原生的已经失效 method that returns rowspan and colspan */\n\tspanMethod: {\n\t\ttype: Function as PropType<TableProps<DefaultRow>[\"spanMethod\"]>,\n\t\tvalidator: () => {\n\t\t\tconsole.warn(\"[Fast:FaTable]\", \"'spanMethod' 属性,组件已经封装,外部使用会失效。\");\n\t\t\treturn false;\n\t\t},\n\t},\n\t/** 表格Key */\n\ttableKey: {\n\t\ttype: String,\n\t\tdefault: () => randomString(8),\n\t},\n\t/** 表格数据 */\n\tdata: {\n\t\ttype: definePropType<DefaultRow[]>(Array),\n\t\tdefault: () => [],\n\t},\n\t/** 请求数据的函数 */\n\trequestApi: {\n\t\ttype: definePropType<(params?: PagedInput) => Promise<PagedResult<DefaultRow> | DefaultRow[]>>(Function),\n\t},\n\t/** 接口请求数据回调 */\n\tdataCallback: {\n\t\ttype: definePropType<(data: PagedResult<DefaultRow> | DefaultRow[]) => void>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | PagedInput | null>([String, Number, Object]),\n\t/** 列配置 */\n\tcolumns: {\n\t\ttype: definePropType<FaTableColumnCtx[] | false>([Array, Boolean]),\n\t\tdefault: () => false,\n\t},\n\t/** 表格列改变 */\n\tcolumnsChange: {\n\t\ttype: definePropType<(columns: FaTableColumnCtx[]) => Promise<void>>(Function),\n\t},\n\t/** 搜索表单 Grid布局列配置 */\n\tsearchFormCols: {\n\t\ttype: definePropType<string | number | Record<FaLayoutGridBreakpoint, number>>([String, Number, Object]),\n\t\tdefault: () => ({ xs: 2, sm: 3, md: 4, lg: 5, xl: 6 }),\n\t},\n\t/** 折叠搜索 */\n\tcollapsedSearch: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 高级搜索抽屉 */\n\tadvancedSearchDrawer: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\t/** 搜索表单 */\n\tsearchForm: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 头部卡片 */\n\theaderCard: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 刷新按钮 */\n\trefreshBtn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 搜索按钮 */\n\tsearchBtn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 列配置按钮 */\n\tcolumnSettingBtn: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\t/** 头部卡片右侧功能按钮 */\n\ttoolBtn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 隐藏搜索时间 */\n\thideSearchTime: Boolean,\n\t/** 未来搜索时间 */\n\tfutureSearchTime: Boolean,\n\t/** 搜索时间范围 */\n\tdataSearchRange: {\n\t\ttype: definePropType<FaTableDataRange>(String),\n\t\tdefault: \"Past3D\",\n\t},\n\t/** 选择列 */\n\tselectionColumn: Boolean,\n\t/** 序号列 */\n\tindexColumn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 分页 */\n\tpagination: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** 页码 */\n\tpageSizes: {\n\t\ttype: definePropType<number[]>(Array),\n\t\tdefault: [20, 30, 50, 100],\n\t},\n\t/** 隐藏图片 */\n\thideImage: Boolean,\n\t/** 单选 */\n\tsingle: Boolean,\n\t/** 行点击选择 */\n\trowClickSelection: Boolean,\n\t/** 将父级数据的 children 展开为表格行,并把父级字段合并到子项;Element Plus 树表无需启用 */\n\ttreeData: Boolean,\n\t/** 配置选项 */\n\tprops: {\n\t\ttype: definePropType<{ span?: string; children?: string }>(Object),\n\t\tdefault: () => ({\n\t\t\tspan: undefined,\n\t\t\tchildren: \"children\",\n\t\t}),\n\t},\n\t/** 自动刷新,当传入 data 时候,如果存在更改则自动刷新 */\n\tautoRefresh: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * 等价于 Table-Column 的 selectable\n\t * function that determines if a certain row can be selected, works when `type` is 'selection'\n\t */\n\trowSelectable: Function as PropType<TableColumnCtx<DefaultRow>[\"selectable\"]>,\n};\n\n/** FaTable 的运行时 Emits 定义 */\nexport const faTableEmits = {\n\t/** 当用户手动勾选数据行的 Checkbox 时触发的事件 */\n\tselect: (selection: DefaultRow[], row: DefaultRow) => Array.isArray(selection) && typeof row === \"object\" && row !== null,\n\t/** 当用户手动勾选全选 Checkbox 时触发的事件 */\n\tselectAll: (selection: DefaultRow[]) => Array.isArray(selection),\n\t/** 当选择项发生变化时会触发该事件 */\n\tselectionChange: (newSelection: DefaultRow[]) => Array.isArray(newSelection),\n\t/** 当单元格 hover 进入时会触发该事件 */\n\tcellMouseEnter: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** 当单元格 hover 退出时会触发该事件 */\n\tcellMouseLeave: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** 当某个单元格被点击时会触发该事件 */\n\tcellClick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** 当某个单元格被双击击时会触发该事件 */\n\tcellDblclick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** 当某个单元格被鼠标右键点击时会触发该事件 */\n\tcellContextmenu: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** 当某一行被点击时会触发该事件 */\n\trowClick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, event: Event) =>\n\t\ttypeof row === \"object\" && row !== null && typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** 当某一行被鼠标右键点击时会触发该事件 */\n\trowContextmenu: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, event: Event) =>\n\t\ttypeof row === \"object\" && row !== null && typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** 当某一行被双击时会触发该事件 */\n\trowDblclick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, event: Event) =>\n\t\ttypeof row === \"object\" && row !== null && typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** 当某一列的表头被点击时会触发该事件 */\n\theaderClick: (column: TableColumnCtx<DefaultRow>, event: Event) => typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** 当某一列的表头被鼠标右键点击时触发该事件 */\n\theaderContextmenu: (column: TableColumnCtx<DefaultRow>, event: Event) => typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** 当表格的排序条件发生变化的时候会触发该事件 */\n\tsortChange: (data: { column: TableColumnCtx<DefaultRow>; prop: string; order: \"\" | \"ascending\" | \"descending\" }) =>\n\t\ttypeof data === \"object\" && data !== null,\n\t/** column 的 key, 如果需要使用 filter-change 事件,则需要此属性标识是哪个 column 的筛选条件 */\n\tfilterChange: (newFilters: Record<string, string[]>) => typeof newFilters === \"object\" && newFilters !== null,\n\t/** 当表格的当前行发生变化的时候会触发该事件,如果要高亮当前行,请打开表格的 highlight-current-row 属性 */\n\tcurrentChange: (currentRow: DefaultRow, oldCurrentRow: DefaultRow | null) =>\n\t\ttypeof currentRow === \"object\" &&\n\t\tcurrentRow !== null &&\n\t\t(oldCurrentRow === null || (typeof oldCurrentRow === \"object\" && oldCurrentRow !== null)),\n\t/** 当拖动表头改变了列的宽度的时候会触发该事件 */\n\theaderDragend: (newWidth: number, oldWidth: number, column: TableColumnCtx<DefaultRow>, event: MouseEvent) =>\n\t\ttypeof newWidth === \"number\" && typeof oldWidth === \"number\" && typeof column === \"object\" && column !== null && event instanceof MouseEvent,\n\t/** 当用户对某一行展开或者关闭的时候会触发该事件(展开行时,回调的第二个参数为 expandedRows;树形表格时第二参数为 expanded) */\n\texpandChange: (row: DefaultRow, expanded: boolean | DefaultRow[]) =>\n\t\ttypeof row === \"object\" && row !== null && (typeof expanded === \"boolean\" || Array.isArray(expanded)),\n\t/** 表格滚动时触发 */\n\tscroll: (data: { scrollLeft: number; scrollTop: number }) => typeof data === \"object\" && data !== null,\n\n\t/** 表格刷新事件 */\n\trefresh: (params: PagedInput) => typeof params === \"object\" && params !== null,\n\t/** 表格重置事件 */\n\treset: (params: PagedInput) => typeof params === \"object\" && params !== null,\n\t/** 分页页码改变事件 */\n\tsizeChange: (pageSize: number) => typeof pageSize === \"number\",\n\t/** 分页改变事件 */\n\tpaginationChange: (pageIndex: number, pageSize: number) => typeof pageIndex === \"number\" && typeof pageSize === \"number\",\n\t/** 自定义单元格点击事件 */\n\tcustomCellClick: (\n\t\temitName: string,\n\t\t{ row, column, $index }: { row: DefaultRow; column: FaTableColumnCtx; $index: number } & FaTableDefaultSlotsResult\n\t) =>\n\t\t(emitName == null || typeof emitName === \"string\") &&\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\ttypeof $index === \"number\",\n};\n\n/** FaTable 的插槽参数 */\nexport type FaTableSlots = Record<string, unknown> & {\n\t/** 默认内容插槽 */\n\tdefault: never;\n\t/** 插入至表格最后一行之后的内容, 如果需要对表格的内容进行无限滚动操作,可能需要用到这个 slot。 若表格有合计行,该 slot 会位于合计行之上。 */\n\tappend: never;\n\t/** 当数据为空时自定义的内容 */\n\tempty: never;\n\t/** 表格顶部插槽 */\n\ttopHeader: FaTableDefaultSlotsResult;\n\t/** 表格头部左侧插槽 */\n\theader: FaTableDefaultSlotsResult;\n\t/** 表格头部右侧功能按钮插槽 */\n\ttoolButton: FaTableDefaultSlotsResult;\n\t/** 表格头部右侧高级操作按钮插槽,ElDropdownMenuItem 标签 */\n\ttoolButtonAdv: FaTableDefaultSlotsResult;\n\t/** 表格展开列插槽 */\n\texpand: FaTableDefaultSlotsResult & {\n\t\trow: DefaultRow;\n\t\tcolumn: TableColumnCtx<DefaultRow>;\n\t\t$index: number;\n\t};\n\t/** 表格操作列插槽 */\n\toperation: FaTableDefaultSlotsResult & {\n\t\trow: DefaultRow;\n\t\tcolumn: FaTableColumnCtx;\n\t\t$index: number;\n\t};\n\t/** 表格分页插槽 */\n\tpagination: {\n\t\tpageIndex: number;\n\t\tpageSize: number;\n\t\ttotalRows: number;\n\t\thandleSizeChange: (val: number) => void;\n\t\thandlePaginationChange: (val: number) => void;\n\t};\n\t/** 表格页脚插槽 */\n\tfooter: FaTableDefaultSlotsResult;\n\t/** 列配置 */\n\tcolumnSetting: never;\n} & Record<\n\t\tstring,\n\t\tFaTableDefaultSlotsResult & {\n\t\t\t/** slots为表格内容的时候才会返回 */\n\t\t\trow?: DefaultRow;\n\t\t\t/** slot为表头内容的时候返回 'TableColumnCtx<DefaultRow>' 否则返回 'FaTableColumnCtx' */\n\t\t\tcolumn?: TableColumnCtx<DefaultRow> | FaTableColumnCtx;\n\t\t\t/** slot为非搜索项的时候才会返回 */\n\t\t\t$index?: number;\n\t\t\t/** slot为搜索项的时候才会返回 */\n\t\t\tsearch?: () => Promise<void>;\n\t\t}\n\t>;\n\nexport default defineComponent({\n\tname: \"FaTable\",\n\tprops: faTableProps,\n\temits: faTableEmits,\n\tslots: makeSlots<FaTableSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst columnSettingRef = shallowRef<InstanceType<typeof FaTableColumnsSettingDialog> | null>(null);\n\n\t\tconst {\n\t\t\tglobalSize,\n\t\t\tstate,\n\t\t\telementRef,\n\t\t\ttableRef,\n\t\t\thandleTableColumnAutoWidth,\n\t\t\tloadTableColumns,\n\t\t\thandleSizeChange,\n\t\t\thandlePaginationChange,\n\t\t\tdefaultSearchTime,\n\t\t\ttableSearch,\n\t\t\ttableReset,\n\t\t\tdoRender,\n\t\t\tsetManualLoading,\n\t\t\tdoLoading,\n\t\t\thandleCustomCellClick,\n\t\t} = useTable(props, slots, emit);\n\n\t\tconst notifyColumnsChange = debounce(() => props.columnsChange?.(state.orgColumns), 500);\n\t\tconst resizeTableColumns = debounce(handleTableColumnAutoWidth, 100);\n\n\t\tconst unmountedError = new Error(\"FaTable 已卸载,列布局任务已取消。\");\n\t\tconst reportColumnTask = (task: Promise<unknown>) => {\n\t\t\ttask.catch((error: unknown) => {\n\t\t\t\tif (error !== unmountedError) console.error(\"FaTable 列更新失败。\", error);\n\t\t\t});\n\t\t};\n\n\t\tlet lastRowIndex = 0;\n\t\tconst getInitParam = (): Record<string, unknown> => {\n\t\t\treturn typeof props.initParam === \"object\" && props.initParam !== null ? props.initParam : {};\n\t\t};\n\t\tconst getRowKey = (row: DefaultRow) => {\n\t\t\tconst value: unknown = typeof props.rowKey === \"function\" ? props.rowKey(row) : tableUtil.handleRowAccordingToProp(row, props.rowKey);\n\t\t\treturn typeof value === \"string\" || typeof value === \"number\" ? value : undefined;\n\t\t};\n\n\t\tconst indexMethod = (index: number) => {\n\t\t\tif (index === 0) {\n\t\t\t\tlastRowIndex = 0;\n\t\t\t}\n\t\t\tif (state.spanColumns.length > 0) {\n\t\t\t\tconst rowspan = state.tableSpanData[\"__table-index\"]?.[index] ?? 0;\n\t\t\t\tif (rowspan === 0) {\n\t\t\t\t\treturn lastRowIndex + (state.tablePagination.pageIndex - 1) * state.tablePagination.pageSize + 1;\n\t\t\t\t} else {\n\t\t\t\t\tlastRowIndex++;\n\t\t\t\t\treturn lastRowIndex + (state.tablePagination.pageIndex - 1) * state.tablePagination.pageSize;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn index + (state.tablePagination.pageIndex - 1) * state.tablePagination.pageSize + 1;\n\t\t};\n\n\t\tconst handleSelect = (selection: DefaultRow[], row: DefaultRow) => {\n\t\t\t// 判断是否开启了单选\n\t\t\tif (props.single) {\n\t\t\t\ttableRef.value?.clearSelection();\n\t\t\t\tif (selection.length > 0) {\n\t\t\t\t\ttableRef.value?.toggleRowSelection(row);\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"select\", selection, row);\n\t\t};\n\n\t\tconst handleSelectAll = (selection: DefaultRow[]) => {\n\t\t\tif (props.single) {\n\t\t\t\t// 判断是否已经选中数据\n\t\t\t\tif (state.selected) {\n\t\t\t\t\t// 默认选中的第一行\n\t\t\t\t\tif (state.tableData.length > 0) {\n\t\t\t\t\t\ttableRef.value?.clearSelection();\n\t\t\t\t\t\tconst firstRow = state.tableData[0];\n\t\t\t\t\t\tif (firstRow) tableRef.value?.toggleRowSelection(firstRow);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttableRef.value?.clearSelection();\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"selectAll\", selection);\n\t\t};\n\n\t\tconst handleSelectionChange = (newSelection: DefaultRow[]) => {\n\t\t\tnewSelection.length === 0 ? (state.selected = false) : (state.selected = true);\n\t\t\t// 判断是否为单选\n\t\t\tif (props.single && newSelection.length > 0) {\n\t\t\t\t// 这里获取最后一个是因为选中改变的事件会触发多次,会带入旧的数据\n\t\t\t\tconst lastSelection = newSelection.at(-1);\n\t\t\t\tstate.selectedList = lastSelection === undefined ? [] : [lastSelection];\n\t\t\t} else {\n\t\t\t\tstate.selectedList = newSelection;\n\t\t\t}\n\t\t\t// 如果已经取消选择了,那么部分选择也应该要取消\n\t\t\tstate.indeterminateSelectedListIds = state.indeterminateSelectedListIds.filter((f) => state.selectedListIds.some((s) => s === f));\n\t\t\temit(\"selectionChange\", state.selectedList);\n\t\t};\n\n\t\tconst toggleRowIndeterminateSelection = (row: DefaultRow, selected?: boolean) => {\n\t\t\tconst rowKey = getRowKey(row);\n\t\t\tif (rowKey === undefined) return;\n\t\t\tconst curRow = state.tableData.find((item) => getRowKey(item) === rowKey);\n\t\t\tif (selected === true) {\n\t\t\t\tif (!state.indeterminateSelectedListIds.some((s) => s === rowKey)) {\n\t\t\t\t\tstate.indeterminateSelectedListIds.push(rowKey);\n\t\t\t\t}\n\t\t\t\tif (curRow) tableRef.value?.toggleRowSelection(curRow, true);\n\t\t\t} else if (selected === false) {\n\t\t\t\tconst fIndex = state.indeterminateSelectedListIds.findIndex((f) => f === rowKey);\n\t\t\t\tif (fIndex >= 0) {\n\t\t\t\t\tstate.indeterminateSelectedListIds.splice(fIndex, 1);\n\t\t\t\t}\n\t\t\t\tif (curRow) tableRef.value?.toggleRowSelection(curRow, false);\n\t\t\t} else {\n\t\t\t\tconst fIndex = state.indeterminateSelectedListIds.findIndex((f) => f === rowKey);\n\t\t\t\tif (fIndex >= 0) {\n\t\t\t\t\tstate.indeterminateSelectedListIds.splice(fIndex, 1);\n\t\t\t\t} else {\n\t\t\t\t\tstate.indeterminateSelectedListIds.push(rowKey);\n\t\t\t\t}\n\t\t\t\tif (curRow) tableRef.value?.toggleRowSelection(curRow);\n\t\t\t}\n\t\t};\n\n\t\tconst handleSortChange = ({\n\t\t\tcolumn,\n\t\t\tprop,\n\t\t}: {\n\t\t\tcolumn: TableColumnCtx<DefaultRow> & { multiOrder?: \"\" | \"ascending\" | \"descending\" };\n\t\t\tprop: string | null;\n\t\t\torder: \"\" | \"ascending\" | \"descending\" | null;\n\t\t}) => {\n\t\t\tconst normalizedProp = prop ?? column.property;\n\t\t\tif (!column.multiOrder) {\n\t\t\t\tcolumn.multiOrder = \"descending\";\n\t\t\t} else if (column.multiOrder === \"descending\") {\n\t\t\t\tcolumn.multiOrder = \"ascending\";\n\t\t\t} else {\n\t\t\t\tcolumn.multiOrder = undefined;\n\t\t\t}\n\t\t\t// 排序集合非空判断\n\t\t\tconst initSortList: unknown = getInitParam()[\"sortList\"];\n\t\t\tstate.searchParam.sortList = [\n\t\t\t\t...(Array.isArray(initSortList) ? (initSortList as PagedSortInput[]) : []),\n\t\t\t\t...(state.searchParam.sortList ?? []),\n\t\t\t].filter((item, index, list) => list.findIndex((candidate) => candidate.enField === item.enField) === index);\n\n\t\t\t// 去原来的列中查找表格的列数据\n\t\t\tconst orgColumn = state.orgColumns.find((f) => f.prop === normalizedProp);\n\t\t\tconst enField = orgColumn?.sortableField ?? orgColumn?.prop ?? column.property;\n\t\t\tconst fieldIndex = state.searchParam.sortList.findIndex((f: PagedSortInput) => f.enField === enField);\n\t\t\tif (!column.multiOrder && fieldIndex >= 0) {\n\t\t\t\t// 如果是空的,删除排序\n\t\t\t\tstate.searchParam.sortList.splice(fieldIndex, 1);\n\t\t\t} else if (fieldIndex === -1) {\n\t\t\t\tstate.searchParam.sortList.push({\n\t\t\t\t\tenField,\n\t\t\t\t\tcnField: column.label,\n\t\t\t\t\tmode: column.multiOrder,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst sortItem = state.searchParam.sortList[fieldIndex];\n\t\t\t\tif (sortItem) sortItem.mode = column.multiOrder;\n\t\t\t}\n\t\t\t// 判断最后的排序集合中是否还存在数据,如果不存在,则删除排序集合\n\t\t\tif (state.searchParam.sortList.length === 0) {\n\t\t\t\tdelete state.searchParam.sortList;\n\t\t\t}\n\t\t\temit(\"sortChange\", { column, prop: normalizedProp, order: column.multiOrder ?? \"\" });\n\t\t\ttableSearch();\n\t\t};\n\n\t\tconst handleCurrentChange = (currentRow: DefaultRow | null, oldCurrentRow: DefaultRow | null) => {\n\t\t\tif (!currentRow) {\n\t\t\t\t// 这里为空的时候,会导致 Header 中的不确定状态还是true的状态\n\t\t\t\t// tableRef.value.clearSelection();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (props.rowClickSelection) {\n\t\t\t\t// 判断是否为单选\n\t\t\t\tif (props.single && oldCurrentRow) {\n\t\t\t\t\ttableRef.value?.toggleRowSelection(oldCurrentRow);\n\t\t\t\t}\n\t\t\t\ttableRef.value?.toggleRowSelection(currentRow);\n\t\t\t}\n\t\t\temit(\"currentChange\", currentRow, oldCurrentRow);\n\t\t};\n\n\t\tconst handleCellClassName = ({\n\t\t\trow,\n\t\t\tcolumn,\n\t\t\trowIndex,\n\t\t\tcolumnIndex,\n\t\t}: {\n\t\t\trow: DefaultRow;\n\t\t\tcolumn: TableColumnCtx<DefaultRow>;\n\t\t\trowIndex: number;\n\t\t\tcolumnIndex: number;\n\t\t}) => {\n\t\t\tlet localCellClassName = \"\";\n\t\t\t// 判断是否为选择列\n\t\t\tif (column.type === \"selection\") {\n\t\t\t\t// 判断是否在部分选中的集合中\n\t\t\t\tconst rowKey = getRowKey(row);\n\t\t\t\tif (state.indeterminateSelectedListIds.some((s) => s === rowKey)) {\n\t\t\t\t\tlocalCellClassName = \"fa-table__selection-column__indeterminate\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst columnInfo = state.tableColumns.find((f) => f.prop === column.property);\n\t\t\tif (columnInfo?.dataDeleteField) {\n\t\t\t\tif (row[columnInfo.dataDeleteField] === true) {\n\t\t\t\t\tif (localCellClassName) {\n\t\t\t\t\t\tlocalCellClassName += \" fa-table__data-delete-column\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlocalCellClassName = \"fa-table__data-delete-column\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (props.cellClassName) {\n\t\t\t\tconst cellClassName =\n\t\t\t\t\ttypeof props.cellClassName === \"string\" ? props.cellClassName : props.cellClassName({ row, column, rowIndex, columnIndex });\n\t\t\t\tif (!cellClassName) {\n\t\t\t\t\treturn localCellClassName;\n\t\t\t\t}\n\t\t\t\tif (localCellClassName) {\n\t\t\t\t\treturn `${localCellClassName} ${cellClassName}`;\n\t\t\t\t} else {\n\t\t\t\t\treturn cellClassName;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn localCellClassName;\n\t\t\t}\n\t\t};\n\n\t\tconst handleHeaderCellClassName = ({\n\t\t\trow,\n\t\t\tcolumn,\n\t\t\trowIndex,\n\t\t\tcolumnIndex,\n\t\t}: {\n\t\t\trow: DefaultRow;\n\t\t\tcolumn: TableColumnCtx<DefaultRow> & { multiOrder?: \"\" | \"ascending\" | \"descending\" };\n\t\t\trowIndex: number;\n\t\t\tcolumnIndex: number;\n\t\t}) => {\n\t\t\t// TODO:不晓得这里有无问题,EL 更新了还未测试\n\t\t\tcolumn.order = column.multiOrder === \"ascending\" || column.multiOrder === \"descending\" ? column.multiOrder : null;\n\t\t\tif (props.headerCellClassName) {\n\t\t\t\tif (typeof props.headerCellClassName === \"function\") {\n\t\t\t\t\treturn props.headerCellClassName({ row, column, rowIndex, columnIndex });\n\t\t\t\t} else {\n\t\t\t\t\treturn props.headerCellClassName;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn \"\";\n\t\t};\n\n\t\tconst handleSpanMethod = ({\n\t\t\tcolumn,\n\t\t\trowIndex,\n\t\t}: {\n\t\t\trow: DefaultRow;\n\t\t\tcolumn: TableColumnCtx<DefaultRow>;\n\t\t\trowIndex: number;\n\t\t\tcolumnIndex: number;\n\t\t}) => {\n\t\t\t/** 原生的 span-method 会失效 */\n\t\t\tconst property = column.property as string | null | undefined;\n\t\t\tconst columnKey = column.columnKey as string | null | undefined;\n\t\t\tconst pKey = property ?? columnKey;\n\t\t\tif (pKey === undefined || pKey === null) return { rowspan: 1, colspan: 1 };\n\t\t\tif (state.spanColumns.findIndex((f) => f.prop === pKey) !== -1) {\n\t\t\t\tconst rowspan = state.tableSpanData[pKey]?.[rowIndex] ?? 0;\n\t\t\t\tif (rowspan > 0) {\n\t\t\t\t\treturn { rowspan, colspan: 1 };\n\t\t\t\t}\n\t\t\t\treturn { rowspan: 0, colspan: 0 };\n\t\t\t}\n\t\t\treturn { rowspan: 1, colspan: 1 };\n\t\t};\n\n\t\tconst handleHeaderDragend = (newWidth: number, oldWidth: number, column: TableColumnCtx<DefaultRow>, event: MouseEvent) => {\n\t\t\tstate.orgColumns.forEach((f) => {\n\t\t\t\tif (column.property === f.prop) {\n\t\t\t\t\tf.width = newWidth;\n\t\t\t\t\tf.smallWidth = newWidth;\n\t\t\t\t}\n\t\t\t});\n\t\t\temit(\"headerDragend\", newWidth, oldWidth, column, event);\n\t\t\tif (props.columnsChange) reportColumnTask(notifyColumnsChange());\n\t\t};\n\n\t\tconst handleImagePreview = (url: string) => {\n\t\t\tstate.previewList = [url];\n\t\t\tstate.imagePreview = true;\n\t\t};\n\n\t\tconst tableColumnOmitNames = [\"multiOrder\", \"columnId\", \"order\", \"sortableField\", \"disabledSortable\", \"spanProp\", \"pureSearch\", \"search\"];\n\t\tconst searchFormSlotNames = computed(() => [\n\t\t\t...new Set(state.searchColumns.flatMap((column) => (typeof column.search?.slot === \"string\" ? [column.search.slot] : []))),\n\t\t]);\n\t\tconst tableColumnSlotNames = computed(() => [\n\t\t\t...new Set(state.tableColumns.flatMap((column) => [column.slot, column.headerSlot].filter((name) => typeof name === \"string\"))),\n\t\t]);\n\t\tconst searchInputClearable = computed(() => {\n\t\t\tconst value = state.searchParam.searchValue;\n\t\t\treturn (value !== undefined && value !== \"\") || state.searchValueUpdate.length > 0;\n\t\t});\n\n\t\twatch(\n\t\t\t() => props.columns,\n\t\t\t() => {\n\t\t\t\tloadTableColumns();\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.initParam,\n\t\t\t() => {\n\t\t\t\t// 如果初始化参数改变了,则需要改变对应的搜索参数\n\t\t\t\tObject.entries(getInitParam()).forEach(([key, value]) => {\n\t\t\t\t\tstate.searchParam[key] = value;\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.data,\n\t\t\t() => {\n\t\t\t\tif (!props.requestApi && props.autoRefresh) {\n\t\t\t\t\treturn tableSearch();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatchEffect((onCleanup) => {\n\t\t\tconst element = elementRef.value;\n\t\t\tif (element) {\n\t\t\t\tconst observer = new ResizeObserver((entries) => {\n\t\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\t\tconst { width, height } = entry.contentRect;\n\t\t\t\t\t\tconst widthChanged = state.tableWidth !== width;\n\t\t\t\t\t\tstate.tableWidth = width;\n\t\t\t\t\t\tstate.tableHeight = height;\n\t\t\t\t\t\tif (widthChanged) reportColumnTask(resizeTableColumns());\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tobserver.observe(element);\n\n\t\t\t\tonCleanup(() => observer.disconnect());\n\t\t\t}\n\t\t});\n\n\t\tonBeforeUnmount(() => {\n\t\t\tnotifyColumnsChange.cancel(unmountedError);\n\t\t\tresizeTableColumns.cancel(unmountedError);\n\t\t});\n\n\t\tonMounted(async () => {\n\t\t\tstate.initParam = getInitParam();\n\t\t\tdefaultSearchTime();\n\t\t\t// 初始化搜索表单的时候,如果有默认搜索参数,则重置默认的搜索参数\n\t\t\tObject.entries(getInitParam()).forEach(([key, value]) => {\n\t\t\t\tstate.searchParam[key] = value;\n\t\t\t});\n\t\t\tawait tableSearch();\n\t\t\tloadTableColumns();\n\t\t\tif (!props.requestApi && props.autoRefresh) await tableSearch();\n\t\t});\n\n\t\tonActivated(() => {\n\t\t\t// 解决 keep-alive 后自动列宽失效的问题\n\t\t\thandleTableColumnAutoWidth();\n\t\t});\n\n\t\tconst elTableProps = useProps(props, tableProps, [\"data\", \"spanMethod\", \"headerCellClassName\", \"cellClassName\"]);\n\n\t\tuseRender(() => (\n\t\t\t<div\n\t\t\t\tref={elementRef}\n\t\t\t\tclass={[\"fa-table\", `fa-table-${globalSize.value}`, `fa-table__${props.tableKey}`, { fa__click__disabled: state.loading }]}\n\t\t\t\tstyle={{\n\t\t\t\t\t\"--fa-table-width\": state.tableWidth ? `${state.tableWidth}px` : \"\",\n\t\t\t\t\t\"--fa-table-height\": state.tableHeight ? `${state.tableHeight}px` : \"\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<FaTableSearchForm\n\t\t\t\t\tvSlots={pick(slots, searchFormSlotNames.value)}\n\t\t\t\t\tshow={props.searchForm && state.searchForm}\n\t\t\t\t\tcollapsedSearch={props.collapsedSearch}\n\t\t\t\t\tadvancedSearchDrawer={props.advancedSearchDrawer}\n\t\t\t\t\tcols={props.searchFormCols}\n\t\t\t\t\tsearch={tableSearch}\n\t\t\t\t\treset={tableReset}\n\t\t\t\t/>\n\t\t\t\t{slots.topHeader && (\n\t\t\t\t\t<div class=\"el-card fa-table__header\">{slots.topHeader({ search: tableSearch, ...getTableDefaultSlots(state) })}</div>\n\t\t\t\t)}\n\t\t\t\t<div class=\"el-card fa-table__main\">\n\t\t\t\t\t{props.headerCard && (\n\t\t\t\t\t\t<div class=\"fa-table__main-header\">\n\t\t\t\t\t\t\t<div class=\"fa-table__main-header-left\">{slots.header?.({ search: tableSearch, ...getTableDefaultSlots(state) })}</div>\n\t\t\t\t\t\t\t<div class=\"fa-table__main-header-right\">\n\t\t\t\t\t\t\t\t{props.toolBtn && (\n\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__main-header-right__div-search\">\n\t\t\t\t\t\t\t\t\t\t\t<ElInput\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"fa-table__main-header-right__input-search\"\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\tprefixIcon={Search}\n\t\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"关键字搜索\"\n\t\t\t\t\t\t\t\t\t\t\t\tvModel_trim={state.searchParam.searchValue}\n\t\t\t\t\t\t\t\t\t\t\t\tclearable={searchInputClearable.value}\n\t\t\t\t\t\t\t\t\t\t\t\tonCompositionupdate={(e: CompositionEvent) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.searchValueUpdate = e.data;\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tonCompositionend={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.searchValueUpdate = \"\";\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={tableSearch}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__main-header-right__div-search__hidden\">\n\t\t\t\t\t\t\t\t\t\t\t\t{state.searchParam.searchValue}\n\t\t\t\t\t\t\t\t\t\t\t\t{state.searchValueUpdate}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t{props.requestApi && !props.hideSearchTime && (\n\t\t\t\t\t\t\t\t\t\t\t<ElDatePicker\n\t\t\t\t\t\t\t\t\t\t\t\t{...{\n\t\t\t\t\t\t\t\t\t\t\t\t\t// ElDatePicker 的 JSX 类型未声明 change 事件,运行时由内部 Picker 触发。\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChange: tableSearch,\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"fa-table__main-header-right__data-search\"\n\t\t\t\t\t\t\t\t\t\t\t\tpopperClass=\"fa-table__main-header-right__data-search__popper\"\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"daterange\"\n\t\t\t\t\t\t\t\t\t\t\t\tvModel={state.searchParam.searchTimeList}\n\t\t\t\t\t\t\t\t\t\t\t\tdefaultTime={createOneMonthRangeFromToday(props.futureSearchTime)}\n\t\t\t\t\t\t\t\t\t\t\t\tshortcuts={createDateRangeShortcuts(props.futureSearchTime)}\n\t\t\t\t\t\t\t\t\t\t\t\tvalueFormat=\"YYYY-MM-DD HH:mm:ss\"\n\t\t\t\t\t\t\t\t\t\t\t\tclearable={false}\n\t\t\t\t\t\t\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t\t\t\t\t\t\t\tfallbackPlacements={[\"top\"]}\n\t\t\t\t\t\t\t\t\t\t\t\tunlinkPanels\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{props.refreshBtn && (\n\t\t\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"刷新\"\n\t\t\t\t\t\t\t\t\t\t\t\tcircle\n\t\t\t\t\t\t\t\t\t\t\t\ticon={Refresh}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={tableSearch}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{props.searchBtn && state.searchColumns.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle={state.searchForm ? \"隐藏搜索栏\" : \"显示搜索栏\"}\n\t\t\t\t\t\t\t\t\t\t\t\tcircle\n\t\t\t\t\t\t\t\t\t\t\t\ticon={Search}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => (state.searchForm = !state.searchForm)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{props.columnSettingBtn && props.columns && (\n\t\t\t\t\t\t\t\t\t\t\t<ElDropdown title=\"表格列配置\" trigger=\"click\">\n\t\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\t\tdefault: () => <ElButton loading={state.loading} loadingIcon={Eleme} circle icon={Setting} />,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdropdown: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{slots.columnSetting?.()}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElDropdownItem title=\"表格列配置\" divided onClick={() => columnSettingRef.value?.open()}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t表格列配置\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ElDropdownItem>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t</ElDropdown>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{slots.toolButton?.({ search: tableSearch, ...getTableDefaultSlots(state) })}\n\t\t\t\t\t\t\t\t\t\t{slots.toolButtonAdv && (\n\t\t\t\t\t\t\t\t\t\t\t<ElDropdown title=\"高级操作\" trigger=\"click\">\n\t\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\t\tdefault: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElButton loading={state.loading} loadingIcon={Eleme} circle icon={More}></ElButton>\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\tdropdown: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{slots.toolButtonAdv?.({ search: tableSearch, ...getTableDefaultSlots(state) })}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t</ElDropdown>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<ElTable\n\t\t\t\t\t\t{...elTableProps.value}\n\t\t\t\t\t\tref={tableRef}\n\t\t\t\t\t\tvLoading={state.loading}\n\t\t\t\t\t\telement-loading-text={state.loadingText}\n\t\t\t\t\t\tdata={state.tableData}\n\t\t\t\t\t\tspanMethod={handleSpanMethod}\n\t\t\t\t\t\theaderCellClassName={handleHeaderCellClassName}\n\t\t\t\t\t\tcellClassName={handleCellClassName}\n\t\t\t\t\t\tonSelection-change={handleSelectionChange}\n\t\t\t\t\t\tonSort-change={handleSortChange}\n\t\t\t\t\t\tonSelect={handleSelect}\n\t\t\t\t\t\tonSelect-all={handleSelectAll}\n\t\t\t\t\t\tonCurrent-change={handleCurrentChange}\n\t\t\t\t\t\tonHeader-dragend={handleHeaderDragend}\n\t\t\t\t\t\tonCell-mouse-enter={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellMouseEnter\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-mouse-leave={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellMouseLeave\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-click={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellClick\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-dblclick={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellDblclick\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-contextmenu={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellContextmenu\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonRow-click={(row: DefaultRow, column: TableColumnCtx<DefaultRow> | null, event: Event) => {\n\t\t\t\t\t\t\tif (column) emit(\"rowClick\", row, column, event);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRow-contextmenu={(row: DefaultRow, column: TableColumnCtx<DefaultRow> | null, event: Event) => {\n\t\t\t\t\t\t\tif (column) emit(\"rowContextmenu\", row, column, event);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRow-dblclick={(row: DefaultRow, column: TableColumnCtx<DefaultRow> | null, event: Event) => {\n\t\t\t\t\t\t\tif (column) emit(\"rowDblclick\", row, column, event);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonHeader-click={(column: TableColumnCtx<DefaultRow>, event: Event) => emit(\"headerClick\", column, event)}\n\t\t\t\t\t\tonHeader-contextmenu={(column: TableColumnCtx<DefaultRow>, event: Event) => emit(\"headerContextmenu\", column, event)}\n\t\t\t\t\t\tonFilter-change={(newFilters: Record<string, string[]>) => emit(\"filterChange\", newFilters)}\n\t\t\t\t\t\tonExpand-change={(row: DefaultRow, expanded: boolean | DefaultRow[]) => emit(\"expandChange\", row, expanded)}\n\t\t\t\t\t\tonScroll={(data: { scrollLeft: number; scrollTop: number }) => emit(\"scroll\", data)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\tappend: () => slots.append?.(),\n\t\t\t\t\t\t\tempty: () => (\n\t\t\t\t\t\t\t\t<div class=\"fa-table__empty\">\n\t\t\t\t\t\t\t\t\t{slots.empty ? (\n\t\t\t\t\t\t\t\t\t\tslots.empty()\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t<NotData />\n\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t<div>暂无数据</div>\n\t\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tdefault: () => (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t{slots.expand && (\n\t\t\t\t\t\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"fa-table__expand-column\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"expand\"\n\t\t\t\t\t\t\t\t\t\t\tfixed=\"left\"\n\t\t\t\t\t\t\t\t\t\t\twidth={35}\n\t\t\t\t\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\t\t\t\t\tshowOverflowTooltip={false}\n\t\t\t\t\t\t\t\t\t\t\tresizable={false}\n\t\t\t\t\t\t\t\t\t\t\tcolumnKey=\"__table-expand\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\tdefault: ({\n\t\t\t\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t$index,\n\t\t\t\t\t\t\t\t\t\t\t\t}: {\n\t\t\t\t\t\t\t\t\t\t\t\t\trow: DefaultRow;\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn: TableColumnCtx<DefaultRow>;\n\t\t\t\t\t\t\t\t\t\t\t\t\t$index: number;\n\t\t\t\t\t\t\t\t\t\t\t\t}) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\tslots.expand?.({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$index,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsearch: tableSearch,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(state),\n\t\t\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{props.selectionColumn && (\n\t\t\t\t\t\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"fa-table__selection-column\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"selection\"\n\t\t\t\t\t\t\t\t\t\t\tfixed=\"left\"\n\t\t\t\t\t\t\t\t\t\t\twidth={35}\n\t\t\t\t\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\t\t\t\t\treserveSelection\n\t\t\t\t\t\t\t\t\t\t\tshowOverflowTooltip={false}\n\t\t\t\t\t\t\t\t\t\t\tresizable={false}\n\t\t\t\t\t\t\t\t\t\t\tcolumnKey=\"__table-selection\"\n\t\t\t\t\t\t\t\t\t\t\tselectable={props.rowSelectable}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{props.indexColumn && (\n\t\t\t\t\t\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"fa-table__index-column\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"index\"\n\t\t\t\t\t\t\t\t\t\t\tfixed=\"left\"\n\t\t\t\t\t\t\t\t\t\t\twidth={\n\t\t\t\t\t\t\t\t\t\t\t\tstate.tablePagination.pageIndex * state.tablePagination.pageSize >= 100\n\t\t\t\t\t\t\t\t\t\t\t\t\t? state.tablePagination.pageIndex * state.tablePagination.pageSize >= 1000\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 50\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 40\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 30\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\t\t\t\t\tindex={indexMethod}\n\t\t\t\t\t\t\t\t\t\t\tshowOverflowTooltip={false}\n\t\t\t\t\t\t\t\t\t\t\tresizable={false}\n\t\t\t\t\t\t\t\t\t\t\tcolumnKey=\"__table-index\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{state.tableColumns.length === 0\n\t\t\t\t\t\t\t\t\t\t? slots.default?.()\n\t\t\t\t\t\t\t\t\t\t: state.tableColumns.map(\n\t\t\t\t\t\t\t\t\t\t\t\t(col) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\tcol.show &&\n\t\t\t\t\t\t\t\t\t\t\t\t\tcol.prop && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FaTableColumn\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvSlots={pick(slots, tableColumnSlotNames.value)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{...omit(col, tableColumnOmitNames)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thideImage={props.hideImage}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresizable={true}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonImagePreview={handleImagePreview}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonCustomCellClick={handleCustomCellClick}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{slots.operation && (\n\t\t\t\t\t\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\t\t\t\t\t\tfixed=\"right\"\n\t\t\t\t\t\t\t\t\t\t\twidth={state.operationColumnWidth}\n\t\t\t\t\t\t\t\t\t\t\theaderAlign=\"center\"\n\t\t\t\t\t\t\t\t\t\t\talign=\"left\"\n\t\t\t\t\t\t\t\t\t\t\tshowOverflowTooltip={false}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"fa-table__operation-column\"\n\t\t\t\t\t\t\t\t\t\t\tresizable={false}\n\t\t\t\t\t\t\t\t\t\t\tcolumnKey=\"__table-operation\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\theader: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__auto-width-column__cell-header __fa-table__auto-width-column__cell-header____table-operation\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>操作</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\tdefault: ({ row, column, $index }: { row: DefaultRow; column: FaTableColumnCtx; $index: number }) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__auto-width-column__cell __fa-table__auto-width-column__cell____table-operation\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{slots.operation?.({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$index,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsearch: tableSearch,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(state),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}}\n\t\t\t\t\t</ElTable>\n\t\t\t\t\t<div class=\"fa-table__main-footer\">\n\t\t\t\t\t\t<div class=\"fa-table__main-footer__left\">{slots.footer?.({ search: tableSearch, ...getTableDefaultSlots(state) })}</div>\n\t\t\t\t\t\t{slots.pagination ? (\n\t\t\t\t\t\t\tslots.pagination({\n\t\t\t\t\t\t\t\tpageIndex: state.tablePagination.pageIndex,\n\t\t\t\t\t\t\t\tpageSize: state.tablePagination.pageSize,\n\t\t\t\t\t\t\t\ttotalRows: state.tablePagination.totalRows,\n\t\t\t\t\t\t\t\thandleSizeChange,\n\t\t\t\t\t\t\t\thandlePaginationChange,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t{props.pagination ? (\n\t\t\t\t\t\t\t\t\t<FaTablePagination\n\t\t\t\t\t\t\t\t\t\tpageSizes={props.pageSizes}\n\t\t\t\t\t\t\t\t\t\tonSizeChange={handleSizeChange}\n\t\t\t\t\t\t\t\t\t\tonCurrentChange={handlePaginationChange}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<ElPagination class=\"fa-table-pagination\" size=\"small\" layout=\"total\" total={state.tableData.length} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t{state.imagePreview && (\n\t\t\t\t\t<ElImageViewer\n\t\t\t\t\t\tcloseOnPressEscape\n\t\t\t\t\t\thideOnClickModal\n\t\t\t\t\t\tteleported\n\t\t\t\t\t\tshowProgress\n\t\t\t\t\t\tonClose={() => (state.imagePreview = false)}\n\t\t\t\t\t\turlList={state.previewList}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t{props.columnSettingBtn && <FaTableColumnsSettingDialog ref={columnSettingRef} change={props.columnsChange} />}\n\t\t\t</div>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** 用于多选表格,清空用户的选择 */\n\t\t\tclearSelection: computed(() => tableRef.value?.clearSelection),\n\t\t\t/** 返回当前选中的行 */\n\t\t\tgetSelectionRows: computed(() => tableRef.value?.getSelectionRows),\n\t\t\t/** 返回当前半选中的行。 */\n\t\t\tgetHalfSelectionRows: computed(() => tableRef.value?.getHalfSelectionRows),\n\t\t\t/** 用于多选表格,切换某一行的选中状态, 如果使用了第二个参数,则可直接设置这一行选中与否 */\n\t\t\ttoggleRowSelection: computed(() => tableRef.value?.toggleRowSelection),\n\t\t\t/** 用于多选表格,切换全选和全不选 */\n\t\t\ttoggleAllSelection: computed(() => tableRef.value?.toggleAllSelection),\n\t\t\t/** 用于可扩展的表格或树表格,如果某行被扩展,则切换。 使用第二个参数,您可以直接设置该行应该被扩展或折叠。 */\n\t\t\ttoggleRowExpansion: computed(() => tableRef.value?.toggleRowExpansion),\n\t\t\t/** 用于单选表格,设定某一行为选中行, 如果调用时不加参数,则会取消目前高亮行的选中状态。 */\n\t\t\tsetCurrentRow: computed(() => tableRef.value?.setCurrentRow),\n\t\t\t/** 用于清空排序条件,数据会恢复成未排序的状态 */\n\t\t\tclearSort: computed(() => tableRef.value?.clearSort),\n\t\t\t/** 传入由columnKey 组成的数组以清除指定列的过滤条件。 如果没有参数,清除所有过滤器 */\n\t\t\tclearFilter: computed(() => tableRef.value?.clearFilter),\n\t\t\t/** 对 Table 进行重新布局。 当表格可见性变化时,您可能需要调用此方法以获得正确的布局 */\n\t\t\tdoLayout: computed(() => tableRef.value?.doLayout),\n\t\t\t/** 手动排序表格。 参数 prop 属性指定排序列,order 指定排序顺序。 */\n\t\t\tsort: computed(() => tableRef.value?.sort),\n\t\t\t/** 滚动到一组特定坐标 */\n\t\t\tscrollTo: computed(() => tableRef.value?.scrollTo),\n\t\t\t/** 设置垂直滚动位置 */\n\t\t\tsetScrollTop: computed(() => tableRef.value?.setScrollTop),\n\t\t\t/** 设置水平滚动位置 */\n\t\t\tsetScrollLeft: computed(() => tableRef.value?.setScrollLeft),\n\t\t\t/** 获取表列的 context */\n\t\t\tcolumns: computed(() => tableRef.value?.columns),\n\t\t\t/** 适用于 lazy Table, 需要设置 rowKey, 更新 key children */\n\t\t\tupdateKeyChildren: computed(() => tableRef.value?.updateKeyChildren),\n\t\t\t/** 聚合加载状态;手动关闭不能结束内部任务。 */\n\t\t\tloading: computed({ get: () => state.loading, set: setManualLoading }),\n\t\t\t/** 表格数据 */\n\t\t\ttableData: computed(() => state.tableData),\n\t\t\t/** 分页数据 */\n\t\t\ttablePagination: computed(() => state.tablePagination),\n\t\t\t/** 搜索参数 */\n\t\t\tsearchParam: computed(() => state.searchParam),\n\t\t\t/** 选中状态 */\n\t\t\tselected: computed(() => state.selected),\n\t\t\t/** 选中数据列表 */\n\t\t\tselectedList: computed(() => state.selectedList),\n\t\t\t/** 选中数据 rowKey 列表 */\n\t\t\tselectedListIds: computed(() => state.selectedListIds),\n\t\t\t/** 部分选中数据 rowKey 列表 */\n\t\t\tindeterminateSelectedListIds: computed(() => state.indeterminateSelectedListIds),\n\t\t\t/** 表格宽度 */\n\t\t\ttableWidth: computed(() => state.tableWidth),\n\t\t\t/** 表格高度 */\n\t\t\ttableHeight: computed(() => state.tableHeight),\n\t\t\t/** 部分选中(样式不一样而已),用于多选表格,切换某一行的选中状态, 如果使用了第二个参数,则可直接设置这一行选中与否 */\n\t\t\ttoggleRowIndeterminateSelection,\n\t\t\t/** 异步方法,刷新表格 */\n\t\t\trefresh: tableSearch,\n\t\t\t/** 异步方法,重置表格 */\n\t\t\treset: tableReset,\n\t\t\t/** 对 Table 进行重新渲染。当 TableKey 发生变化的时候可以通过此方法重新渲染表格 */\n\t\t\tdoRender,\n\t\t\t/** Table 加载 */\n\t\t\tdoLoading,\n\t\t});\n\t},\n});\n"],"mappings":"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"}
@@ -20,9 +20,9 @@ export interface FaTableDefaultSlotsResult {
20
20
  * @returns 可传给业务插槽的选择、搜索和加载状态。
21
21
  */
22
22
  export declare const getTableDefaultSlots: (state: FaTableState) => FaTableDefaultSlotsResult;
23
- /** FaTable 默认时间搜索支持的快捷日期范围。 */
23
+ /** FaTable 默认时间搜索支持的快捷日期范围 */
24
24
  export type FaTableDataRange = "Past1D" | "Past3D" | "Past1W" | "Past1M" | "Past3M" | "Past6M" | "Past1Y" | "Past3Y";
25
- /** FaTable 枚举列的选项配置。 */
25
+ /** FaTable 枚举列的选项配置 */
26
26
  export interface FaTableEnumColumnCtx {
27
27
  /**
28
28
  * 选项框显示的文字
@@ -58,9 +58,9 @@ export interface FaTableEnumColumnCtx {
58
58
  export type FaTableEnumColumnType = string | FaTableEnumColumnCtx[] | ((context?: {
59
59
  row: DefaultRow;
60
60
  }) => FaTableEnumColumnCtx[]);
61
- /** FaTable 搜索项支持的内置组件名或自定义组件名。 */
61
+ /** FaTable 搜索项支持的内置组件名或自定义组件名 */
62
62
  export type FaTableSearchColumnEl = "" | "el-input" | "el-input-number" | "el-select" | "el-select-v2" | "el-tree-select" | "el-cascader" | "el-date-picker" | "el-time-picker" | "el-time-select" | "el-switch" | "el-slider" | "slot" | (string & Record<never, never>);
63
- /** FaTable 单列搜索项的组件、布局和默认值配置。 */
63
+ /** FaTable 单列搜索项的组件、布局和默认值配置 */
64
64
  export type FaTableSearchColumnCtx = Partial<Record<FaLayoutGridBreakpoint, FaLayoutGridItemResponsive>> & {
65
65
  /**
66
66
  * 当前项搜索框的类型
@@ -100,11 +100,8 @@ export type FaTableSearchColumnCtx = Partial<Record<FaLayoutGridBreakpoint, FaLa
100
100
  defaultValue?: unknown;
101
101
  };
102
102
  /**
103
- * FaTable 内置业务列类型。
103
+ * FaTable 内置业务列类型
104
104
  * @property default 默认
105
- * @property selection 选择列
106
- * @property expand 可展开按钮列
107
- * @property expand 可展开按钮列
108
105
  * @property image 图片列
109
106
  * @property date 日期显示(格式 "YYYY-MM-DD")
110
107
  * @property time 时间显示(格式 "HH:mm:ss")
@@ -117,7 +114,7 @@ export type FaTableSearchColumnCtx = Partial<Record<FaLayoutGridBreakpoint, FaLa
117
114
  * @property gd6 数值列,保留 6 位小数,带千分位
118
115
  * @property timeInfo 时间信息列
119
116
  */
120
- export type FaTableColumnType = "default" | "selection" | "index" | "expand" | "image" | "date" | "time" | "dateTime" | "d2" | "d4" | "d6" | "gd2" | "gd4" | "gd6" | "timeInfo";
117
+ export type FaTableColumnType = "default" | "image" | "date" | "time" | "dateTime" | "d2" | "d4" | "d6" | "gd2" | "gd4" | "gd6" | "timeInfo";
121
118
  /** FaTable 日期、时间列支持的格式化模板。 */
122
119
  export type FaTableColumnDateFormat = "YYYY-MM-DD HH:mm:ss" | "YYYY-MM-DD HH:mm" | "YYYY-MM-DD" | "YYYY-MM" | "YYYY" | "MM" | "DD" | "MM-DD" | "HH:mm:ss" | "HH:mm" | "HH" | "mm:ss" | "mm" | "ss";
123
120
  /** FaTable 列配置,扩展 Element Plus 列能力和 Fast 业务渲染选项。 */
@@ -1 +1 @@
1
- {"version":3,"file":"table.type.mjs","names":[],"sources":["../../../../src/components/table/src/table.type.ts"],"sourcesContent":["import type { TableColumnCtx } from \"element-plus\";\nimport type { VNode } from \"vue\";\nimport type { FaLayoutGridBreakpoint, FaLayoutGridItemResponsive } from \"../../layoutGrid\";\nimport type { PagedInput } from \"./page.type\";\nimport type { DefaultRow, FaTableState } from \"./table.state\";\n\n/** FaTable 默认插槽共享的状态与操作。 */\nexport interface FaTableDefaultSlotsResult {\n\tloading: boolean;\n\tsearchParam: PagedInput;\n\tselected: boolean;\n\tselectedList: DefaultRow[];\n\tselectedListIds: (string | number)[];\n\tindeterminateSelectedListIds: (string | number)[];\n\t/** 可能为空 */\n\tsearch?: () => Promise<void>;\n}\n\n/**\n * 获取 FaTable 默认插槽共享数据。\n * @param state - FaTable 内部状态。\n * @returns 可传给业务插槽的选择、搜索和加载状态。\n */\nexport const getTableDefaultSlots = (state: FaTableState): FaTableDefaultSlotsResult => {\n\treturn {\n\t\tloading: state.loading,\n\t\tsearchParam: state.searchParam,\n\t\tselected: state.selected,\n\t\tselectedList: state.selectedList,\n\t\tselectedListIds: state.selectedListIds,\n\t\tindeterminateSelectedListIds: state.indeterminateSelectedListIds,\n\t};\n};\n\n/** FaTable 默认时间搜索支持的快捷日期范围。 */\nexport type FaTableDataRange = \"Past1D\" | \"Past3D\" | \"Past1W\" | \"Past1M\" | \"Past3M\" | \"Past6M\" | \"Past1Y\" | \"Past3Y\";\n\n/** FaTable 枚举列的选项配置。 */\nexport interface FaTableEnumColumnCtx {\n\t/**\n\t * 选项框显示的文字\n\t */\n\tlabel: string;\n\t/**\n\t * 选项框值\n\t */\n\tvalue: string | number | boolean;\n\t/**\n\t * 显示\n\t */\n\tshow?: boolean;\n\t/**\n\t * 是否禁用此选项\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * 为树形选择是,可以通过 children 属性指定子选项\n\t */\n\tchildren?: FaTableEnumColumnCtx[];\n\t/**\n\t * 提示\n\t */\n\ttips?: string;\n\t/**\n\t * Tag的类型,默认 \"primary\"\n\t */\n\ttype?: \"primary\" | \"success\" | \"info\" | \"warning\" | \"danger\";\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- 枚举项允许携带业务接口定义的附加字段。\n\t[key: string]: any;\n}\n\n/** FaTable 枚举列接受的字典名称、选项集合或选项工厂。 */\nexport type FaTableEnumColumnType = string | FaTableEnumColumnCtx[] | ((context?: { row: DefaultRow }) => FaTableEnumColumnCtx[]);\n\n/** FaTable 搜索项支持的内置组件名或自定义组件名。 */\nexport type FaTableSearchColumnEl =\n\t| \"\"\n\t| \"el-input\"\n\t| \"el-input-number\"\n\t| \"el-select\"\n\t| \"el-select-v2\"\n\t| \"el-tree-select\"\n\t| \"el-cascader\"\n\t| \"el-date-picker\"\n\t| \"el-time-picker\"\n\t| \"el-time-select\"\n\t| \"el-switch\"\n\t| \"el-slider\"\n\t| \"slot\"\n\t| (string & Record<never, never>);\n\n/** FaTable 单列搜索项的组件、布局和默认值配置。 */\nexport type FaTableSearchColumnCtx = Partial<Record<FaLayoutGridBreakpoint, FaLayoutGridItemResponsive>> & {\n\t/**\n\t * 当前项搜索框的类型\n\t */\n\tel: FaTableSearchColumnEl;\n\t/**\n\t * 搜索项参数,根据 element plus 官方文档来传递,该属性所有值会透传到组件\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- 搜索组件透传属性由具体组件和业务配置共同定义。\n\tprops?: Record<string, any>;\n\t/**\n\t * 当搜索项 label 不为列 label 属性时,可通过 label 指定\n\t */\n\tlabel?: string;\n\t/**\n\t * 当搜索项 key 不为 prop 属性时,可通过 key 指定\n\t */\n\tkey?: string;\n\t/**\n\t * 搜索项排序(从大到小)\n\t */\n\torder?: number;\n\t/**\n\t * 搜索项所占用的列数,默认为1列\n\t */\n\tspan?: number;\n\t/**\n\t * 搜索字段左侧偏移列数\n\t */\n\toffset?: number;\n\t/**\n\t * 插槽名称\n\t */\n\tslot?: string;\n\t/**\n\t * 搜索项默认值\n\t */\n\tdefaultValue?: unknown;\n};\n\n/**\n * FaTable 内置业务列类型。\n * @property default 默认\n * @property selection\t 选择列\n * @property expand 可展开按钮列\n * @property expand 可展开按钮列\n * @property image 图片列\n * @property date 日期显示(格式 \"YYYY-MM-DD\")\n * @property time 时间显示(格式 \"HH:mm:ss\")\n * @property dateTime 日期时间显示(格式 \"YYYY-MM-DD HH:mm:ss\")\n * @property d2 数值列,保留 2 位小数,不带千分位\n * @property d4 数值列,保留 4 位小数,不带千分位\n * @property d6 数值列,保留 6 位小数,不带千分位\n * @property gd2 数值列,保留 2 位小数,带千分位\n * @property gd4 数值列,保留 4 位小数,带千分位\n * @property gd6 数值列,保留 6 位小数,带千分位\n * @property timeInfo 时间信息列\n */\nexport type FaTableColumnType =\n\t\"default\" | \"selection\" | \"index\" | \"expand\" | \"image\" | \"date\" | \"time\" | \"dateTime\" | \"d2\" | \"d4\" | \"d6\" | \"gd2\" | \"gd4\" | \"gd6\" | \"timeInfo\";\n\n/** FaTable 日期、时间列支持的格式化模板。 */\nexport type FaTableColumnDateFormat =\n\t| \"YYYY-MM-DD HH:mm:ss\"\n\t| \"YYYY-MM-DD HH:mm\"\n\t| \"YYYY-MM-DD\"\n\t| \"YYYY-MM\"\n\t| \"YYYY\"\n\t| \"MM\"\n\t| \"DD\"\n\t| \"MM-DD\"\n\t| \"HH:mm:ss\"\n\t| \"HH:mm\"\n\t| \"HH\"\n\t| \"mm:ss\"\n\t| \"mm\"\n\t| \"ss\";\n\n/** FaTable 列配置,扩展 Element Plus 列能力和 Fast 业务渲染选项。 */\nexport type FaTableColumnCtx<T extends DefaultRow = DefaultRow> = Partial<\n\tOmit<TableColumnCtx<T>, \"order\" | \"type\" | \"prop\" | \"sortable\" | \"_children\">\n> & {\n\t/**\n\t * 内部的计算属性,一般不做使用\n\t */\n\tmultiOrder?: \"\" | \"ascending\" | \"descending\";\n\t/**\n\t * 列Id\n\t */\n\tcolumnId?: number | string;\n\t/**\n\t * 排序\n\t */\n\torder?: number;\n\t/**\n\t * 排序字段\n\t */\n\tsortableField?: string;\n\t/**\n\t * 禁用排序配置\n\t */\n\tdisabledSortable?: boolean;\n\t/**\n\t * 合并行字段\n\t */\n\tspanProp?: string;\n\t/**\n\t * 纯搜索\n\t */\n\tpureSearch?: boolean;\n\t/**\n\t * 搜索项配置\n\t */\n\tsearch?: FaTableSearchColumnCtx;\n\t/** 上面所有属性,全部非 FaTableColumn props,均为计算属性 */\n\t/**\n\t * 对应列的类型\n\t */\n\ttype?: FaTableColumnType;\n\t/**\n\t * 字段名称\n\t */\n\tprop?: string;\n\t/**\n\t * 是否显示在表格当中,默认 true\n\t */\n\tshow?: boolean;\n\t/**\n\t * 对应列是否可以排序,\n\t * 默认为 'custom' 模式,即远程排序,\n\t * 需要监听 Table 的 sort-change 事件\n\t */\n\tsortable?: boolean;\n\t/**\n\t * 小页面的宽度,如果为空,则继承默认宽度\n\t */\n\tsmallWidth?: string | number;\n\t/**\n\t * 自适应宽度\n\t */\n\tautoWidth?: boolean;\n\t/**\n\t * 插槽名称\n\t */\n\tslot?: string;\n\t/**\n\t * 表格头部插槽名称\n\t */\n\theaderSlot?: string;\n\t/**\n\t * 自定义表头内容渲染(tsx语法)\n\t */\n\theaderRender?: ({ column, $index }: { column: TableColumnCtx<DefaultRow>; $index: number } & FaTableDefaultSlotsResult) => VNode[];\n\t/**\n\t * 自定义单元格内容渲染(tsx语法)\n\t */\n\trender?: ({ row, column, $index }: { row: DefaultRow; column: FaTableColumnCtx; $index: number } & FaTableDefaultSlotsResult) => VNode[];\n\t/**\n\t * 多级表头\n\t */\n\t_children?: FaTableColumnCtx<T>[];\n\t/**\n\t * 复制\n\t */\n\tcopy?: boolean;\n\t/**\n\t * 是否为 Link Button\n\t */\n\tlink?: boolean;\n\t/**\n\t * 点击事件,优先级最高\n\t */\n\tclick?: ({ row, $index }: { row: T; $index?: number } & FaTableDefaultSlotsResult) => void;\n\t/**\n\t * 点击Emits事件回调\n\t */\n\tclickEmit?: string;\n\t/**\n\t * 图片列是否显示为原图,默认 false 显示缩略图\n\t */\n\toriginalImage?: boolean;\n\t/**\n\t * 显示时间格式化字符串,默认 false\n\t */\n\tdateFix?: boolean;\n\t/**\n\t * 显示在页面中的日期格式\n\t */\n\tdateFormat?: FaTableColumnDateFormat;\n\t/**\n\t * 是否是标签展示,默认 false\n\t */\n\ttag?: boolean;\n\t/**\n\t * 枚举类型(渲染值的字典)\n\t */\n\tenum?: FaTableEnumColumnType;\n\t/**\n\t * 数据删除字段,如果为 true 会显示遮罩层\n\t */\n\tdataDeleteField?: string;\n\t/**\n\t * 时间信息字段\n\t */\n\ttimeInfoField?: { userName?: string; time?: string };\n};\n"],"mappings":";;;;;;AAuBA,MAAa,wBAAwB,UAAmD;CACvF,OAAO;EACN,SAAS,MAAM;EACf,aAAa,MAAM;EACnB,UAAU,MAAM;EAChB,cAAc,MAAM;EACpB,iBAAiB,MAAM;EACvB,8BAA8B,MAAM;CACrC;AACD"}
1
+ {"version":3,"file":"table.type.mjs","names":[],"sources":["../../../../src/components/table/src/table.type.ts"],"sourcesContent":["import type { TableColumnCtx } from \"element-plus\";\nimport type { VNode } from \"vue\";\nimport type { FaLayoutGridBreakpoint, FaLayoutGridItemResponsive } from \"../../layoutGrid\";\nimport type { PagedInput } from \"./page.type\";\nimport type { DefaultRow, FaTableState } from \"./table.state\";\n\n/** FaTable 默认插槽共享的状态与操作。 */\nexport interface FaTableDefaultSlotsResult {\n\tloading: boolean;\n\tsearchParam: PagedInput;\n\tselected: boolean;\n\tselectedList: DefaultRow[];\n\tselectedListIds: (string | number)[];\n\tindeterminateSelectedListIds: (string | number)[];\n\t/** 可能为空 */\n\tsearch?: () => Promise<void>;\n}\n\n/**\n * 获取 FaTable 默认插槽共享数据。\n * @param state - FaTable 内部状态。\n * @returns 可传给业务插槽的选择、搜索和加载状态。\n */\nexport const getTableDefaultSlots = (state: FaTableState): FaTableDefaultSlotsResult => {\n\treturn {\n\t\tloading: state.loading,\n\t\tsearchParam: state.searchParam,\n\t\tselected: state.selected,\n\t\tselectedList: state.selectedList,\n\t\tselectedListIds: state.selectedListIds,\n\t\tindeterminateSelectedListIds: state.indeterminateSelectedListIds,\n\t};\n};\n\n/** FaTable 默认时间搜索支持的快捷日期范围 */\nexport type FaTableDataRange = \"Past1D\" | \"Past3D\" | \"Past1W\" | \"Past1M\" | \"Past3M\" | \"Past6M\" | \"Past1Y\" | \"Past3Y\";\n\n/** FaTable 枚举列的选项配置 */\nexport interface FaTableEnumColumnCtx {\n\t/**\n\t * 选项框显示的文字\n\t */\n\tlabel: string;\n\t/**\n\t * 选项框值\n\t */\n\tvalue: string | number | boolean;\n\t/**\n\t * 显示\n\t */\n\tshow?: boolean;\n\t/**\n\t * 是否禁用此选项\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * 为树形选择是,可以通过 children 属性指定子选项\n\t */\n\tchildren?: FaTableEnumColumnCtx[];\n\t/**\n\t * 提示\n\t */\n\ttips?: string;\n\t/**\n\t * Tag的类型,默认 \"primary\"\n\t */\n\ttype?: \"primary\" | \"success\" | \"info\" | \"warning\" | \"danger\";\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- 枚举项允许携带业务接口定义的附加字段。\n\t[key: string]: any;\n}\n\n/** FaTable 枚举列接受的字典名称、选项集合或选项工厂。 */\nexport type FaTableEnumColumnType = string | FaTableEnumColumnCtx[] | ((context?: { row: DefaultRow }) => FaTableEnumColumnCtx[]);\n\n/** FaTable 搜索项支持的内置组件名或自定义组件名 */\nexport type FaTableSearchColumnEl =\n\t| \"\"\n\t| \"el-input\"\n\t| \"el-input-number\"\n\t| \"el-select\"\n\t| \"el-select-v2\"\n\t| \"el-tree-select\"\n\t| \"el-cascader\"\n\t| \"el-date-picker\"\n\t| \"el-time-picker\"\n\t| \"el-time-select\"\n\t| \"el-switch\"\n\t| \"el-slider\"\n\t| \"slot\"\n\t| (string & Record<never, never>);\n\n/** FaTable 单列搜索项的组件、布局和默认值配置 */\nexport type FaTableSearchColumnCtx = Partial<Record<FaLayoutGridBreakpoint, FaLayoutGridItemResponsive>> & {\n\t/**\n\t * 当前项搜索框的类型\n\t */\n\tel: FaTableSearchColumnEl;\n\t/**\n\t * 搜索项参数,根据 element plus 官方文档来传递,该属性所有值会透传到组件\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- 搜索组件透传属性由具体组件和业务配置共同定义。\n\tprops?: Record<string, any>;\n\t/**\n\t * 当搜索项 label 不为列 label 属性时,可通过 label 指定\n\t */\n\tlabel?: string;\n\t/**\n\t * 当搜索项 key 不为 prop 属性时,可通过 key 指定\n\t */\n\tkey?: string;\n\t/**\n\t * 搜索项排序(从大到小)\n\t */\n\torder?: number;\n\t/**\n\t * 搜索项所占用的列数,默认为1列\n\t */\n\tspan?: number;\n\t/**\n\t * 搜索字段左侧偏移列数\n\t */\n\toffset?: number;\n\t/**\n\t * 插槽名称\n\t */\n\tslot?: string;\n\t/**\n\t * 搜索项默认值\n\t */\n\tdefaultValue?: unknown;\n};\n\n/**\n * FaTable 内置业务列类型\n * @property default 默认\n * @property image 图片列\n * @property date 日期显示(格式 \"YYYY-MM-DD\")\n * @property time 时间显示(格式 \"HH:mm:ss\")\n * @property dateTime 日期时间显示(格式 \"YYYY-MM-DD HH:mm:ss\")\n * @property d2 数值列,保留 2 位小数,不带千分位\n * @property d4 数值列,保留 4 位小数,不带千分位\n * @property d6 数值列,保留 6 位小数,不带千分位\n * @property gd2 数值列,保留 2 位小数,带千分位\n * @property gd4 数值列,保留 4 位小数,带千分位\n * @property gd6 数值列,保留 6 位小数,带千分位\n * @property timeInfo 时间信息列\n */\nexport type FaTableColumnType = \"default\" | \"image\" | \"date\" | \"time\" | \"dateTime\" | \"d2\" | \"d4\" | \"d6\" | \"gd2\" | \"gd4\" | \"gd6\" | \"timeInfo\";\n\n/** FaTable 日期、时间列支持的格式化模板。 */\nexport type FaTableColumnDateFormat =\n\t| \"YYYY-MM-DD HH:mm:ss\"\n\t| \"YYYY-MM-DD HH:mm\"\n\t| \"YYYY-MM-DD\"\n\t| \"YYYY-MM\"\n\t| \"YYYY\"\n\t| \"MM\"\n\t| \"DD\"\n\t| \"MM-DD\"\n\t| \"HH:mm:ss\"\n\t| \"HH:mm\"\n\t| \"HH\"\n\t| \"mm:ss\"\n\t| \"mm\"\n\t| \"ss\";\n\n/** FaTable 列配置,扩展 Element Plus 列能力和 Fast 业务渲染选项。 */\nexport type FaTableColumnCtx<T extends DefaultRow = DefaultRow> = Partial<\n\tOmit<TableColumnCtx<T>, \"order\" | \"type\" | \"prop\" | \"sortable\" | \"_children\">\n> & {\n\t/**\n\t * 内部的计算属性,一般不做使用\n\t */\n\tmultiOrder?: \"\" | \"ascending\" | \"descending\";\n\t/**\n\t * 列Id\n\t */\n\tcolumnId?: number | string;\n\t/**\n\t * 排序\n\t */\n\torder?: number;\n\t/**\n\t * 排序字段\n\t */\n\tsortableField?: string;\n\t/**\n\t * 禁用排序配置\n\t */\n\tdisabledSortable?: boolean;\n\t/**\n\t * 合并行字段\n\t */\n\tspanProp?: string;\n\t/**\n\t * 纯搜索\n\t */\n\tpureSearch?: boolean;\n\t/**\n\t * 搜索项配置\n\t */\n\tsearch?: FaTableSearchColumnCtx;\n\t/** 上面所有属性,全部非 FaTableColumn props,均为计算属性 */\n\t/**\n\t * 对应列的类型\n\t */\n\ttype?: FaTableColumnType;\n\t/**\n\t * 字段名称\n\t */\n\tprop?: string;\n\t/**\n\t * 是否显示在表格当中,默认 true\n\t */\n\tshow?: boolean;\n\t/**\n\t * 对应列是否可以排序,\n\t * 默认为 'custom' 模式,即远程排序,\n\t * 需要监听 Table 的 sort-change 事件\n\t */\n\tsortable?: boolean;\n\t/**\n\t * 小页面的宽度,如果为空,则继承默认宽度\n\t */\n\tsmallWidth?: string | number;\n\t/**\n\t * 自适应宽度\n\t */\n\tautoWidth?: boolean;\n\t/**\n\t * 插槽名称\n\t */\n\tslot?: string;\n\t/**\n\t * 表格头部插槽名称\n\t */\n\theaderSlot?: string;\n\t/**\n\t * 自定义表头内容渲染(tsx语法)\n\t */\n\theaderRender?: ({ column, $index }: { column: TableColumnCtx<DefaultRow>; $index: number } & FaTableDefaultSlotsResult) => VNode[];\n\t/**\n\t * 自定义单元格内容渲染(tsx语法)\n\t */\n\trender?: ({ row, column, $index }: { row: DefaultRow; column: FaTableColumnCtx; $index: number } & FaTableDefaultSlotsResult) => VNode[];\n\t/**\n\t * 多级表头\n\t */\n\t_children?: FaTableColumnCtx<T>[];\n\t/**\n\t * 复制\n\t */\n\tcopy?: boolean;\n\t/**\n\t * 是否为 Link Button\n\t */\n\tlink?: boolean;\n\t/**\n\t * 点击事件,优先级最高\n\t */\n\tclick?: ({ row, $index }: { row: T; $index?: number } & FaTableDefaultSlotsResult) => void;\n\t/**\n\t * 点击Emits事件回调\n\t */\n\tclickEmit?: string;\n\t/**\n\t * 图片列是否显示为原图,默认 false 显示缩略图\n\t */\n\toriginalImage?: boolean;\n\t/**\n\t * 显示时间格式化字符串,默认 false\n\t */\n\tdateFix?: boolean;\n\t/**\n\t * 显示在页面中的日期格式\n\t */\n\tdateFormat?: FaTableColumnDateFormat;\n\t/**\n\t * 是否是标签展示,默认 false\n\t */\n\ttag?: boolean;\n\t/**\n\t * 枚举类型(渲染值的字典)\n\t */\n\tenum?: FaTableEnumColumnType;\n\t/**\n\t * 数据删除字段,如果为 true 会显示遮罩层\n\t */\n\tdataDeleteField?: string;\n\t/**\n\t * 时间信息字段\n\t */\n\ttimeInfoField?: { userName?: string; time?: string };\n};\n"],"mappings":";;;;;;AAuBA,MAAa,wBAAwB,UAAmD;CACvF,OAAO;EACN,SAAS,MAAM;EACf,aAAa,MAAM;EACnB,UAAU,MAAM;EAChB,cAAc,MAAM;EACpB,iBAAiB,MAAM;EACvB,8BAA8B,MAAM;CACrC;AACD"}