ele-admin-plus 1.1.9 → 1.2.0-beta.1

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 (149) hide show
  1. package/es/core-export.d.ts +1 -0
  2. package/es/core-export.js +1 -0
  3. package/es/ele-alert/index.d.ts +2 -2
  4. package/es/ele-alert/props.d.ts +1 -1
  5. package/es/ele-app/components/message-body.d.ts +39 -0
  6. package/es/ele-app/components/message-body.js +92 -0
  7. package/es/ele-app/el.d.ts +2 -0
  8. package/es/ele-app/style/message/css-var.scss +0 -4
  9. package/es/ele-app/style/message/index.scss +199 -77
  10. package/es/ele-app/style/overwrite/input/index.scss +2 -0
  11. package/es/ele-app/style/overwrite/message-box/index.scss +31 -0
  12. package/es/ele-app/style/overwrite/tag/css-var.scss +0 -16
  13. package/es/ele-app/style/overwrite/tag/index.scss +57 -14
  14. package/es/ele-app/types.d.ts +6 -1
  15. package/es/ele-config-provider/components/receiver-view.js +3 -3
  16. package/es/ele-config-provider/index.d.ts +8 -4
  17. package/es/ele-config-provider/index.js +19 -5
  18. package/es/ele-config-provider/props.d.ts +9 -4
  19. package/es/ele-config-provider/props.js +9 -5
  20. package/es/ele-config-provider/receiver.js +2 -2
  21. package/es/ele-config-provider/types.d.ts +22 -1
  22. package/es/ele-data-table/types.d.ts +2 -0
  23. package/es/ele-drawer/index.d.ts +2 -2
  24. package/es/ele-edit-tag/index.d.ts +9 -4
  25. package/es/ele-edit-tag/index.js +4 -2
  26. package/es/ele-edit-tag/props.d.ts +3 -1
  27. package/es/ele-edit-tag/props.js +2 -0
  28. package/es/ele-edit-tag/style/index.scss +11 -4
  29. package/es/ele-icon-select/index.d.ts +10 -12
  30. package/es/ele-icon-select/props.d.ts +1 -1
  31. package/es/ele-map-picker/index.d.ts +1 -1
  32. package/es/ele-menus/index.d.ts +2 -2
  33. package/es/ele-menus/index.js +11 -0
  34. package/es/ele-modal/index.d.ts +3 -3
  35. package/es/ele-modal/style/index.scss +2 -0
  36. package/es/ele-modal/util.d.ts +1 -1
  37. package/es/ele-modal/util.js +2 -4
  38. package/es/ele-popconfirm/index.d.ts +3 -3
  39. package/es/ele-popconfirm/props.d.ts +1 -1
  40. package/es/ele-popover/index.d.ts +2 -2
  41. package/es/ele-pro-layout/components/pro-header.d.ts +1 -1
  42. package/es/ele-pro-layout/components/pro-sidebar.d.ts +1 -1
  43. package/es/ele-pro-layout/index.js +1 -1
  44. package/es/ele-pro-layout/types.d.ts +4 -4
  45. package/es/ele-pro-table/components/table-tools.d.ts +11 -2
  46. package/es/ele-pro-table/components/table-tools.js +14 -26
  47. package/es/ele-pro-table/components/tool-column.d.ts +1 -0
  48. package/es/ele-pro-table/components/tool-export.d.ts +29 -56
  49. package/es/ele-pro-table/components/tool-export.js +100 -52
  50. package/es/ele-pro-table/components/tool-print-body-cell.js +50 -6
  51. package/es/ele-pro-table/components/tool-print-header-cell.js +4 -1
  52. package/es/ele-pro-table/components/tool-print.d.ts +29 -50
  53. package/es/ele-pro-table/components/tool-print.js +174 -69
  54. package/es/ele-pro-table/index.js +59 -50
  55. package/es/ele-pro-table/style/index.scss +9 -0
  56. package/es/ele-pro-table/types.d.ts +32 -0
  57. package/es/ele-pro-table/util.d.ts +18 -3
  58. package/es/ele-pro-table/util.js +160 -28
  59. package/es/ele-table/style/index.scss +16 -0
  60. package/es/ele-tooltip/index.d.ts +3 -3
  61. package/es/ele-virtual-table/util.d.ts +3 -1
  62. package/es/ele-virtual-table/util.js +7 -2
  63. package/es/icons/LoadingOutlined.js +1 -1
  64. package/es/lang/en_US.js +7 -1
  65. package/es/lang/zh_CN.js +7 -1
  66. package/es/lang/zh_TW.js +7 -1
  67. package/es/style/themes/default.scss +82 -85
  68. package/es/style/themes/rounded.scss +11 -15
  69. package/es/utils/core.d.ts +7 -0
  70. package/es/utils/core.js +16 -2
  71. package/es/utils/message-box.d.ts +25 -0
  72. package/es/utils/message-box.js +71 -0
  73. package/es/utils/message.d.ts +44 -20
  74. package/es/utils/message.js +220 -37
  75. package/lib/core-export.cjs +8 -0
  76. package/lib/core-export.d.ts +1 -0
  77. package/lib/ele-alert/index.d.ts +2 -2
  78. package/lib/ele-alert/props.d.ts +1 -1
  79. package/lib/ele-app/components/message-body.cjs +91 -0
  80. package/lib/ele-app/components/message-body.d.ts +39 -0
  81. package/lib/ele-app/el.d.ts +2 -0
  82. package/lib/ele-app/style/message/css-var.scss +0 -4
  83. package/lib/ele-app/style/message/index.scss +199 -77
  84. package/lib/ele-app/style/overwrite/input/index.scss +2 -0
  85. package/lib/ele-app/style/overwrite/message-box/index.scss +31 -0
  86. package/lib/ele-app/style/overwrite/tag/css-var.scss +0 -16
  87. package/lib/ele-app/style/overwrite/tag/index.scss +57 -14
  88. package/lib/ele-app/types.d.ts +6 -1
  89. package/lib/ele-config-provider/components/receiver-view.cjs +1 -1
  90. package/lib/ele-config-provider/index.cjs +18 -4
  91. package/lib/ele-config-provider/index.d.ts +8 -4
  92. package/lib/ele-config-provider/props.cjs +9 -5
  93. package/lib/ele-config-provider/props.d.ts +9 -4
  94. package/lib/ele-config-provider/receiver.cjs +1 -1
  95. package/lib/ele-config-provider/types.d.ts +22 -1
  96. package/lib/ele-data-table/types.d.ts +2 -0
  97. package/lib/ele-drawer/index.d.ts +2 -2
  98. package/lib/ele-edit-tag/index.cjs +4 -2
  99. package/lib/ele-edit-tag/index.d.ts +9 -4
  100. package/lib/ele-edit-tag/props.cjs +2 -0
  101. package/lib/ele-edit-tag/props.d.ts +3 -1
  102. package/lib/ele-edit-tag/style/index.scss +11 -4
  103. package/lib/ele-icon-select/index.d.ts +10 -12
  104. package/lib/ele-icon-select/props.d.ts +1 -1
  105. package/lib/ele-map-picker/index.d.ts +1 -1
  106. package/lib/ele-menus/index.cjs +11 -0
  107. package/lib/ele-menus/index.d.ts +2 -2
  108. package/lib/ele-modal/index.d.ts +3 -3
  109. package/lib/ele-modal/style/index.scss +2 -0
  110. package/lib/ele-modal/util.cjs +1 -3
  111. package/lib/ele-modal/util.d.ts +1 -1
  112. package/lib/ele-popconfirm/index.d.ts +3 -3
  113. package/lib/ele-popconfirm/props.d.ts +1 -1
  114. package/lib/ele-popover/index.d.ts +2 -2
  115. package/lib/ele-pro-layout/components/pro-header.d.ts +1 -1
  116. package/lib/ele-pro-layout/components/pro-sidebar.d.ts +1 -1
  117. package/lib/ele-pro-layout/index.cjs +1 -1
  118. package/lib/ele-pro-layout/types.d.ts +4 -4
  119. package/lib/ele-pro-table/components/table-tools.cjs +14 -26
  120. package/lib/ele-pro-table/components/table-tools.d.ts +11 -2
  121. package/lib/ele-pro-table/components/tool-column.d.ts +1 -0
  122. package/lib/ele-pro-table/components/tool-export.cjs +99 -51
  123. package/lib/ele-pro-table/components/tool-export.d.ts +29 -56
  124. package/lib/ele-pro-table/components/tool-print-body-cell.cjs +49 -5
  125. package/lib/ele-pro-table/components/tool-print-header-cell.cjs +4 -1
  126. package/lib/ele-pro-table/components/tool-print.cjs +172 -67
  127. package/lib/ele-pro-table/components/tool-print.d.ts +29 -50
  128. package/lib/ele-pro-table/index.cjs +59 -50
  129. package/lib/ele-pro-table/style/index.scss +9 -0
  130. package/lib/ele-pro-table/types.d.ts +32 -0
  131. package/lib/ele-pro-table/util.cjs +160 -28
  132. package/lib/ele-pro-table/util.d.ts +18 -3
  133. package/lib/ele-table/style/index.scss +16 -0
  134. package/lib/ele-tooltip/index.d.ts +3 -3
  135. package/lib/ele-virtual-table/util.cjs +7 -2
  136. package/lib/ele-virtual-table/util.d.ts +3 -1
  137. package/lib/icons/LoadingOutlined.cjs +1 -1
  138. package/lib/lang/en_US.cjs +7 -1
  139. package/lib/lang/zh_CN.cjs +7 -1
  140. package/lib/lang/zh_TW.cjs +7 -1
  141. package/lib/style/themes/default.scss +82 -85
  142. package/lib/style/themes/rounded.scss +11 -15
  143. package/lib/utils/core.cjs +16 -2
  144. package/lib/utils/core.d.ts +7 -0
  145. package/lib/utils/message-box.cjs +71 -0
  146. package/lib/utils/message-box.d.ts +25 -0
  147. package/lib/utils/message.cjs +216 -33
  148. package/lib/utils/message.d.ts +44 -20
  149. package/package.json +14 -14
@@ -1,33 +1,16 @@
1
- import { ExportDataType, BeforeExport, Datasource, FetchFunction, ColItem, TablePrintOptions } from '../types';
1
+ import { TableLocale, ExportDataType, BeforeExport, Datasource, FetchFunction, ColItem, TablePrintOptions } from '../types';
2
2
  import { Columns, DataItem } from '../../ele-data-table/types';
3
3
  import { EleModalProps, ElePrinterProps, EleTableProps } from '../../ele-app/plus';
4
4
  import { PropType } from 'vue';
5
5
 
6
6
  declare const _default: import('vue').DefineComponent<{
7
- /** 提示文字 */
8
- title: StringConstructor;
9
7
  /** 提示位置 */
10
8
  placement: PropType<import('element-plus/es/utils/index').EpPropMergeType<StringConstructor, import('element-plus').Placement, unknown> | undefined>;
11
- /** 全选文字 */
12
- checkAllText: StringConstructor;
13
- /** 重置文字 */
14
- resetText: StringConstructor;
15
- /** 无标题列文字 */
16
- untitledText: StringConstructor;
17
- /** 选择数据文字 */
18
- selectDataText: StringConstructor;
19
- /** 选择字段文字 */
20
- selectColumnText: StringConstructor;
21
- /** 当前页数据文字 */
22
- dataTypePageText: StringConstructor;
23
- /** 选中数据文字 */
24
- dataTypeSelectedText: StringConstructor;
25
- /** 全部数据文字 */
26
- dataTypeAllText: StringConstructor;
27
- /** 取消文字 */
28
- cancelText: StringConstructor;
29
- /** 确定文字 */
30
- okText: StringConstructor;
9
+ /** 表格国际化 */
10
+ locale: {
11
+ type: PropType<TableLocale>;
12
+ required: true;
13
+ };
31
14
  /** 弹窗参数 */
32
15
  modalProps: PropType<EleModalProps>;
33
16
  /** 打印组件参数 */
@@ -45,14 +28,15 @@ declare const _default: import('vue').DefineComponent<{
45
28
  /** 单元格合并行列方法 */
46
29
  spanMethod: PropType<((data: {
47
30
  row: DataItem;
48
- /** 单元格样式 */
49
- rowIndex: number;
31
+ rowIndex: number; /** 序号列起始索引 */
50
32
  column: import('element-plus').TableColumnCtx<DataItem>;
51
33
  columnIndex: number;
52
34
  }) => number[] | {
53
35
  rowspan: number;
54
36
  colspan: number;
55
37
  } | undefined) | undefined>;
38
+ /** 表格是否有表头 */
39
+ tableHeader: BooleanConstructor;
56
40
  /** 是否显示合计行 */
57
41
  showSummary: BooleanConstructor;
58
42
  /** 合计行文本 */
@@ -69,6 +53,8 @@ declare const _default: import('vue').DefineComponent<{
69
53
  headerCellClassName: PropType<import('element-plus').CellCls<DataItem> | undefined>;
70
54
  /** 序号列起始索引 */
71
55
  pageIndex: NumberConstructor;
56
+ /** 子级字段名 */
57
+ childrenField: StringConstructor;
72
58
  /** 表格请求数据方法 */
73
59
  fetch: PropType<FetchFunction>;
74
60
  /** 默认数据类型 */
@@ -88,43 +74,32 @@ declare const _default: import('vue').DefineComponent<{
88
74
  checked?: boolean | undefined;
89
75
  fixed?: string | boolean | undefined;
90
76
  children?: any[] | undefined;
77
+ type?: string | undefined;
91
78
  }[]>;
92
79
  isCheckAll: import('vue').Ref<boolean>;
93
80
  isIndeterminate: import('vue').Ref<boolean>;
81
+ showHeader: import('vue').Ref<boolean>;
82
+ showFooter: import('vue').Ref<boolean>;
83
+ showTreeIndex: import('vue').Ref<boolean>;
84
+ treeIndexDisabled: import('vue').Ref<boolean>;
94
85
  printOptions: TablePrintOptions;
95
86
  openModal: () => void;
96
87
  closeModal: () => void;
97
88
  onPrintDone: () => void;
98
89
  handlePrint: () => void;
99
- onCheckedChange: (item: ColItem, checked: boolean) => void;
90
+ onCheckedChange: (item?: ColItem, checked?: boolean, type?: string) => void;
100
91
  onSortChange: (items: ColItem[], parent?: ColItem) => void;
101
92
  onCheckAllChange: (checked: boolean) => void;
102
93
  onReset: () => void;
94
+ handleTreeIndexChange: (checked?: boolean | string | number) => void;
103
95
  }, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
104
- /** 提示文字 */
105
- title: StringConstructor;
106
96
  /** 提示位置 */
107
97
  placement: PropType<import('element-plus/es/utils/index').EpPropMergeType<StringConstructor, import('element-plus').Placement, unknown> | undefined>;
108
- /** 全选文字 */
109
- checkAllText: StringConstructor;
110
- /** 重置文字 */
111
- resetText: StringConstructor;
112
- /** 无标题列文字 */
113
- untitledText: StringConstructor;
114
- /** 选择数据文字 */
115
- selectDataText: StringConstructor;
116
- /** 选择字段文字 */
117
- selectColumnText: StringConstructor;
118
- /** 当前页数据文字 */
119
- dataTypePageText: StringConstructor;
120
- /** 选中数据文字 */
121
- dataTypeSelectedText: StringConstructor;
122
- /** 全部数据文字 */
123
- dataTypeAllText: StringConstructor;
124
- /** 取消文字 */
125
- cancelText: StringConstructor;
126
- /** 确定文字 */
127
- okText: StringConstructor;
98
+ /** 表格国际化 */
99
+ locale: {
100
+ type: PropType<TableLocale>;
101
+ required: true;
102
+ };
128
103
  /** 弹窗参数 */
129
104
  modalProps: PropType<EleModalProps>;
130
105
  /** 打印组件参数 */
@@ -142,14 +117,15 @@ declare const _default: import('vue').DefineComponent<{
142
117
  /** 单元格合并行列方法 */
143
118
  spanMethod: PropType<((data: {
144
119
  row: DataItem;
145
- /** 单元格样式 */
146
- rowIndex: number;
120
+ rowIndex: number; /** 序号列起始索引 */
147
121
  column: import('element-plus').TableColumnCtx<DataItem>;
148
122
  columnIndex: number;
149
123
  }) => number[] | {
150
124
  rowspan: number;
151
125
  colspan: number;
152
126
  } | undefined) | undefined>;
127
+ /** 表格是否有表头 */
128
+ tableHeader: BooleanConstructor;
153
129
  /** 是否显示合计行 */
154
130
  showSummary: BooleanConstructor;
155
131
  /** 合计行文本 */
@@ -166,6 +142,8 @@ declare const _default: import('vue').DefineComponent<{
166
142
  headerCellClassName: PropType<import('element-plus').CellCls<DataItem> | undefined>;
167
143
  /** 序号列起始索引 */
168
144
  pageIndex: NumberConstructor;
145
+ /** 子级字段名 */
146
+ childrenField: StringConstructor;
169
147
  /** 表格请求数据方法 */
170
148
  fetch: PropType<FetchFunction>;
171
149
  /** 默认数据类型 */
@@ -177,6 +155,7 @@ declare const _default: import('vue').DefineComponent<{
177
155
  beforePrint: PropType<BeforeExport>;
178
156
  }>>, {
179
157
  showSummary: boolean;
158
+ tableHeader: boolean;
180
159
  defaultDataType: ExportDataType;
181
160
  }, {}>;
182
161
  export default _default;
@@ -229,6 +229,7 @@ const _sfc_main = vue.defineComponent({
229
229
  });
230
230
  };
231
231
  const requestCallback = (data, total, parent, response, resolve) => {
232
+ var _a;
232
233
  if (!Array.isArray(data)) {
233
234
  tableData.value = [];
234
235
  tableLoading.value = false;
@@ -246,6 +247,9 @@ const _sfc_main = vue.defineComponent({
246
247
  return;
247
248
  }
248
249
  if (resolve) {
250
+ if (parent != null) {
251
+ parent[((_a = props2.treeProps) == null ? void 0 : _a.children) || "children"] = data;
252
+ }
249
253
  resolve(data);
250
254
  } else {
251
255
  if (util$1.isAutoAmend(props2.pagination, globalProps.value.pagination) && !data.length && total && "*" !== total && tablePage.value && tableLimit.value) {
@@ -513,56 +517,61 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
513
517
  return vue.openBlock(), vue.createBlock(_component_EleLoading, vue.normalizeProps(vue.guardReactiveProps(_ctx.loadingProps)), {
514
518
  default: vue.withCtx(() => [
515
519
  _ctx.toolbar ? (vue.openBlock(), vue.createBlock(_component_EleToolbar, vue.normalizeProps(vue.mergeProps({ key: 0 }, _ctx.toolbar === true ? {} : _ctx.toolbar)), {
516
- tools: vue.withCtx(() => [
517
- vue.renderSlot(_ctx.$slots, "tools"),
518
- _ctx.toolNames && _ctx.toolNames.length ? (vue.openBlock(), vue.createBlock(_component_TableTools, {
519
- key: 0,
520
- tools: _ctx.toolNames,
521
- size: _ctx.tableSize,
522
- columns: _ctx.columns,
523
- columnSortable: _ctx.columnSortable,
524
- columnFixed: _ctx.columnFixed,
525
- maximized: _ctx.tableMaximized,
526
- cacheKey: _ctx.cacheKey,
527
- locale: _ctx.locale,
528
- selections: _ctx.selections,
529
- pageData: _ctx.tableData,
530
- spanMethod: _ctx.spanMethod,
531
- showSummary: _ctx.showSummary,
532
- sumText: _ctx.sumText,
533
- summaryMethod: _ctx.summaryMethod,
534
- cellStyle: _ctx.cellStyle,
535
- cellClassName: _ctx.cellClassName,
536
- headerCellStyle: _ctx.headerCellStyle,
537
- headerCellClassName: _ctx.headerCellClassName,
538
- pageIndex: _ctx.tableIndex,
539
- fetch: _ctx.fetch,
540
- exportConfig: _ctx.toolExportConfig,
541
- printConfig: _ctx.toolPrintConfig,
542
- onReload: _ctx.onRefresh,
543
- "onUpdate:size": _ctx.onSizeChange,
544
- "onUpdate:columns": _ctx.onColumnsChange,
545
- "onUpdate:maximized": _ctx.onMaximizedChange
546
- }, vue.createSlots({ _: 2 }, [
547
- vue.renderList(Object.keys(_ctx.$slots).filter(
548
- (k) => ![
549
- "default",
550
- "toolbar",
551
- "tools",
552
- "footer",
553
- "empty",
554
- "append"
555
- ].includes(k)
556
- ), (name) => {
557
- return {
558
- name,
559
- fn: vue.withCtx((slotProps) => [
560
- vue.renderSlot(_ctx.$slots, name, vue.normalizeProps(vue.guardReactiveProps(slotProps || {})))
561
- ])
562
- };
563
- })
564
- ]), 1032, ["tools", "size", "columns", "columnSortable", "columnFixed", "maximized", "cacheKey", "locale", "selections", "pageData", "spanMethod", "showSummary", "sumText", "summaryMethod", "cellStyle", "cellClassName", "headerCellStyle", "headerCellClassName", "pageIndex", "fetch", "exportConfig", "printConfig", "onReload", "onUpdate:size", "onUpdate:columns", "onUpdate:maximized"])) : vue.createCommentVNode("", true)
565
- ]),
520
+ tools: vue.withCtx(() => {
521
+ var _a;
522
+ return [
523
+ vue.renderSlot(_ctx.$slots, "tools"),
524
+ _ctx.toolNames && _ctx.toolNames.length ? (vue.openBlock(), vue.createBlock(_component_TableTools, {
525
+ key: 0,
526
+ tools: _ctx.toolNames,
527
+ size: _ctx.tableSize,
528
+ columns: _ctx.columns,
529
+ columnSortable: _ctx.columnSortable,
530
+ columnFixed: _ctx.columnFixed,
531
+ maximized: _ctx.tableMaximized,
532
+ cacheKey: _ctx.cacheKey,
533
+ locale: _ctx.locale,
534
+ selections: _ctx.selections,
535
+ pageData: _ctx.tableData,
536
+ spanMethod: _ctx.spanMethod,
537
+ tableHeader: _ctx.showHeader,
538
+ showSummary: _ctx.showSummary,
539
+ sumText: _ctx.sumText,
540
+ summaryMethod: _ctx.summaryMethod,
541
+ cellStyle: _ctx.cellStyle,
542
+ cellClassName: _ctx.cellClassName,
543
+ headerCellStyle: _ctx.headerCellStyle,
544
+ headerCellClassName: _ctx.headerCellClassName,
545
+ pageIndex: _ctx.tableIndex,
546
+ childrenField: (_a = _ctx.treeProps) == null ? void 0 : _a.children,
547
+ fetch: _ctx.fetch,
548
+ exportConfig: _ctx.toolExportConfig,
549
+ printConfig: _ctx.toolPrintConfig,
550
+ onReload: _ctx.onRefresh,
551
+ "onUpdate:size": _ctx.onSizeChange,
552
+ "onUpdate:columns": _ctx.onColumnsChange,
553
+ "onUpdate:maximized": _ctx.onMaximizedChange
554
+ }, vue.createSlots({ _: 2 }, [
555
+ vue.renderList(Object.keys(_ctx.$slots).filter(
556
+ (k) => ![
557
+ "default",
558
+ "toolbar",
559
+ "tools",
560
+ "footer",
561
+ "empty",
562
+ "append"
563
+ ].includes(k)
564
+ ), (name) => {
565
+ return {
566
+ name,
567
+ fn: vue.withCtx((slotProps) => [
568
+ vue.renderSlot(_ctx.$slots, name, vue.normalizeProps(vue.guardReactiveProps(slotProps || {})))
569
+ ])
570
+ };
571
+ })
572
+ ]), 1032, ["tools", "size", "columns", "columnSortable", "columnFixed", "maximized", "cacheKey", "locale", "selections", "pageData", "spanMethod", "tableHeader", "showSummary", "sumText", "summaryMethod", "cellStyle", "cellClassName", "headerCellStyle", "headerCellClassName", "pageIndex", "childrenField", "fetch", "exportConfig", "printConfig", "onReload", "onUpdate:size", "onUpdate:columns", "onUpdate:maximized"])) : vue.createCommentVNode("", true)
573
+ ];
574
+ }),
566
575
  default: vue.withCtx(() => [
567
576
  vue.renderSlot(_ctx.$slots, "toolbar")
568
577
  ]),
@@ -269,3 +269,12 @@
269
269
  border-top-right-radius: elVar('border-radius', 'base');
270
270
  }
271
271
  }
272
+
273
+ .ele-tool-form-options {
274
+ width: 100%;
275
+ display: flex;
276
+ flex-wrap: wrap;
277
+ align-items: center;
278
+ box-sizing: border-box;
279
+ padding-left: 8px;
280
+ }
@@ -227,6 +227,8 @@ export interface ColItem {
227
227
  fixed?: boolean | string;
228
228
  /** 子级数据 */
229
229
  children?: ColItem[];
230
+ /** 列类型 */
231
+ type?: string;
230
232
  }
231
233
 
232
234
  /**
@@ -291,6 +293,20 @@ export type TableViewInstance =
291
293
  */
292
294
  export type ExportDataType = 'selections' | 'pageData' | 'data';
293
295
 
296
+ /**
297
+ * 导出主体数据节点
298
+ */
299
+ export interface ExportBodyNode {
300
+ /** 数据 */
301
+ row: DataItem;
302
+ /** 索引 */
303
+ index: number;
304
+ /** 所处深度 */
305
+ level: number;
306
+ /** 子级数量 */
307
+ childSize: number;
308
+ }
309
+
294
310
  /**
295
311
  * 导出的数据每一项
296
312
  */
@@ -309,6 +325,16 @@ export interface ExportDataItem {
309
325
  colspan?: number;
310
326
  /** 所占行数 */
311
327
  rowspan?: number;
328
+ /** 是否是展开行的单元格 */
329
+ isExpandCell?: boolean;
330
+ /** 是否是层级序号 */
331
+ isTreeIndex?: boolean;
332
+ /** 是否显示树展开图标 */
333
+ isTreeCell?: boolean;
334
+ /** 是否是树叶子节点 */
335
+ isTreeLeaf?: boolean;
336
+ /** 树层级缩进 */
337
+ indent?: number;
312
338
  }
313
339
 
314
340
  /**
@@ -418,6 +444,8 @@ export interface TableLocale {
418
444
  columnTitle: string;
419
445
  columnReset: string;
420
446
  columnUntitled: string;
447
+ columnIndex: string;
448
+ columnExpand: string;
421
449
  columnFixedLeft: string;
422
450
  columnFixedRight: string;
423
451
  exportOk: string;
@@ -429,4 +457,8 @@ export interface TableLocale {
429
457
  exportDataTypePage: string;
430
458
  exportDataTypeSelected: string;
431
459
  exportDataTypeAll: string;
460
+ exportOther: string;
461
+ exportOtherHeader: string;
462
+ exportOtherFooter: string;
463
+ exportOtherTreeIndex: string;
432
464
  }
@@ -320,7 +320,7 @@ function getCheckedColumns(columns, cols, sortable, filter) {
320
320
  });
321
321
  return data;
322
322
  }
323
- function getColItems(columns, untitledText, filter, sortFixed, cancelFixed) {
323
+ function getColItems(columns, untitledText, indexText, expandText, filter, sortFixed, cancelFixed) {
324
324
  const temp = columns == null ? [] : [...columns];
325
325
  if (sortFixed) {
326
326
  temp.sort((a, b) => {
@@ -336,9 +336,10 @@ function getColItems(columns, untitledText, filter, sortFixed, cancelFixed) {
336
336
  uid: colId,
337
337
  //prop: d.prop,
338
338
  //columnKey: d.columnKey,
339
- label: d.label || untitledText,
339
+ label: d.label || (d.type === "index" ? indexText : d.type === "expand" ? expandText : untitledText),
340
340
  checked: !d.hideInTable,
341
- fixed: cancelFixed ? false : parent == null ? d.fixed : false
341
+ fixed: cancelFixed ? false : parent == null ? d.fixed : false,
342
+ type: d.type
342
343
  };
343
344
  });
344
345
  }
@@ -426,56 +427,186 @@ function getHeaderCellText(column, index) {
426
427
  }
427
428
  return column.label == null ? "" : String(column.label);
428
429
  }
429
- function getExportData(data, columns, spanMethod, pageIndex, showSummary, sumText, summaryMethod) {
430
+ function getExportBodyNode(data, childrenField = "children", level = 0, parents = []) {
431
+ const bodyDodes = [];
432
+ let maxDepth = 0;
433
+ data.forEach((row, index) => {
434
+ const node = { row, index, level, childSize: 0 };
435
+ bodyDodes.push(node);
436
+ parents.forEach((parent) => {
437
+ parent.childSize++;
438
+ });
439
+ const children = row[childrenField];
440
+ if (children && children.length) {
441
+ const { depth, nodes } = getExportBodyNode(
442
+ children,
443
+ childrenField,
444
+ level + 1,
445
+ [...parents, node]
446
+ );
447
+ maxDepth = Math.max(maxDepth, depth);
448
+ nodes.forEach((n) => {
449
+ bodyDodes.push(n);
450
+ });
451
+ }
452
+ });
453
+ return { depth: maxDepth + 1, nodes: bodyDodes };
454
+ }
455
+ function getExportData(data, columns, spanMethod, pageIndex, showSummary, sumText, summaryMethod, childrenField, showTreeIndex, showHeader) {
456
+ const { nodes, depth } = getExportBodyNode(data, childrenField);
430
457
  const { rows: headerRows, cols: bodyCols } = util$1.analyseColumns(columns);
458
+ const showExpandIndex = bodyCols.some((c) => {
459
+ var _a;
460
+ return ((_a = c.originalCol) == null ? void 0 : _a.type) === "expand";
461
+ }) ? showTreeIndex : false;
462
+ if (depth <= 1 || showExpandIndex) {
463
+ showTreeIndex = false;
464
+ }
465
+ const treeIconIndex = showTreeIndex ? void 0 : bodyCols.findIndex(
466
+ (c) => {
467
+ var _a;
468
+ return !((_a = c.originalCol) == null ? void 0 : _a.type) || !["index", "expand", "selection"].includes(c.originalCol.type);
469
+ }
470
+ );
431
471
  const bodyData = [];
432
- data.forEach((row, index) => {
472
+ nodes.forEach((node, index) => {
473
+ const row = node.row;
433
474
  const bodyRowData = [];
475
+ const expandRowData = [];
434
476
  bodyCols.forEach((col, columnIndex) => {
435
- const { key, originalCol: column } = col;
477
+ const { key: colKey, originalCol: column } = col;
478
+ const key = `${index}-${columnIndex}-${colKey}`;
436
479
  const { colspan, rowspan } = util$1.getCellSpan(
437
480
  { column, columnIndex, row, rowIndex: index },
438
481
  spanMethod
439
482
  );
440
483
  const isNone = colspan == 0 || rowspan == 0;
441
484
  const text = isNone ? "" : getCellText(column, row, index, pageIndex);
442
- bodyRowData.push({ key, row, index, column, text, colspan, rowspan });
485
+ const dataItem = {
486
+ key,
487
+ row,
488
+ index,
489
+ column,
490
+ text,
491
+ colspan,
492
+ rowspan,
493
+ isTreeCell: depth > 1 ? columnIndex === treeIconIndex : false,
494
+ isTreeLeaf: !node.childSize,
495
+ indent: node.level
496
+ };
497
+ if (column.type === "expand") {
498
+ dataItem.text = showExpandIndex ? String(node.index + 1) : "";
499
+ if (showExpandIndex && !expandRowData.length) {
500
+ dataItem.rowspan = 2;
501
+ }
502
+ const expandDataItem = {
503
+ key: "_expand_" + key,
504
+ row,
505
+ index,
506
+ column,
507
+ text,
508
+ colspan: showExpandIndex ? bodyCols.length - 1 : bodyCols.length,
509
+ isExpandCell: true
510
+ };
511
+ if (showExpandIndex) {
512
+ expandRowData[0] = {
513
+ key: "_expand_0-" + key,
514
+ row,
515
+ index,
516
+ rowspan: 0,
517
+ colspan: 0,
518
+ isExpandCell: true
519
+ };
520
+ expandRowData[1] = expandDataItem;
521
+ } else {
522
+ expandRowData[0] = expandDataItem;
523
+ }
524
+ }
525
+ bodyRowData.push(dataItem);
443
526
  });
444
527
  bodyData.push(bodyRowData);
528
+ if (expandRowData.length) {
529
+ bodyData.push(expandRowData);
530
+ }
531
+ if (showTreeIndex) {
532
+ for (let i = depth - 1; i >= 0; i--) {
533
+ const colspan = i < node.level ? 0 : 1;
534
+ bodyRowData.unshift({
535
+ key: `_index_${index}-${i}`,
536
+ index,
537
+ text: i === node.level ? String(node.index + 1) : void 0,
538
+ colspan,
539
+ rowspan: i === node.level ? node.childSize + 1 : colspan,
540
+ isTreeIndex: true
541
+ });
542
+ }
543
+ }
445
544
  });
446
545
  const headerData = [];
447
- headerRows.forEach((headerCols, index) => {
448
- const headerRowData = [];
449
- headerCols.forEach((col) => {
450
- const { key, colspan, rowspan, originalCol: column } = col;
451
- const isNone = colspan == 0 || rowspan == 0;
452
- const text = isNone ? "" : getHeaderCellText(column, index);
453
- headerRowData.push({ key, index, column, text, colspan, rowspan });
546
+ if (showHeader) {
547
+ headerRows.forEach((headerCols, index) => {
548
+ const headerRowData = [];
549
+ headerCols.forEach((col) => {
550
+ const { key, colspan, rowspan, originalCol: column } = col;
551
+ const isNone = colspan == 0 || rowspan == 0;
552
+ const text = isNone ? "" : getHeaderCellText(column, index);
553
+ headerRowData.push({ key, index, column, text, colspan, rowspan });
554
+ });
555
+ headerData.push(headerRowData);
556
+ if (showTreeIndex) {
557
+ for (let i = depth - 1; i >= 0; i--) {
558
+ headerRowData.unshift({
559
+ key: `_index_th_${index}-${i}`,
560
+ index,
561
+ colspan: i === 0 ? index === 0 ? depth : 0 : 0,
562
+ rowspan: i === 0 ? index === 0 ? headerRows.length : 0 : 0,
563
+ isTreeIndex: true
564
+ });
565
+ }
566
+ }
454
567
  });
455
- headerData.push(headerRowData);
456
- });
568
+ }
457
569
  const footerData = [];
458
570
  if (showSummary && data.length) {
459
571
  const footerRowData = [];
460
- const userSums = util$1.getUserSums(summaryMethod, bodyCols, data);
572
+ const uSum = util$1.getUserSums(summaryMethod, bodyCols, data);
461
573
  bodyCols.forEach((col, i) => {
462
- const { key, dataKey, originalCol: column } = col;
463
- const sumValue = util$1.getSumValue(data, dataKey);
464
- footerRowData.push({
465
- key,
466
- column,
467
- text: userSums == null ? i === 0 ? sumText : sumValue : userSums[i],
468
- index: 0
469
- });
574
+ const { key, dataKey: dKey, originalCol: column } = col;
575
+ const text = uSum == null ? util$1.getSumValue(data, dKey, i, sumText) : uSum[i];
576
+ footerRowData.push({ key, column, text, index: 0 });
470
577
  });
471
578
  footerData.push(footerRowData);
579
+ if (showTreeIndex) {
580
+ for (let i = depth - 1; i >= 0; i--) {
581
+ footerRowData.unshift({
582
+ key: `_index_tf-${i}`,
583
+ index: 0,
584
+ colspan: i === 0 ? depth : 0,
585
+ rowspan: i === 0 ? headerRows.length : 0,
586
+ isTreeIndex: true
587
+ });
588
+ }
589
+ }
590
+ }
591
+ if (showTreeIndex) {
592
+ for (let i = depth - 1; i >= 0; i--) {
593
+ bodyCols.unshift({ key: `_index_${i}`, width: 26 });
594
+ }
472
595
  }
473
596
  return { headerData, bodyData, footerData, bodyCols };
474
597
  }
475
598
  function exportCSV(fileName, headerData, bodyData, footerData) {
476
599
  const csvRows = [];
477
600
  [...headerData, ...bodyData, ...footerData].forEach((item) => {
478
- csvRows.push(item.map((d) => d.text ?? "").join(","));
601
+ const cells = item.map((d) => {
602
+ const text = (d.text ?? "").replace(/,/g, ",").replace(/\n/g, " ");
603
+ if (!d.isTreeCell || !d.indent) {
604
+ return text;
605
+ }
606
+ const indent = Array.from({ length: d.indent }).fill(" ").join("");
607
+ return indent + text;
608
+ });
609
+ csvRows.push(cells.join(","));
479
610
  });
480
611
  const content = encodeURIComponent(csvRows.join("\n"));
481
612
  const a = document.createElement("a");
@@ -490,13 +621,13 @@ function columnsExportFilter(item) {
490
621
  if (item.hideInExport) {
491
622
  return false;
492
623
  }
493
- return !item.type || !["selection", "expand"].includes(item.type);
624
+ return !item.type || !["selection"].includes(item.type);
494
625
  }
495
626
  function columnsPrintFilter(item) {
496
627
  if (item.hideInPrint) {
497
628
  return false;
498
629
  }
499
- return !item.type || !["selection", "expand"].includes(item.type);
630
+ return !item.type || !["selection"].includes(item.type);
500
631
  }
501
632
  exports.columnsExportFilter = columnsExportFilter;
502
633
  exports.columnsPrintFilter = columnsPrintFilter;
@@ -509,6 +640,7 @@ exports.getColId = getColId;
509
640
  exports.getColItems = getColItems;
510
641
  exports.getColsCacheKey = getColsCacheKey;
511
642
  exports.getDefaultFilter = getDefaultFilter;
643
+ exports.getExportBodyNode = getExportBodyNode;
512
644
  exports.getExportData = getExportData;
513
645
  exports.getHeaderCellText = getHeaderCellText;
514
646
  exports.getInitCacheColumns = getInitCacheColumns;
@@ -1,4 +1,4 @@
1
- import { Pages, Orders, Filters, OrderItem, RequestOption, ResponseOption, TablePagination, DatasourceResult, ResponseResult, ReloadDataResult, ColItem, ProProps, ExportDataItem, ExportDataResult } from './types';
1
+ import { Pages, Orders, Filters, OrderItem, RequestOption, ResponseOption, TablePagination, DatasourceResult, ResponseResult, ReloadDataResult, ColItem, ProProps, ExportBodyNode, ExportDataItem, ExportDataResult } from './types';
2
2
  import { DataItem, Column, Columns, Sorter, Filter, TableSize, TreeProps, RowKey, SpanMethod, SummaryMethod } from '../ele-data-table/types';
3
3
  import { ElePaginationProps } from '../ele-app/plus';
4
4
 
@@ -141,11 +141,13 @@ export declare function getCheckedColumns(columns: Columns | undefined, cols: Co
141
141
  * 获取列展示列表数据
142
142
  * @param columns 列配置
143
143
  * @param untitledText 未命名列文字
144
+ * @param indexText 序号列文字
145
+ * @param expandText 展开列文字
144
146
  * @param filter 过滤列的方法
145
147
  * @param sortFixed 是否对固定列排序
146
148
  * @param cancelFixed 是否取消固定列
147
149
  */
148
- export declare function getColItems(columns?: Columns, untitledText?: string, filter?: (item: Column) => boolean, sortFixed?: boolean, cancelFixed?: boolean): ColItem[];
150
+ export declare function getColItems(columns?: Columns, untitledText?: string, indexText?: string, expandText?: string, filter?: (item: Column) => boolean, sortFixed?: boolean, cancelFixed?: boolean): ColItem[];
149
151
  /**
150
152
  * 获取列配置
151
153
  * @param columns 列数据
@@ -190,6 +192,17 @@ export declare function getCellText(column: Column | undefined, row: DataItem, i
190
192
  * @param index 行索引
191
193
  */
192
194
  export declare function getHeaderCellText(column: Column | undefined, index: number): string;
195
+ /**
196
+ * 获取主体数据封装节点
197
+ * @param data 数据
198
+ * @param childrenField 子级字段名
199
+ * @param level 树形所处深度
200
+ * @param parents 父级节点
201
+ */
202
+ export declare function getExportBodyNode(data: DataItem[], childrenField?: string, level?: number, parents?: ExportBodyNode[]): {
203
+ depth: number;
204
+ nodes: ExportBodyNode[];
205
+ };
193
206
  /**
194
207
  * 获取导出的数据
195
208
  * @param data 元数据
@@ -199,8 +212,10 @@ export declare function getHeaderCellText(column: Column | undefined, index: num
199
212
  * @param showSummary 是否显示合计行
200
213
  * @param sumText 合计行文本
201
214
  * @param summaryMethod 合计行自定义方法
215
+ * @param childrenField 子级字段名
216
+ * @param showTreeIndex 是否显示层级序号
202
217
  */
203
- export declare function getExportData(data: DataItem[], columns: Columns, spanMethod?: SpanMethod, pageIndex?: number, showSummary?: boolean, sumText?: string, summaryMethod?: SummaryMethod): ExportDataResult;
218
+ export declare function getExportData(data: DataItem[], columns: Columns, spanMethod?: SpanMethod, pageIndex?: number, showSummary?: boolean, sumText?: string, summaryMethod?: SummaryMethod, childrenField?: string, showTreeIndex?: boolean, showHeader?: boolean): ExportDataResult;
204
219
  /**
205
220
  * 导出csv文件
206
221
  * @param fileName 文件名