vxe-table 3.14.5 → 3.15.0-beta.0
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/style.css +1 -1
- package/es/table/module/edit/mixin.js +10 -9
- package/es/table/module/export/mixin.js +14 -11
- package/es/table/src/body.js +11 -13
- package/es/table/src/footer.js +3 -16
- package/es/table/src/methods.js +202 -67
- package/es/table/src/table.js +40 -23
- 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/index.umd.js +318 -183
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/table/module/edit/mixin.js +9 -9
- package/lib/table/module/edit/mixin.min.js +1 -1
- package/lib/table/module/export/mixin.js +15 -11
- package/lib/table/module/export/mixin.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/methods.js +231 -71
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/table.js +42 -23
- 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/table/module/edit/mixin.ts +10 -9
- package/packages/table/module/export/mixin.ts +14 -11
- package/packages/table/src/body.ts +11 -13
- package/packages/table/src/footer.ts +3 -17
- package/packages/table/src/methods.ts +218 -78
- package/packages/table/src/table.ts +40 -23
- package/packages/table/src/util.ts +0 -14
- package/packages/ui/index.ts +1 -1
- /package/es/{iconfont.1743479120369.ttf → iconfont.1743578536739.ttf} +0 -0
- /package/es/{iconfont.1743479120369.woff → iconfont.1743578536739.woff} +0 -0
- /package/es/{iconfont.1743479120369.woff2 → iconfont.1743578536739.woff2} +0 -0
- /package/lib/{iconfont.1743479120369.ttf → iconfont.1743578536739.ttf} +0 -0
- /package/lib/{iconfont.1743479120369.woff → iconfont.1743578536739.woff} +0 -0
- /package/lib/{iconfont.1743479120369.woff2 → iconfont.1743578536739.woff2} +0 -0
package/lib/table/src/footer.js
CHANGED
|
@@ -15,30 +15,6 @@ const {
|
|
|
15
15
|
renderer,
|
|
16
16
|
renderEmptyElement
|
|
17
17
|
} = _ui.VxeUI;
|
|
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
|
function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIndex) {
|
|
43
19
|
const props = _vm;
|
|
44
20
|
const $xeTable = _vm.$parent;
|
|
@@ -64,11 +40,12 @@ function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIn
|
|
|
64
40
|
scrollXLoad,
|
|
65
41
|
scrollYLoad,
|
|
66
42
|
overflowX,
|
|
67
|
-
currentColumn
|
|
68
|
-
mergeFooterList
|
|
43
|
+
currentColumn
|
|
69
44
|
} = tableReactData;
|
|
70
45
|
const {
|
|
71
46
|
fullColumnIdData,
|
|
47
|
+
mergeFooterList,
|
|
48
|
+
mergeFooterCellMaps,
|
|
72
49
|
scrollXStore
|
|
73
50
|
} = tableInternalData;
|
|
74
51
|
const tooltipOpts = $xeTable.computeTooltipOpts;
|
|
@@ -162,7 +139,7 @@ function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIn
|
|
|
162
139
|
let isMergeCell = false;
|
|
163
140
|
// 合并行或列
|
|
164
141
|
if (mergeFooterList.length) {
|
|
165
|
-
const spanRest =
|
|
142
|
+
const spanRest = mergeFooterCellMaps[`${_rowIndex}:${_columnIndex}`];
|
|
166
143
|
if (spanRest) {
|
|
167
144
|
const {
|
|
168
145
|
rowspan,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom"),_util=require("./util");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let renderType="footer",{renderer,renderEmptyElement}=_ui.VxeUI;function
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom"),_util=require("./util");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let renderType="footer",{renderer,renderEmptyElement}=_ui.VxeUI;function renderRows(C,e,_,F,T,$,S){let E=e.$parent;var l=E,r=E,t=E;let I=E.$xeGrid,O=e.fixedType,{resizable:D,border:R,footerCellClassName:z,footerCellStyle:k,footerAlign:U,footerSpanMethod:A,align:q,columnKey:L,showFooterOverflow:M}=l,{scrollXLoad:X,scrollYLoad:H,overflowX:N,currentColumn:j}=r,{fullColumnIdData:W,mergeFooterList:B,mergeFooterCellMaps:G,scrollXStore:K}=t,V=E.computeTooltipOpts,Y=E.resizableOpts.isAllColumnDrag,P=E.computeColumnOpts;e=E.computeDefaultRowHeight;let J=E.computeCellOpts,Q=E.computeFooterCellOpts,Z=(0,_util.getCellHeight)(Q.height||J.height)||e;return _.map((l,e)=>{var{type:r,showFooterOverflow:t,footerAlign:o,align:i,footerClassName:a,editRender:n,cellRender:s}=l,d=l.id,u=W[d]||{},n=n||s,s=n?renderer.get(n.name):null;let p=V.showAll;var n=l.children&&l.children.length,n=O?l.fixed!==O&&!n:l.fixed&&N,c=(_xeUtils.default.isBoolean(Q.padding)?Q:J).padding,t=_xeUtils.default.eqNull(t)?M:t,o=o||(s?s.tableFooterCellAlign:"")||U||i||(s?s.tableCellAlign:"")||q;let f="ellipsis"===t,x="title"===t,m=!0===t||"tooltip"===t,g=x||m||f;var i=_xeUtils.default.isBoolean(l.resizable)?l.resizable:P.resizable||D,s={colid:d},t={},v=u.index,u=u._index,h=u;let w={$table:E,$grid:I,row:T,rowIndex:S,_rowIndex:S,$rowIndex:$,column:l,columnIndex:v,$columnIndex:e,_columnIndex:u,itemIndex:h,items:T,fixed:O,type:renderType,data:F},y=(X&&!g&&(f=g=!0),(x||m||p)&&(t.mouseenter=e=>{x?(0,_dom.updateCellTitle)(e.currentTarget,l):(m||p)&&E.triggerFooterTooltipEvent(e,w)}),(m||p)&&(t.mouseleave=e=>{(m||p)&&E.handleTargetLeaveEvent(e)}),t.click=e=>{E.dispatchEvent("footer-cell-click",Object.assign({cell:e.currentTarget},w),e)},!(t.dblclick=e=>{E.dispatchEvent("footer-cell-dblclick",Object.assign({cell:e.currentTarget},w),e)}));if(B.length){v=G[S+":"+u];if(v){var{rowspan:h,colspan:v}=v;if(!h||!v)return null;1<h&&(y=!0,s.rowspan=h),1<v&&(y=!0,s.colspan=v)}}else if(A){var{rowspan:h=1,colspan:v=1}=A(w)||{};if(!h||!v)return null;1<h&&(s.rowspan=h),1<v&&(s.colspan=v)}h=e===_.length-1,v=!l.resizeWidth&&("auto"===l.minWidth||"auto"===l.width);let b=!1;y||X&&!l.fixed&&(u<K.visibleStartIndex-K.preloadSize||u>K.visibleEndIndex+K.preloadSize)&&(b=!0);u={};return g?u.height=Z+"px":u.minHeight=Z+"px",C("td",{class:["vxe-footer--column",l.id,{["col--"+o]:o,["col--"+r]:r,"col--last":h,"fixed--width":!v,"fixed--hidden":n,"is--padding":c,"col--ellipsis":g,"col--current":j===l},(0,_utils.getClass)(a,w),(0,_utils.getClass)(z,w)],attrs:s,style:k?_xeUtils.default.isFunction(k)?k(w):k:void 0,on:t,key:L||X||H||P.useKey||P.drag?l.id:e},[C("div",{class:["vxe-cell",{"c--title":x,"c--tooltip":m,"c--ellipsis":f}],style:u},b?[]:[C("div",{attrs:{colid:d},class:"vxe-cell--wrapper"},l.renderFooter(C,w))]),!n&&i&&Y?C("div",{class:["vxe-cell--col-resizable",{"is--line":!R||"none"===R}],on:{mousedown:e=>E.handleColResizeMousedownEvent(e,O,w),dblclick:e=>E.handleColResizeDblclickEvent(e,w)}}):renderEmptyElement(E)])})}function renderHeads(o,i,a){let n=i.$parent;var e=n,l=n;let{fixedType:s,footerTableData:d}=i,{footerRowClassName:u,footerRowStyle:p}=e,{isColLoading:c,isDragColMove:f}=l,x=n.computeColumnOpts,m=n.computeColumnDragOpts;return d.map((e,l)=>{var r=l,t={$table:n,row:e,_rowIndex:r,$rowIndex:l,fixed:s,type:renderType};return!c&&x.drag&&m.animation?o("transition-group",{key:l,props:{tag:"tr",name:"vxe-header--col-list"+(f?"":"-disabled"),class:["vxe-footer--row",u?_xeUtils.default.isFunction(u)?u(t):u:""],style:p?_xeUtils.default.isFunction(p)?p(t):p:void 0}},renderRows(o,i,a,d,e,l,r)):o("tr",{key:l,class:["vxe-footer--row",u?_xeUtils.default.isFunction(u)?u(t):u:""],style:p?_xeUtils.default.isFunction(p)?p(t):p:void 0},renderRows(o,i,a,d,e,l,r))})}var _default=exports.default={name:"VxeTableFooter",props:{footerTableData:{type:Array,default:()=>[]},tableColumn:{type:Array,default:()=>[]},fixedColumn:{type:Array,default:()=>[]},fixedType:{type:String,default:null}},mounted(){var e=this,l=e.fixedType,r=e.$parent.elemStore,l=`${l||"main"}-footer-`;r[l+"wrapper"]=e.$refs.refElem,r[l+"scroll"]=e.$refs.refFooterScroll,r[l+"table"]=e.$refs.refFooterTable,r[l+"colgroup"]=e.$refs.refFooterColgroup,r[l+"list"]=e.$refs.refFooterTFoot,r[l+"xSpace"]=e.$refs.refFooterXSpace},destroyed(){var e=this.fixedType,l=this.$parent.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},render(r){let l=this.$parent;var e=l,t=l,o=l,i=l.xID;let{fixedType:a,fixedColumn:n,tableColumn:s}=this;var{spanMethod:e,footerSpanMethod:d,showFooterOverflow:u}=e,{visibleColumn:o,fullColumnIdData:p}=o,{isGroup:t,isColLoading:c,overflowX:f,scrollXLoad:x,scrollYLoad:m,dragCol:g}=t;let v=s,h=!(x||m||u)||e||d?!1:!0;return c||!a&&f||(v=o),a&&h&&(v=n||[]),a||t||x&&g&&2<v.length&&(m=p[g.id])&&(u=m._index,e=v[0],d=v[v.length-1],c=p[e.id],f=p[d.id],c)&&f&&(o=c._index,t=f._index,u<o?v=[g].concat(v):t<u&&(v=v.concat([g]))),r("div",{ref:"refElem",class:["vxe-table--footer-wrapper",a?`fixed-${a}--wrapper`:"body--wrapper"],attrs:{xid:i}},[r("div",{ref:"refFooterScroll",class:"vxe-table--footer-inner-wrapper",on:{scroll(e){l.triggerFooterScrollEvent(e,a)}}},[a?renderEmptyElement(l):r("div",{ref:"refFooterXSpace",class:"vxe-body--x-space"}),r("table",{ref:"refFooterTable",class:"vxe-table--footer",attrs:{xid:i,cellspacing:0,cellpadding:0,border:0}},[r("colgroup",{ref:"refFooterColgroup"},v.map((e,l)=>r("col",{attrs:{name:e.id},key:l,style:{width:e.renderWidth+"px"}}))),r("tfoot",{ref:"refFooterTFoot"},renderHeads(r,this,v))])])])}};
|
package/lib/table/src/methods.js
CHANGED
|
@@ -1520,20 +1520,48 @@ function calculateMergerOffsetIndex(list, offsetItem, type) {
|
|
|
1520
1520
|
}
|
|
1521
1521
|
}
|
|
1522
1522
|
}
|
|
1523
|
-
function
|
|
1524
|
-
|
|
1523
|
+
function buildMergeData(mergeConfigs) {
|
|
1524
|
+
const mergeMaps = {};
|
|
1525
|
+
if (mergeConfigs && mergeConfigs.length) {
|
|
1526
|
+
for (let mIndex = 0; mIndex < mergeConfigs.length; mIndex++) {
|
|
1527
|
+
const {
|
|
1528
|
+
row: _rowIndex,
|
|
1529
|
+
col: _columnIndex,
|
|
1530
|
+
rowspan: mergeRowspan,
|
|
1531
|
+
colspan: mergeColspan
|
|
1532
|
+
} = mergeConfigs[mIndex];
|
|
1533
|
+
for (let i = 0; i < mergeRowspan; i++) {
|
|
1534
|
+
for (let j = 0; j < mergeColspan; j++) {
|
|
1535
|
+
mergeMaps[`${_rowIndex + i}:${_columnIndex + j}`] = !i && !j ? {
|
|
1536
|
+
rowspan: mergeRowspan,
|
|
1537
|
+
colspan: mergeColspan
|
|
1538
|
+
} : {
|
|
1539
|
+
rowspan: 0,
|
|
1540
|
+
colspan: 0
|
|
1541
|
+
};
|
|
1542
|
+
}
|
|
1543
|
+
}
|
|
1544
|
+
}
|
|
1545
|
+
}
|
|
1546
|
+
return mergeMaps;
|
|
1547
|
+
}
|
|
1548
|
+
const handleBodyMerge = ($xeTable, merges) => {
|
|
1525
1549
|
const internalData = $xeTable;
|
|
1550
|
+
const {
|
|
1551
|
+
fullAllDataRowIdData,
|
|
1552
|
+
fullColumnIdData,
|
|
1553
|
+
visibleColumn,
|
|
1554
|
+
afterFullData,
|
|
1555
|
+
mergeBodyList,
|
|
1556
|
+
mergeBodyMaps
|
|
1557
|
+
} = internalData;
|
|
1526
1558
|
if (merges) {
|
|
1527
|
-
// const { treeConfig } = props
|
|
1528
1559
|
const {
|
|
1529
|
-
|
|
1530
|
-
} =
|
|
1560
|
+
handleGetRowId
|
|
1561
|
+
} = (0, _util.createHandleGetRowId)($xeTable);
|
|
1531
1562
|
if (!_xeUtils.default.isArray(merges)) {
|
|
1532
1563
|
merges = [merges];
|
|
1533
1564
|
}
|
|
1534
|
-
// if (treeConfig && merges.length) {
|
|
1535
|
-
// errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
|
|
1536
|
-
// }
|
|
1537
1565
|
merges.forEach(item => {
|
|
1538
1566
|
let {
|
|
1539
1567
|
row,
|
|
@@ -1541,42 +1569,117 @@ function setMerges($xeTable, merges, mList, rowList) {
|
|
|
1541
1569
|
rowspan,
|
|
1542
1570
|
colspan
|
|
1543
1571
|
} = item;
|
|
1544
|
-
|
|
1545
|
-
|
|
1572
|
+
let mergeRowIndex = -1;
|
|
1573
|
+
let mergeColumnIndex = -1;
|
|
1574
|
+
if (_xeUtils.default.isNumber(row)) {
|
|
1575
|
+
mergeRowIndex = row;
|
|
1576
|
+
} else {
|
|
1577
|
+
const rowid = row ? handleGetRowId(row) : null;
|
|
1578
|
+
const rowRest = rowid ? fullAllDataRowIdData[rowid] : null;
|
|
1579
|
+
if (rowRest) {
|
|
1580
|
+
mergeRowIndex = rowRest._index;
|
|
1581
|
+
}
|
|
1546
1582
|
}
|
|
1547
1583
|
if (_xeUtils.default.isNumber(col)) {
|
|
1548
|
-
|
|
1584
|
+
mergeColumnIndex = col;
|
|
1585
|
+
} else {
|
|
1586
|
+
const colid = col ? col.id : null;
|
|
1587
|
+
const colRest = colid ? fullColumnIdData[colid] : null;
|
|
1588
|
+
if (colRest) {
|
|
1589
|
+
mergeColumnIndex = colRest._index;
|
|
1590
|
+
}
|
|
1549
1591
|
}
|
|
1550
|
-
if (
|
|
1592
|
+
if (mergeRowIndex > -1 && mergeColumnIndex > -1 && (rowspan || colspan)) {
|
|
1551
1593
|
rowspan = _xeUtils.default.toNumber(rowspan) || 1;
|
|
1552
1594
|
colspan = _xeUtils.default.toNumber(colspan) || 1;
|
|
1553
1595
|
if (rowspan > 1 || colspan > 1) {
|
|
1554
|
-
const
|
|
1555
|
-
const
|
|
1596
|
+
const row = afterFullData[mergeRowIndex];
|
|
1597
|
+
const column = visibleColumn[mergeColumnIndex];
|
|
1598
|
+
let mergeItem = mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
|
|
1556
1599
|
if (mergeItem) {
|
|
1557
1600
|
mergeItem.rowspan = rowspan;
|
|
1558
1601
|
mergeItem.colspan = colspan;
|
|
1559
1602
|
mergeItem._rowspan = rowspan;
|
|
1560
1603
|
mergeItem._colspan = colspan;
|
|
1561
1604
|
} else {
|
|
1562
|
-
|
|
1563
|
-
const mergeColIndex = visibleColumn.indexOf(col);
|
|
1564
|
-
mList.push({
|
|
1605
|
+
mergeItem = {
|
|
1565
1606
|
row: mergeRowIndex,
|
|
1566
|
-
col:
|
|
1607
|
+
col: mergeColumnIndex,
|
|
1567
1608
|
rowspan,
|
|
1568
1609
|
colspan,
|
|
1569
1610
|
_row: row,
|
|
1570
|
-
_col:
|
|
1611
|
+
_col: column,
|
|
1571
1612
|
_rowspan: rowspan,
|
|
1572
1613
|
_colspan: colspan
|
|
1573
|
-
}
|
|
1614
|
+
};
|
|
1615
|
+
mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem;
|
|
1616
|
+
mergeBodyList.push(mergeItem);
|
|
1574
1617
|
}
|
|
1575
1618
|
}
|
|
1576
1619
|
}
|
|
1577
1620
|
});
|
|
1578
1621
|
}
|
|
1579
|
-
}
|
|
1622
|
+
};
|
|
1623
|
+
const handleFooterMerge = ($xeTable, merges) => {
|
|
1624
|
+
const reactData = $xeTable;
|
|
1625
|
+
const internalData = $xeTable;
|
|
1626
|
+
const {
|
|
1627
|
+
footerTableData
|
|
1628
|
+
} = reactData;
|
|
1629
|
+
const {
|
|
1630
|
+
mergeFooterList,
|
|
1631
|
+
mergeFooterMaps
|
|
1632
|
+
} = internalData;
|
|
1633
|
+
if (merges) {
|
|
1634
|
+
const {
|
|
1635
|
+
visibleColumn
|
|
1636
|
+
} = internalData;
|
|
1637
|
+
if (!_xeUtils.default.isArray(merges)) {
|
|
1638
|
+
merges = [merges];
|
|
1639
|
+
}
|
|
1640
|
+
merges.forEach(item => {
|
|
1641
|
+
let {
|
|
1642
|
+
row: margeRow,
|
|
1643
|
+
col: margeCol,
|
|
1644
|
+
rowspan,
|
|
1645
|
+
colspan
|
|
1646
|
+
} = item;
|
|
1647
|
+
const mergeRowIndex = _xeUtils.default.isNumber(margeRow) ? margeRow : -1;
|
|
1648
|
+
let mergeColumnIndex = -1;
|
|
1649
|
+
if (_xeUtils.default.isNumber(margeCol)) {
|
|
1650
|
+
mergeColumnIndex = margeCol;
|
|
1651
|
+
}
|
|
1652
|
+
if (mergeRowIndex > -1 && mergeColumnIndex > -1 && (rowspan || colspan)) {
|
|
1653
|
+
rowspan = _xeUtils.default.toNumber(rowspan) || 1;
|
|
1654
|
+
colspan = _xeUtils.default.toNumber(colspan) || 1;
|
|
1655
|
+
if (rowspan > 1 || colspan > 1) {
|
|
1656
|
+
const row = footerTableData[mergeRowIndex];
|
|
1657
|
+
const column = visibleColumn[mergeColumnIndex];
|
|
1658
|
+
let mergeItem = mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
|
|
1659
|
+
if (mergeItem) {
|
|
1660
|
+
mergeItem.rowspan = rowspan;
|
|
1661
|
+
mergeItem.colspan = colspan;
|
|
1662
|
+
mergeItem._rowspan = rowspan;
|
|
1663
|
+
mergeItem._colspan = colspan;
|
|
1664
|
+
} else {
|
|
1665
|
+
mergeItem = {
|
|
1666
|
+
row: mergeRowIndex,
|
|
1667
|
+
col: mergeColumnIndex,
|
|
1668
|
+
rowspan,
|
|
1669
|
+
colspan,
|
|
1670
|
+
_row: row,
|
|
1671
|
+
_col: column,
|
|
1672
|
+
_rowspan: rowspan,
|
|
1673
|
+
_colspan: colspan
|
|
1674
|
+
};
|
|
1675
|
+
mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem;
|
|
1676
|
+
mergeFooterList.push(mergeItem);
|
|
1677
|
+
}
|
|
1678
|
+
}
|
|
1679
|
+
}
|
|
1680
|
+
});
|
|
1681
|
+
}
|
|
1682
|
+
};
|
|
1580
1683
|
function removeMerges($xeTable, merges, mList, rowList) {
|
|
1581
1684
|
// const props = $xeTable
|
|
1582
1685
|
const internalData = $xeTable;
|
|
@@ -2311,11 +2414,11 @@ function loadScrollXData($xeTable) {
|
|
|
2311
2414
|
const reactData = $xeTable;
|
|
2312
2415
|
const internalData = $xeTable;
|
|
2313
2416
|
const {
|
|
2314
|
-
mergeList,
|
|
2315
|
-
mergeFooterList,
|
|
2316
2417
|
isScrollXBig
|
|
2317
2418
|
} = reactData;
|
|
2318
2419
|
const {
|
|
2420
|
+
mergeBodyList,
|
|
2421
|
+
mergeFooterList,
|
|
2319
2422
|
scrollXStore
|
|
2320
2423
|
} = internalData;
|
|
2321
2424
|
const {
|
|
@@ -2334,7 +2437,7 @@ function loadScrollXData($xeTable) {
|
|
|
2334
2437
|
};
|
|
2335
2438
|
scrollXStore.visibleStartIndex = toVisibleIndex - 1;
|
|
2336
2439
|
scrollXStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
|
|
2337
|
-
calculateMergerOffsetIndex(
|
|
2440
|
+
calculateMergerOffsetIndex(mergeBodyList.concat(mergeFooterList), offsetItem, 'col');
|
|
2338
2441
|
const {
|
|
2339
2442
|
startIndex: offsetStartIndex,
|
|
2340
2443
|
endIndex: offsetEndIndex
|
|
@@ -2559,11 +2662,11 @@ function loadScrollYData($xeTable) {
|
|
|
2559
2662
|
const reactData = $xeTable;
|
|
2560
2663
|
const internalData = $xeTable;
|
|
2561
2664
|
const {
|
|
2562
|
-
mergeList,
|
|
2563
2665
|
isAllOverflow,
|
|
2564
2666
|
isScrollYBig
|
|
2565
2667
|
} = reactData;
|
|
2566
2668
|
const {
|
|
2669
|
+
mergeBodyList,
|
|
2567
2670
|
scrollYStore
|
|
2568
2671
|
} = internalData;
|
|
2569
2672
|
const {
|
|
@@ -2583,7 +2686,7 @@ function loadScrollYData($xeTable) {
|
|
|
2583
2686
|
};
|
|
2584
2687
|
scrollYStore.visibleStartIndex = toVisibleIndex - 1;
|
|
2585
2688
|
scrollYStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
|
|
2586
|
-
calculateMergerOffsetIndex(
|
|
2689
|
+
calculateMergerOffsetIndex(mergeBodyList, offsetItem, 'row');
|
|
2587
2690
|
const {
|
|
2588
2691
|
startIndex: offsetStartIndex,
|
|
2589
2692
|
endIndex: offsetEndIndex
|
|
@@ -3017,7 +3120,7 @@ const Methods = {
|
|
|
3017
3120
|
* 对于某些特殊的场景,比如深层树节点元素发生变动时可能会用到
|
|
3018
3121
|
*/
|
|
3019
3122
|
syncData() {
|
|
3020
|
-
(0, _log.
|
|
3123
|
+
(0, _log.errLog)('vxe.error.delFunc', ['syncData', 'getData']);
|
|
3021
3124
|
return this.$nextTick().then(() => {
|
|
3022
3125
|
this.tableData = [];
|
|
3023
3126
|
return this.$nextTick().then(() => this.loadTableData(this.tableFullData, true));
|
|
@@ -3028,38 +3131,43 @@ const Methods = {
|
|
|
3028
3131
|
* 对于手动更改了排序、筛选...等条件后需要重新处理数据时可能会用到
|
|
3029
3132
|
*/
|
|
3030
3133
|
updateData() {
|
|
3134
|
+
const $xeTable = this;
|
|
3135
|
+
const reactData = $xeTable;
|
|
3031
3136
|
const {
|
|
3032
3137
|
scrollXLoad,
|
|
3033
3138
|
scrollYLoad
|
|
3034
|
-
} =
|
|
3035
|
-
return
|
|
3036
|
-
|
|
3139
|
+
} = reactData;
|
|
3140
|
+
return $xeTable.handleTableData(true).then(() => {
|
|
3141
|
+
$xeTable.updateFooter();
|
|
3037
3142
|
if (scrollXLoad || scrollYLoad) {
|
|
3038
3143
|
if (scrollXLoad) {
|
|
3039
|
-
|
|
3144
|
+
$xeTable.updateScrollXSpace();
|
|
3040
3145
|
}
|
|
3041
3146
|
if (scrollYLoad) {
|
|
3042
|
-
|
|
3147
|
+
$xeTable.updateScrollYSpace();
|
|
3043
3148
|
}
|
|
3044
|
-
return
|
|
3149
|
+
return $xeTable.refreshScroll();
|
|
3045
3150
|
}
|
|
3046
3151
|
}).then(() => {
|
|
3047
|
-
|
|
3048
|
-
return
|
|
3152
|
+
$xeTable.updateCellAreas();
|
|
3153
|
+
return $xeTable.recalculate(true);
|
|
3049
3154
|
}).then(() => {
|
|
3050
3155
|
// 存在滚动行为未结束情况
|
|
3051
|
-
setTimeout(() =>
|
|
3156
|
+
setTimeout(() => $xeTable.recalculate(), 50);
|
|
3052
3157
|
});
|
|
3053
3158
|
},
|
|
3054
3159
|
handleTableData(force) {
|
|
3055
3160
|
const $xeTable = this;
|
|
3161
|
+
const reactData = $xeTable;
|
|
3162
|
+
const internalData = $xeTable;
|
|
3163
|
+
const {
|
|
3164
|
+
scrollYLoad
|
|
3165
|
+
} = reactData;
|
|
3056
3166
|
const {
|
|
3057
|
-
scrollYLoad,
|
|
3058
3167
|
scrollYStore,
|
|
3059
|
-
fullDataRowIdData
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
let fullList = afterFullData;
|
|
3168
|
+
fullDataRowIdData
|
|
3169
|
+
} = internalData;
|
|
3170
|
+
let fullList = internalData.afterFullData;
|
|
3063
3171
|
// 是否进行数据处理
|
|
3064
3172
|
if (force) {
|
|
3065
3173
|
// 更新数据,处理筛选和排序
|
|
@@ -3068,14 +3176,17 @@ const Methods = {
|
|
|
3068
3176
|
fullList = handleVirtualTreeToList($xeTable);
|
|
3069
3177
|
}
|
|
3070
3178
|
const tableData = scrollYLoad ? fullList.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullList.slice(0);
|
|
3179
|
+
const visibleDataRowIdMaps = {};
|
|
3071
3180
|
tableData.forEach((row, $index) => {
|
|
3072
3181
|
const rowid = (0, _util.getRowid)(this, row);
|
|
3073
3182
|
const rest = fullDataRowIdData[rowid];
|
|
3074
3183
|
if (rest) {
|
|
3075
3184
|
rest.$index = $index;
|
|
3076
3185
|
}
|
|
3186
|
+
visibleDataRowIdMaps[rowid] = row;
|
|
3077
3187
|
});
|
|
3078
3188
|
this.tableData = tableData;
|
|
3189
|
+
internalData.visibleDataRowIdData = visibleDataRowIdMaps;
|
|
3079
3190
|
return this.$nextTick();
|
|
3080
3191
|
},
|
|
3081
3192
|
/**
|
|
@@ -3160,7 +3271,7 @@ const Methods = {
|
|
|
3160
3271
|
internalData.tableFullData = fullData;
|
|
3161
3272
|
internalData.tableFullTreeData = treeData;
|
|
3162
3273
|
// 缓存数据
|
|
3163
|
-
$xeTable.cacheRowMap(
|
|
3274
|
+
$xeTable.cacheRowMap(isReset);
|
|
3164
3275
|
// 原始数据
|
|
3165
3276
|
internalData.tableSynchData = datas;
|
|
3166
3277
|
if (isReset) {
|
|
@@ -3178,6 +3289,7 @@ const Methods = {
|
|
|
3178
3289
|
$xeTable.clearMergeFooterItems();
|
|
3179
3290
|
$xeTable.handleTableData(true);
|
|
3180
3291
|
$xeTable.updateFooter();
|
|
3292
|
+
$xeTable.handleUpdateBodyMerge();
|
|
3181
3293
|
return $xeTable.$nextTick().then(() => {
|
|
3182
3294
|
updateHeight($xeTable);
|
|
3183
3295
|
updateStyle($xeTable);
|
|
@@ -3352,7 +3464,7 @@ const Methods = {
|
|
|
3352
3464
|
/**
|
|
3353
3465
|
* 更新数据行的 Map
|
|
3354
3466
|
*/
|
|
3355
|
-
cacheRowMap() {
|
|
3467
|
+
cacheRowMap(isReset) {
|
|
3356
3468
|
const $xeTable = this;
|
|
3357
3469
|
const props = $xeTable;
|
|
3358
3470
|
const reactData = $xeTable;
|
|
@@ -3372,7 +3484,7 @@ const Methods = {
|
|
|
3372
3484
|
const {
|
|
3373
3485
|
lazy
|
|
3374
3486
|
} = treeOpts;
|
|
3375
|
-
const fullAllDataRowIdMaps = Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
|
|
3487
|
+
const fullAllDataRowIdMaps = isReset ? {} : Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
|
|
3376
3488
|
const fullDataRowIdMaps = {};
|
|
3377
3489
|
const {
|
|
3378
3490
|
handleUpdateRowId
|
|
@@ -6381,6 +6493,29 @@ const Methods = {
|
|
|
6381
6493
|
this.updateCellAreas();
|
|
6382
6494
|
this.recalculate(true);
|
|
6383
6495
|
},
|
|
6496
|
+
/**
|
|
6497
|
+
* 处理合并
|
|
6498
|
+
*/
|
|
6499
|
+
handleUpdateBodyMerge() {
|
|
6500
|
+
const $xeTable = this;
|
|
6501
|
+
const reactData = $xeTable;
|
|
6502
|
+
const internalData = $xeTable;
|
|
6503
|
+
const {
|
|
6504
|
+
mergeBodyList
|
|
6505
|
+
} = internalData;
|
|
6506
|
+
internalData.mergeBodyCellMaps = buildMergeData(mergeBodyList);
|
|
6507
|
+
reactData.mergeBodyFlag++;
|
|
6508
|
+
},
|
|
6509
|
+
handleUpdateFooterMerge() {
|
|
6510
|
+
const $xeTable = this;
|
|
6511
|
+
const reactData = $xeTable;
|
|
6512
|
+
const internalData = $xeTable;
|
|
6513
|
+
const {
|
|
6514
|
+
mergeFooterList
|
|
6515
|
+
} = internalData;
|
|
6516
|
+
internalData.mergeFooterCellMaps = buildMergeData(mergeFooterList);
|
|
6517
|
+
reactData.mergeFootFlag++;
|
|
6518
|
+
},
|
|
6384
6519
|
handleTargetLeaveEvent() {
|
|
6385
6520
|
const $xeTable = this;
|
|
6386
6521
|
const internalData = $xeTable;
|
|
@@ -10569,26 +10704,33 @@ const Methods = {
|
|
|
10569
10704
|
*/
|
|
10570
10705
|
updateFooter() {
|
|
10571
10706
|
const $xeTable = this;
|
|
10707
|
+
const props = $xeTable;
|
|
10708
|
+
const reactData = $xeTable;
|
|
10709
|
+
const internalData = $xeTable;
|
|
10572
10710
|
const $xeGrid = $xeTable.$xeGrid;
|
|
10573
10711
|
const {
|
|
10574
10712
|
showFooter,
|
|
10575
|
-
visibleColumn,
|
|
10576
10713
|
footerData,
|
|
10577
10714
|
footerMethod
|
|
10578
|
-
} =
|
|
10715
|
+
} = props;
|
|
10716
|
+
const {
|
|
10717
|
+
visibleColumn,
|
|
10718
|
+
afterFullData
|
|
10719
|
+
} = internalData;
|
|
10579
10720
|
let footData = [];
|
|
10580
10721
|
if (showFooter && footerData && footerData.length) {
|
|
10581
10722
|
footData = footerData.slice(0);
|
|
10582
10723
|
} else if (showFooter && footerMethod) {
|
|
10583
10724
|
footData = visibleColumn.length ? footerMethod({
|
|
10584
10725
|
columns: visibleColumn,
|
|
10585
|
-
data:
|
|
10726
|
+
data: afterFullData,
|
|
10586
10727
|
$table: $xeTable,
|
|
10587
10728
|
$grid: $xeGrid
|
|
10588
10729
|
}) : [];
|
|
10589
10730
|
}
|
|
10590
|
-
|
|
10591
|
-
|
|
10731
|
+
reactData.footerTableData = footData;
|
|
10732
|
+
$xeTable.handleUpdateFooterMerge();
|
|
10733
|
+
return $xeTable.$nextTick();
|
|
10592
10734
|
},
|
|
10593
10735
|
/**
|
|
10594
10736
|
* 更新列状态 updateStatus({ row, column }, cellValue)
|
|
@@ -10613,12 +10755,14 @@ const Methods = {
|
|
|
10613
10755
|
*/
|
|
10614
10756
|
setMergeCells(merges) {
|
|
10615
10757
|
const $xeTable = this;
|
|
10616
|
-
|
|
10758
|
+
const props = $xeTable;
|
|
10759
|
+
if (props.spanMethod) {
|
|
10617
10760
|
(0, _log.errLog)('vxe.error.errConflicts', ['merge-cells', 'span-method']);
|
|
10618
10761
|
}
|
|
10619
|
-
|
|
10620
|
-
|
|
10621
|
-
|
|
10762
|
+
handleBodyMerge($xeTable, merges);
|
|
10763
|
+
$xeTable.handleUpdateBodyMerge();
|
|
10764
|
+
return $xeTable.$nextTick().then(() => {
|
|
10765
|
+
$xeTable.updateCellAreas();
|
|
10622
10766
|
return updateStyle($xeTable);
|
|
10623
10767
|
});
|
|
10624
10768
|
},
|
|
@@ -10628,12 +10772,14 @@ const Methods = {
|
|
|
10628
10772
|
*/
|
|
10629
10773
|
removeMergeCells(merges) {
|
|
10630
10774
|
const $xeTable = this;
|
|
10631
|
-
|
|
10775
|
+
const props = $xeTable;
|
|
10776
|
+
const internalData = $xeTable;
|
|
10777
|
+
if (props.spanMethod) {
|
|
10632
10778
|
(0, _log.errLog)('vxe.error.errConflicts', ['merge-cells', 'span-method']);
|
|
10633
10779
|
}
|
|
10634
|
-
const rest = removeMerges(
|
|
10635
|
-
return
|
|
10636
|
-
|
|
10780
|
+
const rest = removeMerges($xeTable, merges, internalData.mergeBodyList, internalData.afterFullData);
|
|
10781
|
+
return $xeTable.$nextTick().then(() => {
|
|
10782
|
+
$xeTable.updateCellAreas();
|
|
10637
10783
|
updateStyle($xeTable);
|
|
10638
10784
|
return rest;
|
|
10639
10785
|
});
|
|
@@ -10642,37 +10788,46 @@ const Methods = {
|
|
|
10642
10788
|
* 获取所有被合并的单元格
|
|
10643
10789
|
*/
|
|
10644
10790
|
getMergeCells() {
|
|
10645
|
-
|
|
10791
|
+
const $xeTable = this;
|
|
10792
|
+
const internalData = $xeTable;
|
|
10793
|
+
return internalData.mergeBodyList.slice(0);
|
|
10646
10794
|
},
|
|
10647
10795
|
/**
|
|
10648
10796
|
* 清除所有单元格合并
|
|
10649
10797
|
*/
|
|
10650
10798
|
clearMergeCells() {
|
|
10651
10799
|
const $xeTable = this;
|
|
10652
|
-
|
|
10653
|
-
|
|
10800
|
+
const internalData = $xeTable;
|
|
10801
|
+
internalData.mergeBodyList = [];
|
|
10802
|
+
internalData.mergeBodyMaps = {};
|
|
10803
|
+
internalData.mergeBodyCellMaps = {};
|
|
10804
|
+
return $xeTable.$nextTick().then(() => {
|
|
10654
10805
|
return updateStyle($xeTable);
|
|
10655
10806
|
});
|
|
10656
10807
|
},
|
|
10657
10808
|
setMergeFooterItems(merges) {
|
|
10658
10809
|
const $xeTable = this;
|
|
10659
|
-
|
|
10810
|
+
const props = $xeTable;
|
|
10811
|
+
if (props.footerSpanMethod) {
|
|
10660
10812
|
(0, _log.errLog)('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
|
|
10661
10813
|
}
|
|
10662
|
-
|
|
10663
|
-
|
|
10664
|
-
|
|
10814
|
+
handleFooterMerge($xeTable, merges);
|
|
10815
|
+
$xeTable.handleUpdateFooterMerge();
|
|
10816
|
+
return $xeTable.$nextTick().then(() => {
|
|
10817
|
+
$xeTable.updateCellAreas();
|
|
10665
10818
|
return updateStyle($xeTable);
|
|
10666
10819
|
});
|
|
10667
10820
|
},
|
|
10668
10821
|
removeMergeFooterItems(merges) {
|
|
10669
10822
|
const $xeTable = this;
|
|
10670
|
-
|
|
10823
|
+
const props = $xeTable;
|
|
10824
|
+
const internalData = $xeTable;
|
|
10825
|
+
if (props.footerSpanMethod) {
|
|
10671
10826
|
(0, _log.errLog)('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
|
|
10672
10827
|
}
|
|
10673
|
-
const rest = removeMerges(
|
|
10674
|
-
return
|
|
10675
|
-
|
|
10828
|
+
const rest = removeMerges($xeTable, merges, internalData.mergeFooterList);
|
|
10829
|
+
return $xeTable.$nextTick().then(() => {
|
|
10830
|
+
$xeTable.updateCellAreas();
|
|
10676
10831
|
updateStyle($xeTable);
|
|
10677
10832
|
return rest;
|
|
10678
10833
|
});
|
|
@@ -10681,15 +10836,20 @@ const Methods = {
|
|
|
10681
10836
|
* 获取所有被合并的表尾
|
|
10682
10837
|
*/
|
|
10683
10838
|
getMergeFooterItems() {
|
|
10684
|
-
|
|
10839
|
+
const $xeTable = this;
|
|
10840
|
+
const internalData = $xeTable;
|
|
10841
|
+
return internalData.mergeFooterList.slice(0);
|
|
10685
10842
|
},
|
|
10686
10843
|
/**
|
|
10687
10844
|
* 清除所有表尾合并
|
|
10688
10845
|
*/
|
|
10689
10846
|
clearMergeFooterItems() {
|
|
10690
10847
|
const $xeTable = this;
|
|
10691
|
-
|
|
10692
|
-
|
|
10848
|
+
const internalData = $xeTable;
|
|
10849
|
+
internalData.mergeFooterList = [];
|
|
10850
|
+
internalData.mergeFooterMaps = {};
|
|
10851
|
+
internalData.mergeFooterCellMaps = {};
|
|
10852
|
+
return $xeTable.$nextTick().then(() => {
|
|
10693
10853
|
return updateStyle($xeTable);
|
|
10694
10854
|
});
|
|
10695
10855
|
},
|