vxe-table 4.12.5 → 4.13.0-beta.1
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.
- package/es/grid/src/grid.js +2 -2
- package/es/style.css +1 -1
- package/es/table/module/edit/hook.js +10 -9
- package/es/table/module/export/hook.js +13 -11
- package/es/table/module/keyboard/hook.js +2 -2
- package/es/table/src/body.js +11 -13
- package/es/table/src/footer.js +3 -16
- package/es/table/src/table.js +187 -64
- package/es/table/src/util.js +0 -13
- package/es/ui/index.js +2 -2
- package/es/ui/src/log.js +1 -1
- package/lib/grid/src/grid.js +2 -2
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/index.umd.js +8467 -8510
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/table/module/edit/hook.js +9 -9
- package/lib/table/module/edit/hook.min.js +1 -1
- package/lib/table/module/export/hook.js +16 -13
- package/lib/table/module/export/hook.min.js +1 -1
- package/lib/table/module/keyboard/hook.js +2 -2
- package/lib/table/module/keyboard/hook.min.js +1 -1
- package/lib/table/src/body.js +14 -15
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/footer.js +4 -27
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/table.js +212 -64
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +0 -25
- package/lib/table/src/util.min.js +1 -1
- package/lib/ui/index.js +2 -2
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/package.json +2 -2
- package/packages/grid/src/grid.ts +2 -2
- package/packages/table/module/edit/hook.ts +10 -9
- package/packages/table/module/export/hook.ts +15 -13
- package/packages/table/module/keyboard/hook.ts +2 -2
- package/packages/table/src/body.ts +11 -13
- package/packages/table/src/footer.ts +3 -17
- package/packages/table/src/table.ts +185 -65
- package/packages/table/src/util.ts +0 -14
- package/packages/ui/index.ts +1 -1
- /package/es/{iconfont.1743479147314.ttf → iconfont.1743583449887.ttf} +0 -0
- /package/es/{iconfont.1743479147314.woff → iconfont.1743583449887.woff} +0 -0
- /package/es/{iconfont.1743479147314.woff2 → iconfont.1743583449887.woff2} +0 -0
- /package/lib/{iconfont.1743479147314.ttf → iconfont.1743583449887.ttf} +0 -0
- /package/lib/{iconfont.1743479147314.woff → iconfont.1743583449887.woff} +0 -0
- /package/lib/{iconfont.1743479147314.woff2 → iconfont.1743583449887.woff2} +0 -0
package/lib/table/src/footer.js
CHANGED
|
@@ -15,30 +15,6 @@ const {
|
|
|
15
15
|
renderEmptyElement
|
|
16
16
|
} = _ui.VxeUI;
|
|
17
17
|
const renderType = 'footer';
|
|
18
|
-
function mergeFooterMethod(mergeFooterList, _rowIndex, _columnIndex) {
|
|
19
|
-
for (let mIndex = 0; mIndex < mergeFooterList.length; mIndex++) {
|
|
20
|
-
const {
|
|
21
|
-
row: mergeRowIndex,
|
|
22
|
-
col: mergeColIndex,
|
|
23
|
-
rowspan: mergeRowspan,
|
|
24
|
-
colspan: mergeColspan
|
|
25
|
-
} = mergeFooterList[mIndex];
|
|
26
|
-
if (mergeColIndex > -1 && mergeRowIndex > -1 && mergeRowspan && mergeColspan) {
|
|
27
|
-
if (mergeRowIndex === _rowIndex && mergeColIndex === _columnIndex) {
|
|
28
|
-
return {
|
|
29
|
-
rowspan: mergeRowspan,
|
|
30
|
-
colspan: mergeColspan
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
if (_rowIndex >= mergeRowIndex && _rowIndex < mergeRowIndex + mergeRowspan && _columnIndex >= mergeColIndex && _columnIndex < mergeColIndex + mergeColspan) {
|
|
34
|
-
return {
|
|
35
|
-
rowspan: 0,
|
|
36
|
-
colspan: 0
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
18
|
var _default = exports.default = (0, _vue.defineComponent)({
|
|
43
19
|
name: 'VxeTableFooter',
|
|
44
20
|
props: {
|
|
@@ -102,11 +78,12 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
102
78
|
scrollXLoad,
|
|
103
79
|
scrollYLoad,
|
|
104
80
|
overflowX,
|
|
105
|
-
currentColumn
|
|
106
|
-
mergeFooterList
|
|
81
|
+
currentColumn
|
|
107
82
|
} = tableReactData;
|
|
108
83
|
const {
|
|
109
84
|
fullColumnIdData,
|
|
85
|
+
mergeFooterList,
|
|
86
|
+
mergeFooterCellMaps,
|
|
110
87
|
scrollXStore
|
|
111
88
|
} = tableInternalData;
|
|
112
89
|
const tooltipOpts = computeTooltipOpts.value;
|
|
@@ -201,7 +178,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
201
178
|
let isMergeCell = false;
|
|
202
179
|
// 合并行或列
|
|
203
180
|
if (mergeFooterList.length) {
|
|
204
|
-
const spanRest =
|
|
181
|
+
const spanRest = mergeFooterCellMaps[`${_rowIndex}:${_columnIndex}`];
|
|
205
182
|
if (spanRest) {
|
|
206
183
|
const {
|
|
207
184
|
rowspan,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_util=require("./util");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{renderer,renderEmptyElement}=_ui.VxeUI,renderType="footer";
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_util=require("./util");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{renderer,renderEmptyElement}=_ui.VxeUI,renderType="footer";var _default=exports.default=(0,_vue.defineComponent)({name:"VxeTableFooter",props:{footerTableData:{type:Array,default:()=>[]},tableColumn:{type:Array,default:()=>[]},fixedColumn:{type:Array,default:()=>[]},fixedType:{type:String,default:null}},setup(m){let Q=(0,_vue.inject)("$xeTable",{}),{xID:g,props:_,reactData:h,internalData:b}=Q,{computeTooltipOpts:l,computeColumnOpts:y,computeColumnDragOpts:w,computeCellOpts:t,computeFooterCellOpts:o,computeDefaultRowHeight:r,computeResizableOpts:i}=Q.getComputeMaps(),C=(0,_vue.ref)(),T=(0,_vue.ref)(),D=(0,_vue.ref)(),F=(0,_vue.ref)(),O=(0,_vue.ref)(),I=(0,_vue.ref)(),S=(w,C,T,D,F)=>{let O=Q.xeGrid,I=m.fixedType,{resizable:S,border:E,footerCellClassName:M,footerCellStyle:k,footerAlign:z,footerSpanMethod:U,align:R,columnKey:$,showFooterOverflow:A}=_,{scrollXLoad:j,scrollYLoad:q,overflowX:L,currentColumn:X}=h,{fullColumnIdData:N,mergeFooterList:G,mergeFooterCellMaps:H,scrollXStore:P}=b,W=l.value;let B=i.value.isAllColumnDrag,K=y.value;var e=r.value;let V=t.value,Y=o.value,J=(0,_util.getCellHeight)(Y.height||V.height)||e;return w.map((l,e)=>{var{type:t,showFooterOverflow:o,footerAlign:r,align:i,footerClassName:a,editRender:n,cellRender:u}=l,d=l.id,s=N[d]||{},n=n||u,u=n?renderer.get(n.name):null;let c=W.showAll;var n=l.children&&l.children.length,n=I?l.fixed!==I&&!n:l.fixed&&L,p=(_xeUtils.default.isBoolean(Y.padding)?Y:V).padding,o=_xeUtils.default.eqNull(o)?A:o,r=r||(u?u.tableFooterCellAlign:"")||z||i||(u?u.tableCellAlign:"")||R;let f="ellipsis"===o,v="title"===o,x=!0===o||"tooltip"===o,m=v||x||f;var i=_xeUtils.default.isBoolean(l.resizable)?l.resizable:K.resizable||S,u={colid:d},o={},g=s.index,s=s._index,_=s;let h={$table:Q,$grid:O,row:T,rowIndex:F,_rowIndex:F,$rowIndex:D,column:l,columnIndex:g,$columnIndex:e,_columnIndex:s,itemIndex:_,items:T,fixed:I,type:renderType,data:C},b=(j&&!m&&(f=m=!0),(v||x||c)&&(o.onMouseenter=e=>{v?(0,_dom.updateCellTitle)(e.currentTarget,l):(x||c)&&Q.triggerFooterTooltipEvent(e,h)}),(x||c)&&(o.onMouseleave=e=>{(x||c)&&Q.handleTargetLeaveEvent(e)}),o.onClick=e=>{Q.dispatchEvent("footer-cell-click",Object.assign({cell:e.currentTarget},h),e)},!(o.onDblclick=e=>{Q.dispatchEvent("footer-cell-dblclick",Object.assign({cell:e.currentTarget},h),e)}));if(G.length){g=H[F+":"+s];if(g){var{rowspan:_,colspan:g}=g;if(!_||!g)return null;1<_&&(b=!0,u.rowspan=_),1<g&&(b=!0,u.colspan=g)}}else if(U){var{rowspan:_=1,colspan:g=1}=U(h)||{};if(!_||!g)return null;1<_&&(u.rowspan=_),1<g&&(u.colspan=g)}_=e===w.length-1,g=!l.resizeWidth&&("auto"===l.minWidth||"auto"===l.width);let y=!1;b||j&&!l.fixed&&(s<P.visibleStartIndex-P.preloadSize||s>P.visibleEndIndex+P.preloadSize)&&(y=!0);s={};return m?s.height=J+"px":s.minHeight=J+"px",(0,_vue.h)("td",Object.assign(Object.assign(Object.assign(Object.assign({class:["vxe-footer--column",l.id,{["col--"+r]:r,["col--"+t]:t,"col--last":_,"fixed--width":!g,"fixed--hidden":n,"is--padding":p,"col--ellipsis":m,"col--current":X===l},(0,_dom.getPropClass)(a,h),(0,_dom.getPropClass)(M,h)]},u),{style:k?_xeUtils.default.isFunction(k)?k(h):k:null}),o),{key:$||j||q||K.useKey||K.drag?l.id:e}),[(0,_vue.h)("div",{class:["vxe-cell",{"c--title":v,"c--tooltip":x,"c--ellipsis":f}],style:s},y?[]:[(0,_vue.h)("div",{colid:d,class:"vxe-cell--wrapper"},l.renderFooter(h))]),!n&&i&&B?(0,_vue.h)("div",{class:["vxe-cell--col-resizable",{"is--line":!E||"none"===E}],onMousedown:e=>Q.handleColResizeMousedownEvent(e,I,h),onDblclick:e=>Q.handleColResizeDblclickEvent(e,h)}):renderEmptyElement(Q)])})};return(0,_vue.onMounted)(()=>{(0,_vue.nextTick)(()=>{var e=m.fixedType,l=b.elemStore,e=`${e||"main"}-footer-`;l[e+"wrapper"]=C,l[e+"scroll"]=T,l[e+"table"]=D,l[e+"colgroup"]=F,l[e+"list"]=O,l[e+"xSpace"]=I})}),(0,_vue.onUnmounted)(()=>{var e=m.fixedType,l=b.elemStore,e=`${e||"main"}-footer-`;l[e+"wrapper"]=null,l[e+"scroll"]=null,l[e+"table"]=null,l[e+"colgroup"]=null,l[e+"list"]=null,l[e+"xSpace"]=null}),()=>{let{fixedType:l,fixedColumn:e,tableColumn:t}=m;var{spanMethod:o,footerSpanMethod:r,showFooterOverflow:i}=_,{visibleColumn:a,fullColumnIdData:n}=b,{isGroup:u,isColLoading:d,overflowX:s,scrollXLoad:c,scrollYLoad:p,dragCol:f}=h;let v=t,x=!(c||p||i)||o||r?!1:!0;return d||!l&&s||(v=a),l&&x&&(v=e||[]),l||u||c&&f&&2<v.length&&(p=n[f.id])&&(i=p._index,o=v[0],r=v[v.length-1],d=n[o.id],s=n[r.id],d)&&s&&(a=d._index,u=s._index,i<a?v=[f].concat(v):u<i&&(v=v.concat([f]))),(0,_vue.h)("div",{ref:C,class:["vxe-table--footer-wrapper",l?`fixed-${l}--wrapper`:"body--wrapper"],xid:g},[(0,_vue.h)("div",{ref:T,class:"vxe-table--footer-inner-wrapper",onScroll(e){Q.triggerFooterScrollEvent(e,l)}},[l?renderEmptyElement(Q):(0,_vue.h)("div",{ref:I,class:"vxe-body--x-space"}),(0,_vue.h)("table",{ref:D,class:"vxe-table--footer",xid:g,cellspacing:0,cellpadding:0,border:0},[(0,_vue.h)("colgroup",{ref:F},v.map((e,l)=>(0,_vue.h)("col",{name:e.id,key:l,style:{width:e.renderWidth+"px"}}))),(0,_vue.h)("tfoot",{ref:O},(r=>{let{fixedType:i,footerTableData:a}=m,{footerRowClassName:n,footerRowStyle:u}=_,{isColLoading:d,isDragColMove:s}=h,c=y.value,p=w.value;return a.map((e,l)=>{let t=l;var o={$table:Q,row:e,_rowIndex:t,$rowIndex:l,fixed:i,type:renderType};return!d&&c.drag&&p.animation?(0,_vue.h)(_vue.TransitionGroup,{key:l,name:"vxe-header--col-list"+(s?"":"-disabled"),tag:"tr",class:["vxe-footer--row",n?_xeUtils.default.isFunction(n)?n(o):n:""],style:u?_xeUtils.default.isFunction(u)?u(o):u:null},{default:()=>S(r,a,e,l,t)}):(0,_vue.h)("tr",{key:l,class:["vxe-footer--row",n?_xeUtils.default.isFunction(n)?n(o):n:""],style:u?_xeUtils.default.isFunction(u)?u(o):u:null},S(r,a,e,l,t))})})(v))])])])}}});
|
package/lib/table/src/table.js
CHANGED
|
@@ -108,10 +108,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
108
108
|
// 树节点列信息
|
|
109
109
|
treeNodeColumn: null,
|
|
110
110
|
hasFixedColumn: false,
|
|
111
|
-
// 合并单元格的对象集
|
|
112
|
-
mergeList: [],
|
|
113
|
-
// 合并表尾数据的对象集
|
|
114
|
-
mergeFooterList: [],
|
|
115
111
|
// 刷新列标识,当列筛选被改变时,触发表格刷新数据
|
|
116
112
|
upDataFlag: 0,
|
|
117
113
|
// 刷新列标识,当列的特定属性被改变时,触发表格刷新列
|
|
@@ -264,6 +260,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
264
260
|
pendingRowFlag: 1,
|
|
265
261
|
insertRowFlag: 1,
|
|
266
262
|
removeRowFlag: 1,
|
|
263
|
+
mergeBodyFlag: 1,
|
|
264
|
+
mergeFootFlag: 1,
|
|
267
265
|
rowHeightStore: {
|
|
268
266
|
default: 48,
|
|
269
267
|
medium: 44,
|
|
@@ -356,13 +354,26 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
356
354
|
tableFullColumn: [],
|
|
357
355
|
// 渲染所有列
|
|
358
356
|
visibleColumn: [],
|
|
359
|
-
//
|
|
357
|
+
// 全量数据集(包括当前和已删除)
|
|
360
358
|
fullAllDataRowIdData: {},
|
|
359
|
+
// 数据集(仅当前)
|
|
360
|
+
fullDataRowIdData: {},
|
|
361
|
+
// 数据集(仅可视)
|
|
362
|
+
visibleDataRowIdData: {},
|
|
361
363
|
// 渲染中缓存数据
|
|
362
364
|
sourceDataRowIdData: {},
|
|
363
|
-
fullDataRowIdData: {},
|
|
364
365
|
fullColumnIdData: {},
|
|
365
366
|
fullColumnFieldData: {},
|
|
367
|
+
// 合并单元格的数据
|
|
368
|
+
mergeBodyList: [],
|
|
369
|
+
mergeBodyMaps: {},
|
|
370
|
+
// 合并表尾的数据
|
|
371
|
+
mergeFooterList: [],
|
|
372
|
+
mergeFooterMaps: {},
|
|
373
|
+
// 已合并单元格数据集合
|
|
374
|
+
mergeBodyCellMaps: {},
|
|
375
|
+
// 已合并表尾数据集合
|
|
376
|
+
mergeFooterCellMaps: {},
|
|
366
377
|
// 已展开的行集合
|
|
367
378
|
rowExpandedMaps: {},
|
|
368
379
|
// 懒加载中的展开行的集合
|
|
@@ -694,25 +705,28 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
694
705
|
return Object.assign({}, getConfig().table.customConfig, props.customConfig);
|
|
695
706
|
});
|
|
696
707
|
const computeTableRowExpandedList = (0, _vue.computed)(() => {
|
|
708
|
+
const {
|
|
709
|
+
treeConfig
|
|
710
|
+
} = props;
|
|
697
711
|
const {
|
|
698
712
|
rowExpandedFlag,
|
|
699
|
-
tableData,
|
|
700
713
|
expandColumn
|
|
701
714
|
} = reactData;
|
|
702
715
|
const {
|
|
716
|
+
visibleDataRowIdData,
|
|
703
717
|
rowExpandedMaps
|
|
704
718
|
} = internalData;
|
|
719
|
+
const treeOpts = computeTreeOpts.value;
|
|
705
720
|
const {
|
|
706
|
-
|
|
707
|
-
} =
|
|
721
|
+
transform
|
|
722
|
+
} = treeOpts;
|
|
708
723
|
const expandList = [];
|
|
709
724
|
if (expandColumn && rowExpandedFlag) {
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
});
|
|
725
|
+
if (treeConfig && !transform) {
|
|
726
|
+
return _xeUtils.default.values(rowExpandedMaps);
|
|
727
|
+
}
|
|
714
728
|
_xeUtils.default.each(rowExpandedMaps, (row, rowid) => {
|
|
715
|
-
if (
|
|
729
|
+
if (visibleDataRowIdData[rowid]) {
|
|
716
730
|
expandList.push(row);
|
|
717
731
|
}
|
|
718
732
|
});
|
|
@@ -1153,55 +1167,157 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
1153
1167
|
}
|
|
1154
1168
|
}
|
|
1155
1169
|
};
|
|
1156
|
-
|
|
1170
|
+
function buildMergeData(mergeConfigs) {
|
|
1171
|
+
const mergeMaps = {};
|
|
1172
|
+
if (mergeConfigs && mergeConfigs.length) {
|
|
1173
|
+
for (let mIndex = 0; mIndex < mergeConfigs.length; mIndex++) {
|
|
1174
|
+
const {
|
|
1175
|
+
row: _rowIndex,
|
|
1176
|
+
col: _columnIndex,
|
|
1177
|
+
rowspan: mergeRowspan,
|
|
1178
|
+
colspan: mergeColspan
|
|
1179
|
+
} = mergeConfigs[mIndex];
|
|
1180
|
+
for (let i = 0; i < mergeRowspan; i++) {
|
|
1181
|
+
for (let j = 0; j < mergeColspan; j++) {
|
|
1182
|
+
mergeMaps[`${_rowIndex + i}:${_columnIndex + j}`] = !i && !j ? {
|
|
1183
|
+
rowspan: mergeRowspan,
|
|
1184
|
+
colspan: mergeColspan
|
|
1185
|
+
} : {
|
|
1186
|
+
rowspan: 0,
|
|
1187
|
+
colspan: 0
|
|
1188
|
+
};
|
|
1189
|
+
}
|
|
1190
|
+
}
|
|
1191
|
+
}
|
|
1192
|
+
}
|
|
1193
|
+
return mergeMaps;
|
|
1194
|
+
}
|
|
1195
|
+
const handleBodyMerge = merges => {
|
|
1196
|
+
const {
|
|
1197
|
+
fullAllDataRowIdData,
|
|
1198
|
+
fullColumnIdData,
|
|
1199
|
+
visibleColumn,
|
|
1200
|
+
afterFullData,
|
|
1201
|
+
mergeBodyList,
|
|
1202
|
+
mergeBodyMaps
|
|
1203
|
+
} = internalData;
|
|
1204
|
+
if (merges) {
|
|
1205
|
+
const {
|
|
1206
|
+
handleGetRowId
|
|
1207
|
+
} = (0, _util.createHandleGetRowId)($xeTable);
|
|
1208
|
+
if (!_xeUtils.default.isArray(merges)) {
|
|
1209
|
+
merges = [merges];
|
|
1210
|
+
}
|
|
1211
|
+
merges.forEach(item => {
|
|
1212
|
+
let {
|
|
1213
|
+
row: margeRow,
|
|
1214
|
+
col: margeCol,
|
|
1215
|
+
rowspan,
|
|
1216
|
+
colspan
|
|
1217
|
+
} = item;
|
|
1218
|
+
let mergeRowIndex = -1;
|
|
1219
|
+
let mergeColumnIndex = -1;
|
|
1220
|
+
if (_xeUtils.default.isNumber(margeRow)) {
|
|
1221
|
+
mergeRowIndex = margeRow;
|
|
1222
|
+
} else {
|
|
1223
|
+
const rowid = margeRow ? handleGetRowId(margeRow) : null;
|
|
1224
|
+
const rowRest = rowid ? fullAllDataRowIdData[rowid] : null;
|
|
1225
|
+
if (rowRest) {
|
|
1226
|
+
mergeRowIndex = rowRest._index;
|
|
1227
|
+
}
|
|
1228
|
+
}
|
|
1229
|
+
if (_xeUtils.default.isNumber(margeCol)) {
|
|
1230
|
+
mergeColumnIndex = margeCol;
|
|
1231
|
+
} else {
|
|
1232
|
+
const colid = margeCol ? margeCol.id : null;
|
|
1233
|
+
const colRest = colid ? fullColumnIdData[colid] : null;
|
|
1234
|
+
if (colRest) {
|
|
1235
|
+
mergeColumnIndex = colRest._index;
|
|
1236
|
+
}
|
|
1237
|
+
}
|
|
1238
|
+
if (mergeRowIndex > -1 && mergeColumnIndex > -1 && (rowspan || colspan)) {
|
|
1239
|
+
rowspan = _xeUtils.default.toNumber(rowspan) || 1;
|
|
1240
|
+
colspan = _xeUtils.default.toNumber(colspan) || 1;
|
|
1241
|
+
if (rowspan > 1 || colspan > 1) {
|
|
1242
|
+
const row = afterFullData[mergeRowIndex];
|
|
1243
|
+
const column = visibleColumn[mergeColumnIndex];
|
|
1244
|
+
let mergeItem = mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
|
|
1245
|
+
if (mergeItem) {
|
|
1246
|
+
mergeItem.rowspan = rowspan;
|
|
1247
|
+
mergeItem.colspan = colspan;
|
|
1248
|
+
mergeItem._rowspan = rowspan;
|
|
1249
|
+
mergeItem._colspan = colspan;
|
|
1250
|
+
} else {
|
|
1251
|
+
mergeItem = {
|
|
1252
|
+
row: mergeRowIndex,
|
|
1253
|
+
col: mergeColumnIndex,
|
|
1254
|
+
rowspan,
|
|
1255
|
+
colspan,
|
|
1256
|
+
_row: row,
|
|
1257
|
+
_col: column,
|
|
1258
|
+
_rowspan: rowspan,
|
|
1259
|
+
_colspan: colspan
|
|
1260
|
+
};
|
|
1261
|
+
mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem;
|
|
1262
|
+
mergeBodyList.push(mergeItem);
|
|
1263
|
+
}
|
|
1264
|
+
}
|
|
1265
|
+
}
|
|
1266
|
+
});
|
|
1267
|
+
}
|
|
1268
|
+
};
|
|
1269
|
+
const handleFooterMerge = merges => {
|
|
1270
|
+
const {
|
|
1271
|
+
footerTableData
|
|
1272
|
+
} = reactData;
|
|
1273
|
+
const {
|
|
1274
|
+
mergeFooterList,
|
|
1275
|
+
mergeFooterMaps
|
|
1276
|
+
} = internalData;
|
|
1157
1277
|
if (merges) {
|
|
1158
|
-
// const { treeConfig } = props
|
|
1159
1278
|
const {
|
|
1160
1279
|
visibleColumn
|
|
1161
1280
|
} = internalData;
|
|
1162
1281
|
if (!_xeUtils.default.isArray(merges)) {
|
|
1163
1282
|
merges = [merges];
|
|
1164
1283
|
}
|
|
1165
|
-
// if (treeConfig && merges.length) {
|
|
1166
|
-
// errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
|
|
1167
|
-
// }
|
|
1168
1284
|
merges.forEach(item => {
|
|
1169
1285
|
let {
|
|
1170
|
-
row,
|
|
1171
|
-
col,
|
|
1286
|
+
row: margeRow,
|
|
1287
|
+
col: margeCol,
|
|
1172
1288
|
rowspan,
|
|
1173
1289
|
colspan
|
|
1174
1290
|
} = item;
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
col = visibleColumn[col];
|
|
1291
|
+
const mergeRowIndex = _xeUtils.default.isNumber(margeRow) ? margeRow : -1;
|
|
1292
|
+
let mergeColumnIndex = -1;
|
|
1293
|
+
if (_xeUtils.default.isNumber(margeCol)) {
|
|
1294
|
+
mergeColumnIndex = margeCol;
|
|
1180
1295
|
}
|
|
1181
|
-
if (
|
|
1296
|
+
if (mergeRowIndex > -1 && mergeColumnIndex > -1 && (rowspan || colspan)) {
|
|
1182
1297
|
rowspan = _xeUtils.default.toNumber(rowspan) || 1;
|
|
1183
1298
|
colspan = _xeUtils.default.toNumber(colspan) || 1;
|
|
1184
1299
|
if (rowspan > 1 || colspan > 1) {
|
|
1185
|
-
const
|
|
1186
|
-
const
|
|
1300
|
+
const row = footerTableData[mergeRowIndex];
|
|
1301
|
+
const column = visibleColumn[mergeColumnIndex];
|
|
1302
|
+
let mergeItem = mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
|
|
1187
1303
|
if (mergeItem) {
|
|
1188
1304
|
mergeItem.rowspan = rowspan;
|
|
1189
1305
|
mergeItem.colspan = colspan;
|
|
1190
1306
|
mergeItem._rowspan = rowspan;
|
|
1191
1307
|
mergeItem._colspan = colspan;
|
|
1192
1308
|
} else {
|
|
1193
|
-
|
|
1194
|
-
const mergeColIndex = tableMethods.getVTColumnIndex(col);
|
|
1195
|
-
mList.push({
|
|
1309
|
+
mergeItem = {
|
|
1196
1310
|
row: mergeRowIndex,
|
|
1197
|
-
col:
|
|
1311
|
+
col: mergeColumnIndex,
|
|
1198
1312
|
rowspan,
|
|
1199
1313
|
colspan,
|
|
1200
1314
|
_row: row,
|
|
1201
|
-
_col:
|
|
1315
|
+
_col: column,
|
|
1202
1316
|
_rowspan: rowspan,
|
|
1203
1317
|
_colspan: colspan
|
|
1204
|
-
}
|
|
1318
|
+
};
|
|
1319
|
+
mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem;
|
|
1320
|
+
mergeFooterList.push(mergeItem);
|
|
1205
1321
|
}
|
|
1206
1322
|
}
|
|
1207
1323
|
}
|
|
@@ -3142,7 +3258,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
3142
3258
|
internalData.tableFullData = fullData;
|
|
3143
3259
|
internalData.tableFullTreeData = treeData;
|
|
3144
3260
|
// 缓存数据
|
|
3145
|
-
$xeTable.cacheRowMap(
|
|
3261
|
+
$xeTable.cacheRowMap(isReset);
|
|
3146
3262
|
// 原始数据
|
|
3147
3263
|
internalData.tableSynchData = datas;
|
|
3148
3264
|
if (isReset) {
|
|
@@ -3160,6 +3276,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
3160
3276
|
$xeTable.clearMergeFooterItems();
|
|
3161
3277
|
$xeTable.handleTableData(true);
|
|
3162
3278
|
$xeTable.updateFooter();
|
|
3279
|
+
$xeTable.handleUpdateBodyMerge();
|
|
3163
3280
|
return (0, _vue.nextTick)().then(() => {
|
|
3164
3281
|
updateHeight();
|
|
3165
3282
|
updateStyle();
|
|
@@ -3274,11 +3391,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
3274
3391
|
};
|
|
3275
3392
|
const loadScrollXData = () => {
|
|
3276
3393
|
const {
|
|
3277
|
-
mergeList,
|
|
3278
|
-
mergeFooterList,
|
|
3279
3394
|
isScrollXBig
|
|
3280
3395
|
} = reactData;
|
|
3281
3396
|
const {
|
|
3397
|
+
mergeBodyList,
|
|
3398
|
+
mergeFooterList,
|
|
3282
3399
|
scrollXStore
|
|
3283
3400
|
} = internalData;
|
|
3284
3401
|
const {
|
|
@@ -3297,7 +3414,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
3297
3414
|
};
|
|
3298
3415
|
scrollXStore.visibleStartIndex = toVisibleIndex - 1;
|
|
3299
3416
|
scrollXStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
|
|
3300
|
-
calculateMergerOffsetIndex(
|
|
3417
|
+
calculateMergerOffsetIndex(mergeBodyList.concat(mergeFooterList), offsetItem, 'col');
|
|
3301
3418
|
const {
|
|
3302
3419
|
startIndex: offsetStartIndex,
|
|
3303
3420
|
endIndex: offsetEndIndex
|
|
@@ -3648,11 +3765,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
3648
3765
|
*/
|
|
3649
3766
|
const loadScrollYData = () => {
|
|
3650
3767
|
const {
|
|
3651
|
-
mergeList,
|
|
3652
3768
|
isAllOverflow,
|
|
3653
3769
|
isScrollYBig
|
|
3654
3770
|
} = reactData;
|
|
3655
3771
|
const {
|
|
3772
|
+
mergeBodyList,
|
|
3656
3773
|
scrollYStore
|
|
3657
3774
|
} = internalData;
|
|
3658
3775
|
const {
|
|
@@ -3672,7 +3789,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
3672
3789
|
};
|
|
3673
3790
|
scrollYStore.visibleStartIndex = toVisibleIndex - 1;
|
|
3674
3791
|
scrollYStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
|
|
3675
|
-
calculateMergerOffsetIndex(
|
|
3792
|
+
calculateMergerOffsetIndex(mergeBodyList, offsetItem, 'row');
|
|
3676
3793
|
const {
|
|
3677
3794
|
startIndex: offsetStartIndex,
|
|
3678
3795
|
endIndex: offsetEndIndex
|
|
@@ -4014,7 +4131,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
4014
4131
|
* 对于某些特殊的场景,比如深层树节点元素发生变动时可能会用到
|
|
4015
4132
|
*/
|
|
4016
4133
|
syncData() {
|
|
4017
|
-
(0, _log.
|
|
4134
|
+
(0, _log.errLog)('vxe.error.delFunc', ['syncData', 'getData']);
|
|
4018
4135
|
return (0, _vue.nextTick)().then(() => {
|
|
4019
4136
|
reactData.tableData = [];
|
|
4020
4137
|
emit('update:data', internalData.tableFullData);
|
|
@@ -6658,6 +6775,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
6658
6775
|
}) : [];
|
|
6659
6776
|
}
|
|
6660
6777
|
reactData.footerTableData = footData;
|
|
6778
|
+
$xeTable.handleUpdateFooterMerge();
|
|
6661
6779
|
return (0, _vue.nextTick)();
|
|
6662
6780
|
},
|
|
6663
6781
|
/**
|
|
@@ -6683,9 +6801,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
6683
6801
|
if (props.spanMethod) {
|
|
6684
6802
|
(0, _log.errLog)('vxe.error.errConflicts', ['merge-cells', 'span-method']);
|
|
6685
6803
|
}
|
|
6686
|
-
|
|
6804
|
+
handleBodyMerge(merges);
|
|
6805
|
+
$xeTable.handleUpdateBodyMerge();
|
|
6687
6806
|
return (0, _vue.nextTick)().then(() => {
|
|
6688
|
-
|
|
6807
|
+
$xeTable.updateCellAreas();
|
|
6689
6808
|
return updateStyle();
|
|
6690
6809
|
});
|
|
6691
6810
|
},
|
|
@@ -6697,9 +6816,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
6697
6816
|
if (props.spanMethod) {
|
|
6698
6817
|
(0, _log.errLog)('vxe.error.errConflicts', ['merge-cells', 'span-method']);
|
|
6699
6818
|
}
|
|
6700
|
-
const rest = removeMerges(merges,
|
|
6819
|
+
const rest = removeMerges(merges, internalData.mergeBodyList, internalData.afterFullData);
|
|
6701
6820
|
return (0, _vue.nextTick)().then(() => {
|
|
6702
|
-
|
|
6821
|
+
$xeTable.updateCellAreas();
|
|
6703
6822
|
updateStyle();
|
|
6704
6823
|
return rest;
|
|
6705
6824
|
});
|
|
@@ -6708,13 +6827,15 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
6708
6827
|
* 获取所有被合并的单元格
|
|
6709
6828
|
*/
|
|
6710
6829
|
getMergeCells() {
|
|
6711
|
-
return
|
|
6830
|
+
return internalData.mergeBodyList.slice(0);
|
|
6712
6831
|
},
|
|
6713
6832
|
/**
|
|
6714
6833
|
* 清除所有单元格合并
|
|
6715
6834
|
*/
|
|
6716
6835
|
clearMergeCells() {
|
|
6717
|
-
|
|
6836
|
+
internalData.mergeBodyList = [];
|
|
6837
|
+
internalData.mergeBodyMaps = {};
|
|
6838
|
+
internalData.mergeBodyCellMaps = {};
|
|
6718
6839
|
return (0, _vue.nextTick)().then(() => {
|
|
6719
6840
|
return updateStyle();
|
|
6720
6841
|
});
|
|
@@ -6723,7 +6844,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
6723
6844
|
if (props.footerSpanMethod) {
|
|
6724
6845
|
(0, _log.errLog)('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
|
|
6725
6846
|
}
|
|
6726
|
-
|
|
6847
|
+
handleFooterMerge(merges);
|
|
6848
|
+
$xeTable.handleUpdateFooterMerge();
|
|
6727
6849
|
return (0, _vue.nextTick)().then(() => {
|
|
6728
6850
|
tableMethods.updateCellAreas();
|
|
6729
6851
|
return updateStyle();
|
|
@@ -6733,7 +6855,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
6733
6855
|
if (props.footerSpanMethod) {
|
|
6734
6856
|
(0, _log.errLog)('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
|
|
6735
6857
|
}
|
|
6736
|
-
const rest = removeMerges(merges,
|
|
6858
|
+
const rest = removeMerges(merges, internalData.mergeFooterList);
|
|
6737
6859
|
return (0, _vue.nextTick)().then(() => {
|
|
6738
6860
|
tableMethods.updateCellAreas();
|
|
6739
6861
|
updateStyle();
|
|
@@ -6744,13 +6866,15 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
6744
6866
|
* 获取所有被合并的表尾
|
|
6745
6867
|
*/
|
|
6746
6868
|
getMergeFooterItems() {
|
|
6747
|
-
return
|
|
6869
|
+
return internalData.mergeFooterList.slice(0);
|
|
6748
6870
|
},
|
|
6749
6871
|
/**
|
|
6750
6872
|
* 清除所有表尾合并
|
|
6751
6873
|
*/
|
|
6752
6874
|
clearMergeFooterItems() {
|
|
6753
|
-
|
|
6875
|
+
internalData.mergeFooterList = [];
|
|
6876
|
+
internalData.mergeFooterMaps = {};
|
|
6877
|
+
internalData.mergeFooterCellMaps = {};
|
|
6754
6878
|
return (0, _vue.nextTick)().then(() => {
|
|
6755
6879
|
return updateStyle();
|
|
6756
6880
|
});
|
|
@@ -7887,20 +8011,23 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
7887
8011
|
fullList = handleVirtualTreeToList();
|
|
7888
8012
|
}
|
|
7889
8013
|
const tableData = scrollYLoad ? fullList.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullList.slice(0);
|
|
8014
|
+
const visibleDataRowIdMaps = {};
|
|
7890
8015
|
tableData.forEach((row, $index) => {
|
|
7891
8016
|
const rowid = (0, _util.getRowid)($xeTable, row);
|
|
7892
8017
|
const rest = fullDataRowIdData[rowid];
|
|
7893
8018
|
if (rest) {
|
|
7894
8019
|
rest.$index = $index;
|
|
7895
8020
|
}
|
|
8021
|
+
visibleDataRowIdMaps[rowid] = row;
|
|
7896
8022
|
});
|
|
7897
8023
|
reactData.tableData = tableData;
|
|
8024
|
+
internalData.visibleDataRowIdData = visibleDataRowIdMaps;
|
|
7898
8025
|
return (0, _vue.nextTick)();
|
|
7899
8026
|
},
|
|
7900
8027
|
/**
|
|
7901
8028
|
* 更新数据行的 Map
|
|
7902
8029
|
*/
|
|
7903
|
-
cacheRowMap() {
|
|
8030
|
+
cacheRowMap(isReset) {
|
|
7904
8031
|
const {
|
|
7905
8032
|
treeConfig
|
|
7906
8033
|
} = props;
|
|
@@ -7916,7 +8043,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
7916
8043
|
const {
|
|
7917
8044
|
lazy
|
|
7918
8045
|
} = treeOpts;
|
|
7919
|
-
const fullAllDataRowIdMaps = Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
|
|
8046
|
+
const fullAllDataRowIdMaps = isReset ? {} : Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
|
|
7920
8047
|
const fullDataRowIdMaps = {};
|
|
7921
8048
|
const {
|
|
7922
8049
|
handleUpdateRowId
|
|
@@ -8825,6 +8952,23 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
8825
8952
|
}, checked, isForce) {
|
|
8826
8953
|
$xeTable.handleBatchSelectRows([row], checked, isForce);
|
|
8827
8954
|
},
|
|
8955
|
+
/**
|
|
8956
|
+
* 处理合并
|
|
8957
|
+
*/
|
|
8958
|
+
handleUpdateBodyMerge() {
|
|
8959
|
+
const {
|
|
8960
|
+
mergeBodyList
|
|
8961
|
+
} = internalData;
|
|
8962
|
+
internalData.mergeBodyCellMaps = buildMergeData(mergeBodyList);
|
|
8963
|
+
reactData.mergeBodyFlag++;
|
|
8964
|
+
},
|
|
8965
|
+
handleUpdateFooterMerge() {
|
|
8966
|
+
const {
|
|
8967
|
+
mergeFooterList
|
|
8968
|
+
} = internalData;
|
|
8969
|
+
internalData.mergeFooterCellMaps = buildMergeData(mergeFooterList);
|
|
8970
|
+
reactData.mergeFootFlag++;
|
|
8971
|
+
},
|
|
8828
8972
|
triggerHeaderTitleEvent(evnt, iconParams, params) {
|
|
8829
8973
|
const tipContent = iconParams.content || iconParams.message;
|
|
8830
8974
|
if (tipContent) {
|
|
@@ -11239,20 +11383,22 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
11239
11383
|
} = treeOpts;
|
|
11240
11384
|
const cellStyle = {};
|
|
11241
11385
|
const rowid = handleGetRowId(row);
|
|
11242
|
-
const
|
|
11386
|
+
const rowRest = fullAllDataRowIdData[rowid];
|
|
11243
11387
|
let rowLevel = 0;
|
|
11244
11388
|
let seq = -1;
|
|
11245
|
-
let _rowIndex =
|
|
11246
|
-
|
|
11247
|
-
|
|
11248
|
-
if (
|
|
11249
|
-
rowLevel =
|
|
11389
|
+
let _rowIndex = -1;
|
|
11390
|
+
let rowIndex = -1;
|
|
11391
|
+
let $rowIndex = -1;
|
|
11392
|
+
if (rowRest) {
|
|
11393
|
+
rowLevel = rowRest.level;
|
|
11250
11394
|
if (treeConfig && transform && seqMode === 'increasing') {
|
|
11251
|
-
seq =
|
|
11395
|
+
seq = rowRest._index + 1;
|
|
11252
11396
|
} else {
|
|
11253
|
-
seq =
|
|
11397
|
+
seq = rowRest.seq;
|
|
11254
11398
|
}
|
|
11255
|
-
|
|
11399
|
+
rowIndex = rowRest.index;
|
|
11400
|
+
$rowIndex = rowRest.$index;
|
|
11401
|
+
_rowIndex = rowRest._index;
|
|
11256
11402
|
}
|
|
11257
11403
|
if (expandHeight) {
|
|
11258
11404
|
cellStyle.height = `${expandHeight}px`;
|
|
@@ -11835,6 +11981,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
11835
11981
|
if (columnOpts.drag || rowOpts.drag || customOpts.allowSort) {
|
|
11836
11982
|
(0, _dom.initTpImg)();
|
|
11837
11983
|
}
|
|
11984
|
+
;
|
|
11985
|
+
window.aa = $xeTable;
|
|
11838
11986
|
(0, _vue.nextTick)(() => {
|
|
11839
11987
|
const {
|
|
11840
11988
|
data,
|
|
@@ -11927,7 +12075,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
|
|
|
11927
12075
|
if (rowOpts.height && !props.showOverflow) {
|
|
11928
12076
|
(0, _log.warnLog)('vxe.error.notProp', ['table.show-overflow']);
|
|
11929
12077
|
}
|
|
11930
|
-
if (!$xeTable.
|
|
12078
|
+
if (!$xeTable.triggerCellAreaMousedownEvent) {
|
|
11931
12079
|
if (props.areaConfig) {
|
|
11932
12080
|
(0, _log.warnLog)('vxe.error.notProp', ['area-config']);
|
|
11933
12081
|
}
|