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.
Files changed (140) hide show
  1. package/es/locale/lang/ar-EG.js +3 -1
  2. package/es/locale/lang/de-DE.js +3 -1
  3. package/es/locale/lang/en-US.js +7 -5
  4. package/es/locale/lang/es-ES.js +3 -1
  5. package/es/locale/lang/fr-FR.js +3 -1
  6. package/es/locale/lang/hu-HU.js +3 -1
  7. package/es/locale/lang/hy-AM.js +3 -1
  8. package/es/locale/lang/id-ID.js +3 -1
  9. package/es/locale/lang/it-IT.js +3 -1
  10. package/es/locale/lang/ja-JP.js +3 -1
  11. package/es/locale/lang/ko-KR.js +3 -1
  12. package/es/locale/lang/nb-NO.js +3 -1
  13. package/es/locale/lang/pt-BR.js +3 -1
  14. package/es/locale/lang/ru-RU.js +3 -1
  15. package/es/locale/lang/th-TH.js +3 -1
  16. package/es/locale/lang/ug-CN.js +3 -1
  17. package/es/locale/lang/uk-UA.js +3 -1
  18. package/es/locale/lang/vi-VN.js +3 -1
  19. package/es/locale/lang/zh-CHT.js +3 -1
  20. package/es/locale/lang/zh-CN.js +3 -1
  21. package/es/style.css +1 -1
  22. package/es/table/module/edit/mixin.js +10 -9
  23. package/es/table/module/export/export-panel.js +32 -17
  24. package/es/table/module/export/mixin.js +17 -12
  25. package/es/table/src/body.js +11 -13
  26. package/es/table/src/footer.js +3 -16
  27. package/es/table/src/methods.js +246 -109
  28. package/es/table/src/table.js +50 -25
  29. package/es/table/src/util.js +0 -13
  30. package/es/ui/index.js +2 -2
  31. package/es/ui/src/log.js +1 -1
  32. package/lib/index.umd.js +410 -247
  33. package/lib/index.umd.min.js +1 -1
  34. package/lib/locale/lang/ar-EG.js +3 -1
  35. package/lib/locale/lang/ar-EG.min.js +1 -1
  36. package/lib/locale/lang/de-DE.js +3 -1
  37. package/lib/locale/lang/de-DE.min.js +1 -1
  38. package/lib/locale/lang/en-US.js +7 -5
  39. package/lib/locale/lang/en-US.min.js +1 -1
  40. package/lib/locale/lang/en-US.umd.js +7 -5
  41. package/lib/locale/lang/es-ES.js +3 -1
  42. package/lib/locale/lang/es-ES.min.js +1 -1
  43. package/lib/locale/lang/es-ES.umd.js +3 -1
  44. package/lib/locale/lang/fr-FR.js +3 -1
  45. package/lib/locale/lang/fr-FR.min.js +1 -1
  46. package/lib/locale/lang/hu-HU.js +3 -1
  47. package/lib/locale/lang/hu-HU.min.js +1 -1
  48. package/lib/locale/lang/hu-HU.umd.js +3 -1
  49. package/lib/locale/lang/hy-AM.js +3 -1
  50. package/lib/locale/lang/hy-AM.min.js +1 -1
  51. package/lib/locale/lang/id-ID.js +3 -1
  52. package/lib/locale/lang/id-ID.min.js +1 -1
  53. package/lib/locale/lang/it-IT.js +3 -1
  54. package/lib/locale/lang/it-IT.min.js +1 -1
  55. package/lib/locale/lang/ja-JP.js +3 -1
  56. package/lib/locale/lang/ja-JP.min.js +1 -1
  57. package/lib/locale/lang/ja-JP.umd.js +3 -1
  58. package/lib/locale/lang/ko-KR.js +3 -1
  59. package/lib/locale/lang/ko-KR.min.js +1 -1
  60. package/lib/locale/lang/ko-KR.umd.js +3 -1
  61. package/lib/locale/lang/nb-NO.js +3 -1
  62. package/lib/locale/lang/nb-NO.min.js +1 -1
  63. package/lib/locale/lang/pt-BR.js +3 -1
  64. package/lib/locale/lang/pt-BR.min.js +1 -1
  65. package/lib/locale/lang/pt-BR.umd.js +3 -1
  66. package/lib/locale/lang/ru-RU.js +3 -1
  67. package/lib/locale/lang/ru-RU.min.js +1 -1
  68. package/lib/locale/lang/ru-RU.umd.js +3 -1
  69. package/lib/locale/lang/th-TH.js +3 -1
  70. package/lib/locale/lang/th-TH.min.js +1 -1
  71. package/lib/locale/lang/ug-CN.js +3 -1
  72. package/lib/locale/lang/ug-CN.min.js +1 -1
  73. package/lib/locale/lang/uk-UA.js +3 -1
  74. package/lib/locale/lang/uk-UA.min.js +1 -1
  75. package/lib/locale/lang/uk-UA.umd.js +3 -1
  76. package/lib/locale/lang/vi-VN.js +3 -1
  77. package/lib/locale/lang/vi-VN.min.js +1 -1
  78. package/lib/locale/lang/zh-CHT.js +3 -1
  79. package/lib/locale/lang/zh-CHT.min.js +1 -1
  80. package/lib/locale/lang/zh-CHT.umd.js +3 -1
  81. package/lib/locale/lang/zh-CN.js +3 -1
  82. package/lib/locale/lang/zh-CN.min.js +1 -1
  83. package/lib/locale/lang/zh-CN.umd.js +3 -1
  84. package/lib/style.css +1 -1
  85. package/lib/table/module/edit/mixin.js +9 -9
  86. package/lib/table/module/edit/mixin.min.js +1 -1
  87. package/lib/table/module/export/export-panel.js +29 -17
  88. package/lib/table/module/export/export-panel.min.js +1 -1
  89. package/lib/table/module/export/mixin.js +18 -12
  90. package/lib/table/module/export/mixin.min.js +1 -1
  91. package/lib/table/src/body.js +14 -15
  92. package/lib/table/src/body.min.js +1 -1
  93. package/lib/table/src/footer.js +4 -27
  94. package/lib/table/src/footer.min.js +1 -1
  95. package/lib/table/src/methods.js +278 -114
  96. package/lib/table/src/methods.min.js +1 -1
  97. package/lib/table/src/table.js +52 -25
  98. package/lib/table/src/table.min.js +1 -1
  99. package/lib/table/src/util.js +0 -25
  100. package/lib/table/src/util.min.js +1 -1
  101. package/lib/ui/index.js +2 -2
  102. package/lib/ui/index.min.js +1 -1
  103. package/lib/ui/src/log.js +1 -1
  104. package/lib/ui/src/log.min.js +1 -1
  105. package/package.json +2 -2
  106. package/packages/locale/lang/ar-EG.ts +3 -1
  107. package/packages/locale/lang/de-DE.ts +3 -1
  108. package/packages/locale/lang/en-US.ts +7 -5
  109. package/packages/locale/lang/es-ES.ts +3 -1
  110. package/packages/locale/lang/fr-FR.ts +3 -1
  111. package/packages/locale/lang/hu-HU.ts +3 -1
  112. package/packages/locale/lang/hy-AM.ts +3 -1
  113. package/packages/locale/lang/id-ID.ts +3 -1
  114. package/packages/locale/lang/it-IT.ts +3 -1
  115. package/packages/locale/lang/ja-JP.ts +3 -1
  116. package/packages/locale/lang/ko-KR.ts +3 -1
  117. package/packages/locale/lang/nb-NO.ts +3 -1
  118. package/packages/locale/lang/pt-BR.ts +3 -1
  119. package/packages/locale/lang/ru-RU.ts +3 -1
  120. package/packages/locale/lang/th-TH.ts +3 -1
  121. package/packages/locale/lang/ug-CN.ts +3 -1
  122. package/packages/locale/lang/uk-UA.ts +3 -1
  123. package/packages/locale/lang/vi-VN.ts +3 -1
  124. package/packages/locale/lang/zh-CHT.ts +3 -1
  125. package/packages/locale/lang/zh-CN.ts +3 -1
  126. package/packages/table/module/edit/mixin.ts +10 -9
  127. package/packages/table/module/export/export-panel.ts +33 -17
  128. package/packages/table/module/export/mixin.ts +17 -12
  129. package/packages/table/src/body.ts +11 -13
  130. package/packages/table/src/footer.ts +3 -17
  131. package/packages/table/src/methods.ts +261 -119
  132. package/packages/table/src/table.ts +50 -25
  133. package/packages/table/src/util.ts +0 -14
  134. package/packages/ui/index.ts +1 -1
  135. /package/es/{iconfont.1743393991959.ttf → iconfont.1743578536739.ttf} +0 -0
  136. /package/es/{iconfont.1743393991959.woff → iconfont.1743578536739.woff} +0 -0
  137. /package/es/{iconfont.1743393991959.woff2 → iconfont.1743578536739.woff2} +0 -0
  138. /package/lib/{iconfont.1743393991959.ttf → iconfont.1743578536739.ttf} +0 -0
  139. /package/lib/{iconfont.1743393991959.woff → iconfont.1743578536739.woff} +0 -0
  140. /package/lib/{iconfont.1743393991959.woff2 → iconfont.1743578536739.woff2} +0 -0
@@ -299,39 +299,33 @@ function cacheColumnMap($xeTable) {
299
299
  htmlColumn = column;
300
300
  }
301
301
  if (treeNode) {
302
- if (process.env.NODE_ENV === 'development') {
303
- if (treeNodeColumn) {
304
- (0, _log.warnLog)('vxe.error.colRepet', ['tree-node', treeNode]);
305
- }
302
+ if (treeNodeColumn) {
303
+ (0, _log.warnLog)('vxe.error.colRepet', ['tree-node', treeNode]);
306
304
  }
307
305
  if (!treeNodeColumn) {
308
306
  treeNodeColumn = column;
309
307
  }
310
308
  } else if (type === 'expand') {
311
- if (process.env.NODE_ENV === 'development') {
312
- if (expandColumn) {
313
- (0, _log.warnLog)('vxe.error.colRepet', ['type', type]);
314
- }
309
+ if (expandColumn) {
310
+ (0, _log.warnLog)('vxe.error.colRepet', ['type', type]);
315
311
  }
316
312
  if (!expandColumn) {
317
313
  expandColumn = column;
318
314
  }
319
315
  }
320
- if (process.env.NODE_ENV === 'development') {
321
- if (type === 'checkbox') {
322
- if (checkboxColumn) {
323
- (0, _log.warnLog)('vxe.error.colRepet', ['type', type]);
324
- }
325
- if (!checkboxColumn) {
326
- checkboxColumn = column;
327
- }
328
- } else if (type === 'radio') {
329
- if (radioColumn) {
330
- (0, _log.warnLog)('vxe.error.colRepet', ['type', type]);
331
- }
332
- if (!radioColumn) {
333
- radioColumn = column;
334
- }
316
+ if (type === 'checkbox') {
317
+ if (checkboxColumn) {
318
+ (0, _log.warnLog)('vxe.error.colRepet', ['type', type]);
319
+ }
320
+ if (!checkboxColumn) {
321
+ checkboxColumn = column;
322
+ }
323
+ } else if (type === 'radio') {
324
+ if (radioColumn) {
325
+ (0, _log.warnLog)('vxe.error.colRepet', ['type', type]);
326
+ }
327
+ if (!radioColumn) {
328
+ radioColumn = column;
335
329
  }
336
330
  }
337
331
  if (isAllOverflow && column.showOverflow === false) {
@@ -1526,20 +1520,48 @@ function calculateMergerOffsetIndex(list, offsetItem, type) {
1526
1520
  }
1527
1521
  }
1528
1522
  }
1529
- function setMerges($xeTable, merges, mList, rowList) {
1530
- // const props = $xeTable
1523
+ function buildMergeData(mergeConfigs) {
1524
+ const mergeMaps = {};
1525
+ if (mergeConfigs && mergeConfigs.length) {
1526
+ for (let mIndex = 0; mIndex < mergeConfigs.length; mIndex++) {
1527
+ const {
1528
+ row: _rowIndex,
1529
+ col: _columnIndex,
1530
+ rowspan: mergeRowspan,
1531
+ colspan: mergeColspan
1532
+ } = mergeConfigs[mIndex];
1533
+ for (let i = 0; i < mergeRowspan; i++) {
1534
+ for (let j = 0; j < mergeColspan; j++) {
1535
+ mergeMaps[`${_rowIndex + i}:${_columnIndex + j}`] = !i && !j ? {
1536
+ rowspan: mergeRowspan,
1537
+ colspan: mergeColspan
1538
+ } : {
1539
+ rowspan: 0,
1540
+ colspan: 0
1541
+ };
1542
+ }
1543
+ }
1544
+ }
1545
+ }
1546
+ return mergeMaps;
1547
+ }
1548
+ const handleBodyMerge = ($xeTable, merges) => {
1531
1549
  const internalData = $xeTable;
1550
+ const {
1551
+ fullAllDataRowIdData,
1552
+ fullColumnIdData,
1553
+ visibleColumn,
1554
+ afterFullData,
1555
+ mergeBodyList,
1556
+ mergeBodyMaps
1557
+ } = internalData;
1532
1558
  if (merges) {
1533
- // const { treeConfig } = props
1534
1559
  const {
1535
- visibleColumn
1536
- } = internalData;
1560
+ handleGetRowId
1561
+ } = (0, _util.createHandleGetRowId)($xeTable);
1537
1562
  if (!_xeUtils.default.isArray(merges)) {
1538
1563
  merges = [merges];
1539
1564
  }
1540
- // if (treeConfig && merges.length) {
1541
- // errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
1542
- // }
1543
1565
  merges.forEach(item => {
1544
1566
  let {
1545
1567
  row,
@@ -1547,42 +1569,117 @@ function setMerges($xeTable, merges, mList, rowList) {
1547
1569
  rowspan,
1548
1570
  colspan
1549
1571
  } = item;
1550
- if (rowList && _xeUtils.default.isNumber(row)) {
1551
- row = rowList[row];
1572
+ let mergeRowIndex = -1;
1573
+ let mergeColumnIndex = -1;
1574
+ if (_xeUtils.default.isNumber(row)) {
1575
+ mergeRowIndex = row;
1576
+ } else {
1577
+ const rowid = row ? handleGetRowId(row) : null;
1578
+ const rowRest = rowid ? fullAllDataRowIdData[rowid] : null;
1579
+ if (rowRest) {
1580
+ mergeRowIndex = rowRest._index;
1581
+ }
1552
1582
  }
1553
1583
  if (_xeUtils.default.isNumber(col)) {
1554
- col = visibleColumn[col];
1584
+ mergeColumnIndex = col;
1585
+ } else {
1586
+ const colid = col ? col.id : null;
1587
+ const colRest = colid ? fullColumnIdData[colid] : null;
1588
+ if (colRest) {
1589
+ mergeColumnIndex = colRest._index;
1590
+ }
1555
1591
  }
1556
- if ((rowList ? row : _xeUtils.default.isNumber(row)) && col && (rowspan || colspan)) {
1592
+ if (mergeRowIndex > -1 && mergeColumnIndex > -1 && (rowspan || colspan)) {
1557
1593
  rowspan = _xeUtils.default.toNumber(rowspan) || 1;
1558
1594
  colspan = _xeUtils.default.toNumber(colspan) || 1;
1559
1595
  if (rowspan > 1 || colspan > 1) {
1560
- const mcIndex = _xeUtils.default.findIndexOf(mList, item => item._row === row && item._col === col);
1561
- const mergeItem = mList[mcIndex];
1596
+ const row = afterFullData[mergeRowIndex];
1597
+ const column = visibleColumn[mergeColumnIndex];
1598
+ let mergeItem = mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
1562
1599
  if (mergeItem) {
1563
1600
  mergeItem.rowspan = rowspan;
1564
1601
  mergeItem.colspan = colspan;
1565
1602
  mergeItem._rowspan = rowspan;
1566
1603
  mergeItem._colspan = colspan;
1567
1604
  } else {
1568
- const mergeRowIndex = rowList ? rowList.indexOf(row) : row;
1569
- const mergeColIndex = visibleColumn.indexOf(col);
1570
- mList.push({
1605
+ mergeItem = {
1571
1606
  row: mergeRowIndex,
1572
- col: mergeColIndex,
1607
+ col: mergeColumnIndex,
1573
1608
  rowspan,
1574
1609
  colspan,
1575
1610
  _row: row,
1576
- _col: col,
1611
+ _col: column,
1577
1612
  _rowspan: rowspan,
1578
1613
  _colspan: colspan
1579
- });
1614
+ };
1615
+ mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem;
1616
+ mergeBodyList.push(mergeItem);
1580
1617
  }
1581
1618
  }
1582
1619
  }
1583
1620
  });
1584
1621
  }
1585
- }
1622
+ };
1623
+ const handleFooterMerge = ($xeTable, merges) => {
1624
+ const reactData = $xeTable;
1625
+ const internalData = $xeTable;
1626
+ const {
1627
+ footerTableData
1628
+ } = reactData;
1629
+ const {
1630
+ mergeFooterList,
1631
+ mergeFooterMaps
1632
+ } = internalData;
1633
+ if (merges) {
1634
+ const {
1635
+ visibleColumn
1636
+ } = internalData;
1637
+ if (!_xeUtils.default.isArray(merges)) {
1638
+ merges = [merges];
1639
+ }
1640
+ merges.forEach(item => {
1641
+ let {
1642
+ row: margeRow,
1643
+ col: margeCol,
1644
+ rowspan,
1645
+ colspan
1646
+ } = item;
1647
+ const mergeRowIndex = _xeUtils.default.isNumber(margeRow) ? margeRow : -1;
1648
+ let mergeColumnIndex = -1;
1649
+ if (_xeUtils.default.isNumber(margeCol)) {
1650
+ mergeColumnIndex = margeCol;
1651
+ }
1652
+ if (mergeRowIndex > -1 && mergeColumnIndex > -1 && (rowspan || colspan)) {
1653
+ rowspan = _xeUtils.default.toNumber(rowspan) || 1;
1654
+ colspan = _xeUtils.default.toNumber(colspan) || 1;
1655
+ if (rowspan > 1 || colspan > 1) {
1656
+ const row = footerTableData[mergeRowIndex];
1657
+ const column = visibleColumn[mergeColumnIndex];
1658
+ let mergeItem = mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
1659
+ if (mergeItem) {
1660
+ mergeItem.rowspan = rowspan;
1661
+ mergeItem.colspan = colspan;
1662
+ mergeItem._rowspan = rowspan;
1663
+ mergeItem._colspan = colspan;
1664
+ } else {
1665
+ mergeItem = {
1666
+ row: mergeRowIndex,
1667
+ col: mergeColumnIndex,
1668
+ rowspan,
1669
+ colspan,
1670
+ _row: row,
1671
+ _col: column,
1672
+ _rowspan: rowspan,
1673
+ _colspan: colspan
1674
+ };
1675
+ mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem;
1676
+ mergeFooterList.push(mergeItem);
1677
+ }
1678
+ }
1679
+ }
1680
+ });
1681
+ }
1682
+ };
1586
1683
  function removeMerges($xeTable, merges, mList, rowList) {
1587
1684
  // const props = $xeTable
1588
1685
  const internalData = $xeTable;
@@ -2317,11 +2414,11 @@ function loadScrollXData($xeTable) {
2317
2414
  const reactData = $xeTable;
2318
2415
  const internalData = $xeTable;
2319
2416
  const {
2320
- mergeList,
2321
- mergeFooterList,
2322
2417
  isScrollXBig
2323
2418
  } = reactData;
2324
2419
  const {
2420
+ mergeBodyList,
2421
+ mergeFooterList,
2325
2422
  scrollXStore
2326
2423
  } = internalData;
2327
2424
  const {
@@ -2340,7 +2437,7 @@ function loadScrollXData($xeTable) {
2340
2437
  };
2341
2438
  scrollXStore.visibleStartIndex = toVisibleIndex - 1;
2342
2439
  scrollXStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
2343
- calculateMergerOffsetIndex(mergeList.concat(mergeFooterList), offsetItem, 'col');
2440
+ calculateMergerOffsetIndex(mergeBodyList.concat(mergeFooterList), offsetItem, 'col');
2344
2441
  const {
2345
2442
  startIndex: offsetStartIndex,
2346
2443
  endIndex: offsetEndIndex
@@ -2565,11 +2662,11 @@ function loadScrollYData($xeTable) {
2565
2662
  const reactData = $xeTable;
2566
2663
  const internalData = $xeTable;
2567
2664
  const {
2568
- mergeList,
2569
2665
  isAllOverflow,
2570
2666
  isScrollYBig
2571
2667
  } = reactData;
2572
2668
  const {
2669
+ mergeBodyList,
2573
2670
  scrollYStore
2574
2671
  } = internalData;
2575
2672
  const {
@@ -2589,7 +2686,7 @@ function loadScrollYData($xeTable) {
2589
2686
  };
2590
2687
  scrollYStore.visibleStartIndex = toVisibleIndex - 1;
2591
2688
  scrollYStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
2592
- calculateMergerOffsetIndex(mergeList, offsetItem, 'row');
2689
+ calculateMergerOffsetIndex(mergeBodyList, offsetItem, 'row');
2593
2690
  const {
2594
2691
  startIndex: offsetStartIndex,
2595
2692
  endIndex: offsetEndIndex
@@ -3023,7 +3120,7 @@ const Methods = {
3023
3120
  * 对于某些特殊的场景,比如深层树节点元素发生变动时可能会用到
3024
3121
  */
3025
3122
  syncData() {
3026
- (0, _log.warnLog)('vxe.error.delFunc', ['syncData', 'getData']);
3123
+ (0, _log.errLog)('vxe.error.delFunc', ['syncData', 'getData']);
3027
3124
  return this.$nextTick().then(() => {
3028
3125
  this.tableData = [];
3029
3126
  return this.$nextTick().then(() => this.loadTableData(this.tableFullData, true));
@@ -3034,38 +3131,43 @@ const Methods = {
3034
3131
  * 对于手动更改了排序、筛选...等条件后需要重新处理数据时可能会用到
3035
3132
  */
3036
3133
  updateData() {
3134
+ const $xeTable = this;
3135
+ const reactData = $xeTable;
3037
3136
  const {
3038
3137
  scrollXLoad,
3039
3138
  scrollYLoad
3040
- } = this;
3041
- return this.handleTableData(true).then(() => {
3042
- this.updateFooter();
3139
+ } = reactData;
3140
+ return $xeTable.handleTableData(true).then(() => {
3141
+ $xeTable.updateFooter();
3043
3142
  if (scrollXLoad || scrollYLoad) {
3044
3143
  if (scrollXLoad) {
3045
- this.updateScrollXSpace();
3144
+ $xeTable.updateScrollXSpace();
3046
3145
  }
3047
3146
  if (scrollYLoad) {
3048
- this.updateScrollYSpace();
3147
+ $xeTable.updateScrollYSpace();
3049
3148
  }
3050
- return this.refreshScroll();
3149
+ return $xeTable.refreshScroll();
3051
3150
  }
3052
3151
  }).then(() => {
3053
- this.updateCellAreas();
3054
- return this.recalculate(true);
3152
+ $xeTable.updateCellAreas();
3153
+ return $xeTable.recalculate(true);
3055
3154
  }).then(() => {
3056
3155
  // 存在滚动行为未结束情况
3057
- setTimeout(() => this.recalculate(), 50);
3156
+ setTimeout(() => $xeTable.recalculate(), 50);
3058
3157
  });
3059
3158
  },
3060
3159
  handleTableData(force) {
3061
3160
  const $xeTable = this;
3161
+ const reactData = $xeTable;
3162
+ const internalData = $xeTable;
3163
+ const {
3164
+ scrollYLoad
3165
+ } = reactData;
3062
3166
  const {
3063
- scrollYLoad,
3064
3167
  scrollYStore,
3065
- fullDataRowIdData,
3066
- afterFullData
3067
- } = this;
3068
- let fullList = afterFullData;
3168
+ fullDataRowIdData
3169
+ } = internalData;
3170
+ let fullList = internalData.afterFullData;
3069
3171
  // 是否进行数据处理
3070
3172
  if (force) {
3071
3173
  // 更新数据,处理筛选和排序
@@ -3074,14 +3176,17 @@ const Methods = {
3074
3176
  fullList = handleVirtualTreeToList($xeTable);
3075
3177
  }
3076
3178
  const tableData = scrollYLoad ? fullList.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullList.slice(0);
3179
+ const visibleDataRowIdMaps = {};
3077
3180
  tableData.forEach((row, $index) => {
3078
3181
  const rowid = (0, _util.getRowid)(this, row);
3079
3182
  const rest = fullDataRowIdData[rowid];
3080
3183
  if (rest) {
3081
3184
  rest.$index = $index;
3082
3185
  }
3186
+ visibleDataRowIdMaps[rowid] = row;
3083
3187
  });
3084
3188
  this.tableData = tableData;
3189
+ internalData.visibleDataRowIdData = visibleDataRowIdMaps;
3085
3190
  return this.$nextTick();
3086
3191
  },
3087
3192
  /**
@@ -3107,6 +3212,7 @@ const Methods = {
3107
3212
  lastScrollTop
3108
3213
  } = internalData;
3109
3214
  const treeOpts = $xeTable.computeTreeOpts;
3215
+ const expandOpts = $xeTable.computeExpandOpts;
3110
3216
  const {
3111
3217
  transform
3112
3218
  } = treeOpts;
@@ -3165,7 +3271,7 @@ const Methods = {
3165
3271
  internalData.tableFullData = fullData;
3166
3272
  internalData.tableFullTreeData = treeData;
3167
3273
  // 缓存数据
3168
- $xeTable.cacheRowMap(true);
3274
+ $xeTable.cacheRowMap(isReset);
3169
3275
  // 原始数据
3170
3276
  internalData.tableSynchData = datas;
3171
3277
  if (isReset) {
@@ -3183,6 +3289,7 @@ const Methods = {
3183
3289
  $xeTable.clearMergeFooterItems();
3184
3290
  $xeTable.handleTableData(true);
3185
3291
  $xeTable.updateFooter();
3292
+ $xeTable.handleUpdateBodyMerge();
3186
3293
  return $xeTable.$nextTick().then(() => {
3187
3294
  updateHeight($xeTable);
3188
3295
  updateStyle($xeTable);
@@ -3194,6 +3301,9 @@ const Methods = {
3194
3301
  scrollYStore.endIndex = scrollYStore.visibleSize;
3195
3302
  }
3196
3303
  if (sYLoad) {
3304
+ if (reactData.expandColumn && expandOpts.mode !== 'fixed') {
3305
+ (0, _log.errLog)('vxe.error.notConflictProp', ['column.type="expand', 'expand-config.mode="fixed"']);
3306
+ }
3197
3307
  // if (showOverflow) {
3198
3308
  // if (!rowOpts.height) {
3199
3309
  // const errColumn = internalData.tableFullColumn.find((column: any) => column.showOverflow === false)
@@ -3354,7 +3464,7 @@ const Methods = {
3354
3464
  /**
3355
3465
  * 更新数据行的 Map
3356
3466
  */
3357
- cacheRowMap() {
3467
+ cacheRowMap(isReset) {
3358
3468
  const $xeTable = this;
3359
3469
  const props = $xeTable;
3360
3470
  const reactData = $xeTable;
@@ -3374,7 +3484,7 @@ const Methods = {
3374
3484
  const {
3375
3485
  lazy
3376
3486
  } = treeOpts;
3377
- const fullAllDataRowIdMaps = Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
3487
+ const fullAllDataRowIdMaps = isReset ? {} : Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
3378
3488
  const fullDataRowIdMaps = {};
3379
3489
  const {
3380
3490
  handleUpdateRowId
@@ -4228,10 +4338,14 @@ const Methods = {
4228
4338
  getCheckboxRecords(isFull) {
4229
4339
  const $xeTable = this;
4230
4340
  const props = $xeTable;
4341
+ const reactData = $xeTable;
4231
4342
  const internalData = $xeTable;
4232
4343
  const {
4233
4344
  treeConfig
4234
4345
  } = props;
4346
+ const {
4347
+ updateCheckboxFlag
4348
+ } = reactData;
4235
4349
  const {
4236
4350
  tableFullData,
4237
4351
  afterFullData,
@@ -4252,28 +4366,30 @@ const Methods = {
4252
4366
  } = checkboxOpts;
4253
4367
  const childrenField = treeOpts.children || treeOpts.childrenField;
4254
4368
  let rowList = [];
4255
- if (checkField) {
4256
- if (treeConfig) {
4257
- const currTableData = isFull ? transform ? tableFullTreeData : tableFullData : transform ? afterTreeFullData : afterFullData;
4258
- rowList = _xeUtils.default.filterTree(currTableData, row => _xeUtils.default.get(row, checkField), {
4259
- children: transform ? mapChildrenField : childrenField
4260
- });
4261
- } else {
4262
- const currTableData = isFull ? tableFullData : afterFullData;
4263
- rowList = currTableData.filter(row => _xeUtils.default.get(row, checkField));
4264
- }
4265
- } else {
4266
- _xeUtils.default.each(selectCheckboxMaps, (row, rowid) => {
4267
- if (isFull) {
4268
- if (fullDataRowIdData[rowid]) {
4269
- rowList.push(fullDataRowIdData[rowid].row);
4270
- }
4369
+ if (updateCheckboxFlag) {
4370
+ if (checkField) {
4371
+ if (treeConfig) {
4372
+ const currTableData = isFull ? transform ? tableFullTreeData : tableFullData : transform ? afterTreeFullData : afterFullData;
4373
+ rowList = _xeUtils.default.filterTree(currTableData, row => _xeUtils.default.get(row, checkField), {
4374
+ children: transform ? mapChildrenField : childrenField
4375
+ });
4271
4376
  } else {
4272
- if (afterFullRowMaps[rowid]) {
4273
- rowList.push(afterFullRowMaps[rowid]);
4274
- }
4377
+ const currTableData = isFull ? tableFullData : afterFullData;
4378
+ rowList = currTableData.filter(row => _xeUtils.default.get(row, checkField));
4275
4379
  }
4276
- });
4380
+ } else {
4381
+ _xeUtils.default.each(selectCheckboxMaps, (row, rowid) => {
4382
+ if (isFull) {
4383
+ if (fullDataRowIdData[rowid]) {
4384
+ rowList.push(fullDataRowIdData[rowid].row);
4385
+ }
4386
+ } else {
4387
+ if (afterFullRowMaps[rowid]) {
4388
+ rowList.push(afterFullRowMaps[rowid]);
4389
+ }
4390
+ }
4391
+ });
4392
+ }
4277
4393
  }
4278
4394
  return rowList;
4279
4395
  },
@@ -6377,6 +6493,29 @@ const Methods = {
6377
6493
  this.updateCellAreas();
6378
6494
  this.recalculate(true);
6379
6495
  },
6496
+ /**
6497
+ * 处理合并
6498
+ */
6499
+ handleUpdateBodyMerge() {
6500
+ const $xeTable = this;
6501
+ const reactData = $xeTable;
6502
+ const internalData = $xeTable;
6503
+ const {
6504
+ mergeBodyList
6505
+ } = internalData;
6506
+ internalData.mergeBodyCellMaps = buildMergeData(mergeBodyList);
6507
+ reactData.mergeBodyFlag++;
6508
+ },
6509
+ handleUpdateFooterMerge() {
6510
+ const $xeTable = this;
6511
+ const reactData = $xeTable;
6512
+ const internalData = $xeTable;
6513
+ const {
6514
+ mergeFooterList
6515
+ } = internalData;
6516
+ internalData.mergeFooterCellMaps = buildMergeData(mergeFooterList);
6517
+ reactData.mergeFootFlag++;
6518
+ },
6380
6519
  handleTargetLeaveEvent() {
6381
6520
  const $xeTable = this;
6382
6521
  const internalData = $xeTable;
@@ -10565,26 +10704,33 @@ const Methods = {
10565
10704
  */
10566
10705
  updateFooter() {
10567
10706
  const $xeTable = this;
10707
+ const props = $xeTable;
10708
+ const reactData = $xeTable;
10709
+ const internalData = $xeTable;
10568
10710
  const $xeGrid = $xeTable.$xeGrid;
10569
10711
  const {
10570
10712
  showFooter,
10571
- visibleColumn,
10572
10713
  footerData,
10573
10714
  footerMethod
10574
- } = this;
10715
+ } = props;
10716
+ const {
10717
+ visibleColumn,
10718
+ afterFullData
10719
+ } = internalData;
10575
10720
  let footData = [];
10576
10721
  if (showFooter && footerData && footerData.length) {
10577
10722
  footData = footerData.slice(0);
10578
10723
  } else if (showFooter && footerMethod) {
10579
10724
  footData = visibleColumn.length ? footerMethod({
10580
10725
  columns: visibleColumn,
10581
- data: this.afterFullData,
10726
+ data: afterFullData,
10582
10727
  $table: $xeTable,
10583
10728
  $grid: $xeGrid
10584
10729
  }) : [];
10585
10730
  }
10586
- this.footerTableData = footData;
10587
- return this.$nextTick();
10731
+ reactData.footerTableData = footData;
10732
+ $xeTable.handleUpdateFooterMerge();
10733
+ return $xeTable.$nextTick();
10588
10734
  },
10589
10735
  /**
10590
10736
  * 更新列状态 updateStatus({ row, column }, cellValue)
@@ -10609,12 +10755,14 @@ const Methods = {
10609
10755
  */
10610
10756
  setMergeCells(merges) {
10611
10757
  const $xeTable = this;
10612
- if (this.spanMethod) {
10758
+ const props = $xeTable;
10759
+ if (props.spanMethod) {
10613
10760
  (0, _log.errLog)('vxe.error.errConflicts', ['merge-cells', 'span-method']);
10614
10761
  }
10615
- setMerges(this, merges, this.mergeList, this.afterFullData);
10616
- return this.$nextTick().then(() => {
10617
- this.updateCellAreas();
10762
+ handleBodyMerge($xeTable, merges);
10763
+ $xeTable.handleUpdateBodyMerge();
10764
+ return $xeTable.$nextTick().then(() => {
10765
+ $xeTable.updateCellAreas();
10618
10766
  return updateStyle($xeTable);
10619
10767
  });
10620
10768
  },
@@ -10624,12 +10772,14 @@ const Methods = {
10624
10772
  */
10625
10773
  removeMergeCells(merges) {
10626
10774
  const $xeTable = this;
10627
- if (this.spanMethod) {
10775
+ const props = $xeTable;
10776
+ const internalData = $xeTable;
10777
+ if (props.spanMethod) {
10628
10778
  (0, _log.errLog)('vxe.error.errConflicts', ['merge-cells', 'span-method']);
10629
10779
  }
10630
- const rest = removeMerges(this, merges, this.mergeList, this.afterFullData);
10631
- return this.$nextTick().then(() => {
10632
- this.updateCellAreas();
10780
+ const rest = removeMerges($xeTable, merges, internalData.mergeBodyList, internalData.afterFullData);
10781
+ return $xeTable.$nextTick().then(() => {
10782
+ $xeTable.updateCellAreas();
10633
10783
  updateStyle($xeTable);
10634
10784
  return rest;
10635
10785
  });
@@ -10638,37 +10788,46 @@ const Methods = {
10638
10788
  * 获取所有被合并的单元格
10639
10789
  */
10640
10790
  getMergeCells() {
10641
- return this.mergeList.slice(0);
10791
+ const $xeTable = this;
10792
+ const internalData = $xeTable;
10793
+ return internalData.mergeBodyList.slice(0);
10642
10794
  },
10643
10795
  /**
10644
10796
  * 清除所有单元格合并
10645
10797
  */
10646
10798
  clearMergeCells() {
10647
10799
  const $xeTable = this;
10648
- this.mergeList = [];
10649
- return this.$nextTick().then(() => {
10800
+ const internalData = $xeTable;
10801
+ internalData.mergeBodyList = [];
10802
+ internalData.mergeBodyMaps = {};
10803
+ internalData.mergeBodyCellMaps = {};
10804
+ return $xeTable.$nextTick().then(() => {
10650
10805
  return updateStyle($xeTable);
10651
10806
  });
10652
10807
  },
10653
10808
  setMergeFooterItems(merges) {
10654
10809
  const $xeTable = this;
10655
- if (this.footerSpanMethod) {
10810
+ const props = $xeTable;
10811
+ if (props.footerSpanMethod) {
10656
10812
  (0, _log.errLog)('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
10657
10813
  }
10658
- setMerges(this, merges, this.mergeFooterList);
10659
- return this.$nextTick().then(() => {
10660
- this.updateCellAreas();
10814
+ handleFooterMerge($xeTable, merges);
10815
+ $xeTable.handleUpdateFooterMerge();
10816
+ return $xeTable.$nextTick().then(() => {
10817
+ $xeTable.updateCellAreas();
10661
10818
  return updateStyle($xeTable);
10662
10819
  });
10663
10820
  },
10664
10821
  removeMergeFooterItems(merges) {
10665
10822
  const $xeTable = this;
10666
- if (this.footerSpanMethod) {
10823
+ const props = $xeTable;
10824
+ const internalData = $xeTable;
10825
+ if (props.footerSpanMethod) {
10667
10826
  (0, _log.errLog)('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
10668
10827
  }
10669
- const rest = removeMerges(this, merges, this.mergeFooterList, null);
10670
- return this.$nextTick().then(() => {
10671
- this.updateCellAreas();
10828
+ const rest = removeMerges($xeTable, merges, internalData.mergeFooterList);
10829
+ return $xeTable.$nextTick().then(() => {
10830
+ $xeTable.updateCellAreas();
10672
10831
  updateStyle($xeTable);
10673
10832
  return rest;
10674
10833
  });
@@ -10677,15 +10836,20 @@ const Methods = {
10677
10836
  * 获取所有被合并的表尾
10678
10837
  */
10679
10838
  getMergeFooterItems() {
10680
- return this.mergeFooterList.slice(0);
10839
+ const $xeTable = this;
10840
+ const internalData = $xeTable;
10841
+ return internalData.mergeFooterList.slice(0);
10681
10842
  },
10682
10843
  /**
10683
10844
  * 清除所有表尾合并
10684
10845
  */
10685
10846
  clearMergeFooterItems() {
10686
10847
  const $xeTable = this;
10687
- this.mergeFooterList = [];
10688
- return this.$nextTick().then(() => {
10848
+ const internalData = $xeTable;
10849
+ internalData.mergeFooterList = [];
10850
+ internalData.mergeFooterMaps = {};
10851
+ internalData.mergeFooterCellMaps = {};
10852
+ return $xeTable.$nextTick().then(() => {
10689
10853
  return updateStyle($xeTable);
10690
10854
  });
10691
10855
  },