vxe-table 4.12.0-beta.7 → 4.12.0-beta.9

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.
@@ -2628,6 +2628,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
2628
2628
  reserve,
2629
2629
  checkMethod
2630
2630
  } = checkboxOpts;
2631
+ // indeterminateField 仅支持读取
2631
2632
  const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
2632
2633
  const selectRowMaps = {};
2633
2634
  /**
@@ -4018,6 +4019,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
4018
4019
  };
4019
4020
  tableMethods = {
4020
4021
  dispatchEvent,
4022
+ getEl() {
4023
+ return refElem.value;
4024
+ },
4021
4025
  /**
4022
4026
  * 重置表格的一切数据状态
4023
4027
  */
@@ -4364,6 +4368,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
4364
4368
  keepSource,
4365
4369
  treeConfig
4366
4370
  } = props;
4371
+ const {
4372
+ editStore
4373
+ } = reactData;
4367
4374
  const {
4368
4375
  fullAllDataRowIdData,
4369
4376
  fullDataRowIdData,
@@ -4372,6 +4379,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
4372
4379
  tableFullData,
4373
4380
  afterFullData
4374
4381
  } = internalData;
4382
+ const removeTempMaps = Object.assign({}, editStore.removeMaps);
4375
4383
  const treeOpts = computeTreeOpts.value;
4376
4384
  const {
4377
4385
  transform
@@ -4406,6 +4414,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
4406
4414
  _xeUtils.default.destructuring(row, _xeUtils.default.clone(oRow, true));
4407
4415
  }
4408
4416
  if (!fullDataRowIdData[rowid] && $xeTable.isRemoveByRow(row)) {
4417
+ delete removeTempMaps[rowid];
4409
4418
  tableFullData.unshift(row);
4410
4419
  afterFullData.unshift(row);
4411
4420
  reDelFlag = true;
@@ -4417,6 +4426,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
4417
4426
  }
4418
4427
  if (rows) {
4419
4428
  if (reDelFlag) {
4429
+ editStore.removeMaps = removeTempMaps;
4420
4430
  $xeTable.updateFooter();
4421
4431
  $xeTable.cacheRowMap(false);
4422
4432
  $xeTable.handleTableData(treeConfig && transform);
@@ -4586,10 +4596,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
4586
4596
  },
4587
4597
  /**
4588
4598
  * 检查行或列数据是否发生改变
4589
- * @param {Row} row 行对象
4599
+ * @param {Row} rowidOrRow 行对象、行主键
4590
4600
  * @param {String} field 字段名
4591
4601
  */
4592
- isUpdateByRow(row, field) {
4602
+ isUpdateByRow(rowidOrRow, field) {
4593
4603
  const {
4594
4604
  keepSource
4595
4605
  } = props;
@@ -4599,11 +4609,13 @@ var _default = exports.default = (0, _vue.defineComponent)({
4599
4609
  sourceDataRowIdData
4600
4610
  } = internalData;
4601
4611
  if (keepSource) {
4602
- const rowid = (0, _util.getRowid)($xeTable, row);
4612
+ const rowid = _xeUtils.default.isString(rowidOrRow) || _xeUtils.default.isNumber(rowidOrRow) ? rowidOrRow : (0, _util.getRowid)($xeTable, rowidOrRow);
4613
+ const rowRest = fullDataRowIdData[rowid];
4603
4614
  // 新增的数据不需要检测
4604
- if (!fullDataRowIdData[rowid]) {
4615
+ if (!rowRest) {
4605
4616
  return false;
4606
4617
  }
4618
+ const row = rowRest.row;
4607
4619
  const oRow = sourceDataRowIdData[rowid];
4608
4620
  if (oRow) {
4609
4621
  if (arguments.length > 1) {
@@ -4667,6 +4679,108 @@ var _default = exports.default = (0, _vue.defineComponent)({
4667
4679
  tableColumn: reactData.tableColumn.slice(0)
4668
4680
  };
4669
4681
  },
4682
+ /**
4683
+ * 移动列到指定列的位置
4684
+ * @param fieldOrColumn
4685
+ * @param targetFieldOrColumn
4686
+ * @param options
4687
+ */
4688
+ moveColumnTo(fieldOrColumn, targetFieldOrColumn, options) {
4689
+ const {
4690
+ fullColumnIdData,
4691
+ visibleColumn
4692
+ } = internalData;
4693
+ const {
4694
+ dragToChild,
4695
+ dragPos,
4696
+ isCrossDrag
4697
+ } = Object.assign({}, options);
4698
+ const dragCol = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
4699
+ let prevDragCol = null;
4700
+ const colRest = dragCol ? fullColumnIdData[dragCol.id] : null;
4701
+ let defPos = 'left';
4702
+ if (_xeUtils.default.isNumber(targetFieldOrColumn)) {
4703
+ if (colRest && targetFieldOrColumn) {
4704
+ let currList = colRest.items;
4705
+ let offsetIndex = colRest._index + targetFieldOrColumn;
4706
+ if (isCrossDrag) {
4707
+ currList = visibleColumn;
4708
+ offsetIndex = colRest._index + targetFieldOrColumn;
4709
+ }
4710
+ if (offsetIndex > 0 && offsetIndex < currList.length - 1) {
4711
+ prevDragCol = currList[offsetIndex];
4712
+ }
4713
+ if (targetFieldOrColumn > 0) {
4714
+ defPos = 'right';
4715
+ }
4716
+ }
4717
+ } else {
4718
+ prevDragCol = (0, _util.handleFieldOrColumn)($xeTable, targetFieldOrColumn);
4719
+ const targetColRest = prevDragCol ? fullColumnIdData[prevDragCol.id] : null;
4720
+ if (colRest && targetColRest) {
4721
+ if (targetColRest._index > colRest._index) {
4722
+ defPos = 'right';
4723
+ }
4724
+ }
4725
+ }
4726
+ return $xeTable.handleColDragSwapEvent(null, true, dragCol, prevDragCol, dragPos || defPos, dragToChild === true);
4727
+ },
4728
+ /**
4729
+ * 移动行到指定行的位置
4730
+ * @param rowidOrRow
4731
+ * @param targetRowidOrRow
4732
+ * @param options
4733
+ */
4734
+ moveRowTo(rowidOrRow, targetRowidOrRow, options) {
4735
+ const {
4736
+ treeConfig
4737
+ } = props;
4738
+ const {
4739
+ fullAllDataRowIdData,
4740
+ afterFullData
4741
+ } = internalData;
4742
+ const {
4743
+ dragToChild,
4744
+ dragPos,
4745
+ isCrossDrag
4746
+ } = Object.assign({}, options);
4747
+ const treeOpts = computeTreeOpts.value;
4748
+ const dragRow = (0, _util.handleRowidOrRow)($xeTable, rowidOrRow);
4749
+ let prevDragRow = null;
4750
+ let defPos = 'top';
4751
+ const rowRest = dragRow ? fullAllDataRowIdData[(0, _util.getRowid)($xeTable, dragRow)] : null;
4752
+ if (_xeUtils.default.isNumber(targetRowidOrRow)) {
4753
+ if (rowRest && targetRowidOrRow) {
4754
+ let currList = afterFullData;
4755
+ let offsetIndex = rowRest._index + targetRowidOrRow;
4756
+ if (treeConfig) {
4757
+ currList = rowRest.items;
4758
+ if (treeOpts.transform) {
4759
+ offsetIndex = rowRest.treeIndex + targetRowidOrRow;
4760
+ if (isCrossDrag) {
4761
+ currList = afterFullData;
4762
+ offsetIndex = rowRest._index + targetRowidOrRow;
4763
+ }
4764
+ }
4765
+ }
4766
+ if (offsetIndex >= 0 && offsetIndex <= currList.length - 1) {
4767
+ prevDragRow = currList[offsetIndex];
4768
+ }
4769
+ if (targetRowidOrRow > 0) {
4770
+ defPos = 'bottom';
4771
+ }
4772
+ }
4773
+ } else {
4774
+ prevDragRow = (0, _util.handleRowidOrRow)($xeTable, targetRowidOrRow);
4775
+ const targetRowRest = prevDragRow ? fullAllDataRowIdData[(0, _util.getRowid)($xeTable, prevDragRow)] : null;
4776
+ if (rowRest && targetRowRest) {
4777
+ if (targetRowRest._index > rowRest._index) {
4778
+ defPos = 'bottom';
4779
+ }
4780
+ }
4781
+ }
4782
+ return $xeTable.handleRowDragSwapEvent(null, true, dragRow, prevDragRow, dragPos || defPos, dragToChild === true);
4783
+ },
4670
4784
  /**
4671
4785
  * 获取表格的全量列
4672
4786
  */
@@ -4690,6 +4804,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
4690
4804
  const {
4691
4805
  treeConfig
4692
4806
  } = props;
4807
+ const {
4808
+ selectCheckboxMaps
4809
+ } = reactData;
4693
4810
  const {
4694
4811
  tableFullData,
4695
4812
  afterFullData,
@@ -4709,19 +4826,17 @@ var _default = exports.default = (0, _vue.defineComponent)({
4709
4826
  } = checkboxOpts;
4710
4827
  const childrenField = treeOpts.children || treeOpts.childrenField;
4711
4828
  let rowList = [];
4712
- const currTableData = isFull ? transform ? tableFullTreeData : tableFullData : transform ? afterTreeFullData : afterFullData;
4713
4829
  if (checkField) {
4714
4830
  if (treeConfig) {
4831
+ const currTableData = isFull ? transform ? tableFullTreeData : tableFullData : transform ? afterTreeFullData : afterFullData;
4715
4832
  rowList = _xeUtils.default.filterTree(currTableData, row => _xeUtils.default.get(row, checkField), {
4716
4833
  children: transform ? mapChildrenField : childrenField
4717
4834
  });
4718
4835
  } else {
4836
+ const currTableData = isFull ? tableFullData : afterFullData;
4719
4837
  rowList = currTableData.filter(row => _xeUtils.default.get(row, checkField));
4720
4838
  }
4721
4839
  } else {
4722
- const {
4723
- selectCheckboxMaps
4724
- } = reactData;
4725
4840
  _xeUtils.default.each(selectCheckboxMaps, (row, rowid) => {
4726
4841
  if (isFull) {
4727
4842
  if (fullDataRowIdData[rowid]) {
@@ -5504,6 +5619,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
5504
5619
  checkField,
5505
5620
  reserve
5506
5621
  } = checkboxOpts;
5622
+ // indeterminateField 仅支持读取
5507
5623
  const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
5508
5624
  if (checkField) {
5509
5625
  const handleClearChecked = item => {
@@ -7809,6 +7925,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
7809
7925
  rowRest.level = level;
7810
7926
  rowRest.index = currIndex;
7811
7927
  rowRest.treeIndex = index;
7928
+ fullDataRowIdMaps[rowid] = rowRest;
7929
+ fullAllDataRowIdMaps[rowid] = rowRest;
7812
7930
  };
7813
7931
  if (treeConfig) {
7814
7932
  _xeUtils.default.eachTree(tableFullTreeData, (row, index, items, path, parentRow, nodes) => {
@@ -8584,6 +8702,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
8584
8702
  checkStrictly,
8585
8703
  checkMethod
8586
8704
  } = checkboxOpts;
8705
+ // indeterminateField 仅支持读取
8587
8706
  const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
8588
8707
  if (checkField) {
8589
8708
  // 树结构
@@ -9434,6 +9553,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
9434
9553
  } = internalData;
9435
9554
  const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null);
9436
9555
  const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
9556
+ const errRest = {
9557
+ status: false
9558
+ };
9437
9559
  if (prevDragRow && dragRow) {
9438
9560
  // 判断是否有拖动
9439
9561
  if (prevDragRow !== dragRow) {
@@ -9448,7 +9570,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9448
9570
  const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
9449
9571
  return Promise.resolve(dEndMethod ? dEndMethod(dragParams) : true).then(status => {
9450
9572
  if (!status) {
9451
- return;
9573
+ return errRest;
9452
9574
  }
9453
9575
  let oafIndex = -1;
9454
9576
  let nafIndex = -1;
@@ -9479,11 +9601,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
9479
9601
  if (isPeerDrag && !isCrossDrag) {
9480
9602
  if (oldRest.row[parentField] !== newRest.row[parentField]) {
9481
9603
  // 非同级
9482
- return;
9604
+ return errRest;
9483
9605
  }
9484
9606
  } else {
9485
9607
  if (!isCrossDrag) {
9486
- return;
9608
+ return errRest;
9487
9609
  }
9488
9610
  if (oldAllMaps[newRowid]) {
9489
9611
  isSelfToChildStatus = true;
@@ -9494,19 +9616,19 @@ var _default = exports.default = (0, _vue.defineComponent)({
9494
9616
  content: getI18n('vxe.error.treeDragChild')
9495
9617
  });
9496
9618
  }
9497
- return;
9619
+ return errRest;
9498
9620
  }
9499
9621
  }
9500
9622
  }
9501
9623
  } else if (oldLevel) {
9502
9624
  // 子到根
9503
9625
  if (!isCrossDrag) {
9504
- return;
9626
+ return errRest;
9505
9627
  }
9506
9628
  } else if (newLevel) {
9507
9629
  // 根到子
9508
9630
  if (!isCrossDrag) {
9509
- return;
9631
+ return errRest;
9510
9632
  }
9511
9633
  if (oldAllMaps[newRowid]) {
9512
9634
  isSelfToChildStatus = true;
@@ -9517,7 +9639,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9517
9639
  content: getI18n('vxe.error.treeDragChild')
9518
9640
  });
9519
9641
  }
9520
- return;
9642
+ return errRest;
9521
9643
  }
9522
9644
  }
9523
9645
  } else {
@@ -9575,26 +9697,34 @@ var _default = exports.default = (0, _vue.defineComponent)({
9575
9697
  if (reactData.scrollYLoad) {
9576
9698
  $xeTable.updateScrollYSpace();
9577
9699
  }
9578
- (0, _vue.nextTick)().then(() => {
9700
+ if (evnt) {
9701
+ dispatchEvent('row-dragend', {
9702
+ oldRow: dragRow,
9703
+ newRow: prevDragRow,
9704
+ dragRow,
9705
+ dragPos: prevDragPos,
9706
+ dragToChild: isDragToChildFlag,
9707
+ offsetIndex: dragOffsetIndex,
9708
+ _index: {
9709
+ newIndex: nafIndex,
9710
+ oldIndex: oafIndex
9711
+ }
9712
+ }, evnt);
9713
+ }
9714
+ return (0, _vue.nextTick)().then(() => {
9579
9715
  $xeTable.updateCellAreas();
9580
9716
  $xeTable.recalculate();
9717
+ }).then(() => {
9718
+ return {
9719
+ status: true
9720
+ };
9581
9721
  });
9582
- dispatchEvent('row-dragend', {
9583
- oldRow: dragRow,
9584
- newRow: prevDragRow,
9585
- dragRow,
9586
- dragPos: prevDragPos,
9587
- dragToChild: isDragToChildFlag,
9588
- offsetIndex: dragOffsetIndex,
9589
- _index: {
9590
- newIndex: nafIndex,
9591
- oldIndex: oafIndex
9592
- }
9593
- }, evnt);
9594
- }).catch(() => {});
9722
+ }).catch(() => {
9723
+ return errRest;
9724
+ });
9595
9725
  }
9596
9726
  }
9597
- return Promise.resolve();
9727
+ return Promise.resolve(errRest);
9598
9728
  },
9599
9729
  handleRowDragDragendEvent(evnt) {
9600
9730
  const {
@@ -9763,6 +9893,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
9763
9893
  collectColumn
9764
9894
  } = internalData;
9765
9895
  const dragOffsetIndex = prevDragPos === 'right' ? 1 : 0;
9896
+ const errRest = {
9897
+ status: false
9898
+ };
9766
9899
  if (prevDragCol && dragCol) {
9767
9900
  // 判断是否有拖动
9768
9901
  if (prevDragCol !== dragCol) {
@@ -9779,7 +9912,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9779
9912
  const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
9780
9913
  return Promise.resolve(dragEndMethod ? dragEndMethod(dragParams) : true).then(status => {
9781
9914
  if (!status) {
9782
- return;
9915
+ return errRest;
9783
9916
  }
9784
9917
  let oafIndex = -1;
9785
9918
  let nafIndex = -1;
@@ -9793,11 +9926,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
9793
9926
  if (isPeerDrag && !isCrossDrag) {
9794
9927
  if (dragColumn.parentId !== newColumn.parentId) {
9795
9928
  // 非同级
9796
- return;
9929
+ return errRest;
9797
9930
  }
9798
9931
  } else {
9799
9932
  if (!isCrossDrag) {
9800
- return;
9933
+ return errRest;
9801
9934
  }
9802
9935
  if (oldAllMaps[newColumn.id]) {
9803
9936
  isSelfToChildStatus = true;
@@ -9808,19 +9941,19 @@ var _default = exports.default = (0, _vue.defineComponent)({
9808
9941
  content: getI18n('vxe.error.treeDragChild')
9809
9942
  });
9810
9943
  }
9811
- return;
9944
+ return errRest;
9812
9945
  }
9813
9946
  }
9814
9947
  }
9815
9948
  } else if (dragColumn.parentId) {
9816
9949
  // 子到根
9817
9950
  if (!isCrossDrag) {
9818
- return;
9951
+ return errRest;
9819
9952
  }
9820
9953
  } else if (newColumn.parentId) {
9821
9954
  // 根到子
9822
9955
  if (!isCrossDrag) {
9823
- return;
9956
+ return errRest;
9824
9957
  }
9825
9958
  if (oldAllMaps[newColumn.id]) {
9826
9959
  isSelfToChildStatus = true;
@@ -9831,7 +9964,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9831
9964
  content: getI18n('vxe.error.treeDragChild')
9832
9965
  });
9833
9966
  }
9834
- return;
9967
+ return errRest;
9835
9968
  }
9836
9969
  }
9837
9970
  } else {
@@ -9900,25 +10033,32 @@ var _default = exports.default = (0, _vue.defineComponent)({
9900
10033
  $xeTable.clearCopyCellArea();
9901
10034
  }
9902
10035
  }
9903
- dispatchEvent('column-dragend', {
9904
- oldColumn: dragColumn,
9905
- newColumn,
9906
- dragColumn,
9907
- dragPos: prevDragPos,
9908
- dragToChild: isDragToChildFlag,
9909
- offsetIndex: dragOffsetIndex,
9910
- _index: {
9911
- newIndex: nafIndex,
9912
- oldIndex: oafIndex
9913
- }
9914
- }, evnt);
10036
+ if (evnt) {
10037
+ dispatchEvent('column-dragend', {
10038
+ oldColumn: dragColumn,
10039
+ newColumn,
10040
+ dragColumn,
10041
+ dragPos: prevDragPos,
10042
+ dragToChild: isDragToChildFlag,
10043
+ offsetIndex: dragOffsetIndex,
10044
+ _index: {
10045
+ newIndex: nafIndex,
10046
+ oldIndex: oafIndex
10047
+ }
10048
+ }, evnt);
10049
+ }
9915
10050
  if (isSyncColumn) {
9916
10051
  $xeTable.handleColDragSwapColumn();
9917
10052
  }
9918
- }).catch(() => {});
10053
+ return {
10054
+ status: true
10055
+ };
10056
+ }).catch(() => {
10057
+ return errRest;
10058
+ });
9919
10059
  }
9920
10060
  }
9921
- return Promise.resolve();
10061
+ return Promise.resolve(errRest);
9922
10062
  },
9923
10063
  handleHeaderCellDragDragendEvent(evnt) {
9924
10064
  const {