vxe-table 4.17.11 → 4.17.13

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 (171) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/locale/lang/ar-EG.js +2 -1
  4. package/es/locale/lang/de-DE.js +2 -1
  5. package/es/locale/lang/en-US.js +2 -1
  6. package/es/locale/lang/es-ES.js +2 -1
  7. package/es/locale/lang/fr-FR.js +2 -1
  8. package/es/locale/lang/hu-HU.js +2 -1
  9. package/es/locale/lang/hy-AM.js +2 -1
  10. package/es/locale/lang/id-ID.js +2 -1
  11. package/es/locale/lang/it-IT.js +2 -1
  12. package/es/locale/lang/ja-JP.js +2 -1
  13. package/es/locale/lang/ko-KR.js +2 -1
  14. package/es/locale/lang/ms-MY.js +2 -1
  15. package/es/locale/lang/nb-NO.js +2 -1
  16. package/es/locale/lang/pt-BR.js +2 -1
  17. package/es/locale/lang/ru-RU.js +2 -1
  18. package/es/locale/lang/th-TH.js +2 -1
  19. package/es/locale/lang/ug-CN.js +2 -1
  20. package/es/locale/lang/uk-UA.js +2 -1
  21. package/es/locale/lang/uz-UZ.js +2 -1
  22. package/es/locale/lang/vi-VN.js +2 -1
  23. package/es/locale/lang/zh-CHT.js +2 -1
  24. package/es/locale/lang/zh-CN.js +2 -1
  25. package/es/style.css +1 -1
  26. package/es/style.min.css +1 -1
  27. package/es/table/module/export/hook.js +3 -6
  28. package/es/table/module/menu/hook.js +1 -1
  29. package/es/table/module/menu/panel.js +30 -14
  30. package/es/table/src/cell.js +8 -39
  31. package/es/table/src/columnInfo.js +4 -1
  32. package/es/table/src/table.js +75 -1
  33. package/es/table/src/util.js +1 -0
  34. package/es/table/style.css +6 -3
  35. package/es/table/style.min.css +1 -1
  36. package/es/ui/index.js +2 -1
  37. package/es/ui/src/log.js +1 -1
  38. package/es/vxe-table/style.css +6 -3
  39. package/es/vxe-table/style.min.css +1 -1
  40. package/lib/index.css +1 -1
  41. package/lib/index.min.css +1 -1
  42. package/lib/index.umd.js +45 -54
  43. package/lib/index.umd.min.js +1 -1
  44. package/lib/locale/lang/ar-EG.js +2 -1
  45. package/lib/locale/lang/ar-EG.min.js +1 -1
  46. package/lib/locale/lang/ar-EG.umd.js +2 -1
  47. package/lib/locale/lang/de-DE.js +2 -1
  48. package/lib/locale/lang/de-DE.min.js +1 -1
  49. package/lib/locale/lang/de-DE.umd.js +2 -1
  50. package/lib/locale/lang/en-US.js +2 -1
  51. package/lib/locale/lang/en-US.min.js +1 -1
  52. package/lib/locale/lang/en-US.umd.js +2 -1
  53. package/lib/locale/lang/es-ES.js +2 -1
  54. package/lib/locale/lang/es-ES.min.js +1 -1
  55. package/lib/locale/lang/es-ES.umd.js +2 -1
  56. package/lib/locale/lang/fr-FR.js +2 -1
  57. package/lib/locale/lang/fr-FR.min.js +1 -1
  58. package/lib/locale/lang/fr-FR.umd.js +2 -1
  59. package/lib/locale/lang/hu-HU.js +2 -1
  60. package/lib/locale/lang/hu-HU.min.js +1 -1
  61. package/lib/locale/lang/hu-HU.umd.js +2 -1
  62. package/lib/locale/lang/hy-AM.js +2 -1
  63. package/lib/locale/lang/hy-AM.min.js +1 -1
  64. package/lib/locale/lang/hy-AM.umd.js +2 -1
  65. package/lib/locale/lang/id-ID.js +2 -1
  66. package/lib/locale/lang/id-ID.min.js +1 -1
  67. package/lib/locale/lang/id-ID.umd.js +2 -1
  68. package/lib/locale/lang/it-IT.js +2 -1
  69. package/lib/locale/lang/it-IT.min.js +1 -1
  70. package/lib/locale/lang/it-IT.umd.js +2 -1
  71. package/lib/locale/lang/ja-JP.js +2 -1
  72. package/lib/locale/lang/ja-JP.min.js +1 -1
  73. package/lib/locale/lang/ja-JP.umd.js +2 -1
  74. package/lib/locale/lang/ko-KR.js +2 -1
  75. package/lib/locale/lang/ko-KR.min.js +1 -1
  76. package/lib/locale/lang/ko-KR.umd.js +2 -1
  77. package/lib/locale/lang/ms-MY.js +2 -1
  78. package/lib/locale/lang/ms-MY.min.js +1 -1
  79. package/lib/locale/lang/ms-MY.umd.js +2 -1
  80. package/lib/locale/lang/nb-NO.js +2 -1
  81. package/lib/locale/lang/nb-NO.min.js +1 -1
  82. package/lib/locale/lang/nb-NO.umd.js +2 -1
  83. package/lib/locale/lang/pt-BR.js +2 -1
  84. package/lib/locale/lang/pt-BR.min.js +1 -1
  85. package/lib/locale/lang/pt-BR.umd.js +2 -1
  86. package/lib/locale/lang/ru-RU.js +2 -1
  87. package/lib/locale/lang/ru-RU.min.js +1 -1
  88. package/lib/locale/lang/ru-RU.umd.js +2 -1
  89. package/lib/locale/lang/th-TH.js +2 -1
  90. package/lib/locale/lang/th-TH.min.js +1 -1
  91. package/lib/locale/lang/th-TH.umd.js +2 -1
  92. package/lib/locale/lang/ug-CN.js +2 -1
  93. package/lib/locale/lang/ug-CN.min.js +1 -1
  94. package/lib/locale/lang/ug-CN.umd.js +2 -1
  95. package/lib/locale/lang/uk-UA.js +2 -1
  96. package/lib/locale/lang/uk-UA.min.js +1 -1
  97. package/lib/locale/lang/uk-UA.umd.js +2 -1
  98. package/lib/locale/lang/uz-UZ.js +2 -1
  99. package/lib/locale/lang/uz-UZ.min.js +1 -1
  100. package/lib/locale/lang/uz-UZ.umd.js +2 -1
  101. package/lib/locale/lang/vi-VN.js +2 -1
  102. package/lib/locale/lang/vi-VN.min.js +1 -1
  103. package/lib/locale/lang/vi-VN.umd.js +2 -1
  104. package/lib/locale/lang/zh-CHT.js +2 -1
  105. package/lib/locale/lang/zh-CHT.min.js +1 -1
  106. package/lib/locale/lang/zh-CHT.umd.js +2 -1
  107. package/lib/locale/lang/zh-CN.js +2 -1
  108. package/lib/locale/lang/zh-CN.min.js +1 -1
  109. package/lib/locale/lang/zh-CN.umd.js +2 -1
  110. package/lib/style.css +1 -1
  111. package/lib/style.min.css +1 -1
  112. package/lib/table/module/export/hook.js +3 -6
  113. package/lib/table/module/export/hook.min.js +1 -1
  114. package/lib/table/module/menu/hook.js +1 -1
  115. package/lib/table/module/menu/hook.min.js +1 -1
  116. package/lib/table/module/menu/panel.js +21 -7
  117. package/lib/table/module/menu/panel.min.js +1 -1
  118. package/lib/table/src/cell.js +6 -34
  119. package/lib/table/src/cell.min.js +1 -1
  120. package/lib/table/src/columnInfo.js +5 -1
  121. package/lib/table/src/columnInfo.min.js +1 -1
  122. package/lib/table/src/table.js +3 -2
  123. package/lib/table/src/table.min.js +1 -1
  124. package/lib/table/src/util.js +1 -0
  125. package/lib/table/src/util.min.js +1 -1
  126. package/lib/table/style/style.css +6 -3
  127. package/lib/table/style/style.min.css +1 -1
  128. package/lib/ui/index.js +2 -1
  129. package/lib/ui/index.min.js +1 -1
  130. package/lib/ui/src/log.js +1 -1
  131. package/lib/ui/src/log.min.js +1 -1
  132. package/lib/vxe-table/style/style.css +6 -3
  133. package/lib/vxe-table/style/style.min.css +1 -1
  134. package/package.json +1 -1
  135. package/packages/locale/lang/ar-EG.ts +2 -1
  136. package/packages/locale/lang/de-DE.ts +2 -1
  137. package/packages/locale/lang/en-US.ts +2 -1
  138. package/packages/locale/lang/es-ES.ts +2 -1
  139. package/packages/locale/lang/fr-FR.ts +2 -1
  140. package/packages/locale/lang/hu-HU.ts +2 -1
  141. package/packages/locale/lang/hy-AM.ts +2 -1
  142. package/packages/locale/lang/id-ID.ts +2 -1
  143. package/packages/locale/lang/it-IT.ts +2 -1
  144. package/packages/locale/lang/ja-JP.ts +2 -1
  145. package/packages/locale/lang/ko-KR.ts +2 -1
  146. package/packages/locale/lang/ms-MY.ts +2 -1
  147. package/packages/locale/lang/nb-NO.ts +2 -1
  148. package/packages/locale/lang/pt-BR.ts +2 -1
  149. package/packages/locale/lang/ru-RU.ts +2 -1
  150. package/packages/locale/lang/th-TH.ts +2 -1
  151. package/packages/locale/lang/ug-CN.ts +2 -1
  152. package/packages/locale/lang/uk-UA.ts +2 -1
  153. package/packages/locale/lang/uz-UZ.ts +2 -1
  154. package/packages/locale/lang/vi-VN.ts +2 -1
  155. package/packages/locale/lang/zh-CHT.ts +2 -1
  156. package/packages/locale/lang/zh-CN.ts +2 -1
  157. package/packages/table/module/export/hook.ts +3 -6
  158. package/packages/table/module/menu/hook.ts +3 -3
  159. package/packages/table/module/menu/panel.ts +30 -14
  160. package/packages/table/src/cell.ts +8 -38
  161. package/packages/table/src/columnInfo.ts +5 -1
  162. package/packages/table/src/table.ts +72 -1
  163. package/packages/table/src/util.ts +3 -0
  164. package/packages/ui/index.ts +1 -0
  165. package/styles/components/table-module/menu.scss +1 -0
  166. /package/es/{iconfont.1762498964248.ttf → iconfont.1762758719777.ttf} +0 -0
  167. /package/es/{iconfont.1762498964248.woff → iconfont.1762758719777.woff} +0 -0
  168. /package/es/{iconfont.1762498964248.woff2 → iconfont.1762758719777.woff2} +0 -0
  169. /package/lib/{iconfont.1762498964248.ttf → iconfont.1762758719777.ttf} +0 -0
  170. /package/lib/{iconfont.1762498964248.woff → iconfont.1762758719777.woff} +0 -0
  171. /package/lib/{iconfont.1762498964248.woff2 → iconfont.1762758719777.woff2} +0 -0
@@ -468,15 +468,12 @@ hooks.add('tableExportModule', {
468
468
  if (!footLabelMethod) {
469
469
  footLabelMethod = columnOpts.footerExportMethod;
470
470
  }
471
- const _columnIndex = $xeTable.getVTColumnIndex(column);
472
471
  if (footLabelMethod) {
472
+ const _columnIndex = $xeTable.getVTColumnIndex(column);
473
473
  return footLabelMethod({ $table: $xeTable, items: row, itemIndex: _columnIndex, row, _columnIndex, column, options: opts });
474
474
  }
475
- // 兼容老模式
476
- if (XEUtils.isArray(row)) {
477
- return XEUtils.toValueString(row[_columnIndex]);
478
- }
479
- return XEUtils.get(row, column.field);
475
+ const cellValue = $xeTable.getFooterCellLabel(row, column);
476
+ return cellValue;
480
477
  };
481
478
  const toCsv = ($xeTable, opts, columns, datas) => {
482
479
  let content = csvBOM;
@@ -297,7 +297,7 @@ hooks.add('tableMenuModule', {
297
297
  const $xeGrid = $xeTable.xeGrid;
298
298
  const $xeGantt = $xeTable.xeGantt;
299
299
  // 如果一级菜单有配置 code 则允许点击,否则不能点击
300
- if (!menu.disabled && (menu.code || !menu.children || !menu.children.length)) {
300
+ if (!menu.loading && !menu.disabled && (menu.code || !menu.children || !menu.children.length)) {
301
301
  const gMenuOpts = menus.get(menu.code);
302
302
  const params = Object.assign({}, internalData._currMenuParams, { menu, $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, $event: evnt });
303
303
  const tmMethod = gMenuOpts ? (gMenuOpts.tableMenuMethod || gMenuOpts.menuMethod) : null;
@@ -4,7 +4,7 @@ import XEUtils from 'xe-utils';
4
4
  import { VxeUI } from '../../../ui';
5
5
  import { getFuncText } from '../../../ui/src/utils';
6
6
  import { getSlotVNs } from '../../../ui/src/vn';
7
- const { getIcon, renderEmptyElement } = VxeUI;
7
+ const { getIcon, getI18n, renderEmptyElement } = VxeUI;
8
8
  export default defineVxeComponent({
9
9
  name: 'VxeTableMenuPanel',
10
10
  setup(props, context) {
@@ -45,7 +45,8 @@ export default defineVxeComponent({
45
45
  class: 'vxe-context-menu--option-wrapper',
46
46
  key: gIndex
47
47
  }, options.map((item, index) => {
48
- const hasChildMenus = item.children && item.children.some((child) => child.visible !== false);
48
+ const { children, loading } = item;
49
+ const hasChildMenus = children && children.some((child) => child.visible !== false);
49
50
  const prefixOpts = Object.assign({}, item.prefixConfig);
50
51
  const prefixIcon = prefixOpts.icon || item.prefixIcon;
51
52
  const suffixOpts = Object.assign({}, item.suffixConfig);
@@ -55,6 +56,7 @@ export default defineVxeComponent({
55
56
  ? renderEmptyElement($xeTable)
56
57
  : h('li', {
57
58
  class: [item.className, {
59
+ 'link--loading': loading,
58
60
  'link--disabled': item.disabled,
59
61
  'link--active': item === ctxMenuStore.selected
60
62
  }],
@@ -75,17 +77,23 @@ export default defineVxeComponent({
75
77
  h('div', {
76
78
  class: ['vxe-context-menu--link-prefix', prefixOpts.className || '']
77
79
  }, [
78
- prefixIcon && XEUtils.isFunction(prefixIcon)
79
- ? h('span', {}, getSlotVNs(prefixIcon({})))
80
- : h('i', {
81
- class: prefixIcon
82
- }),
80
+ loading
81
+ ? h('span', {
82
+ class: getIcon('TABLE_MENU_OPTION_LOADING')
83
+ })
84
+ : (prefixIcon && XEUtils.isFunction(prefixIcon)
85
+ ? h('span', {}, getSlotVNs(prefixIcon({})))
86
+ : h('span', {}, [
87
+ h('i', {
88
+ class: prefixIcon
89
+ })
90
+ ])),
83
91
  prefixOpts.content ? h('span', {}, `${prefixOpts.content}`) : renderEmptyElement($xeTable)
84
92
  ]),
85
93
  h('div', {
86
94
  class: 'vxe-context-menu--link-content',
87
95
  title: menuContent
88
- }, menuContent),
96
+ }, loading ? getI18n('vxe.table.menuLoading') : menuContent),
89
97
  h('div', {
90
98
  class: ['vxe-context-menu--link-suffix', suffixOpts.className || '']
91
99
  }, [
@@ -103,6 +111,7 @@ export default defineVxeComponent({
103
111
  'is--show': item === ctxMenuStore.selected && ctxMenuStore.showChild
104
112
  }]
105
113
  }, item.children.map((child, cIndex) => {
114
+ const { loading: childLoading } = child;
106
115
  const childPrefixOpts = Object.assign({}, child.prefixConfig);
107
116
  const childPrefixIcon = childPrefixOpts.icon || child.prefixIcon;
108
117
  const childSuffixOpts = Object.assign({}, child.suffixConfig);
@@ -112,6 +121,7 @@ export default defineVxeComponent({
112
121
  ? null
113
122
  : h('li', {
114
123
  class: [child.className, {
124
+ 'link--loading': childLoading,
115
125
  'link--disabled': child.disabled,
116
126
  'link--active': child === ctxMenuStore.selectChild
117
127
  }],
@@ -132,17 +142,23 @@ export default defineVxeComponent({
132
142
  h('div', {
133
143
  class: ['vxe-context-menu--link-prefix', childPrefixOpts.className || '']
134
144
  }, [
135
- childPrefixIcon && XEUtils.isFunction(childPrefixIcon)
136
- ? h('span', {}, getSlotVNs(childPrefixIcon({})))
137
- : h('i', {
138
- class: childPrefixIcon
139
- }),
145
+ child.loading
146
+ ? h('span', {
147
+ class: getIcon('TABLE_MENU_OPTION_LOADING')
148
+ })
149
+ : (childPrefixIcon && XEUtils.isFunction(childPrefixIcon)
150
+ ? h('span', {}, getSlotVNs(childPrefixIcon({})))
151
+ : h('span', {}, [
152
+ h('i', {
153
+ class: childPrefixIcon
154
+ })
155
+ ])),
140
156
  childPrefixOpts.content ? h('span', `${childPrefixOpts.content}`) : renderEmptyElement($xeTable)
141
157
  ]),
142
158
  h('div', {
143
159
  class: 'vxe-context-menu--link-content',
144
160
  title: childMenuContent
145
- }, childMenuContent),
161
+ }, childLoading ? getI18n('vxe.table.menuLoading') : childMenuContent),
146
162
  h('div', {
147
163
  class: ['vxe-context-menu--link-suffix', childSuffixOpts.className || '']
148
164
  }, [
@@ -5,7 +5,7 @@ import { getFuncText, isEnableConf, formatText, eqEmptyValue } from '../../ui/sr
5
5
  import { updateCellTitle } from '../../ui/src/dom';
6
6
  import { createColumn, getRowid } from './util';
7
7
  import { getSlotVNs } from '../../ui/src/vn';
8
- const { getI18n, getIcon, renderer, formats, renderEmptyElement } = VxeUI;
8
+ const { getI18n, getIcon, renderer, renderEmptyElement } = VxeUI;
9
9
  function renderTitlePrefixIcon(params) {
10
10
  const { $table, column } = params;
11
11
  const titlePrefix = column.titlePrefix || column.titleHelp;
@@ -207,54 +207,23 @@ function renderTitleContent(params, content) {
207
207
  ];
208
208
  }
209
209
  function getFooterContent(params) {
210
- const { $table, column, _columnIndex, items, row } = params;
211
- const { slots, editRender, cellRender, footerFormatter } = column;
210
+ const { $table, column, row } = params;
211
+ const { slots, editRender, cellRender } = column;
212
212
  const renderOpts = editRender || cellRender;
213
213
  const footerSlot = slots ? slots.footer : null;
214
214
  if (footerSlot) {
215
215
  return $table.callSlot(footerSlot, params);
216
216
  }
217
- let itemValue = '';
218
- // 兼容老模式
219
- if (XEUtils.isArray(items)) {
220
- itemValue = items[_columnIndex];
221
- }
222
- else {
223
- itemValue = XEUtils.get(row, column.field);
224
- }
225
- const footParams = Object.assign(params, {
226
- cellValue: itemValue,
227
- itemValue
228
- });
229
- if (footerFormatter) {
230
- if (XEUtils.isFunction(footerFormatter)) {
231
- return [
232
- h('span', {
233
- class: 'vxe-cell--label'
234
- }, `${footerFormatter(footParams)}`)
235
- ];
236
- }
237
- const isArr = XEUtils.isArray(footerFormatter);
238
- const gFormatOpts = isArr ? formats.get(footerFormatter[0]) : formats.get(footerFormatter);
239
- const footerFormatMethod = gFormatOpts ? gFormatOpts.tableFooterCellFormatMethod : null;
240
- if (footerFormatMethod) {
241
- return [
242
- h('span', {
243
- class: 'vxe-cell--label'
244
- }, `${isArr ? footerFormatMethod(footParams, ...footerFormatter.slice(1)) : footerFormatMethod(footParams)}`)
245
- ];
246
- }
247
- return [
248
- h('span', {
249
- class: 'vxe-cell--label'
250
- }, '')
251
- ];
252
- }
217
+ const itemValue = $table.getFooterCellLabel(row, column);
253
218
  if (renderOpts) {
254
219
  const compConf = renderer.get(renderOpts.name);
255
220
  if (compConf) {
256
221
  const rtFooter = compConf.renderTableFooter || compConf.renderFooter;
257
222
  if (rtFooter) {
223
+ const footParams = Object.assign(params, {
224
+ cellValue: itemValue,
225
+ itemValue
226
+ });
258
227
  return getSlotVNs(rtFooter(renderOpts, footParams));
259
228
  }
260
229
  }
@@ -11,13 +11,16 @@ export class ColumnInfo {
11
11
  const $xeGrid = $xeTable.xeGrid;
12
12
  const $xeGantt = $xeTable.xeGantt;
13
13
  const $xeGGWrapper = $xeGrid || $xeGantt;
14
- const { field, editRender, filterRender } = _vm;
14
+ const { field, editRender, filterRender, headerFormatter } = _vm;
15
15
  const colId = _vm.colId || XEUtils.uniqueId('col_');
16
16
  const formatter = _vm.formatter;
17
17
  const visible = XEUtils.isBoolean(_vm.visible) ? _vm.visible : true;
18
18
  const flCompConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null;
19
19
  const ctFilterOptions = flCompConf ? flCompConf.createTableFilterOptions : null;
20
20
  const filters = toFilters(_vm.filters, colId);
21
+ if (headerFormatter) {
22
+ errLog('vxe.error.notProp', ['header-formatter']);
23
+ }
21
24
  const types = ['seq', 'checkbox', 'radio', 'expand', 'html'];
22
25
  if (_vm.type && types.indexOf(_vm.type) === -1) {
23
26
  warnLog('vxe.error.errProp', [`type=${_vm.type}`, types.join(', ')]);
@@ -5093,7 +5093,13 @@ export default defineVxeComponent({
5093
5093
  }
5094
5094
  }
5095
5095
  }
5096
- const formatParams = { cellValue, row, rowIndex: tableMethods.getRowIndex(row), column, columnIndex: tableMethods.getColumnIndex(column) };
5096
+ const formatParams = {
5097
+ cellValue,
5098
+ row,
5099
+ rowIndex: $xeTable.getRowIndex(row),
5100
+ column,
5101
+ columnIndex: $xeTable.getColumnIndex(column)
5102
+ };
5097
5103
  if (XEUtils.isString(formatter)) {
5098
5104
  const gFormatOpts = formats.get(formatter);
5099
5105
  const tcFormatMethod = gFormatOpts ? (gFormatOpts.tableCellFormatMethod || gFormatOpts.cellFormatMethod) : null;
@@ -5113,6 +5119,73 @@ export default defineVxeComponent({
5113
5119
  }
5114
5120
  return cellLabel;
5115
5121
  },
5122
+ getFooterCellLabel(row, fieldOrColumn) {
5123
+ const column = handleFieldOrColumn($xeTable, fieldOrColumn);
5124
+ if (!column) {
5125
+ return null;
5126
+ }
5127
+ const { footerFormatter } = column;
5128
+ const _columnIndex = $xeTable.getVTColumnIndex(column);
5129
+ let itemValue = '';
5130
+ // 兼容老模式
5131
+ if (XEUtils.isArray(row)) {
5132
+ itemValue = row[_columnIndex];
5133
+ }
5134
+ else {
5135
+ itemValue = XEUtils.get(row, column.field);
5136
+ }
5137
+ let cellLabel = itemValue;
5138
+ if (footerFormatter) {
5139
+ let formatData;
5140
+ const { footerTableData } = reactData;
5141
+ const { footerFullDataRowData } = internalData;
5142
+ const colid = column.id;
5143
+ const $rowIndex = footerTableData.indexOf(row);
5144
+ let rowRest = null;
5145
+ if ($rowIndex > -1) {
5146
+ rowRest = footerFullDataRowData[$rowIndex];
5147
+ if (!rowRest) {
5148
+ rowRest = footerFullDataRowData[$rowIndex] = {};
5149
+ }
5150
+ formatData = rowRest.formatData;
5151
+ if (!formatData) {
5152
+ formatData = footerFullDataRowData[$rowIndex].formatData = {};
5153
+ }
5154
+ if (rowRest && formatData[colid]) {
5155
+ if (formatData[colid].value === itemValue) {
5156
+ return formatData[colid].label;
5157
+ }
5158
+ }
5159
+ }
5160
+ const footerFormatParams = {
5161
+ cellValue: itemValue,
5162
+ itemValue,
5163
+ row,
5164
+ items: row,
5165
+ $rowIndex,
5166
+ column,
5167
+ _columnIndex,
5168
+ columnIndex: $xeTable.getColumnIndex(column)
5169
+ };
5170
+ if (XEUtils.isString(footerFormatter)) {
5171
+ const gFormatOpts = formats.get(footerFormatter);
5172
+ const fcFormatMethod = gFormatOpts ? gFormatOpts.tableFooterCellFormatMethod : null;
5173
+ cellLabel = fcFormatMethod ? fcFormatMethod(footerFormatParams) : '';
5174
+ }
5175
+ else if (XEUtils.isArray(footerFormatter)) {
5176
+ const gFormatOpts = formats.get(footerFormatter[0]);
5177
+ const fcFormatMethod = gFormatOpts ? gFormatOpts.tableFooterCellFormatMethod : null;
5178
+ cellLabel = fcFormatMethod ? fcFormatMethod(footerFormatParams, ...footerFormatter.slice(1)) : '';
5179
+ }
5180
+ else {
5181
+ cellLabel = footerFormatter(footerFormatParams);
5182
+ }
5183
+ if (formatData) {
5184
+ formatData[colid] = { value: itemValue, label: cellLabel };
5185
+ }
5186
+ }
5187
+ return cellLabel;
5188
+ },
5116
5189
  /**
5117
5190
  * 检查是否为临时行数据
5118
5191
  */
@@ -12890,6 +12963,7 @@ export default defineVxeComponent({
12890
12963
  footFlag.value++;
12891
12964
  });
12892
12965
  watch(footFlag, () => {
12966
+ internalData.footerFullDataRowData = {};
12893
12967
  $xeTable.updateFooter();
12894
12968
  });
12895
12969
  watch(() => props.syncResize, (value) => {
@@ -76,6 +76,7 @@ export function createInternalData() {
76
76
  fullDataRowIdData: {},
77
77
  // 数据集(仅可视)
78
78
  visibleDataRowIdData: {},
79
+ footerFullDataRowData: {},
79
80
  // 渲染中缓存数据
80
81
  sourceDataRowIdData: {},
81
82
  fullColumnIdData: {},
@@ -1716,17 +1716,20 @@
1716
1716
  .vxe-table--context-menu-clild-wrapper li.link--active > .vxe-context-menu--link {
1717
1717
  color: #2B2B2B;
1718
1718
  }
1719
- .vxe-context-menu--option-wrapper li.link--disabled > .vxe-context-menu--link,
1719
+ .vxe-context-menu--option-wrapper li.link--loading > .vxe-context-menu--link, .vxe-context-menu--option-wrapper li.link--disabled > .vxe-context-menu--link,
1720
+ .vxe-table--context-menu-clild-wrapper li.link--loading > .vxe-context-menu--link,
1720
1721
  .vxe-table--context-menu-clild-wrapper li.link--disabled > .vxe-context-menu--link {
1721
1722
  color: var(--vxe-ui-font-disabled-color);
1722
1723
  cursor: no-drop;
1723
1724
  }
1724
- .vxe-context-menu--option-wrapper li.link--disabled.link--active,
1725
+ .vxe-context-menu--option-wrapper li.link--loading.link--active, .vxe-context-menu--option-wrapper li.link--disabled.link--active,
1726
+ .vxe-table--context-menu-clild-wrapper li.link--loading.link--active,
1725
1727
  .vxe-table--context-menu-clild-wrapper li.link--disabled.link--active {
1726
1728
  border-color: #C0C1C2;
1727
1729
  background-color: #EEEEEE;
1728
1730
  }
1729
- .vxe-context-menu--option-wrapper li.link--disabled.link--active:hover,
1731
+ .vxe-context-menu--option-wrapper li.link--loading.link--active:hover, .vxe-context-menu--option-wrapper li.link--disabled.link--active:hover,
1732
+ .vxe-table--context-menu-clild-wrapper li.link--loading.link--active:hover,
1730
1733
  .vxe-table--context-menu-clild-wrapper li.link--disabled.link--active:hover {
1731
1734
  background-color: inherit;
1732
1735
  }