vxe-table 3.15.34 → 3.15.36

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 (62) hide show
  1. package/es/grid/src/grid.js +50 -17
  2. package/es/style.css +1 -1
  3. package/es/table/module/edit/mixin.js +2 -2
  4. package/es/table/module/validator/mixin.js +11 -2
  5. package/es/table/src/body.js +20 -3
  6. package/es/table/src/cell.js +52 -36
  7. package/es/table/src/column.js +2 -0
  8. package/es/table/src/columnInfo.js +2 -0
  9. package/es/table/src/methods.js +135 -76
  10. package/es/table/src/props.js +3 -1
  11. package/es/table/src/table.js +19 -6
  12. package/es/table/src/util.js +5 -2
  13. package/es/ui/index.js +4 -4
  14. package/es/ui/src/log.js +1 -1
  15. package/lib/grid/src/grid.js +57 -24
  16. package/lib/grid/src/grid.min.js +1 -1
  17. package/lib/index.umd.js +323 -149
  18. package/lib/index.umd.min.js +1 -1
  19. package/lib/style.css +1 -1
  20. package/lib/table/module/edit/mixin.js +2 -2
  21. package/lib/table/module/edit/mixin.min.js +1 -1
  22. package/lib/table/module/validator/mixin.js +14 -2
  23. package/lib/table/module/validator/mixin.min.js +1 -1
  24. package/lib/table/src/body.js +19 -2
  25. package/lib/table/src/body.min.js +1 -1
  26. package/lib/table/src/cell.js +43 -28
  27. package/lib/table/src/cell.min.js +1 -1
  28. package/lib/table/src/column.js +2 -0
  29. package/lib/table/src/column.min.js +1 -1
  30. package/lib/table/src/columnInfo.js +2 -0
  31. package/lib/table/src/columnInfo.min.js +1 -1
  32. package/lib/table/src/methods.js +151 -74
  33. package/lib/table/src/methods.min.js +1 -1
  34. package/lib/table/src/props.js +3 -1
  35. package/lib/table/src/props.min.js +1 -1
  36. package/lib/table/src/table.js +19 -6
  37. package/lib/table/src/table.min.js +1 -1
  38. package/lib/table/src/util.js +7 -4
  39. package/lib/table/src/util.min.js +1 -1
  40. package/lib/ui/index.js +4 -4
  41. package/lib/ui/index.min.js +1 -1
  42. package/lib/ui/src/log.js +1 -1
  43. package/lib/ui/src/log.min.js +1 -1
  44. package/package.json +1 -1
  45. package/packages/grid/src/grid.ts +56 -17
  46. package/packages/table/module/edit/mixin.ts +2 -2
  47. package/packages/table/module/validator/mixin.ts +11 -3
  48. package/packages/table/src/body.ts +20 -3
  49. package/packages/table/src/cell.ts +52 -36
  50. package/packages/table/src/column.ts +2 -0
  51. package/packages/table/src/columnInfo.ts +3 -0
  52. package/packages/table/src/methods.ts +143 -77
  53. package/packages/table/src/props.ts +3 -1
  54. package/packages/table/src/table.ts +20 -6
  55. package/packages/table/src/util.ts +6 -2
  56. package/packages/ui/index.ts +3 -3
  57. /package/es/{iconfont.1749092456241.ttf → iconfont.1749440099787.ttf} +0 -0
  58. /package/es/{iconfont.1749092456241.woff → iconfont.1749440099787.woff} +0 -0
  59. /package/es/{iconfont.1749092456241.woff2 → iconfont.1749440099787.woff2} +0 -0
  60. /package/lib/{iconfont.1749092456241.ttf → iconfont.1749440099787.ttf} +0 -0
  61. /package/lib/{iconfont.1749092456241.woff → iconfont.1749440099787.woff} +0 -0
  62. /package/lib/{iconfont.1749092456241.woff2 → iconfont.1749440099787.woff2} +0 -0
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.ColumnInfo=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_util=require("./util"),_utils=require("../../ui/src/utils"),_log=require("../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{getI18n,formats}=_ui.VxeUI;class ColumnInfo{constructor(e,r,{renderHeader:t,renderCell:o,renderFooter:l,renderData:i}={}){var d=e,n=e.$xeGrid,s=n?n.proxyOpts:null,a=r.formatter,f=!_xeUtils.default.isBoolean(r.visible)||r.visible,u=["seq","checkbox","radio","expand","html"];r.type&&-1===u.indexOf(r.type)&&(0,_log.warnLog)("vxe.error.errProp",["type="+r.type,u.join(", ")]),(_xeUtils.default.isBoolean(r.cellRender)||r.cellRender&&!_xeUtils.default.isObject(r.cellRender))&&(0,_log.warnLog)("vxe.error.errProp",["column.cell-render="+r.cellRender,"column.cell-render={}"]),(_xeUtils.default.isBoolean(r.editRender)||r.editRender&&!_xeUtils.default.isObject(r.editRender))&&(0,_log.warnLog)("vxe.error.errProp",["column.edit-render="+r.editRender,"column.edit-render={}"]),"expand"===r.type&&(u=d.treeConfig,u)&&(e.treeOpts.showLine||e.treeOpts.line)&&(0,_log.errLog)("vxe.error.errConflicts",["tree-config.line","column.type=expand"]),r.remoteSort&&(0,_log.warnLog)("vxe.error.delProp",["column.remote-sort","sort-config.remote"]),r.sortMethod&&(0,_log.warnLog)("vxe.error.delProp",["column.sort-method","sort-config.sortMethod"]),a&&(_xeUtils.default.isString(a)?(d=formats.get(a)||_xeUtils.default[a])&&_xeUtils.default.isFunction(d.tableCellFormatMethod||d.cellFormatMethod)||(0,_log.errLog)("vxe.error.notFormats",[a]):!_xeUtils.default.isArray(a)||(u=formats.get(a[0])||_xeUtils.default[a[0]])&&_xeUtils.default.isFunction(u.tableCellFormatMethod||u.cellFormatMethod)||(0,_log.errLog)("vxe.error.notFormats",[a[0]])),Object.assign(this,{type:r.type,property:r.field,field:r.field,title:r.title,width:r.width,minWidth:r.minWidth,maxWidth:r.maxWidth,resizable:r.resizable,fixed:r.fixed,align:r.align,headerAlign:r.headerAlign,footerAlign:r.footerAlign,showOverflow:r.showOverflow,showHeaderOverflow:r.showHeaderOverflow,showFooterOverflow:r.showFooterOverflow,className:r.className,headerClassName:r.headerClassName,footerClassName:r.footerClassName,formatter:a,footerFormatter:r.footerFormatter,padding:r.padding,verticalAlign:r.verticalAlign,sortable:r.sortable,sortBy:r.sortBy,sortType:r.sortType,sortMethod:r.sortMethod,remoteSort:r.remoteSort,filters:(0,_util.toFilters)(r.filters),filterMultiple:!_xeUtils.default.isBoolean(r.filterMultiple)||r.filterMultiple,filterMethod:r.filterMethod,filterResetMethod:r.filterResetMethod,filterRecoverMethod:r.filterRecoverMethod,filterRender:r.filterRender,rowGroupNode:r.rowGroupNode,treeNode:r.treeNode,dragSort:r.dragSort,rowResize:r.rowResize,cellType:r.cellType,cellRender:r.cellRender,editRender:r.editRender,contentRender:r.contentRender,headerExportMethod:r.headerExportMethod,exportMethod:r.exportMethod,footerExportMethod:r.footerExportMethod,titleHelp:r.titleHelp,titlePrefix:r.titlePrefix,titleSuffix:r.titleSuffix,params:r.params,id:r.colId||_xeUtils.default.uniqueId("col_"),parentId:null,visible:f,halfVisible:!1,defaultVisible:f,defaultFixed:r.fixed,checked:!1,halfChecked:!1,disabled:!1,level:1,rowSpan:1,colSpan:1,order:null,sortTime:0,sortNumber:0,renderSortNumber:0,renderFixed:"",renderVisible:!1,renderWidth:0,renderHeight:0,renderResizeWidth:0,renderAutoWidth:0,resizeWidth:0,renderLeft:0,renderArgs:[],model:{},renderHeader:t||r.renderHeader,renderCell:o||r.renderCell,renderFooter:l||r.renderFooter,renderData:i,slots:r.slots}),s&&s.beforeColumn&&s.beforeColumn({$grid:n,column:this})}getTitle(){return(0,_utils.getFuncText)(this.title||("seq"===this.type?getI18n("vxe.table.seqTitle"):""))}getKey(){var e=this.type;return this.field||(e?"type="+e:null)}update(e,r){"filters"!==e&&("field"===e&&(this.property=r),this[e]=r)}}exports.ColumnInfo=ColumnInfo;
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.ColumnInfo=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_util=require("./util"),_utils=require("../../ui/src/utils"),_log=require("../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{getI18n,formats}=_ui.VxeUI;class ColumnInfo{constructor(e,r,{renderHeader:t,renderCell:o,renderFooter:l,renderData:i}={}){var d=e,n=e.$xeGrid,s=n?n.proxyOpts:null,a=r.formatter,f=!_xeUtils.default.isBoolean(r.visible)||r.visible,u=["seq","checkbox","radio","expand","html"];r.type&&-1===u.indexOf(r.type)&&(0,_log.warnLog)("vxe.error.errProp",["type="+r.type,u.join(", ")]),(_xeUtils.default.isBoolean(r.cellRender)||r.cellRender&&!_xeUtils.default.isObject(r.cellRender))&&(0,_log.warnLog)("vxe.error.errProp",["column.cell-render="+r.cellRender,"column.cell-render={}"]),(_xeUtils.default.isBoolean(r.editRender)||r.editRender&&!_xeUtils.default.isObject(r.editRender))&&(0,_log.warnLog)("vxe.error.errProp",["column.edit-render="+r.editRender,"column.edit-render={}"]),"expand"===r.type&&(u=d.treeConfig,u)&&(e.treeOpts.showLine||e.treeOpts.line)&&(0,_log.errLog)("vxe.error.errConflicts",["tree-config.line","column.type=expand"]),r.remoteSort&&(0,_log.warnLog)("vxe.error.delProp",["column.remote-sort","sort-config.remote"]),r.sortMethod&&(0,_log.warnLog)("vxe.error.delProp",["column.sort-method","sort-config.sortMethod"]),a&&(_xeUtils.default.isString(a)?(d=formats.get(a)||_xeUtils.default[a])&&_xeUtils.default.isFunction(d.tableCellFormatMethod||d.cellFormatMethod)||(0,_log.errLog)("vxe.error.notFormats",[a]):!_xeUtils.default.isArray(a)||(u=formats.get(a[0])||_xeUtils.default[a[0]])&&_xeUtils.default.isFunction(u.tableCellFormatMethod||u.cellFormatMethod)||(0,_log.errLog)("vxe.error.notFormats",[a[0]])),Object.assign(this,{type:r.type,property:r.field,field:r.field,title:r.title,width:r.width,minWidth:r.minWidth,maxWidth:r.maxWidth,resizable:r.resizable,fixed:r.fixed,align:r.align,headerAlign:r.headerAlign,footerAlign:r.footerAlign,showOverflow:r.showOverflow,showHeaderOverflow:r.showHeaderOverflow,showFooterOverflow:r.showFooterOverflow,className:r.className,headerClassName:r.headerClassName,footerClassName:r.footerClassName,formatter:a,footerFormatter:r.footerFormatter,padding:r.padding,verticalAlign:r.verticalAlign,sortable:r.sortable,sortBy:r.sortBy,sortType:r.sortType,sortMethod:r.sortMethod,remoteSort:r.remoteSort,filters:(0,_util.toFilters)(r.filters),filterMultiple:!_xeUtils.default.isBoolean(r.filterMultiple)||r.filterMultiple,filterMethod:r.filterMethod,filterResetMethod:r.filterResetMethod,filterRecoverMethod:r.filterRecoverMethod,filterRender:r.filterRender,rowGroupNode:r.rowGroupNode,treeNode:r.treeNode,dragSort:r.dragSort,rowResize:r.rowResize,cellType:r.cellType,cellRender:r.cellRender,editRender:r.editRender,contentRender:r.contentRender,headerExportMethod:r.headerExportMethod,exportMethod:r.exportMethod,footerExportMethod:r.footerExportMethod,titleHelp:r.titleHelp,titlePrefix:r.titlePrefix,titleSuffix:r.titleSuffix,aggFunc:r.aggFunc,params:r.params,id:r.colId||_xeUtils.default.uniqueId("col_"),parentId:null,visible:f,halfVisible:!1,defaultVisible:f,defaultFixed:r.fixed,checked:!1,halfChecked:!1,disabled:!1,level:1,rowSpan:1,colSpan:1,order:null,sortTime:0,sortNumber:0,renderSortNumber:0,renderAggFn:"",renderFixed:"",renderVisible:!1,renderWidth:0,renderHeight:0,renderResizeWidth:0,renderAutoWidth:0,resizeWidth:0,renderLeft:0,renderArgs:[],model:{},renderHeader:t||r.renderHeader,renderCell:o||r.renderCell,renderFooter:l||r.renderFooter,renderData:i,slots:r.slots}),s&&s.beforeColumn&&s.beforeColumn({$grid:n,column:this})}getTitle(){return(0,_utils.getFuncText)(this.title||("seq"===this.type?getI18n("vxe.table.seqTitle"):""))}getKey(){var e=this.type;return this.field||(e?"type="+e:null)}update(e,r){"filters"!==e&&("field"===e&&(this.property=r),this[e]=r)}}exports.ColumnInfo=ColumnInfo;
@@ -520,11 +520,11 @@ function handleRowGroupBaseExpand($xeTable, rows, expanded) {
520
520
  tableFullGroupData,
521
521
  rowGroupExpandedMaps
522
522
  } = internalData;
523
- const rowGroupOpts = $xeTable.computeRowGroupOpts;
523
+ const aggregateOpts = $xeTable.computeAggregateOpts;
524
524
  const {
525
525
  mapChildrenField,
526
526
  accordion
527
- } = rowGroupOpts;
527
+ } = aggregateOpts;
528
528
  const {
529
529
  handleGetRowId
530
530
  } = (0, _util.createHandleGetRowId)($xeTable);
@@ -733,7 +733,7 @@ function handleVirtualTreeToList($xeTable) {
733
733
  treeExpandedMaps,
734
734
  rowGroupExpandedMaps
735
735
  } = internalData;
736
- const rowGroupOpts = $xeTable.computeRowGroupOpts;
736
+ const aggregateOpts = $xeTable.computeAggregateOpts;
737
737
  const treeOpts = $xeTable.computeTreeOpts;
738
738
  const {
739
739
  handleGetRowId
@@ -762,7 +762,7 @@ function handleVirtualTreeToList($xeTable) {
762
762
  } else if (isRowGroupStatus) {
763
763
  const {
764
764
  childrenField
765
- } = rowGroupOpts;
765
+ } = aggregateOpts;
766
766
  _xeUtils.default.eachTree(internalData.afterGroupFullData, (row, index, items, path, parentRow) => {
767
767
  const rowid = handleGetRowId(row);
768
768
  const parentRowid = handleGetRowId(parentRow);
@@ -805,7 +805,7 @@ function updateAfterFullData($xeTable) {
805
805
  } = internalData;
806
806
  const filterOpts = $xeTable.computeFilterOpts;
807
807
  const sortOpts = $xeTable.computeSortOpts;
808
- const rowGroupOpts = $xeTable.computeRowGroupOpts;
808
+ const aggregateOpts = $xeTable.computeAggregateOpts;
809
809
  const treeOpts = $xeTable.computeTreeOpts;
810
810
  const childrenField = treeOpts.children || treeOpts.childrenField;
811
811
  const {
@@ -930,8 +930,8 @@ function updateAfterFullData($xeTable) {
930
930
  tableTree = _xeUtils.default.searchTree(tableFullGroupData, handleFilter, {
931
931
  original: true,
932
932
  isEvery: true,
933
- children: rowGroupOpts.mapChildrenField,
934
- mapChildren: rowGroupOpts.childrenField
933
+ children: aggregateOpts.mapChildrenField,
934
+ mapChildren: aggregateOpts.childrenField
935
935
  });
936
936
  tableData = tableTree;
937
937
  } else if (treeConfig && transform) {
@@ -953,8 +953,8 @@ function updateAfterFullData($xeTable) {
953
953
  tableTree = _xeUtils.default.searchTree(tableFullGroupData, () => true, {
954
954
  original: true,
955
955
  isEvery: true,
956
- children: rowGroupOpts.mapChildrenField,
957
- mapChildren: rowGroupOpts.childrenField
956
+ children: aggregateOpts.mapChildrenField,
957
+ mapChildren: aggregateOpts.childrenField
958
958
  });
959
959
  tableData = tableTree;
960
960
  } else if (treeConfig && transform) {
@@ -985,18 +985,18 @@ function updateAfterFullData($xeTable) {
985
985
  tableTree = _xeUtils.default.isArray(sortRests) ? sortRests : tableTree;
986
986
  } else {
987
987
  const treeList = _xeUtils.default.toTreeArray(tableTree, {
988
- key: rowGroupOpts.rowField,
989
- parentKey: rowGroupOpts.parentField,
990
- children: rowGroupOpts.mapChildrenField
988
+ key: aggregateOpts.rowField,
989
+ parentKey: aggregateOpts.parentField,
990
+ children: aggregateOpts.mapChildrenField
991
991
  });
992
992
  tableTree = _xeUtils.default.toArrayTree(_xeUtils.default.orderBy(treeList, orderColumns.map(({
993
993
  column,
994
994
  order
995
995
  }) => [getOrderField($xeTable, column), order])), {
996
- key: rowGroupOpts.rowField,
997
- parentKey: rowGroupOpts.parentField,
998
- children: rowGroupOpts.childrenField,
999
- mapChildren: rowGroupOpts.mapChildrenField
996
+ key: aggregateOpts.rowField,
997
+ parentKey: aggregateOpts.parentField,
998
+ children: aggregateOpts.childrenField,
999
+ mapChildren: aggregateOpts.mapChildrenField
1000
1000
  });
1001
1001
  }
1002
1002
  tableData = tableTree;
@@ -1066,8 +1066,8 @@ function updateAfterFullData($xeTable) {
1066
1066
  tableTree = _xeUtils.default.searchTree(tableFullGroupData, () => true, {
1067
1067
  original: true,
1068
1068
  isEvery: true,
1069
- children: rowGroupOpts.mapChildrenField,
1070
- mapChildren: rowGroupOpts.childrenField
1069
+ children: aggregateOpts.mapChildrenField,
1070
+ mapChildren: aggregateOpts.childrenField
1071
1071
  });
1072
1072
  tableData = tableTree;
1073
1073
  } else if (treeConfig && transform) {
@@ -1586,7 +1586,7 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
1586
1586
  selectCheckboxMaps
1587
1587
  } = internalData;
1588
1588
  const treeOpts = $xeTable.computeTreeOpts;
1589
- const rowGroupOpts = $xeTable.computeRowGroupOpts;
1589
+ const aggregateOpts = $xeTable.computeAggregateOpts;
1590
1590
  const childrenField = treeOpts.children || treeOpts.childrenField;
1591
1591
  const checkboxOpts = $xeTable.computeCheckboxOpts;
1592
1592
  const {
@@ -1648,7 +1648,7 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
1648
1648
  selectRowMaps[rowid] = row;
1649
1649
  }
1650
1650
  }, {
1651
- children: rowGroupOpts.mapChildrenField
1651
+ children: aggregateOpts.mapChildrenField
1652
1652
  });
1653
1653
  } else {
1654
1654
  /**
@@ -1665,7 +1665,7 @@ function handleCheckedAllCheckboxRow($xeTable, checked, isForce) {
1665
1665
  selectRowMaps[rowid] = row;
1666
1666
  }
1667
1667
  }, {
1668
- children: rowGroupOpts.mapChildrenField
1668
+ children: aggregateOpts.mapChildrenField
1669
1669
  });
1670
1670
  }
1671
1671
  }
@@ -3132,17 +3132,69 @@ const handleUpdateRowGroup = ($xeTable, groupFields) => {
3132
3132
  };
3133
3133
  }) : [];
3134
3134
  };
3135
+ function handleeGroupSummary($xeTable, aggList) {
3136
+ const aggregateOpts = $xeTable.computeAggregateOpts;
3137
+ const {
3138
+ mapChildrenField
3139
+ } = aggregateOpts;
3140
+ if (mapChildrenField) {
3141
+ _xeUtils.default.lastEach(aggList, aggRow => {
3142
+ let count = 0;
3143
+ _xeUtils.default.each(aggRow[mapChildrenField], row => {
3144
+ if (row.isAggregate) {
3145
+ count += row.childCount || 0;
3146
+ } else {
3147
+ count++;
3148
+ }
3149
+ });
3150
+ aggRow.childCount = count;
3151
+ });
3152
+ if ($xeTable.handlePivotTableAggregateData) {
3153
+ $xeTable.handlePivotTableAggregateData(aggList);
3154
+ }
3155
+ }
3156
+ }
3157
+ function updateGroupData($xeTable) {
3158
+ const props = $xeTable;
3159
+ const reactData = $xeTable;
3160
+ const internalData = $xeTable;
3161
+ const {
3162
+ aggregateConfig,
3163
+ rowGroupConfig
3164
+ } = props;
3165
+ const {
3166
+ isRowGroupStatus
3167
+ } = reactData;
3168
+ const {
3169
+ tableFullGroupData
3170
+ } = internalData;
3171
+ const aggregateOpts = $xeTable.computeAggregateOpts;
3172
+ const {
3173
+ mapChildrenField
3174
+ } = aggregateOpts;
3175
+ if ((aggregateConfig || rowGroupConfig) && isRowGroupStatus) {
3176
+ const aggList = [];
3177
+ _xeUtils.default.eachTree(tableFullGroupData, row => {
3178
+ if (row.isAggregate) {
3179
+ aggList.push(row);
3180
+ }
3181
+ }, {
3182
+ children: mapChildrenField
3183
+ });
3184
+ handleeGroupSummary($xeTable, aggList);
3185
+ }
3186
+ }
3135
3187
  function handleGroupData($xeTable, list, rowGroups) {
3136
3188
  let fullData = list;
3137
3189
  let treeData = list;
3138
3190
  if (rowGroups) {
3139
- const rowGroupOpts = $xeTable.computeRowGroupOpts;
3191
+ const aggregateOpts = $xeTable.computeAggregateOpts;
3140
3192
  const {
3141
3193
  rowField,
3142
3194
  parentField,
3143
3195
  childrenField,
3144
3196
  mapChildrenField
3145
- } = rowGroupOpts;
3197
+ } = aggregateOpts;
3146
3198
  const checkboxOpts = $xeTable.computeCheckboxOpts;
3147
3199
  const {
3148
3200
  checkField
@@ -3155,7 +3207,7 @@ function handleGroupData($xeTable, list, rowGroups) {
3155
3207
  const groupField = rgItem.field;
3156
3208
  const groupColumn = $xeTable.getColumnByField(groupField);
3157
3209
  const groupMaps = {};
3158
- const groupList = [];
3210
+ const aggList = [];
3159
3211
  const rowkey = (0, _util.getRowkey)($xeTable);
3160
3212
  list.forEach(row => {
3161
3213
  const cellValue = groupColumn ? $xeTable.getCellLabel(row, groupColumn) : _xeUtils.default.get(row, groupField);
@@ -3175,12 +3227,12 @@ function handleGroupData($xeTable, list, rowGroups) {
3175
3227
  fullData: childFullData,
3176
3228
  treeData: childTreeData
3177
3229
  } = handleGroupData($xeTable, childList, rowGroups.slice(1));
3178
- const childCount = 0;
3179
- const groupRow = {
3230
+ const aggRow = {
3180
3231
  isAggregate: true,
3181
- childCount,
3232
+ aggData: {},
3182
3233
  groupContent: groupValue,
3183
3234
  groupField,
3235
+ childCount: 0,
3184
3236
  [rowField]: (0, _util.getRowUniqueId)(),
3185
3237
  [parentField]: null,
3186
3238
  [rowkey]: (0, _util.getRowUniqueId)(),
@@ -3188,29 +3240,19 @@ function handleGroupData($xeTable, list, rowGroups) {
3188
3240
  [mapChildrenField]: childTreeData
3189
3241
  };
3190
3242
  if (checkField) {
3191
- groupRow[checkField] = false;
3243
+ aggRow[checkField] = false;
3192
3244
  }
3193
3245
  if (indeterminateField) {
3194
- groupRow[indeterminateField] = false;
3246
+ aggRow[indeterminateField] = false;
3195
3247
  }
3196
- groupList.push(groupRow);
3197
- treeData.push(groupRow);
3198
- fullData.push(groupRow);
3248
+ aggList.push(aggRow);
3249
+ treeData.push(aggRow);
3250
+ fullData.push(aggRow);
3199
3251
  if (childFullData.length) {
3200
3252
  fullData.push(...childFullData);
3201
3253
  }
3202
3254
  });
3203
- _xeUtils.default.lastEach(groupList, groupItem => {
3204
- let count = 0;
3205
- _xeUtils.default.each(groupItem[childrenField], row => {
3206
- if (row.isAggregate) {
3207
- count += row[childrenField] ? row[childrenField].length : 0;
3208
- } else {
3209
- count++;
3210
- }
3211
- });
3212
- groupItem.childCount = count;
3213
- });
3255
+ handleeGroupSummary($xeTable, aggList);
3214
3256
  }
3215
3257
  }
3216
3258
  return {
@@ -3229,6 +3271,7 @@ function loadTableData($xeTable, datas, isReset) {
3229
3271
  const {
3230
3272
  keepSource,
3231
3273
  treeConfig,
3274
+ aggregateConfig,
3232
3275
  rowGroupConfig
3233
3276
  } = props;
3234
3277
  const {
@@ -3254,11 +3297,11 @@ function loadTableData($xeTable, datas, isReset) {
3254
3297
  (0, _log.errLog)('vxe.error.errMaxRow', [supportMaxRow]);
3255
3298
  }
3256
3299
  if (treeConfig && rowGroupList.length) {
3257
- (0, _log.errLog)('vxe.error.noTree', ['row-group-config']);
3300
+ (0, _log.errLog)('vxe.error.noTree', ['aggregate-config']);
3258
3301
  return $xeTable.$nextTick();
3259
3302
  }
3260
3303
  if (rowOpts.drag && rowGroupList.length) {
3261
- (0, _log.errLog)('vxe.error.errConflicts', ['row-config.drag', 'row-group-config']);
3304
+ (0, _log.errLog)('vxe.error.errConflicts', ['row-config.drag', 'aggregate-config']);
3262
3305
  return $xeTable.$nextTick();
3263
3306
  }
3264
3307
  let isRGroup = false;
@@ -3295,7 +3338,7 @@ function loadTableData($xeTable, datas, isReset) {
3295
3338
  } else {
3296
3339
  treeData = fullData.slice(0);
3297
3340
  }
3298
- } else if (rowGroupConfig && rowGroupList.length) {
3341
+ } else if ((aggregateConfig || rowGroupConfig) && rowGroupList.length) {
3299
3342
  const groupRest = handleGroupData($xeTable, fullData, rowGroupList);
3300
3343
  treeData = groupRest.treeData;
3301
3344
  fullData = groupRest.fullData;
@@ -3400,11 +3443,15 @@ function loadTableData($xeTable, datas, isReset) {
3400
3443
  // 是否变更虚拟滚动
3401
3444
  if (oldScrollYLoad === sYLoad) {
3402
3445
  (0, _util.restoreScrollLocation)($xeTable, targetScrollLeft, targetScrollTop).then(() => {
3446
+ calcCellHeight($xeTable);
3447
+ updateRowOffsetTop($xeTable);
3403
3448
  resolve();
3404
3449
  });
3405
3450
  } else {
3406
3451
  setTimeout(() => {
3407
3452
  (0, _util.restoreScrollLocation)($xeTable, targetScrollLeft, targetScrollTop).then(() => {
3453
+ calcCellHeight($xeTable);
3454
+ updateRowOffsetTop($xeTable);
3408
3455
  resolve();
3409
3456
  });
3410
3457
  });
@@ -3687,6 +3734,7 @@ function handleColumn($xeTable, collectColumn) {
3687
3734
  $xeTable.clearMergeCells();
3688
3735
  $xeTable.clearMergeFooterItems();
3689
3736
  $xeTable.handleTableData(true);
3737
+ $xeTable.handleAggregateSummaryData();
3690
3738
  if ((scrollXLoad || scrollYLoad) && expandColumn && expandOpts.mode !== 'fixed') {
3691
3739
  (0, _log.warnLog)('vxe.error.scrollErrProp', ['column.type=expand']);
3692
3740
  }
@@ -4326,29 +4374,42 @@ const Methods = {
4326
4374
  * @param {String} field 字段名
4327
4375
  */
4328
4376
  reloadRow(row, record, field) {
4377
+ const $xeTable = this;
4378
+ const props = $xeTable;
4379
+ const reactData = $xeTable;
4380
+ const internalData = $xeTable;
4381
+ const {
4382
+ keepSource
4383
+ } = props;
4329
4384
  const {
4330
- keepSource,
4331
- tableSourceData,
4332
4385
  tableData
4333
- } = this;
4386
+ } = reactData;
4387
+ const {
4388
+ sourceDataRowIdData
4389
+ } = internalData;
4334
4390
  if (keepSource) {
4335
- const rowIndex = this.getRowIndex(row);
4336
- const oRow = tableSourceData[rowIndex];
4391
+ if ($xeTable.isAggregateRecord(row)) {
4392
+ return $xeTable.$nextTick();
4393
+ }
4394
+ const oRow = sourceDataRowIdData[(0, _util.getRowid)($xeTable, row)];
4337
4395
  if (oRow && row) {
4338
4396
  if (field) {
4339
- const newValue = _xeUtils.default.get(record || row, field);
4397
+ const newValue = _xeUtils.default.clone(_xeUtils.default.get(record || row, field), true);
4340
4398
  _xeUtils.default.set(row, field, newValue);
4341
4399
  _xeUtils.default.set(oRow, field, newValue);
4342
4400
  } else {
4401
+ const rowkey = (0, _util.getRowkey)($xeTable);
4402
+ const rowid = (0, _util.getRowid)($xeTable, row);
4343
4403
  const newRecord = _xeUtils.default.clone(Object.assign({}, record), true);
4404
+ _xeUtils.default.set(newRecord, rowkey, rowid);
4344
4405
  _xeUtils.default.destructuring(oRow, Object.assign(row, newRecord));
4345
4406
  }
4346
4407
  }
4347
- this.tableData = tableData.slice(0);
4408
+ reactData.tableData = tableData.slice(0);
4348
4409
  } else {
4349
4410
  (0, _log.errLog)('vxe.error.reqProp', ['keep-source']);
4350
4411
  }
4351
- return this.$nextTick();
4412
+ return $xeTable.$nextTick();
4352
4413
  },
4353
4414
  /**
4354
4415
  * 加载列配置
@@ -4357,7 +4418,7 @@ const Methods = {
4357
4418
  */
4358
4419
  loadColumn(columns) {
4359
4420
  const $xeTable = this;
4360
- const collectColumn = _xeUtils.default.mapTree(columns, column => _cell.default.createColumn(this, column), {
4421
+ const collectColumn = _xeUtils.default.mapTree(columns, column => _cell.default.createColumn($xeTable, column), {
4361
4422
  children: 'children'
4362
4423
  });
4363
4424
  return handleColumn($xeTable, collectColumn);
@@ -4457,10 +4518,10 @@ const Methods = {
4457
4518
  children: childrenField
4458
4519
  });
4459
4520
  } else if (isRowGroupStatus) {
4460
- const rowGroupOpts = $xeTable.computeRowGroupOpts;
4521
+ const aggregateOpts = $xeTable.computeAggregateOpts;
4461
4522
  const {
4462
4523
  mapChildrenField
4463
- } = rowGroupOpts;
4524
+ } = aggregateOpts;
4464
4525
  _xeUtils.default.eachTree(tableFullGroupData, (row, index, items, path, parentRow, nodes) => {
4465
4526
  const rowid = handleUpdateRowId(row);
4466
4527
  handleRowCache(row, index, items, parentRow ? -1 : index, parentRow, rowid, nodes.length - 1, (0, _util.toTreePathSeq)(path));
@@ -7191,6 +7252,10 @@ const Methods = {
7191
7252
  internalData.mergeFooterCellMaps = buildMergeData(mergeFooterList);
7192
7253
  reactData.mergeFootFlag++;
7193
7254
  },
7255
+ handleAggregateSummaryData() {
7256
+ const $xeTable = this;
7257
+ return updateGroupData($xeTable);
7258
+ },
7194
7259
  handleTargetLeaveEvent() {
7195
7260
  const $xeTable = this;
7196
7261
  const internalData = $xeTable;
@@ -7543,7 +7608,7 @@ const Methods = {
7543
7608
  const {
7544
7609
  selectCheckboxMaps
7545
7610
  } = internalData;
7546
- const rowGroupOpts = $xeTable.computeRowGroupOpts;
7611
+ const aggregateOpts = $xeTable.computeAggregateOpts;
7547
7612
  const treeOpts = $xeTable.computeTreeOpts;
7548
7613
  const {
7549
7614
  transform,
@@ -7615,7 +7680,7 @@ const Methods = {
7615
7680
  handleCheckboxReserveRow($xeTable, row, checked);
7616
7681
  }
7617
7682
  }, {
7618
- children: rowGroupOpts.mapChildrenField
7683
+ children: aggregateOpts.mapChildrenField
7619
7684
  });
7620
7685
  reactData.updateCheckboxFlag++;
7621
7686
  return;
@@ -7806,7 +7871,7 @@ const Methods = {
7806
7871
  selectCheckboxMaps,
7807
7872
  treeIndeterminateRowMaps
7808
7873
  } = internalData;
7809
- const rowGroupOpts = $xeTable.computeRowGroupOpts;
7874
+ const aggregateOpts = $xeTable.computeAggregateOpts;
7810
7875
  const treeOpts = $xeTable.computeTreeOpts;
7811
7876
  const childrenField = treeOpts.children || treeOpts.childrenField;
7812
7877
  const checkboxOpts = $xeTable.computeCheckboxOpts;
@@ -7826,7 +7891,7 @@ const Methods = {
7826
7891
  const childRowList = [];
7827
7892
  if (isRowGroupStatus) {
7828
7893
  // 行分组
7829
- const mapChildrenField = rowGroupOpts.mapChildrenField;
7894
+ const mapChildrenField = aggregateOpts.mapChildrenField;
7830
7895
  if (mapChildrenField) {
7831
7896
  _xeUtils.default.eachTree(afterGroupFullData, row => {
7832
7897
  const rowid = handleGetRowId(row);
@@ -8554,7 +8619,7 @@ const Methods = {
8554
8619
  const radioOpts = $xeTable.computeRadioOpts;
8555
8620
  const checkboxOpts = $xeTable.computeCheckboxOpts;
8556
8621
  const keyboardOpts = $xeTable.computeKeyboardOpts;
8557
- const rowGroupOpts = $xeTable.computeRowGroupOpts;
8622
+ const aggregateOpts = $xeTable.computeAggregateOpts;
8558
8623
  const rowOpts = $xeTable.computeRowOpts;
8559
8624
  const columnOpts = $xeTable.computeColumnOpts;
8560
8625
  const currentColumnOpts = $xeTable.computeCurrentColumnOpts;
@@ -8597,7 +8662,7 @@ const Methods = {
8597
8662
  $xeTable.triggerTreeExpandEvent(evnt, params);
8598
8663
  }
8599
8664
  // 如果是行分组
8600
- if (rowGroupOpts.trigger === 'row' || rowGroupNode && rowGroupOpts.trigger === 'cell') {
8665
+ if (aggregateOpts.trigger === 'row' || rowGroupNode && aggregateOpts.trigger === 'cell') {
8601
8666
  $xeTable.triggerRowGroupExpandEvent(evnt, params);
8602
8667
  }
8603
8668
  }
@@ -10265,10 +10330,11 @@ const Methods = {
10265
10330
  const props = $xeTable;
10266
10331
  const internalData = $xeTable;
10267
10332
  const {
10333
+ aggregateConfig,
10268
10334
  rowGroupConfig
10269
10335
  } = props;
10270
- if (!rowGroupConfig) {
10271
- (0, _log.errLog)('vxe.error.reqProp', ['row-group-config']);
10336
+ if (!(aggregateConfig || rowGroupConfig)) {
10337
+ (0, _log.errLog)('vxe.error.reqProp', ['aggregate-config']);
10272
10338
  return $xeTable.$nextTick();
10273
10339
  }
10274
10340
  if (fieldOrColumns) {
@@ -10284,16 +10350,27 @@ const Methods = {
10284
10350
  const props = $xeTable;
10285
10351
  const internalData = $xeTable;
10286
10352
  const {
10353
+ aggregateConfig,
10287
10354
  rowGroupConfig
10288
10355
  } = props;
10289
- if (!rowGroupConfig) {
10290
- (0, _log.errLog)('vxe.error.reqProp', ['row-group-config']);
10356
+ if (!(aggregateConfig || rowGroupConfig)) {
10357
+ (0, _log.errLog)('vxe.error.reqProp', ['aggregate-config']);
10291
10358
  return $xeTable.$nextTick();
10292
10359
  }
10293
10360
  handleUpdateRowGroup($xeTable, []);
10294
10361
  return loadTableData($xeTable, internalData.tableSynchData, true);
10295
10362
  },
10296
10363
  isRowGroupRecord(row) {
10364
+ const $xeTable = this;
10365
+ (0, _log.warnLog)('vxe.error.delFunc', ['isRowGroupRecord', 'isAggregateRecord']);
10366
+ return $xeTable.isAggregateRecord(row);
10367
+ },
10368
+ isRowGroupExpandByRow(row) {
10369
+ const $xeTable = this;
10370
+ (0, _log.warnLog)('vxe.error.delFunc', ['isRowGroupExpandByRow', 'isAggregateExpandByRow']);
10371
+ return $xeTable.isAggregateExpandByRow(row);
10372
+ },
10373
+ isAggregateRecord(row) {
10297
10374
  const $xeTable = this;
10298
10375
  const reactData = $xeTable;
10299
10376
  const {
@@ -10301,7 +10378,7 @@ const Methods = {
10301
10378
  } = reactData;
10302
10379
  return isRowGroupStatus && row.isAggregate;
10303
10380
  },
10304
- isRowGroupExpandByRow(row) {
10381
+ isAggregateExpandByRow(row) {
10305
10382
  const $xeTable = this;
10306
10383
  const reactData = $xeTable;
10307
10384
  const internalData = $xeTable;
@@ -10330,10 +10407,10 @@ const Methods = {
10330
10407
  const {
10331
10408
  tableFullGroupData
10332
10409
  } = internalData;
10333
- const rowGroupOpts = $xeTable.computeRowGroupOpts;
10410
+ const aggregateOpts = $xeTable.computeAggregateOpts;
10334
10411
  const {
10335
10412
  mapChildrenField
10336
- } = rowGroupOpts;
10413
+ } = aggregateOpts;
10337
10414
  const rgExpandedMaps = {};
10338
10415
  if (expanded && mapChildrenField) {
10339
10416
  _xeUtils.default.eachTree(tableFullGroupData, row => {
@@ -10482,14 +10559,14 @@ const Methods = {
10482
10559
  const {
10483
10560
  rowGroupExpandedMaps
10484
10561
  } = internalData;
10485
- const rowGroupOpts = $xeTable.computeRowGroupOpts;
10562
+ const aggregateOpts = $xeTable.computeAggregateOpts;
10486
10563
  const {
10487
10564
  row,
10488
10565
  column
10489
10566
  } = params;
10490
10567
  const {
10491
10568
  trigger
10492
- } = rowGroupOpts;
10569
+ } = aggregateOpts;
10493
10570
  if (trigger === 'manual') {
10494
10571
  return;
10495
10572
  }
@@ -11605,11 +11682,11 @@ const Methods = {
11605
11682
  } = internalData;
11606
11683
  const rests = [];
11607
11684
  if (treeConfig || isRowGroupStatus) {
11608
- const rowGroupOpts = $xeTable.computeRowGroupOpts;
11685
+ const aggregateOpts = $xeTable.computeAggregateOpts;
11609
11686
  const treeOpts = $xeTable.computeTreeOpts;
11610
11687
  const childrenField = treeOpts.children || treeOpts.childrenField;
11611
11688
  const matchObj = _xeUtils.default.findTree(tableFullData, item => $xeTable.eqRow(item, row), {
11612
- children: isRowGroupStatus ? rowGroupOpts.mapChildrenField : childrenField
11689
+ children: isRowGroupStatus ? aggregateOpts.mapChildrenField : childrenField
11613
11690
  });
11614
11691
  if (matchObj) {
11615
11692
  const nodes = matchObj.nodes;