vxe-table 3.14.4 → 3.15.0-beta.0
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.
- package/es/locale/lang/ar-EG.js +3 -1
- package/es/locale/lang/de-DE.js +3 -1
- package/es/locale/lang/en-US.js +7 -5
- package/es/locale/lang/es-ES.js +3 -1
- package/es/locale/lang/fr-FR.js +3 -1
- package/es/locale/lang/hu-HU.js +3 -1
- package/es/locale/lang/hy-AM.js +3 -1
- package/es/locale/lang/id-ID.js +3 -1
- package/es/locale/lang/it-IT.js +3 -1
- package/es/locale/lang/ja-JP.js +3 -1
- package/es/locale/lang/ko-KR.js +3 -1
- package/es/locale/lang/nb-NO.js +3 -1
- package/es/locale/lang/pt-BR.js +3 -1
- package/es/locale/lang/ru-RU.js +3 -1
- package/es/locale/lang/th-TH.js +3 -1
- package/es/locale/lang/ug-CN.js +3 -1
- package/es/locale/lang/uk-UA.js +3 -1
- package/es/locale/lang/vi-VN.js +3 -1
- package/es/locale/lang/zh-CHT.js +3 -1
- package/es/locale/lang/zh-CN.js +3 -1
- package/es/style.css +1 -1
- package/es/table/module/edit/mixin.js +10 -9
- package/es/table/module/export/export-panel.js +32 -17
- package/es/table/module/export/mixin.js +17 -12
- package/es/table/src/body.js +11 -13
- package/es/table/src/footer.js +3 -16
- package/es/table/src/methods.js +246 -109
- package/es/table/src/table.js +50 -25
- package/es/table/src/util.js +0 -13
- package/es/ui/index.js +2 -2
- package/es/ui/src/log.js +1 -1
- package/lib/index.umd.js +410 -247
- package/lib/index.umd.min.js +1 -1
- package/lib/locale/lang/ar-EG.js +3 -1
- package/lib/locale/lang/ar-EG.min.js +1 -1
- package/lib/locale/lang/de-DE.js +3 -1
- package/lib/locale/lang/de-DE.min.js +1 -1
- package/lib/locale/lang/en-US.js +7 -5
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +7 -5
- package/lib/locale/lang/es-ES.js +3 -1
- package/lib/locale/lang/es-ES.min.js +1 -1
- package/lib/locale/lang/es-ES.umd.js +3 -1
- package/lib/locale/lang/fr-FR.js +3 -1
- package/lib/locale/lang/fr-FR.min.js +1 -1
- package/lib/locale/lang/hu-HU.js +3 -1
- package/lib/locale/lang/hu-HU.min.js +1 -1
- package/lib/locale/lang/hu-HU.umd.js +3 -1
- package/lib/locale/lang/hy-AM.js +3 -1
- package/lib/locale/lang/hy-AM.min.js +1 -1
- package/lib/locale/lang/id-ID.js +3 -1
- package/lib/locale/lang/id-ID.min.js +1 -1
- package/lib/locale/lang/it-IT.js +3 -1
- package/lib/locale/lang/it-IT.min.js +1 -1
- package/lib/locale/lang/ja-JP.js +3 -1
- package/lib/locale/lang/ja-JP.min.js +1 -1
- package/lib/locale/lang/ja-JP.umd.js +3 -1
- package/lib/locale/lang/ko-KR.js +3 -1
- package/lib/locale/lang/ko-KR.min.js +1 -1
- package/lib/locale/lang/ko-KR.umd.js +3 -1
- package/lib/locale/lang/nb-NO.js +3 -1
- package/lib/locale/lang/nb-NO.min.js +1 -1
- package/lib/locale/lang/pt-BR.js +3 -1
- package/lib/locale/lang/pt-BR.min.js +1 -1
- package/lib/locale/lang/pt-BR.umd.js +3 -1
- package/lib/locale/lang/ru-RU.js +3 -1
- package/lib/locale/lang/ru-RU.min.js +1 -1
- package/lib/locale/lang/ru-RU.umd.js +3 -1
- package/lib/locale/lang/th-TH.js +3 -1
- package/lib/locale/lang/th-TH.min.js +1 -1
- package/lib/locale/lang/ug-CN.js +3 -1
- package/lib/locale/lang/ug-CN.min.js +1 -1
- package/lib/locale/lang/uk-UA.js +3 -1
- package/lib/locale/lang/uk-UA.min.js +1 -1
- package/lib/locale/lang/uk-UA.umd.js +3 -1
- package/lib/locale/lang/vi-VN.js +3 -1
- package/lib/locale/lang/vi-VN.min.js +1 -1
- package/lib/locale/lang/zh-CHT.js +3 -1
- package/lib/locale/lang/zh-CHT.min.js +1 -1
- package/lib/locale/lang/zh-CHT.umd.js +3 -1
- package/lib/locale/lang/zh-CN.js +3 -1
- package/lib/locale/lang/zh-CN.min.js +1 -1
- package/lib/locale/lang/zh-CN.umd.js +3 -1
- package/lib/style.css +1 -1
- package/lib/table/module/edit/mixin.js +9 -9
- package/lib/table/module/edit/mixin.min.js +1 -1
- package/lib/table/module/export/export-panel.js +29 -17
- package/lib/table/module/export/export-panel.min.js +1 -1
- package/lib/table/module/export/mixin.js +18 -12
- package/lib/table/module/export/mixin.min.js +1 -1
- package/lib/table/src/body.js +14 -15
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/footer.js +4 -27
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/methods.js +278 -114
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/table.js +52 -25
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +0 -25
- package/lib/table/src/util.min.js +1 -1
- package/lib/ui/index.js +2 -2
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/package.json +2 -2
- package/packages/locale/lang/ar-EG.ts +3 -1
- package/packages/locale/lang/de-DE.ts +3 -1
- package/packages/locale/lang/en-US.ts +7 -5
- package/packages/locale/lang/es-ES.ts +3 -1
- package/packages/locale/lang/fr-FR.ts +3 -1
- package/packages/locale/lang/hu-HU.ts +3 -1
- package/packages/locale/lang/hy-AM.ts +3 -1
- package/packages/locale/lang/id-ID.ts +3 -1
- package/packages/locale/lang/it-IT.ts +3 -1
- package/packages/locale/lang/ja-JP.ts +3 -1
- package/packages/locale/lang/ko-KR.ts +3 -1
- package/packages/locale/lang/nb-NO.ts +3 -1
- package/packages/locale/lang/pt-BR.ts +3 -1
- package/packages/locale/lang/ru-RU.ts +3 -1
- package/packages/locale/lang/th-TH.ts +3 -1
- package/packages/locale/lang/ug-CN.ts +3 -1
- package/packages/locale/lang/uk-UA.ts +3 -1
- package/packages/locale/lang/vi-VN.ts +3 -1
- package/packages/locale/lang/zh-CHT.ts +3 -1
- package/packages/locale/lang/zh-CN.ts +3 -1
- package/packages/table/module/edit/mixin.ts +10 -9
- package/packages/table/module/export/export-panel.ts +33 -17
- package/packages/table/module/export/mixin.ts +17 -12
- package/packages/table/src/body.ts +11 -13
- package/packages/table/src/footer.ts +3 -17
- package/packages/table/src/methods.ts +261 -119
- package/packages/table/src/table.ts +50 -25
- package/packages/table/src/util.ts +0 -14
- package/packages/ui/index.ts +1 -1
- /package/es/{iconfont.1743393991959.ttf → iconfont.1743578536739.ttf} +0 -0
- /package/es/{iconfont.1743393991959.woff → iconfont.1743578536739.woff} +0 -0
- /package/es/{iconfont.1743393991959.woff2 → iconfont.1743578536739.woff2} +0 -0
- /package/lib/{iconfont.1743393991959.ttf → iconfont.1743578536739.ttf} +0 -0
- /package/lib/{iconfont.1743393991959.woff → iconfont.1743578536739.woff} +0 -0
- /package/lib/{iconfont.1743393991959.woff2 → iconfont.1743578536739.woff2} +0 -0
|
@@ -93,8 +93,7 @@ function handleInsertRowAt($xeTable, records, targetRow, isInsertNextRow) {
|
|
|
93
93
|
const reactData = $xeTable;
|
|
94
94
|
const internalData = $xeTable;
|
|
95
95
|
const { treeConfig } = props;
|
|
96
|
-
const {
|
|
97
|
-
const { tableFullTreeData, afterFullData, tableFullData, fullDataRowIdData, fullAllDataRowIdData, insertRowMaps } = internalData;
|
|
96
|
+
const { tableFullTreeData, afterFullData, mergeBodyList, tableFullData, fullDataRowIdData, fullAllDataRowIdData, insertRowMaps } = internalData;
|
|
98
97
|
const treeOpts = $xeTable.computeTreeOpts;
|
|
99
98
|
const { transform, rowField, mapChildrenField } = treeOpts;
|
|
100
99
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
@@ -117,7 +116,7 @@ function handleInsertRowAt($xeTable, records, targetRow, isInsertNextRow) {
|
|
|
117
116
|
tableFullData.unshift(item);
|
|
118
117
|
});
|
|
119
118
|
// 刷新单元格合并
|
|
120
|
-
|
|
119
|
+
mergeBodyList.forEach((mergeItem) => {
|
|
121
120
|
const { row: mergeRowIndex } = mergeItem;
|
|
122
121
|
if (mergeRowIndex > 0) {
|
|
123
122
|
mergeItem.row = mergeRowIndex + newRecords.length;
|
|
@@ -141,7 +140,7 @@ function handleInsertRowAt($xeTable, records, targetRow, isInsertNextRow) {
|
|
|
141
140
|
tableFullData.push(item);
|
|
142
141
|
});
|
|
143
142
|
// 刷新单元格合并
|
|
144
|
-
|
|
143
|
+
mergeBodyList.forEach((mergeItem) => {
|
|
145
144
|
const { row: mergeRowIndex, rowspan: mergeRowspan } = mergeItem;
|
|
146
145
|
if (mergeRowIndex + mergeRowspan > afterFullData.length) {
|
|
147
146
|
mergeItem.rowspan = mergeRowspan + newRecords.length;
|
|
@@ -229,7 +228,7 @@ function handleInsertRowAt($xeTable, records, targetRow, isInsertNextRow) {
|
|
|
229
228
|
tableFullData.push(...newRecords);
|
|
230
229
|
}
|
|
231
230
|
// 刷新单元格合并
|
|
232
|
-
|
|
231
|
+
mergeBodyList.forEach((mergeItem) => {
|
|
233
232
|
const { row: mergeRowIndex, rowspan: mergeRowspan } = mergeItem;
|
|
234
233
|
if (mergeRowIndex > afIndex) {
|
|
235
234
|
mergeItem.row = mergeRowIndex + newRecords.length;
|
|
@@ -253,6 +252,7 @@ function handleInsertRowAt($xeTable, records, targetRow, isInsertNextRow) {
|
|
|
253
252
|
$xeTable.updateAfterDataIndex();
|
|
254
253
|
}
|
|
255
254
|
$xeTable.updateFooter();
|
|
255
|
+
$xeTable.handleUpdateBodyMerge();
|
|
256
256
|
$xeTable.checkSelectionStatus();
|
|
257
257
|
if (reactData.scrollYLoad) {
|
|
258
258
|
$xeTable.updateScrollYSpace();
|
|
@@ -495,8 +495,8 @@ export default {
|
|
|
495
495
|
const reactData = $xeTable;
|
|
496
496
|
const internalData = $xeTable;
|
|
497
497
|
const { treeConfig } = props;
|
|
498
|
-
const {
|
|
499
|
-
const { tableFullTreeData, selectCheckboxMaps, afterFullData, tableFullData, pendingRowMaps, insertRowMaps, removeRowMaps } = internalData;
|
|
498
|
+
const { editStore } = reactData;
|
|
499
|
+
const { tableFullTreeData, selectCheckboxMaps, afterFullData, mergeBodyList, tableFullData, pendingRowMaps, insertRowMaps, removeRowMaps } = internalData;
|
|
500
500
|
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
501
501
|
const treeOpts = $xeTable.computeTreeOpts;
|
|
502
502
|
const { transform, mapChildrenField } = treeOpts;
|
|
@@ -564,7 +564,7 @@ export default {
|
|
|
564
564
|
const afIndex = this.findRowIndexOf(afterFullData, row);
|
|
565
565
|
if (afIndex > -1) {
|
|
566
566
|
// 刷新单元格合并
|
|
567
|
-
|
|
567
|
+
mergeBodyList.forEach((mergeItem) => {
|
|
568
568
|
const { row: mergeRowIndex, rowspan: mergeRowspan } = mergeItem;
|
|
569
569
|
if (mergeRowIndex > afIndex) {
|
|
570
570
|
mergeItem.row = mergeRowIndex - 1;
|
|
@@ -595,9 +595,10 @@ export default {
|
|
|
595
595
|
reactData.removeRowFlag++;
|
|
596
596
|
reactData.insertRowFlag++;
|
|
597
597
|
reactData.pendingRowFlag++;
|
|
598
|
-
$xeTable.updateFooter();
|
|
599
598
|
$xeTable.cacheRowMap(false);
|
|
600
599
|
$xeTable.handleTableData(treeConfig && transform);
|
|
600
|
+
$xeTable.updateFooter();
|
|
601
|
+
$xeTable.handleUpdateBodyMerge();
|
|
601
602
|
if (!(treeConfig && transform)) {
|
|
602
603
|
$xeTable.updateAfterDataIndex();
|
|
603
604
|
}
|
|
@@ -326,27 +326,27 @@ export default {
|
|
|
326
326
|
}),
|
|
327
327
|
h('vxe-checkbox', {
|
|
328
328
|
props: {
|
|
329
|
-
value: defaultOptions.
|
|
330
|
-
disabled: !
|
|
331
|
-
title: getI18n('vxe.export.
|
|
332
|
-
content: getI18n('vxe.export.
|
|
329
|
+
value: isHeader ? defaultOptions.isTitle : false,
|
|
330
|
+
disabled: !isHeader,
|
|
331
|
+
title: getI18n('vxe.export.expTitleTitle'),
|
|
332
|
+
content: getI18n('vxe.export.expOptTitle')
|
|
333
333
|
},
|
|
334
334
|
on: {
|
|
335
335
|
input(value) {
|
|
336
|
-
defaultOptions.
|
|
336
|
+
defaultOptions.isTitle = value;
|
|
337
337
|
}
|
|
338
338
|
}
|
|
339
339
|
}),
|
|
340
340
|
h('vxe-checkbox', {
|
|
341
341
|
props: {
|
|
342
|
-
value:
|
|
343
|
-
disabled:
|
|
344
|
-
title: getI18n('vxe.export.
|
|
345
|
-
content: getI18n('vxe.export.
|
|
342
|
+
value: isHeader && hasColgroup && supportMerge ? defaultOptions.isColgroup : false,
|
|
343
|
+
disabled: !isHeader || !hasColgroup || !supportMerge,
|
|
344
|
+
title: getI18n('vxe.export.expColgroupTitle'),
|
|
345
|
+
content: getI18n('vxe.export.expOptColgroup')
|
|
346
346
|
},
|
|
347
347
|
on: {
|
|
348
348
|
input(value) {
|
|
349
|
-
defaultOptions.
|
|
349
|
+
defaultOptions.isColgroup = value;
|
|
350
350
|
}
|
|
351
351
|
}
|
|
352
352
|
})
|
|
@@ -356,16 +356,14 @@ export default {
|
|
|
356
356
|
}, [
|
|
357
357
|
h('vxe-checkbox', {
|
|
358
358
|
props: {
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
title: getI18n('vxe.export.expColgroupTitle'),
|
|
364
|
-
content: getI18n('vxe.export.expOptColgroup')
|
|
359
|
+
value: hasEmptyData ? false : defaultOptions.original,
|
|
360
|
+
disabled: hasEmptyData,
|
|
361
|
+
title: getI18n('vxe.export.expOriginalTitle'),
|
|
362
|
+
content: getI18n('vxe.export.expOptOriginal')
|
|
365
363
|
},
|
|
366
364
|
on: {
|
|
367
365
|
input(value) {
|
|
368
|
-
defaultOptions.
|
|
366
|
+
defaultOptions.original = value;
|
|
369
367
|
}
|
|
370
368
|
}
|
|
371
369
|
}),
|
|
@@ -410,6 +408,23 @@ export default {
|
|
|
410
408
|
}
|
|
411
409
|
}
|
|
412
410
|
})
|
|
411
|
+
]),
|
|
412
|
+
h('div', {
|
|
413
|
+
class: 'vxe-table-export--panel-option-row'
|
|
414
|
+
}, [
|
|
415
|
+
h('vxe-checkbox', {
|
|
416
|
+
props: {
|
|
417
|
+
value: defaultOptions.isFooter,
|
|
418
|
+
disabled: !storeData.hasFooter,
|
|
419
|
+
title: getI18n('vxe.export.expFooterTitle'),
|
|
420
|
+
content: getI18n('vxe.export.expOptFooter')
|
|
421
|
+
},
|
|
422
|
+
on: {
|
|
423
|
+
input(value) {
|
|
424
|
+
defaultOptions.isFooter = value;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
})
|
|
413
428
|
])
|
|
414
429
|
])
|
|
415
430
|
])
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import XEUtils from 'xe-utils';
|
|
2
2
|
import { VxeUI } from '../../../ui';
|
|
3
|
-
import { isColumnInfo,
|
|
3
|
+
import { isColumnInfo, getCellValue } from '../../src/util';
|
|
4
4
|
import { parseFile, formatText, eqEmptyValue } from '../../../ui/src/utils';
|
|
5
5
|
import { hasClass } from '../../../ui/src/dom';
|
|
6
6
|
import { createHtmlPage, getExportBlobByContent } from './util';
|
|
@@ -209,7 +209,7 @@ function getBooleanValue(cellValue) {
|
|
|
209
209
|
function getHeaderTitle($xeTable, opts, column) {
|
|
210
210
|
const columnOpts = $xeTable.computeColumnOpts;
|
|
211
211
|
const headExportMethod = column.headerExportMethod || columnOpts.headerExportMethod;
|
|
212
|
-
return headExportMethod ? headExportMethod({ column, options: opts, $table: $xeTable }) : ((opts.
|
|
212
|
+
return headExportMethod ? headExportMethod({ column, options: opts, $table: $xeTable }) : ((opts.isTitle ? column.getTitle() : column.field) || '');
|
|
213
213
|
}
|
|
214
214
|
function getFooterCellValue($xeTable, opts, row, column) {
|
|
215
215
|
const columnOpts = $xeTable.computeColumnOpts;
|
|
@@ -320,8 +320,10 @@ function hasEllipsis($xeTable, column, property, allColumnOverflow) {
|
|
|
320
320
|
function toHtml($xeTable, opts, columns, datas) {
|
|
321
321
|
const props = $xeTable;
|
|
322
322
|
const reactData = $xeTable;
|
|
323
|
+
const internalData = $xeTable;
|
|
323
324
|
const { id, border, treeConfig, headerAlign: allHeaderAlign, align: allAlign, footerAlign: allFooterAlign, showOverflow: allColumnOverflow, showHeaderOverflow: allColumnHeaderOverflow } = props;
|
|
324
|
-
const { isAllSelected, isIndeterminate
|
|
325
|
+
const { isAllSelected, isIndeterminate } = reactData;
|
|
326
|
+
const { mergeBodyCellMaps } = internalData;
|
|
325
327
|
const treeOpts = $xeTable.computeTreeOpts;
|
|
326
328
|
const { print: isPrint, isHeader, isFooter, isColgroup, isMerge, colgroups, original } = opts;
|
|
327
329
|
const allCls = 'check-all';
|
|
@@ -416,15 +418,16 @@ function toHtml($xeTable, opts, columns, datas) {
|
|
|
416
418
|
else {
|
|
417
419
|
datas.forEach(item => {
|
|
418
420
|
tables.push('<tr>' + columns.map(column => {
|
|
421
|
+
const colid = column.id;
|
|
419
422
|
const cellAlign = column.align || allAlign;
|
|
420
423
|
const classNames = hasEllipsis($xeTable, column, 'showOverflow', allColumnOverflow) ? ['col--ellipsis'] : [];
|
|
421
|
-
const cellValue = item[
|
|
424
|
+
const cellValue = item[colid];
|
|
422
425
|
let rowSpan = 1;
|
|
423
426
|
let colSpan = 1;
|
|
424
|
-
if (isMerge
|
|
427
|
+
if (isMerge) {
|
|
425
428
|
const _rowIndex = $xeTable.getVTRowIndex(item._row);
|
|
426
429
|
const _columnIndex = $xeTable.getVTColumnIndex(column);
|
|
427
|
-
const spanRest =
|
|
430
|
+
const spanRest = mergeBodyCellMaps[`${_rowIndex}:${_columnIndex}`];
|
|
428
431
|
if (spanRest) {
|
|
429
432
|
const { rowspan, colspan } = spanRest;
|
|
430
433
|
if (!rowspan || !colspan) {
|
|
@@ -1004,18 +1007,19 @@ function handleExportAndPrint($xeTable, options, isPrint) {
|
|
|
1004
1007
|
const internalData = $xeTable;
|
|
1005
1008
|
const $xeGrid = $xeTable.$xeGrid;
|
|
1006
1009
|
const { treeConfig, showHeader, showFooter } = props;
|
|
1007
|
-
const { initStore,
|
|
1008
|
-
const { collectColumn } = internalData;
|
|
1010
|
+
const { initStore, isGroup, footerTableData, exportStore, exportParams } = reactData;
|
|
1011
|
+
const { collectColumn, mergeBodyList, mergeFooterList } = internalData;
|
|
1009
1012
|
const exportOpts = $xeTable.computeExportOpts;
|
|
1010
1013
|
const hasTree = treeConfig;
|
|
1011
1014
|
const customOpts = $xeTable.computeCustomOpts;
|
|
1012
1015
|
const selectRecords = $xeTable.getCheckboxRecords();
|
|
1013
1016
|
const proxyOpts = $xeGrid ? $xeGrid.computeProxyOpts : {};
|
|
1014
1017
|
const hasFooter = !!footerTableData.length;
|
|
1015
|
-
const hasMerge = !!(
|
|
1018
|
+
const hasMerge = !!(mergeBodyList.length || mergeFooterList.length);
|
|
1016
1019
|
const defOpts = Object.assign({
|
|
1017
1020
|
message: true,
|
|
1018
1021
|
isHeader: showHeader,
|
|
1022
|
+
isTitle: showHeader,
|
|
1019
1023
|
isFooter: showFooter,
|
|
1020
1024
|
isColgroup: isGroup,
|
|
1021
1025
|
isMerge: hasMerge,
|
|
@@ -1183,15 +1187,16 @@ export default {
|
|
|
1183
1187
|
const internalData = $xeTable;
|
|
1184
1188
|
const $xeGrid = $xeTable.$xeGrid;
|
|
1185
1189
|
const { treeConfig, showHeader, showFooter } = props;
|
|
1186
|
-
const {
|
|
1187
|
-
const { tableFullColumn, afterFullData, collectColumn } = internalData;
|
|
1190
|
+
const { mergeFooterList, isGroup } = reactData;
|
|
1191
|
+
const { tableFullColumn, afterFullData, mergeBodyList, collectColumn } = internalData;
|
|
1188
1192
|
const exportOpts = $xeTable.computeExportOpts;
|
|
1189
1193
|
const treeOpts = $xeTable.computeTreeOpts;
|
|
1190
1194
|
const proxyOpts = $xeGrid ? $xeGrid.computeProxyOpts : {};
|
|
1191
|
-
const hasMerge = !!(
|
|
1195
|
+
const hasMerge = !!(mergeBodyList.length || mergeFooterList.length);
|
|
1192
1196
|
const opts = Object.assign({
|
|
1193
1197
|
message: true,
|
|
1194
1198
|
isHeader: showHeader,
|
|
1199
|
+
isTitle: showHeader,
|
|
1195
1200
|
isFooter: showFooter,
|
|
1196
1201
|
isColgroup: isGroup,
|
|
1197
1202
|
isMerge: hasMerge,
|
package/es/table/src/body.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import XEUtils from 'xe-utils';
|
|
2
2
|
import { VxeUI } from '../../ui';
|
|
3
3
|
import { isEnableConf, getClass } from '../../ui/src/utils';
|
|
4
|
-
import { getOffsetSize, calcTreeLine,
|
|
4
|
+
import { getOffsetSize, calcTreeLine, getRowid, createHandleGetRowId } from './util';
|
|
5
5
|
import { updateCellTitle } from '../../ui/src/dom';
|
|
6
6
|
import { getSlotVNs } from '../../ui/src/vn';
|
|
7
7
|
const { getI18n, renderer, renderEmptyElement } = VxeUI;
|
|
@@ -27,14 +27,13 @@ function renderLine(h, _vm, rowid, params, cellHeight) {
|
|
|
27
27
|
if (slots && slots.line) {
|
|
28
28
|
return $xeTable.callSlot(slots.line, params, h);
|
|
29
29
|
}
|
|
30
|
-
const
|
|
30
|
+
const rowRest = fullAllDataRowIdData[rowid];
|
|
31
31
|
let rLevel = 0;
|
|
32
32
|
let prevRow = null;
|
|
33
|
-
if (
|
|
34
|
-
rLevel =
|
|
35
|
-
prevRow =
|
|
33
|
+
if (rowRest) {
|
|
34
|
+
rLevel = rowRest.level;
|
|
35
|
+
prevRow = rowRest.items[rowRest.treeIndex - 1];
|
|
36
36
|
}
|
|
37
|
-
const isFirstRow = $xeTable.eqRow(afterFullData[0], row);
|
|
38
37
|
if (treeConfig && treeNode && (treeOpts.showLine || treeOpts.line)) {
|
|
39
38
|
return [
|
|
40
39
|
h('div', {
|
|
@@ -44,7 +43,7 @@ function renderLine(h, _vm, rowid, params, cellHeight) {
|
|
|
44
43
|
h('div', {
|
|
45
44
|
class: 'vxe-tree--line',
|
|
46
45
|
style: {
|
|
47
|
-
height: `${
|
|
46
|
+
height: `${$xeTable.eqRow(afterFullData[0], row) ? 1 : calcTreeLine(params, prevRow)}px`,
|
|
48
47
|
bottom: `-${Math.floor(cellHeight / 2)}px`,
|
|
49
48
|
left: `${(rLevel * treeOpts.indent) + (rLevel ? 2 - getOffsetSize($xeTable) : 0) + 16}px`
|
|
50
49
|
}
|
|
@@ -63,10 +62,9 @@ function renderTdColumn(h, _vm, seq, rowid, fixedType, isOptimizeMode, rowLevel,
|
|
|
63
62
|
const tableReactData = $xeTable;
|
|
64
63
|
const tableInternalData = $xeTable;
|
|
65
64
|
const $xeGrid = $xeTable.$xeGrid;
|
|
66
|
-
const { fullAllDataRowIdData, fullColumnIdData, visibleColumn } = tableInternalData;
|
|
67
65
|
const { columnKey, resizable: allResizable, showOverflow: allShowOverflow, border, height, cellClassName: allCellClassName, cellStyle, align: allAlign, spanMethod, mouseConfig, editConfig, editRules, tooltipConfig, padding: allPadding } = tableProps;
|
|
68
|
-
const { tableData, dragRow, overflowX, currentColumn, scrollXLoad, scrollYLoad, calcCellHeightFlag, resizeHeightFlag, resizeWidthFlag,
|
|
69
|
-
const { afterFullData, scrollXStore, scrollYStore } = tableInternalData;
|
|
66
|
+
const { tableData, dragRow, overflowX, currentColumn, scrollXLoad, scrollYLoad, mergeBodyFlag, calcCellHeightFlag, resizeHeightFlag, resizeWidthFlag, editStore, isAllOverflow, validErrorMaps } = tableReactData;
|
|
67
|
+
const { fullAllDataRowIdData, fullColumnIdData, mergeBodyCellMaps, visibleColumn, afterFullData, mergeBodyList, scrollXStore, scrollYStore } = tableInternalData;
|
|
70
68
|
const cellOpts = $xeTable.computeCellOpts;
|
|
71
69
|
const validOpts = $xeTable.computeValidOpts;
|
|
72
70
|
const checkboxOpts = $xeTable.computeCheckboxOpts;
|
|
@@ -193,8 +191,8 @@ function renderTdColumn(h, _vm, seq, rowid, fixedType, isOptimizeMode, rowLevel,
|
|
|
193
191
|
};
|
|
194
192
|
let isMergeCell = false;
|
|
195
193
|
// 合并行或列
|
|
196
|
-
if (
|
|
197
|
-
const spanRest =
|
|
194
|
+
if (mergeBodyFlag && mergeBodyList.length) {
|
|
195
|
+
const spanRest = mergeBodyCellMaps[`${_rowIndex}:${_columnIndex}`];
|
|
198
196
|
if (spanRest) {
|
|
199
197
|
const { rowspan, colspan } = spanRest;
|
|
200
198
|
if (!rowspan || !colspan) {
|
|
@@ -224,7 +222,7 @@ function renderTdColumn(h, _vm, seq, rowid, fixedType, isOptimizeMode, rowLevel,
|
|
|
224
222
|
}
|
|
225
223
|
}
|
|
226
224
|
// 如果被合并不可隐藏
|
|
227
|
-
if (fixedHiddenColumn &&
|
|
225
|
+
if (fixedHiddenColumn && isMergeCell) {
|
|
228
226
|
if (tdAttrs.colspan > 1 || tdAttrs.rowspan > 1) {
|
|
229
227
|
fixedHiddenColumn = false;
|
|
230
228
|
}
|
package/es/table/src/footer.js
CHANGED
|
@@ -5,19 +5,6 @@ import { updateCellTitle } from '../../ui/src/dom';
|
|
|
5
5
|
import { getCellHeight } from './util';
|
|
6
6
|
const renderType = 'footer';
|
|
7
7
|
const { renderer, renderEmptyElement } = VxeUI;
|
|
8
|
-
function mergeFooterMethod(mergeFooterList, _rowIndex, _columnIndex) {
|
|
9
|
-
for (let mIndex = 0; mIndex < mergeFooterList.length; mIndex++) {
|
|
10
|
-
const { row: mergeRowIndex, col: mergeColIndex, rowspan: mergeRowspan, colspan: mergeColspan } = mergeFooterList[mIndex];
|
|
11
|
-
if (mergeColIndex > -1 && mergeRowIndex > -1 && mergeRowspan && mergeColspan) {
|
|
12
|
-
if (mergeRowIndex === _rowIndex && mergeColIndex === _columnIndex) {
|
|
13
|
-
return { rowspan: mergeRowspan, colspan: mergeColspan };
|
|
14
|
-
}
|
|
15
|
-
if (_rowIndex >= mergeRowIndex && _rowIndex < mergeRowIndex + mergeRowspan && _columnIndex >= mergeColIndex && _columnIndex < mergeColIndex + mergeColspan) {
|
|
16
|
-
return { rowspan: 0, colspan: 0 };
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
8
|
function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIndex) {
|
|
22
9
|
const props = _vm;
|
|
23
10
|
const $xeTable = _vm.$parent;
|
|
@@ -27,8 +14,8 @@ function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIn
|
|
|
27
14
|
const $xeGrid = $xeTable.$xeGrid;
|
|
28
15
|
const { fixedType } = props;
|
|
29
16
|
const { resizable: allResizable, border, footerCellClassName, footerCellStyle, footerAlign: allFooterAlign, footerSpanMethod, align: allAlign, columnKey, showFooterOverflow: allColumnFooterOverflow } = tableProps;
|
|
30
|
-
const { scrollXLoad, scrollYLoad, overflowX, currentColumn
|
|
31
|
-
const { fullColumnIdData, scrollXStore } = tableInternalData;
|
|
17
|
+
const { scrollXLoad, scrollYLoad, overflowX, currentColumn } = tableReactData;
|
|
18
|
+
const { fullColumnIdData, mergeFooterList, mergeFooterCellMaps, scrollXStore } = tableInternalData;
|
|
32
19
|
const tooltipOpts = $xeTable.computeTooltipOpts;
|
|
33
20
|
const { isAllColumnDrag } = $xeTable.resizableOpts;
|
|
34
21
|
const columnOpts = $xeTable.computeColumnOpts;
|
|
@@ -105,7 +92,7 @@ function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIn
|
|
|
105
92
|
let isMergeCell = false;
|
|
106
93
|
// 合并行或列
|
|
107
94
|
if (mergeFooterList.length) {
|
|
108
|
-
const spanRest =
|
|
95
|
+
const spanRest = mergeFooterCellMaps[`${_rowIndex}:${_columnIndex}`];
|
|
109
96
|
if (spanRest) {
|
|
110
97
|
const { rowspan, colspan } = spanRest;
|
|
111
98
|
if (!rowspan || !colspan) {
|