vxe-table 3.3.16 → 3.4.2

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 (45) hide show
  1. package/helper/vetur/attributes.json +12 -200
  2. package/helper/vetur/tags.json +3 -65
  3. package/lib/edit/src/mixin.js +2 -2
  4. package/lib/edit/src/mixin.min.js +1 -1
  5. package/lib/export/src/mixin.js +44 -1
  6. package/lib/export/src/mixin.min.js +1 -1
  7. package/lib/form/src/form.js +21 -6
  8. package/lib/form/src/form.min.js +1 -1
  9. package/lib/form/src/render.js +4 -4
  10. package/lib/form/src/render.min.js +1 -1
  11. package/lib/grid/src/grid.js +56 -0
  12. package/lib/grid/src/grid.min.js +1 -1
  13. package/lib/header/src/header.js +3 -2
  14. package/lib/header/src/header.min.js +1 -1
  15. package/lib/index.umd.js +446 -1065
  16. package/lib/index.umd.min.js +1 -1
  17. package/lib/select/src/select.js +5 -5
  18. package/lib/select/src/select.min.js +1 -1
  19. package/lib/table/src/body.js +15 -10
  20. package/lib/table/src/body.min.js +1 -1
  21. package/lib/table/src/cell.js +92 -35
  22. package/lib/table/src/cell.min.js +1 -1
  23. package/lib/table/src/methods.js +267 -147
  24. package/lib/table/src/methods.min.js +1 -1
  25. package/lib/table/src/table.js +12 -2
  26. package/lib/table/src/table.min.js +1 -1
  27. package/lib/v-x-e-table/src/conf.js +3 -3
  28. package/lib/v-x-e-table/src/conf.min.js +1 -1
  29. package/lib/validator/src/mixin.js +9 -4
  30. package/lib/validator/src/mixin.min.js +1 -1
  31. package/package.json +1 -2
  32. package/packages/edit/src/mixin.js +2 -2
  33. package/packages/export/src/mixin.js +38 -1
  34. package/packages/form/src/form.js +10 -6
  35. package/packages/form/src/render.js +4 -4
  36. package/packages/grid/src/grid.js +48 -0
  37. package/packages/header/src/header.js +2 -2
  38. package/packages/select/src/select.js +5 -5
  39. package/packages/table/src/body.js +15 -10
  40. package/packages/table/src/cell.js +74 -41
  41. package/packages/table/src/methods.js +173 -73
  42. package/packages/table/src/table.js +11 -2
  43. package/packages/v-x-e-table/src/conf.js +3 -3
  44. package/packages/validator/src/mixin.js +8 -4
  45. package/types/table.d.ts +1 -1
@@ -445,6 +445,15 @@ var Methods = {
445
445
  this.tableData = scrollYLoad ? fullData.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullData.slice(0);
446
446
  return this.$nextTick();
447
447
  },
448
+ updateScrollYStatus: function updateScrollYStatus(fullData) {
449
+ var treeConfig = this.treeConfig,
450
+ treeOpts = this.treeOpts,
451
+ sYOpts = this.sYOpts;
452
+ var transform = treeOpts.transform;
453
+ var scrollYLoad = (transform || !treeConfig) && !!sYOpts.enabled && sYOpts.gt > -1 && sYOpts.gt < fullData.length;
454
+ this.scrollYLoad = scrollYLoad;
455
+ return scrollYLoad;
456
+ },
448
457
 
449
458
  /**
450
459
  * 加载表格数据
@@ -457,54 +466,70 @@ var Methods = {
457
466
  treeConfig = this.treeConfig,
458
467
  treeOpts = this.treeOpts,
459
468
  editStore = this.editStore,
460
- sYOpts = this.sYOpts,
461
469
  scrollYStore = this.scrollYStore,
462
470
  scrollXStore = this.scrollXStore,
463
471
  lastScrollLeft = this.lastScrollLeft,
464
472
  lastScrollTop = this.lastScrollTop,
465
473
  oldScrollYLoad = this.scrollYLoad;
474
+ var treeData = [];
475
+ var fullData = datas ? datas.slice(0) : [];
466
476
 
467
- if (treeConfig && treeOpts.transform) {
468
- if (process.env.NODE_ENV === 'development') {
469
- if (!treeOpts.rowtKey) {
470
- _tools.UtilTools.error('vxe.error.reqProp', ['table.tree-config.rowtKey']);
471
- }
477
+ if (treeConfig) {
478
+ // 树结构自动转换
479
+ if (treeOpts.transform) {
480
+ if (process.env.NODE_ENV === 'development') {
481
+ if (!treeOpts.rowField) {
482
+ _tools.UtilTools.error('vxe.error.reqProp', ['table.tree-config.rowField']);
483
+ }
484
+
485
+ if (!treeOpts.parentField) {
486
+ _tools.UtilTools.error('vxe.error.reqProp', ['table.tree-config.parentField']);
487
+ }
472
488
 
473
- if (!treeOpts.parentKey) {
474
- _tools.UtilTools.error('vxe.error.reqProp', ['table.tree-config.parentKey']);
489
+ if (!treeOpts.children) {
490
+ _tools.UtilTools.error('vxe.error.reqProp', ['tree-config.children']);
491
+ }
492
+
493
+ fullData.forEach(function (row) {
494
+ if (row[treeOpts.children] && row[treeOpts.children].length) {
495
+ _tools.UtilTools.warn('vxe.error.errConflicts', ['tree-config.transform', "row.".concat(treeOpts.children)]);
496
+ }
497
+ });
475
498
  }
476
- }
477
499
 
478
- datas = _xeUtils.default.toArrayTree(datas, {
479
- key: treeOpts.rowtKey,
480
- parentKey: treeOpts.parentKey,
481
- children: treeOpts.children
482
- });
500
+ treeData = _xeUtils.default.toArrayTree(fullData, {
501
+ key: treeOpts.rowField,
502
+ parentKey: treeOpts.parentField,
503
+ children: treeOpts.children
504
+ });
505
+ fullData = treeData.slice(0);
506
+ } else {
507
+ treeData = fullData.slice(0);
508
+ }
483
509
  }
484
510
 
485
- var tableFullData = datas ? datas.slice(0) : [];
486
- var scrollYLoad = !treeConfig && sYOpts.enabled && sYOpts.gt > -1 && sYOpts.gt < tableFullData.length;
487
511
  scrollYStore.startIndex = 0;
488
512
  scrollYStore.endIndex = 1;
489
513
  scrollXStore.startIndex = 0;
490
514
  scrollXStore.endIndex = 1;
491
515
  editStore.insertList = [];
492
- editStore.removeList = []; // 全量数据
516
+ editStore.removeList = [];
517
+ var sYLoad = this.updateScrollYStatus(fullData);
518
+ this.scrollYLoad = sYLoad; // 全量数据
493
519
 
494
- this.tableFullData = tableFullData; // 缓存数据
520
+ this.tableFullData = fullData;
521
+ this.treeFullData = treeData; // 缓存数据
495
522
 
496
- this.updateCache(true); // 原始数据
523
+ this.cacheRowMap(true); // 原始数据
497
524
 
498
- this.tableSynchData = datas;
525
+ this.tableSynchData = datas; // 克隆原数据,用于显示编辑状态,与编辑值做对比
499
526
 
500
527
  if (keepSource) {
501
- this.tableSourceData = _xeUtils.default.clone(tableFullData, true);
528
+ this.tableSourceData = _xeUtils.default.clone(fullData, true);
502
529
  }
503
530
 
504
- this.scrollYLoad = scrollYLoad;
505
-
506
531
  if (process.env.NODE_ENV === 'development') {
507
- if (scrollYLoad) {
532
+ if (sYLoad) {
508
533
  if (!(this.height || this.maxHeight)) {
509
534
  _tools.UtilTools.error('vxe.error.reqProp', ['table.height | table.max-height | table.scroll-y={enabled: false}']);
510
535
  }
@@ -535,8 +560,8 @@ var Methods = {
535
560
  }).then(function () {
536
561
  _this2.computeScrollLoad();
537
562
  }).then(function () {
538
- // 是否加载了数据
539
- if (scrollYLoad) {
563
+ // 是否启用了虚拟滚动
564
+ if (sYLoad) {
540
565
  scrollYStore.endIndex = scrollYStore.visibleSize;
541
566
  }
542
567
 
@@ -549,7 +574,7 @@ var Methods = {
549
574
  return _this2.recalculate();
550
575
  }).then(function () {
551
576
  // 是否变更虚拟滚动
552
- if (oldScrollYLoad === scrollYLoad) {
577
+ if (oldScrollYLoad === sYLoad) {
553
578
  (0, _util.restoreScrollLocation)(_this2, lastScrollLeft, lastScrollTop).then(resolve);
554
579
  } else {
555
580
  setTimeout(function () {
@@ -635,7 +660,7 @@ var Methods = {
635
660
  _xeUtils.default.clear(row, undefined);
636
661
 
637
662
  Object.assign(row, this.defineField(Object.assign({}, record)));
638
- this.updateCache(true);
663
+ this.cacheRowMap(true);
639
664
  } else {
640
665
  _xeUtils.default.destructuring(oRow, _xeUtils.default.clone(row, true));
641
666
  }
@@ -720,7 +745,7 @@ var Methods = {
720
745
  * 更新数据行的 Map
721
746
  * 牺牲数据组装的耗时,用来换取使用过程中的流畅
722
747
  */
723
- updateCache: function updateCache(source) {
748
+ cacheRowMap: function cacheRowMap(source) {
724
749
  var _this8 = this;
725
750
 
726
751
  var treeConfig = this.treeConfig,
@@ -733,7 +758,7 @@ var Methods = {
733
758
  var rowkey = getRowkey(this);
734
759
  var isLazy = treeConfig && treeOpts.lazy;
735
760
 
736
- var handleCache = function handleCache(row, index, items, path, parent) {
761
+ var handleCache = function handleCache(row, index, items, path, parent, nodes) {
737
762
  var rowid = getRowid(_this8, row);
738
763
 
739
764
  if ((0, _utils.eqEmptyValue)(rowid)) {
@@ -751,7 +776,8 @@ var Methods = {
751
776
  rowid: rowid,
752
777
  index: treeConfig && parent ? -1 : index,
753
778
  items: items,
754
- parent: parent
779
+ parent: parent,
780
+ level: nodes ? nodes.length - 1 : 0
755
781
  };
756
782
 
757
783
  if (source) {
@@ -777,19 +803,20 @@ var Methods = {
777
803
  tableFullData.forEach(handleCache);
778
804
  }
779
805
  },
780
- loadChildren: function loadChildren(row, childRecords) {
806
+ loadTreeChildren: function loadTreeChildren(row, childRecords) {
781
807
  var _this9 = this;
782
808
 
809
+ var keepSource = this.keepSource,
810
+ tableSourceData = this.tableSourceData,
811
+ treeOpts = this.treeOpts,
812
+ fullDataRowIdData = this.fullDataRowIdData,
813
+ fullDataRowMap = this.fullDataRowMap,
814
+ fullAllDataRowMap = this.fullAllDataRowMap,
815
+ fullAllDataRowIdData = this.fullAllDataRowIdData;
816
+ var children = treeOpts.children;
817
+ var rest = fullAllDataRowIdData[getRowid(this, row)];
818
+ var parentLevel = rest ? rest.level : 0;
783
819
  return this.createData(childRecords).then(function (rows) {
784
- var keepSource = _this9.keepSource,
785
- tableSourceData = _this9.tableSourceData,
786
- treeOpts = _this9.treeOpts,
787
- fullDataRowIdData = _this9.fullDataRowIdData,
788
- fullDataRowMap = _this9.fullDataRowMap,
789
- fullAllDataRowMap = _this9.fullAllDataRowMap,
790
- fullAllDataRowIdData = _this9.fullAllDataRowIdData;
791
- var children = treeOpts.children;
792
-
793
820
  if (keepSource) {
794
821
  var rowid = getRowid(_this9, row);
795
822
 
@@ -802,14 +829,15 @@ var Methods = {
802
829
  }
803
830
  }
804
831
 
805
- _xeUtils.default.eachTree(rows, function (childRow, index, items, path, parent) {
832
+ _xeUtils.default.eachTree(rows, function (childRow, index, items, path, parent, nodes) {
806
833
  var rowid = getRowid(_this9, childRow);
807
834
  var rest = {
808
835
  row: childRow,
809
836
  rowid: rowid,
810
837
  index: -1,
811
838
  items: items,
812
- parent: parent
839
+ parent: parent,
840
+ level: parentLevel + nodes.length
813
841
  };
814
842
  fullDataRowIdData[rowid] = rest;
815
843
  fullDataRowMap.set(childRow, rest);
@@ -3220,12 +3248,12 @@ var Methods = {
3220
3248
  var column = params.column;
3221
3249
  var titleHelp = column.titleHelp;
3222
3250
 
3223
- if (titleHelp.message) {
3251
+ if (titleHelp.content || titleHelp.message) {
3224
3252
  var $refs = this.$refs,
3225
3253
  tooltipStore = this.tooltipStore;
3226
3254
  var tooltip = $refs.tooltip;
3227
3255
 
3228
- var content = _tools.UtilTools.getFuncText(titleHelp.message);
3256
+ var content = _tools.UtilTools.getFuncText(titleHelp.content || titleHelp.message);
3229
3257
 
3230
3258
  this.handleTargetEnterEvent();
3231
3259
  tooltipStore.visible = true;
@@ -4784,10 +4812,10 @@ var Methods = {
4784
4812
  },
4785
4813
 
4786
4814
  /**
4787
- * 重新加载展开行的内容
4815
+ * 重新懒加载展开行,并展开内容
4788
4816
  * @param {Row} row 行对象
4789
4817
  */
4790
- reloadExpandContent: function reloadExpandContent(row) {
4818
+ reloadRowExpand: function reloadRowExpand(row) {
4791
4819
  var _this36 = this;
4792
4820
 
4793
4821
  var expandOpts = this.expandOpts,
@@ -4802,6 +4830,14 @@ var Methods = {
4802
4830
 
4803
4831
  return this.$nextTick();
4804
4832
  },
4833
+ reloadExpandContent: function reloadExpandContent(row) {
4834
+ if (process.env.NODE_ENV === 'development') {
4835
+ _tools.UtilTools.warn('vxe.error.delFunc', ['reloadExpandContent', 'reloadRowExpand']);
4836
+ } // 即将废弃
4837
+
4838
+
4839
+ return this.reloadRowExpand(row);
4840
+ },
4805
4841
 
4806
4842
  /**
4807
4843
  * 展开行事件
@@ -5069,25 +5105,40 @@ var Methods = {
5069
5105
  },
5070
5106
 
5071
5107
  /**
5072
- * 重新加载树的子节点
5108
+ * 重新懒加载树节点,并展开该节点
5073
5109
  * @param {Row} row 行对象
5074
5110
  */
5075
- reloadTreeChilds: function reloadTreeChilds(row) {
5111
+ reloadTreeExpand: function reloadTreeExpand(row) {
5076
5112
  var _this40 = this;
5077
5113
 
5078
5114
  var treeOpts = this.treeOpts,
5079
5115
  treeLazyLoadeds = this.treeLazyLoadeds;
5080
- var lazy = treeOpts.lazy,
5116
+ var transform = treeOpts.transform,
5117
+ lazy = treeOpts.lazy,
5081
5118
  hasChild = treeOpts.hasChild;
5082
5119
 
5083
5120
  if (lazy && row[hasChild] && treeLazyLoadeds.indexOf(row) === -1) {
5084
5121
  this.clearTreeExpandLoaded(row).then(function () {
5085
5122
  return _this40.handleAsyncTreeExpandChilds(row);
5123
+ }).then(function () {
5124
+ if (transform) {
5125
+ return _this40.updateVirtualTreeData();
5126
+ }
5127
+ }).then(function () {
5128
+ return _this40.recalculate();
5086
5129
  });
5087
5130
  }
5088
5131
 
5089
5132
  return this.$nextTick();
5090
5133
  },
5134
+ reloadTreeChilds: function reloadTreeChilds(row) {
5135
+ if (process.env.NODE_ENV === 'development') {
5136
+ _tools.UtilTools.warn('vxe.error.delFunc', ['reloadTreeChilds', 'reloadTreeExpand']);
5137
+ } // 即将废弃
5138
+
5139
+
5140
+ return this.reloadTreeExpand(row);
5141
+ },
5091
5142
 
5092
5143
  /**
5093
5144
  * 展开树节点事件
@@ -5181,7 +5232,7 @@ var Methods = {
5181
5232
  }
5182
5233
 
5183
5234
  if (childRecords) {
5184
- _this41.loadChildren(row, childRecords).then(function (childRows) {
5235
+ _this41.loadTreeChildren(row, childRecords).then(function (childRows) {
5185
5236
  if (childRows.length && treeExpandeds.indexOf(row) === -1) {
5186
5237
  treeExpandeds.push(row);
5187
5238
  } // 如果当前节点已选中,则展开后子节点也被选中
@@ -5221,13 +5272,12 @@ var Methods = {
5221
5272
  },
5222
5273
 
5223
5274
  /**
5224
- * 设置展开树形节点,二个参数设置这一行展开与否
5225
- * 支持单行
5226
- * 支持多行
5227
- * @param {Array/Row} rows 行数据
5228
- * @param {Boolean} expanded 是否展开
5275
+ * 默认,展开与收起树节点
5276
+ * @param rows
5277
+ * @param expanded
5278
+ * @returns
5229
5279
  */
5230
- setTreeExpand: function setTreeExpand(rows, expanded) {
5280
+ handleBaseTreeExpand: function handleBaseTreeExpand(rows, expanded) {
5231
5281
  var _this42 = this;
5232
5282
 
5233
5283
  var fullAllDataRowMap = this.fullAllDataRowMap,
@@ -5245,65 +5295,125 @@ var Methods = {
5245
5295
  var result = [];
5246
5296
  var columnIndex = this.getColumnIndex(treeNodeColumn);
5247
5297
  var $columnIndex = this.getVMColumnIndex(treeNodeColumn);
5298
+ var validRows = toggleMethod ? rows.filter(function (row) {
5299
+ return toggleMethod({
5300
+ expanded: expanded,
5301
+ column: treeNodeColumn,
5302
+ columnIndex: columnIndex,
5303
+ $columnIndex: $columnIndex,
5304
+ row: row
5305
+ });
5306
+ }) : rows;
5248
5307
 
5249
- if (rows) {
5250
- if (!_xeUtils.default.isArray(rows)) {
5251
- rows = [rows];
5252
- }
5308
+ if (accordion) {
5309
+ validRows = validRows.length ? [validRows[validRows.length - 1]] : []; // 同一级只能展开一个
5253
5310
 
5254
- if (rows.length) {
5255
- var validRows = toggleMethod ? rows.filter(function (row) {
5256
- return toggleMethod({
5257
- expanded: expanded,
5258
- column: treeNodeColumn,
5259
- columnIndex: columnIndex,
5260
- $columnIndex: $columnIndex,
5261
- row: row
5262
- });
5263
- }) : rows;
5311
+ var matchObj = _xeUtils.default.findTree(tableFullData, function (item) {
5312
+ return item === validRows[0];
5313
+ }, treeOpts);
5264
5314
 
5265
- if (accordion) {
5266
- validRows = validRows.length ? [validRows[validRows.length - 1]] : []; // 同一级只能展开一个
5315
+ if (matchObj) {
5316
+ _xeUtils.default.remove(treeExpandeds, function (item) {
5317
+ return matchObj.items.indexOf(item) > -1;
5318
+ });
5319
+ }
5320
+ }
5267
5321
 
5268
- var matchObj = _xeUtils.default.findTree(tableFullData, function (item) {
5269
- return item === validRows[0];
5270
- }, treeOpts);
5322
+ if (expanded) {
5323
+ validRows.forEach(function (row) {
5324
+ if (treeExpandeds.indexOf(row) === -1) {
5325
+ var rest = fullAllDataRowMap.get(row);
5326
+ var isLoad = lazy && row[hasChild] && !rest.treeLoaded && treeLazyLoadeds.indexOf(row) === -1; // 是否使用懒加载
5271
5327
 
5272
- if (matchObj) {
5273
- _xeUtils.default.remove(treeExpandeds, function (item) {
5274
- return matchObj.items.indexOf(item) > -1;
5275
- });
5328
+ if (isLoad) {
5329
+ result.push(_this42.handleAsyncTreeExpandChilds(row));
5330
+ } else {
5331
+ if (row[children] && row[children].length) {
5332
+ treeExpandeds.push(row);
5333
+ }
5276
5334
  }
5277
5335
  }
5336
+ });
5337
+ } else {
5338
+ _xeUtils.default.remove(treeExpandeds, function (row) {
5339
+ return validRows.indexOf(row) > -1;
5340
+ });
5341
+ }
5278
5342
 
5279
- if (expanded) {
5280
- validRows.forEach(function (row) {
5281
- if (treeExpandeds.indexOf(row) === -1) {
5282
- var rest = fullAllDataRowMap.get(row);
5283
- var isLoad = lazy && row[hasChild] && !rest.treeLoaded && treeLazyLoadeds.indexOf(row) === -1; // 是否使用懒加载
5343
+ if (reserve) {
5344
+ validRows.forEach(function (row) {
5345
+ return _this42.handleTreeExpandReserve(row, expanded);
5346
+ });
5347
+ }
5284
5348
 
5285
- if (isLoad) {
5286
- result.push(_this42.handleAsyncTreeExpandChilds(row));
5287
- } else {
5288
- if (row[children] && row[children].length) {
5289
- treeExpandeds.push(row);
5290
- }
5291
- }
5292
- }
5293
- });
5294
- } else {
5295
- _xeUtils.default.remove(treeExpandeds, function (row) {
5296
- return validRows.indexOf(row) > -1;
5297
- });
5298
- }
5349
+ return Promise.all(result).then(this.recalculate);
5350
+ },
5351
+ updateVirtualTreeData: function updateVirtualTreeData() {
5352
+ var _this43 = this;
5299
5353
 
5300
- if (reserve) {
5301
- validRows.forEach(function (row) {
5302
- return _this42.handleTreeExpandReserve(row, expanded);
5303
- });
5304
- }
5354
+ var oldScrollYLoad = this.scrollYLoad,
5355
+ treeExpandeds = this.treeExpandeds,
5356
+ treeOpts = this.treeOpts,
5357
+ treeFullData = this.treeFullData;
5358
+ var fullData = [];
5359
+
5360
+ _xeUtils.default.eachTree(treeFullData, function (row, index, items, path, parent) {
5361
+ if (!parent || treeExpandeds.indexOf(parent) > -1) {
5362
+ fullData.push(row);
5363
+ }
5364
+ }, treeOpts);
5365
+
5366
+ var scrollYLoad = this.updateScrollYStatus(fullData);
5367
+ this.tableFullData = scrollYLoad ? fullData : treeFullData;
5368
+
5369
+ if (scrollYLoad || oldScrollYLoad !== scrollYLoad) {
5370
+ return this.handleTableData(true).then(function () {
5371
+ return _this43.recalculate();
5372
+ });
5373
+ }
5374
+
5375
+ return this.$nextTick();
5376
+ },
5377
+
5378
+ /**
5379
+ * 虚拟树的展开与收起
5380
+ * @param rows
5381
+ * @param expanded
5382
+ * @returns
5383
+ */
5384
+ handleVirtualTreeExpand: function handleVirtualTreeExpand(rows, expanded) {
5385
+ var _this44 = this;
5386
+
5387
+ return this.handleBaseTreeExpand(rows, expanded).then(function () {
5388
+ return _this44.updateVirtualTreeData();
5389
+ }).then(function () {
5390
+ return _this44.recalculate();
5391
+ });
5392
+ },
5393
+
5394
+ /**
5395
+ * 设置展开树形节点,二个参数设置这一行展开与否
5396
+ * 支持单行
5397
+ * 支持多行
5398
+ * @param {Array/Row} rows 行数据
5399
+ * @param {Boolean} expanded 是否展开
5400
+ */
5401
+ setTreeExpand: function setTreeExpand(rows, expanded) {
5402
+ var treeOpts = this.treeOpts;
5403
+ var transform = treeOpts.transform;
5305
5404
 
5306
- return Promise.all(result).then(this.recalculate);
5405
+ if (rows) {
5406
+ if (!_xeUtils.default.isArray(rows)) {
5407
+ rows = [rows];
5408
+ }
5409
+
5410
+ if (rows.length) {
5411
+ // 如果为虚拟树
5412
+ if (transform) {
5413
+ return this.handleVirtualTreeExpand(rows, expanded);
5414
+ } else {
5415
+ return this.handleBaseTreeExpand(rows, expanded);
5416
+ }
5307
5417
  }
5308
5418
  }
5309
5419
 
@@ -5322,7 +5432,7 @@ var Methods = {
5322
5432
  * 手动清空树形节点的展开状态,数据会恢复成未展开的状态
5323
5433
  */
5324
5434
  clearTreeExpand: function clearTreeExpand() {
5325
- var _this43 = this;
5435
+ var _this45 = this;
5326
5436
 
5327
5437
  var treeOpts = this.treeOpts,
5328
5438
  treeExpandeds = this.treeExpandeds,
@@ -5333,13 +5443,13 @@ var Methods = {
5333
5443
 
5334
5444
  if (reserve) {
5335
5445
  _xeUtils.default.eachTree(tableFullData, function (row) {
5336
- return _this43.handleTreeExpandReserve(row, false);
5446
+ return _this45.handleTreeExpandReserve(row, false);
5337
5447
  }, treeOpts);
5338
5448
  }
5339
5449
 
5340
- return this.$nextTick().then(function () {
5450
+ return this.updateVirtualTreeData().then(function () {
5341
5451
  if (isExists) {
5342
- _this43.recalculate();
5452
+ _this45.recalculate();
5343
5453
  }
5344
5454
  });
5345
5455
  },
@@ -5469,18 +5579,18 @@ var Methods = {
5469
5579
  },
5470
5580
  // 计算可视渲染相关数据
5471
5581
  computeScrollLoad: function computeScrollLoad() {
5472
- var _this44 = this;
5582
+ var _this46 = this;
5473
5583
 
5474
5584
  return this.$nextTick().then(function () {
5475
- var sYOpts = _this44.sYOpts,
5476
- sXOpts = _this44.sXOpts,
5477
- scrollXLoad = _this44.scrollXLoad,
5478
- scrollYLoad = _this44.scrollYLoad,
5479
- scrollXStore = _this44.scrollXStore,
5480
- scrollYStore = _this44.scrollYStore; // 计算 X 逻辑
5585
+ var sYOpts = _this46.sYOpts,
5586
+ sXOpts = _this46.sXOpts,
5587
+ scrollXLoad = _this46.scrollXLoad,
5588
+ scrollYLoad = _this46.scrollYLoad,
5589
+ scrollXStore = _this46.scrollXStore,
5590
+ scrollYStore = _this46.scrollYStore; // 计算 X 逻辑
5481
5591
 
5482
5592
  if (scrollXLoad) {
5483
- var _computeVirtualX3 = computeVirtualX(_this44),
5593
+ var _computeVirtualX3 = computeVirtualX(_this46),
5484
5594
  visibleXSize = _computeVirtualX3.visibleSize;
5485
5595
 
5486
5596
  var offsetXSize = sXOpts.oSize ? _xeUtils.default.toNumber(sXOpts.oSize) : _dom.browse.msie ? 10 : _dom.browse.edge ? 5 : 0;
@@ -5488,13 +5598,13 @@ var Methods = {
5488
5598
  scrollXStore.visibleSize = visibleXSize;
5489
5599
  scrollXStore.endIndex = Math.max(scrollXStore.startIndex + scrollXStore.visibleSize + offsetXSize, scrollXStore.endIndex);
5490
5600
 
5491
- _this44.updateScrollXData();
5601
+ _this46.updateScrollXData();
5492
5602
  } else {
5493
- _this44.updateScrollXSpace();
5603
+ _this46.updateScrollXSpace();
5494
5604
  } // 计算 Y 逻辑
5495
5605
 
5496
5606
 
5497
- var _computeVirtualY = computeVirtualY(_this44),
5607
+ var _computeVirtualY = computeVirtualY(_this46),
5498
5608
  rowHeight = _computeVirtualY.rowHeight,
5499
5609
  visibleYSize = _computeVirtualY.visibleSize;
5500
5610
 
@@ -5506,14 +5616,14 @@ var Methods = {
5506
5616
  scrollYStore.visibleSize = visibleYSize;
5507
5617
  scrollYStore.endIndex = Math.max(scrollYStore.startIndex + visibleYSize + offsetYSize, scrollYStore.endIndex);
5508
5618
 
5509
- _this44.updateScrollYData();
5619
+ _this46.updateScrollYData();
5510
5620
  } else {
5511
- _this44.updateScrollYSpace();
5621
+ _this46.updateScrollYSpace();
5512
5622
  }
5513
5623
 
5514
- _this44.rowHeight = rowHeight;
5624
+ _this46.rowHeight = rowHeight;
5515
5625
 
5516
- _this44.$nextTick(_this44.updateStyle);
5626
+ _this46.$nextTick(_this46.updateStyle);
5517
5627
  });
5518
5628
  },
5519
5629
  handleTableColumn: function handleTableColumn() {
@@ -5627,7 +5737,7 @@ var Methods = {
5627
5737
  * @param {Number} scrollTop 上距离
5628
5738
  */
5629
5739
  scrollTo: function scrollTo(scrollLeft, scrollTop) {
5630
- var _this45 = this;
5740
+ var _this47 = this;
5631
5741
 
5632
5742
  var $refs = this.$refs;
5633
5743
  var tableBody = $refs.tableBody,
@@ -5648,7 +5758,7 @@ var Methods = {
5648
5758
  if (this.scrollXLoad || this.scrollYLoad) {
5649
5759
  return new Promise(function (resolve) {
5650
5760
  return setTimeout(function () {
5651
- return resolve(_this45.$nextTick());
5761
+ return resolve(_this47.$nextTick());
5652
5762
  }, 50);
5653
5763
  });
5654
5764
  }
@@ -5699,7 +5809,7 @@ var Methods = {
5699
5809
  * @param {Row} row 行对象
5700
5810
  */
5701
5811
  scrollToTreeRow: function scrollToTreeRow(row) {
5702
- var _this46 = this;
5812
+ var _this48 = this;
5703
5813
 
5704
5814
  var tableFullData = this.tableFullData,
5705
5815
  treeConfig = this.treeConfig,
@@ -5714,15 +5824,15 @@ var Methods = {
5714
5824
  if (matchObj) {
5715
5825
  var nodes = matchObj.nodes;
5716
5826
  nodes.forEach(function (row, index) {
5717
- if (index < nodes.length - 1 && !_this46.isTreeExpandByRow(row)) {
5718
- rests.push(_this46.setTreeExpand(row, true));
5827
+ if (index < nodes.length - 1 && !_this48.isTreeExpandByRow(row)) {
5828
+ rests.push(_this48.setTreeExpand(row, true));
5719
5829
  }
5720
5830
  });
5721
5831
  }
5722
5832
  }
5723
5833
 
5724
5834
  return Promise.all(rests).then(function () {
5725
- return _tools.DomTools.rowToVisible(_this46, row);
5835
+ return _tools.DomTools.rowToVisible(_this48, row);
5726
5836
  });
5727
5837
  },
5728
5838
 
@@ -5786,29 +5896,29 @@ var Methods = {
5786
5896
  * 如果单元格配置了校验规则,则会进行校验
5787
5897
  */
5788
5898
  updateStatus: function updateStatus(scope, cellValue) {
5789
- var _this47 = this;
5899
+ var _this49 = this;
5790
5900
 
5791
5901
  var customVal = !_xeUtils.default.isUndefined(cellValue);
5792
5902
  return this.$nextTick().then(function () {
5793
- var $refs = _this47.$refs,
5794
- editRules = _this47.editRules,
5795
- validStore = _this47.validStore;
5903
+ var $refs = _this49.$refs,
5904
+ editRules = _this49.editRules,
5905
+ validStore = _this49.validStore;
5796
5906
 
5797
5907
  if (scope && $refs.tableBody && editRules) {
5798
5908
  var row = scope.row,
5799
5909
  column = scope.column;
5800
5910
  var type = 'change';
5801
5911
 
5802
- if (_this47.hasCellRules(type, row, column)) {
5803
- var cell = _this47.getCell(row, column);
5912
+ if (_this49.hasCellRules(type, row, column)) {
5913
+ var cell = _this49.getCell(row, column);
5804
5914
 
5805
5915
  if (cell) {
5806
- return _this47.validCellRules(type, row, column, cellValue).then(function () {
5916
+ return _this49.validCellRules(type, row, column, cellValue).then(function () {
5807
5917
  if (customVal && validStore.visible) {
5808
5918
  setCellValue(row, column, cellValue);
5809
5919
  }
5810
5920
 
5811
- _this47.clearValidate();
5921
+ _this49.clearValidate();
5812
5922
  }).catch(function (_ref7) {
5813
5923
  var rule = _ref7.rule;
5814
5924
 
@@ -5816,7 +5926,7 @@ var Methods = {
5816
5926
  setCellValue(row, column, cellValue);
5817
5927
  }
5818
5928
 
5819
- _this47.showValidTooltip({
5929
+ _this49.showValidTooltip({
5820
5930
  rule: rule,
5821
5931
  row: row,
5822
5932
  column: column,
@@ -5837,7 +5947,7 @@ var Methods = {
5837
5947
  * @param {TableMergeConfig[]} merges { row: Row|number, column: ColumnInfo|number, rowspan: number, colspan: number }
5838
5948
  */
5839
5949
  setMergeCells: function setMergeCells(merges) {
5840
- var _this48 = this;
5950
+ var _this50 = this;
5841
5951
 
5842
5952
  if (this.spanMethod) {
5843
5953
  _tools.UtilTools.error('vxe.error.errConflicts', ['merge-cells', 'span-method']);
@@ -5845,7 +5955,7 @@ var Methods = {
5845
5955
 
5846
5956
  setMerges(this, merges, this.mergeList, this.afterFullData);
5847
5957
  return this.$nextTick().then(function () {
5848
- return _this48.updateCellAreas();
5958
+ return _this50.updateCellAreas();
5849
5959
  });
5850
5960
  },
5851
5961
 
@@ -5854,7 +5964,7 @@ var Methods = {
5854
5964
  * @param {TableMergeConfig[]} merges 多个或数组 [{row:Row|number, col:ColumnInfo|number}]
5855
5965
  */
5856
5966
  removeMergeCells: function removeMergeCells(merges) {
5857
- var _this49 = this;
5967
+ var _this51 = this;
5858
5968
 
5859
5969
  if (this.spanMethod) {
5860
5970
  _tools.UtilTools.error('vxe.error.errConflicts', ['merge-cells', 'span-method']);
@@ -5862,7 +5972,7 @@ var Methods = {
5862
5972
 
5863
5973
  var rest = removeMerges(this, merges, this.mergeList, this.afterFullData);
5864
5974
  return this.$nextTick().then(function () {
5865
- _this49.updateCellAreas();
5975
+ _this51.updateCellAreas();
5866
5976
 
5867
5977
  return rest;
5868
5978
  });
@@ -5886,7 +5996,7 @@ var Methods = {
5886
5996
  this.setMergeFooterItems(this.mergeFooterItems);
5887
5997
  },
5888
5998
  setMergeFooterItems: function setMergeFooterItems(merges) {
5889
- var _this50 = this;
5999
+ var _this52 = this;
5890
6000
 
5891
6001
  if (this.footerSpanMethod) {
5892
6002
  _tools.UtilTools.error('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
@@ -5894,11 +6004,11 @@ var Methods = {
5894
6004
 
5895
6005
  setMerges(this, merges, this.mergeFooterList, null);
5896
6006
  return this.$nextTick().then(function () {
5897
- return _this50.updateCellAreas();
6007
+ return _this52.updateCellAreas();
5898
6008
  });
5899
6009
  },
5900
6010
  removeMergeFooterItems: function removeMergeFooterItems(merges) {
5901
- var _this51 = this;
6011
+ var _this53 = this;
5902
6012
 
5903
6013
  if (this.footerSpanMethod) {
5904
6014
  _tools.UtilTools.error('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
@@ -5906,7 +6016,7 @@ var Methods = {
5906
6016
 
5907
6017
  var rest = removeMerges(this, merges, this.mergeFooterList, null);
5908
6018
  return this.$nextTick().then(function () {
5909
- _this51.updateCellAreas();
6019
+ _this53.updateCellAreas();
5910
6020
 
5911
6021
  return rest;
5912
6022
  });
@@ -6049,6 +6159,16 @@ var Methods = {
6049
6159
  var funcs = 'setFilter,clearFilter,getCheckedFilters,closeMenu,setActiveCellArea,getActiveCellArea,getCellAreas,clearCellAreas,copyCellArea,cutCellArea,pasteCellArea,getCopyCellArea,clearCopyCellArea,setCellAreas,openFind,openReplace,getSelectedCell,clearSelected,insert,insertAt,remove,removeCheckboxRow,removeRadioRow,removeCurrentRow,getRecordset,getInsertRecords,getRemoveRecords,getUpdateRecords,clearActived,getActiveRecord,isActiveByRow,setActiveRow,setActiveCell,setSelectCell,clearValidate,fullValidate,validate,openExport,openPrint,exportData,openImport,importData,saveFile,readFile,importByFile,print'.split(',');
6050
6160
  funcs.forEach(function (name) {
6051
6161
  Methods[name] = function () {
6162
+ if (process.env.NODE_ENV === 'development') {
6163
+ if (!this["_".concat(name)]) {
6164
+ if ('openExport,openPrint,exportData,openImport,importData,saveFile,readFile,importByFile,print'.split(',').includes(name)) {
6165
+ _tools.UtilTools.error('vxe.error.reqModule', ['Export']);
6166
+ } else if ('clearValidate,fullValidate,validate'.split(',').includes(name)) {
6167
+ _tools.UtilTools.error('vxe.error.reqModule', ['Validator']);
6168
+ }
6169
+ }
6170
+ }
6171
+
6052
6172
  return this["_".concat(name)] ? this["_".concat(name)].apply(this, arguments) : null;
6053
6173
  };
6054
6174
  });