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

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
  */
@@ -4586,10 +4590,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
4586
4590
  },
4587
4591
  /**
4588
4592
  * 检查行或列数据是否发生改变
4589
- * @param {Row} row 行对象
4593
+ * @param {Row} rowOrId 行对象、行主键
4590
4594
  * @param {String} field 字段名
4591
4595
  */
4592
- isUpdateByRow(row, field) {
4596
+ isUpdateByRow(rowOrId, field) {
4593
4597
  const {
4594
4598
  keepSource
4595
4599
  } = props;
@@ -4599,11 +4603,13 @@ var _default = exports.default = (0, _vue.defineComponent)({
4599
4603
  sourceDataRowIdData
4600
4604
  } = internalData;
4601
4605
  if (keepSource) {
4602
- const rowid = (0, _util.getRowid)($xeTable, row);
4606
+ const rowid = _xeUtils.default.isString(rowOrId) || _xeUtils.default.isNumber(rowOrId) ? rowOrId : (0, _util.getRowid)($xeTable, rowOrId);
4607
+ const rowRest = fullDataRowIdData[rowid];
4603
4608
  // 新增的数据不需要检测
4604
- if (!fullDataRowIdData[rowid]) {
4609
+ if (!rowRest) {
4605
4610
  return false;
4606
4611
  }
4612
+ const row = rowRest.row;
4607
4613
  const oRow = sourceDataRowIdData[rowid];
4608
4614
  if (oRow) {
4609
4615
  if (arguments.length > 1) {
@@ -4667,6 +4673,108 @@ var _default = exports.default = (0, _vue.defineComponent)({
4667
4673
  tableColumn: reactData.tableColumn.slice(0)
4668
4674
  };
4669
4675
  },
4676
+ /**
4677
+ * 移动列到指定列的位置
4678
+ * @param fieldOrColumn
4679
+ * @param targetFieldOrColumn
4680
+ * @param options
4681
+ */
4682
+ moveColumnTo(fieldOrColumn, targetFieldOrColumn, options) {
4683
+ const {
4684
+ fullColumnIdData,
4685
+ visibleColumn
4686
+ } = internalData;
4687
+ const {
4688
+ dragToChild,
4689
+ dragPos,
4690
+ isCrossDrag
4691
+ } = Object.assign({}, options);
4692
+ const dragCol = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
4693
+ let prevDragCol = null;
4694
+ const colRest = dragCol ? fullColumnIdData[dragCol.id] : null;
4695
+ let defPos = 'left';
4696
+ if (_xeUtils.default.isNumber(targetFieldOrColumn)) {
4697
+ if (colRest && targetFieldOrColumn) {
4698
+ let currList = colRest.items;
4699
+ let offsetIndex = colRest._index + targetFieldOrColumn;
4700
+ if (isCrossDrag) {
4701
+ currList = visibleColumn;
4702
+ offsetIndex = colRest._index + targetFieldOrColumn;
4703
+ }
4704
+ if (offsetIndex > 0 && offsetIndex < currList.length - 1) {
4705
+ prevDragCol = currList[offsetIndex];
4706
+ }
4707
+ if (targetFieldOrColumn > 0) {
4708
+ defPos = 'right';
4709
+ }
4710
+ }
4711
+ } else {
4712
+ prevDragCol = (0, _util.handleFieldOrColumn)($xeTable, targetFieldOrColumn);
4713
+ const targetColRest = prevDragCol ? fullColumnIdData[prevDragCol.id] : null;
4714
+ if (colRest && targetColRest) {
4715
+ if (targetColRest._index > colRest._index) {
4716
+ defPos = 'right';
4717
+ }
4718
+ }
4719
+ }
4720
+ return $xeTable.handleColDragSwapEvent(null, true, dragCol, prevDragCol, dragPos || defPos, dragToChild === true);
4721
+ },
4722
+ /**
4723
+ * 移动行到指定行的位置
4724
+ * @param rowidOrRow
4725
+ * @param targetRowidOrRow
4726
+ * @param options
4727
+ */
4728
+ moveRowTo(rowidOrRow, targetRowidOrRow, options) {
4729
+ const {
4730
+ treeConfig
4731
+ } = props;
4732
+ const {
4733
+ fullAllDataRowIdData,
4734
+ afterFullData
4735
+ } = internalData;
4736
+ const {
4737
+ dragToChild,
4738
+ dragPos,
4739
+ isCrossDrag
4740
+ } = Object.assign({}, options);
4741
+ const treeOpts = computeTreeOpts.value;
4742
+ const dragRow = (0, _util.handleRowidOrRow)($xeTable, rowidOrRow);
4743
+ let prevDragRow = null;
4744
+ let defPos = 'top';
4745
+ const rowRest = dragRow ? fullAllDataRowIdData[(0, _util.getRowid)($xeTable, dragRow)] : null;
4746
+ if (_xeUtils.default.isNumber(targetRowidOrRow)) {
4747
+ if (rowRest && targetRowidOrRow) {
4748
+ let currList = afterFullData;
4749
+ let offsetIndex = rowRest._index + targetRowidOrRow;
4750
+ if (treeConfig) {
4751
+ currList = rowRest.items;
4752
+ if (treeOpts.transform) {
4753
+ offsetIndex = rowRest.treeIndex + targetRowidOrRow;
4754
+ if (isCrossDrag) {
4755
+ currList = afterFullData;
4756
+ offsetIndex = rowRest._index + targetRowidOrRow;
4757
+ }
4758
+ }
4759
+ }
4760
+ if (offsetIndex >= 0 && offsetIndex <= currList.length - 1) {
4761
+ prevDragRow = currList[offsetIndex];
4762
+ }
4763
+ if (targetRowidOrRow > 0) {
4764
+ defPos = 'bottom';
4765
+ }
4766
+ }
4767
+ } else {
4768
+ prevDragRow = (0, _util.handleRowidOrRow)($xeTable, targetRowidOrRow);
4769
+ const targetRowRest = prevDragRow ? fullAllDataRowIdData[(0, _util.getRowid)($xeTable, prevDragRow)] : null;
4770
+ if (rowRest && targetRowRest) {
4771
+ if (targetRowRest._index > rowRest._index) {
4772
+ defPos = 'bottom';
4773
+ }
4774
+ }
4775
+ }
4776
+ return $xeTable.handleRowDragSwapEvent(null, true, dragRow, prevDragRow, dragPos || defPos, dragToChild === true);
4777
+ },
4670
4778
  /**
4671
4779
  * 获取表格的全量列
4672
4780
  */
@@ -4690,6 +4798,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
4690
4798
  const {
4691
4799
  treeConfig
4692
4800
  } = props;
4801
+ const {
4802
+ selectCheckboxMaps
4803
+ } = reactData;
4693
4804
  const {
4694
4805
  tableFullData,
4695
4806
  afterFullData,
@@ -4709,19 +4820,17 @@ var _default = exports.default = (0, _vue.defineComponent)({
4709
4820
  } = checkboxOpts;
4710
4821
  const childrenField = treeOpts.children || treeOpts.childrenField;
4711
4822
  let rowList = [];
4712
- const currTableData = isFull ? transform ? tableFullTreeData : tableFullData : transform ? afterTreeFullData : afterFullData;
4713
4823
  if (checkField) {
4714
4824
  if (treeConfig) {
4825
+ const currTableData = isFull ? transform ? tableFullTreeData : tableFullData : transform ? afterTreeFullData : afterFullData;
4715
4826
  rowList = _xeUtils.default.filterTree(currTableData, row => _xeUtils.default.get(row, checkField), {
4716
4827
  children: transform ? mapChildrenField : childrenField
4717
4828
  });
4718
4829
  } else {
4830
+ const currTableData = isFull ? tableFullData : afterFullData;
4719
4831
  rowList = currTableData.filter(row => _xeUtils.default.get(row, checkField));
4720
4832
  }
4721
4833
  } else {
4722
- const {
4723
- selectCheckboxMaps
4724
- } = reactData;
4725
4834
  _xeUtils.default.each(selectCheckboxMaps, (row, rowid) => {
4726
4835
  if (isFull) {
4727
4836
  if (fullDataRowIdData[rowid]) {
@@ -5504,6 +5613,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
5504
5613
  checkField,
5505
5614
  reserve
5506
5615
  } = checkboxOpts;
5616
+ // indeterminateField 仅支持读取
5507
5617
  const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
5508
5618
  if (checkField) {
5509
5619
  const handleClearChecked = item => {
@@ -8584,6 +8694,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
8584
8694
  checkStrictly,
8585
8695
  checkMethod
8586
8696
  } = checkboxOpts;
8697
+ // indeterminateField 仅支持读取
8587
8698
  const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
8588
8699
  if (checkField) {
8589
8700
  // 树结构
@@ -9434,6 +9545,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
9434
9545
  } = internalData;
9435
9546
  const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null);
9436
9547
  const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
9548
+ const errRest = {
9549
+ status: false
9550
+ };
9437
9551
  if (prevDragRow && dragRow) {
9438
9552
  // 判断是否有拖动
9439
9553
  if (prevDragRow !== dragRow) {
@@ -9448,7 +9562,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9448
9562
  const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
9449
9563
  return Promise.resolve(dEndMethod ? dEndMethod(dragParams) : true).then(status => {
9450
9564
  if (!status) {
9451
- return;
9565
+ return errRest;
9452
9566
  }
9453
9567
  let oafIndex = -1;
9454
9568
  let nafIndex = -1;
@@ -9479,11 +9593,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
9479
9593
  if (isPeerDrag && !isCrossDrag) {
9480
9594
  if (oldRest.row[parentField] !== newRest.row[parentField]) {
9481
9595
  // 非同级
9482
- return;
9596
+ return errRest;
9483
9597
  }
9484
9598
  } else {
9485
9599
  if (!isCrossDrag) {
9486
- return;
9600
+ return errRest;
9487
9601
  }
9488
9602
  if (oldAllMaps[newRowid]) {
9489
9603
  isSelfToChildStatus = true;
@@ -9494,19 +9608,19 @@ var _default = exports.default = (0, _vue.defineComponent)({
9494
9608
  content: getI18n('vxe.error.treeDragChild')
9495
9609
  });
9496
9610
  }
9497
- return;
9611
+ return errRest;
9498
9612
  }
9499
9613
  }
9500
9614
  }
9501
9615
  } else if (oldLevel) {
9502
9616
  // 子到根
9503
9617
  if (!isCrossDrag) {
9504
- return;
9618
+ return errRest;
9505
9619
  }
9506
9620
  } else if (newLevel) {
9507
9621
  // 根到子
9508
9622
  if (!isCrossDrag) {
9509
- return;
9623
+ return errRest;
9510
9624
  }
9511
9625
  if (oldAllMaps[newRowid]) {
9512
9626
  isSelfToChildStatus = true;
@@ -9517,7 +9631,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9517
9631
  content: getI18n('vxe.error.treeDragChild')
9518
9632
  });
9519
9633
  }
9520
- return;
9634
+ return errRest;
9521
9635
  }
9522
9636
  }
9523
9637
  } else {
@@ -9575,26 +9689,34 @@ var _default = exports.default = (0, _vue.defineComponent)({
9575
9689
  if (reactData.scrollYLoad) {
9576
9690
  $xeTable.updateScrollYSpace();
9577
9691
  }
9578
- (0, _vue.nextTick)().then(() => {
9692
+ if (evnt) {
9693
+ dispatchEvent('row-dragend', {
9694
+ oldRow: dragRow,
9695
+ newRow: prevDragRow,
9696
+ dragRow,
9697
+ dragPos: prevDragPos,
9698
+ dragToChild: isDragToChildFlag,
9699
+ offsetIndex: dragOffsetIndex,
9700
+ _index: {
9701
+ newIndex: nafIndex,
9702
+ oldIndex: oafIndex
9703
+ }
9704
+ }, evnt);
9705
+ }
9706
+ return (0, _vue.nextTick)().then(() => {
9579
9707
  $xeTable.updateCellAreas();
9580
9708
  $xeTable.recalculate();
9709
+ }).then(() => {
9710
+ return {
9711
+ status: true
9712
+ };
9581
9713
  });
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(() => {});
9714
+ }).catch(() => {
9715
+ return errRest;
9716
+ });
9595
9717
  }
9596
9718
  }
9597
- return Promise.resolve();
9719
+ return Promise.resolve(errRest);
9598
9720
  },
9599
9721
  handleRowDragDragendEvent(evnt) {
9600
9722
  const {
@@ -9763,6 +9885,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
9763
9885
  collectColumn
9764
9886
  } = internalData;
9765
9887
  const dragOffsetIndex = prevDragPos === 'right' ? 1 : 0;
9888
+ const errRest = {
9889
+ status: false
9890
+ };
9766
9891
  if (prevDragCol && dragCol) {
9767
9892
  // 判断是否有拖动
9768
9893
  if (prevDragCol !== dragCol) {
@@ -9779,7 +9904,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9779
9904
  const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
9780
9905
  return Promise.resolve(dragEndMethod ? dragEndMethod(dragParams) : true).then(status => {
9781
9906
  if (!status) {
9782
- return;
9907
+ return errRest;
9783
9908
  }
9784
9909
  let oafIndex = -1;
9785
9910
  let nafIndex = -1;
@@ -9793,11 +9918,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
9793
9918
  if (isPeerDrag && !isCrossDrag) {
9794
9919
  if (dragColumn.parentId !== newColumn.parentId) {
9795
9920
  // 非同级
9796
- return;
9921
+ return errRest;
9797
9922
  }
9798
9923
  } else {
9799
9924
  if (!isCrossDrag) {
9800
- return;
9925
+ return errRest;
9801
9926
  }
9802
9927
  if (oldAllMaps[newColumn.id]) {
9803
9928
  isSelfToChildStatus = true;
@@ -9808,19 +9933,19 @@ var _default = exports.default = (0, _vue.defineComponent)({
9808
9933
  content: getI18n('vxe.error.treeDragChild')
9809
9934
  });
9810
9935
  }
9811
- return;
9936
+ return errRest;
9812
9937
  }
9813
9938
  }
9814
9939
  }
9815
9940
  } else if (dragColumn.parentId) {
9816
9941
  // 子到根
9817
9942
  if (!isCrossDrag) {
9818
- return;
9943
+ return errRest;
9819
9944
  }
9820
9945
  } else if (newColumn.parentId) {
9821
9946
  // 根到子
9822
9947
  if (!isCrossDrag) {
9823
- return;
9948
+ return errRest;
9824
9949
  }
9825
9950
  if (oldAllMaps[newColumn.id]) {
9826
9951
  isSelfToChildStatus = true;
@@ -9831,7 +9956,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9831
9956
  content: getI18n('vxe.error.treeDragChild')
9832
9957
  });
9833
9958
  }
9834
- return;
9959
+ return errRest;
9835
9960
  }
9836
9961
  }
9837
9962
  } else {
@@ -9900,25 +10025,32 @@ var _default = exports.default = (0, _vue.defineComponent)({
9900
10025
  $xeTable.clearCopyCellArea();
9901
10026
  }
9902
10027
  }
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);
10028
+ if (evnt) {
10029
+ dispatchEvent('column-dragend', {
10030
+ oldColumn: dragColumn,
10031
+ newColumn,
10032
+ dragColumn,
10033
+ dragPos: prevDragPos,
10034
+ dragToChild: isDragToChildFlag,
10035
+ offsetIndex: dragOffsetIndex,
10036
+ _index: {
10037
+ newIndex: nafIndex,
10038
+ oldIndex: oafIndex
10039
+ }
10040
+ }, evnt);
10041
+ }
9915
10042
  if (isSyncColumn) {
9916
10043
  $xeTable.handleColDragSwapColumn();
9917
10044
  }
9918
- }).catch(() => {});
10045
+ return {
10046
+ status: true
10047
+ };
10048
+ }).catch(() => {
10049
+ return errRest;
10050
+ });
9919
10051
  }
9920
10052
  }
9921
- return Promise.resolve();
10053
+ return Promise.resolve(errRest);
9922
10054
  },
9923
10055
  handleHeaderCellDragDragendEvent(evnt) {
9924
10056
  const {