vxe-table 3.12.8 → 3.12.10-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/grid/src/grid.js +6 -1
- package/es/index.css +1 -1
- package/es/index.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/module/export/mixin.js +3 -3
- package/es/table/module/filter/mixin.js +3 -3
- package/es/table/module/keyboard/mixin.js +4 -4
- package/es/table/module/menu/mixin.js +2 -2
- package/es/table/module/validator/mixin.js +2 -2
- package/es/table/src/body.js +262 -363
- package/es/table/src/footer.js +135 -154
- package/es/table/src/header.js +120 -100
- package/es/table/src/methods.js +1175 -816
- package/es/table/src/props.js +9 -3
- package/es/table/src/table.js +187 -103
- package/es/table/src/util.js +35 -21
- package/es/table/style.css +146 -63
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +14 -4
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +146 -63
- package/es/vxe-table/style.min.css +1 -1
- package/lib/grid/src/grid.js +4 -1
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/index.css +1 -1
- package/lib/index.min.css +1 -1
- package/lib/index.umd.js +1920 -1599
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/module/export/mixin.js +3 -3
- package/lib/table/module/export/mixin.min.js +1 -1
- package/lib/table/module/filter/mixin.js +4 -4
- package/lib/table/module/filter/mixin.min.js +1 -1
- package/lib/table/module/keyboard/mixin.js +5 -5
- package/lib/table/module/keyboard/mixin.min.js +1 -1
- package/lib/table/module/menu/mixin.js +2 -2
- package/lib/table/module/menu/mixin.min.js +1 -1
- package/lib/table/module/validator/mixin.js +2 -2
- package/lib/table/module/validator/mixin.min.js +1 -1
- package/lib/table/src/body.js +205 -381
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/footer.js +124 -151
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/header.js +97 -74
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/methods.js +1261 -875
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/props.js +9 -3
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/table.js +171 -90
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +38 -22
- package/lib/table/src/util.min.js +1 -1
- package/lib/table/style/style.css +146 -63
- package/lib/table/style/style.min.css +1 -1
- package/lib/ui/index.js +14 -4
- 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/lib/vxe-table/style/style.css +146 -63
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/grid/src/grid.ts +6 -1
- package/packages/table/module/export/mixin.ts +3 -3
- package/packages/table/module/filter/mixin.ts +3 -3
- package/packages/table/module/keyboard/mixin.ts +4 -4
- package/packages/table/module/menu/mixin.ts +2 -2
- package/packages/table/module/validator/mixin.ts +2 -2
- package/packages/table/src/body.ts +296 -436
- package/packages/table/src/footer.ts +148 -164
- package/packages/table/src/header.ts +135 -111
- package/packages/table/src/methods.ts +1249 -873
- package/packages/table/src/props.ts +9 -3
- package/packages/table/src/table.ts +195 -146
- package/packages/table/src/util.ts +40 -23
- package/packages/ui/index.ts +13 -3
- package/styles/components/table.scss +164 -74
- /package/es/{iconfont.1736406699090.ttf → iconfont.1736688976404.ttf} +0 -0
- /package/es/{iconfont.1736406699090.woff → iconfont.1736688976404.woff} +0 -0
- /package/es/{iconfont.1736406699090.woff2 → iconfont.1736688976404.woff2} +0 -0
- /package/lib/{iconfont.1736406699090.ttf → iconfont.1736688976404.ttf} +0 -0
- /package/lib/{iconfont.1736406699090.woff → iconfont.1736688976404.woff} +0 -0
- /package/lib/{iconfont.1736406699090.woff2 → iconfont.1736688976404.woff2} +0 -0
package/es/table/src/footer.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import XEUtils from 'xe-utils';
|
|
2
2
|
import { VxeUI } from '../../ui';
|
|
3
3
|
import { getClass } from '../../ui/src/utils';
|
|
4
|
-
import { updateCellTitle
|
|
4
|
+
import { updateCellTitle } from '../../ui/src/dom';
|
|
5
5
|
const renderType = 'footer';
|
|
6
6
|
const { renderer, renderEmptyElement } = VxeUI;
|
|
7
7
|
function mergeFooterMethod(mergeFooterList, _rowIndex, _columnIndex) {
|
|
@@ -18,16 +18,25 @@ function mergeFooterMethod(mergeFooterList, _rowIndex, _columnIndex) {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIndex) {
|
|
21
|
-
const
|
|
22
|
-
const
|
|
21
|
+
const props = _vm;
|
|
22
|
+
const $xeTable = _vm.$parent;
|
|
23
|
+
const tableProps = $xeTable;
|
|
24
|
+
const tableReactData = $xeTable;
|
|
25
|
+
const tableInternalData = $xeTable;
|
|
26
|
+
const { fixedType } = props;
|
|
27
|
+
const { footerCellClassName, footerCellStyle, footerAlign: allFooterAlign, footerSpanMethod, align: allAlign, columnKey, showFooterOverflow: allColumnFooterOverflow } = tableProps;
|
|
28
|
+
const { scrollXLoad, scrollYLoad, overflowX, currentColumn, mergeFooterList } = tableReactData;
|
|
29
|
+
const { scrollXStore } = tableInternalData;
|
|
30
|
+
const tooltipOpts = $xeTable.computeTooltipOpts;
|
|
31
|
+
const columnOpts = $xeTable.computeColumnOpts;
|
|
23
32
|
return tableColumn.map((column, $columnIndex) => {
|
|
24
33
|
const { type, showFooterOverflow, footerAlign, align, footerClassName, editRender, cellRender } = column;
|
|
25
34
|
const renderOpts = editRender || cellRender;
|
|
26
35
|
const compConf = renderOpts ? renderer.get(renderOpts.name) : null;
|
|
27
|
-
const showAllTip = tooltipOpts.showAll
|
|
36
|
+
const showAllTip = tooltipOpts.showAll;
|
|
28
37
|
const isColGroup = column.children && column.children.length;
|
|
29
38
|
const fixedHiddenColumn = fixedType ? column.fixed !== fixedType && !isColGroup : column.fixed && overflowX;
|
|
30
|
-
const footOverflow = XEUtils.
|
|
39
|
+
const footOverflow = XEUtils.eqNull(showFooterOverflow) ? allColumnFooterOverflow : showFooterOverflow;
|
|
31
40
|
const footAlign = footerAlign || (compConf ? compConf.tableFooterCellAlign : '') || allFooterAlign || align || (compConf ? compConf.tableCellAlign : '') || allAlign;
|
|
32
41
|
let showEllipsis = footOverflow === 'ellipsis';
|
|
33
42
|
const showTitle = footOverflow === 'title';
|
|
@@ -35,13 +44,14 @@ function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIn
|
|
|
35
44
|
let hasEllipsis = showTitle || showTooltip || showEllipsis;
|
|
36
45
|
const attrs = { colid: column.id };
|
|
37
46
|
const tfOns = {};
|
|
38
|
-
const columnIndex = $
|
|
39
|
-
const _columnIndex = $
|
|
47
|
+
const columnIndex = $xeTable.getColumnIndex(column);
|
|
48
|
+
const _columnIndex = $xeTable.getVTColumnIndex(column);
|
|
40
49
|
const itemIndex = _columnIndex;
|
|
41
50
|
const cellParams = {
|
|
42
|
-
$table: $
|
|
43
|
-
$grid: $
|
|
51
|
+
$table: $xeTable,
|
|
52
|
+
$grid: $xeTable.xegrid,
|
|
44
53
|
row,
|
|
54
|
+
rowIndex: _rowIndex,
|
|
45
55
|
_rowIndex,
|
|
46
56
|
$rowIndex,
|
|
47
57
|
column,
|
|
@@ -54,7 +64,7 @@ function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIn
|
|
|
54
64
|
type: renderType,
|
|
55
65
|
data: footerTableData
|
|
56
66
|
};
|
|
57
|
-
//
|
|
67
|
+
// 纵向虚拟滚动不支持动态行高
|
|
58
68
|
if (scrollXLoad && !hasEllipsis) {
|
|
59
69
|
showEllipsis = hasEllipsis = true;
|
|
60
70
|
}
|
|
@@ -64,27 +74,23 @@ function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIn
|
|
|
64
74
|
updateCellTitle(evnt.currentTarget, column);
|
|
65
75
|
}
|
|
66
76
|
else if (showTooltip || showAllTip) {
|
|
67
|
-
$
|
|
77
|
+
$xeTable.triggerFooterTooltipEvent(evnt, cellParams);
|
|
68
78
|
}
|
|
69
79
|
};
|
|
70
80
|
}
|
|
71
81
|
if (showTooltip || showAllTip) {
|
|
72
82
|
tfOns.mouseleave = (evnt) => {
|
|
73
83
|
if (showTooltip || showAllTip) {
|
|
74
|
-
$
|
|
84
|
+
$xeTable.handleTargetLeaveEvent(evnt);
|
|
75
85
|
}
|
|
76
86
|
};
|
|
77
87
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
tfOns.dblclick = (evnt) => {
|
|
85
|
-
$xetable.emitEvent('footer-cell-dblclick', Object.assign({ cell: evnt.currentTarget }, cellParams), evnt);
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
+
tfOns.click = (evnt) => {
|
|
89
|
+
$xeTable.dispatchEvent('footer-cell-click', Object.assign({ cell: evnt.currentTarget }, cellParams), evnt);
|
|
90
|
+
};
|
|
91
|
+
tfOns.dblclick = (evnt) => {
|
|
92
|
+
$xeTable.dispatchEvent('footer-cell-dblclick', Object.assign({ cell: evnt.currentTarget }, cellParams), evnt);
|
|
93
|
+
};
|
|
88
94
|
// 合并行或列
|
|
89
95
|
if (mergeFooterList.length) {
|
|
90
96
|
const spanRest = mergeFooterMethod(mergeFooterList, _rowIndex, _columnIndex);
|
|
@@ -115,6 +121,10 @@ function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIn
|
|
|
115
121
|
}
|
|
116
122
|
}
|
|
117
123
|
const isAutoCellWidth = !column.resizeWidth && (column.minWidth === 'auto' || column.width === 'auto');
|
|
124
|
+
let isPreLoadStatus = false;
|
|
125
|
+
if (scrollXLoad && !column.fixed && (_columnIndex < scrollXStore.visibleStartIndex || _columnIndex > scrollXStore.visibleEndIndex)) {
|
|
126
|
+
isPreLoadStatus = true;
|
|
127
|
+
}
|
|
118
128
|
return h('td', {
|
|
119
129
|
class: ['vxe-footer--column', column.id, {
|
|
120
130
|
[`col--${footAlign}`]: footAlign,
|
|
@@ -126,7 +136,7 @@ function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIn
|
|
|
126
136
|
'col--current': currentColumn === column
|
|
127
137
|
}, getClass(footerClassName, cellParams), getClass(footerCellClassName, cellParams)],
|
|
128
138
|
attrs,
|
|
129
|
-
style: footerCellStyle ? (XEUtils.isFunction(footerCellStyle) ? footerCellStyle(cellParams) : footerCellStyle) :
|
|
139
|
+
style: footerCellStyle ? (XEUtils.isFunction(footerCellStyle) ? footerCellStyle(cellParams) : footerCellStyle) : undefined,
|
|
130
140
|
on: tfOns,
|
|
131
141
|
key: columnKey || scrollXLoad || scrollYLoad || columnOpts.useKey || columnOpts.drag ? column.id : $columnIndex
|
|
132
142
|
}, [
|
|
@@ -136,24 +146,20 @@ function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIn
|
|
|
136
146
|
'c--tooltip': showTooltip,
|
|
137
147
|
'c--ellipsis': showEllipsis
|
|
138
148
|
}]
|
|
139
|
-
}, column.renderFooter(h, cellParams))
|
|
149
|
+
}, isPreLoadStatus ? [] : column.renderFooter(h, cellParams))
|
|
140
150
|
]);
|
|
141
|
-
})
|
|
142
|
-
? [
|
|
143
|
-
h('td', {
|
|
144
|
-
key: `gr${$rowIndex}`,
|
|
145
|
-
class: 'vxe-footer--gutter col--gutter'
|
|
146
|
-
})
|
|
147
|
-
]
|
|
148
|
-
: []);
|
|
151
|
+
});
|
|
149
152
|
}
|
|
150
153
|
function renderHeads(h, _vm, renderColumnList) {
|
|
151
|
-
const $xeTable = _vm.$parent;
|
|
152
154
|
const props = _vm;
|
|
155
|
+
const $xeTable = _vm.$parent;
|
|
156
|
+
const tableProps = $xeTable;
|
|
157
|
+
const tableReactData = $xeTable;
|
|
158
|
+
const { fixedType, footerTableData } = props;
|
|
159
|
+
const { footerRowClassName, footerRowStyle } = tableProps;
|
|
160
|
+
const { isDragColMove } = tableReactData;
|
|
153
161
|
const columnOpts = $xeTable.computeColumnOpts;
|
|
154
162
|
const columnDragOpts = $xeTable.computeColumnDragOpts;
|
|
155
|
-
const { fixedType, footerTableData } = props;
|
|
156
|
-
const { footerRowClassName, footerRowStyle, isDragColMove } = $xeTable;
|
|
157
163
|
return footerTableData.map((row, $rowIndex) => {
|
|
158
164
|
const _rowIndex = $rowIndex;
|
|
159
165
|
const rowParams = { $table: $xeTable, row, _rowIndex, $rowIndex, fixed: fixedType, type: renderType };
|
|
@@ -167,7 +173,7 @@ function renderHeads(h, _vm, renderColumnList) {
|
|
|
167
173
|
'vxe-footer--row',
|
|
168
174
|
footerRowClassName ? XEUtils.isFunction(footerRowClassName) ? footerRowClassName(rowParams) : footerRowClassName : ''
|
|
169
175
|
],
|
|
170
|
-
style: footerRowStyle ? (XEUtils.isFunction(footerRowStyle) ? footerRowStyle(rowParams) : footerRowStyle) :
|
|
176
|
+
style: footerRowStyle ? (XEUtils.isFunction(footerRowStyle) ? footerRowStyle(rowParams) : footerRowStyle) : undefined
|
|
171
177
|
}
|
|
172
178
|
}, renderRows(h, _vm, renderColumnList, footerTableData, row, $rowIndex, _rowIndex));
|
|
173
179
|
}
|
|
@@ -177,34 +183,54 @@ function renderHeads(h, _vm, renderColumnList) {
|
|
|
177
183
|
'vxe-footer--row',
|
|
178
184
|
footerRowClassName ? XEUtils.isFunction(footerRowClassName) ? footerRowClassName(rowParams) : footerRowClassName : ''
|
|
179
185
|
],
|
|
180
|
-
style: footerRowStyle ? (XEUtils.isFunction(footerRowStyle) ? footerRowStyle(rowParams) : footerRowStyle) :
|
|
186
|
+
style: footerRowStyle ? (XEUtils.isFunction(footerRowStyle) ? footerRowStyle(rowParams) : footerRowStyle) : undefined
|
|
181
187
|
}, renderRows(h, _vm, renderColumnList, footerTableData, row, $rowIndex, _rowIndex));
|
|
182
188
|
});
|
|
183
189
|
}
|
|
184
190
|
export default {
|
|
185
191
|
name: 'VxeTableFooter',
|
|
186
192
|
props: {
|
|
187
|
-
footerTableData:
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
193
|
+
footerTableData: {
|
|
194
|
+
type: Array,
|
|
195
|
+
default: () => []
|
|
196
|
+
},
|
|
197
|
+
tableColumn: {
|
|
198
|
+
type: Array,
|
|
199
|
+
default: () => []
|
|
200
|
+
},
|
|
201
|
+
fixedColumn: {
|
|
202
|
+
type: Array,
|
|
203
|
+
default: () => []
|
|
204
|
+
},
|
|
205
|
+
fixedType: {
|
|
206
|
+
type: String,
|
|
207
|
+
default: null
|
|
208
|
+
}
|
|
192
209
|
},
|
|
193
210
|
mounted() {
|
|
194
|
-
const
|
|
195
|
-
const
|
|
211
|
+
const _vm = this;
|
|
212
|
+
const props = _vm;
|
|
213
|
+
const $xeTable = _vm.$parent;
|
|
214
|
+
const tableInternalData = $xeTable;
|
|
215
|
+
const { fixedType } = props;
|
|
216
|
+
const { elemStore } = tableInternalData;
|
|
196
217
|
const prefix = `${fixedType || 'main'}-footer-`;
|
|
197
|
-
elemStore[`${prefix}wrapper`] =
|
|
198
|
-
elemStore[`${prefix}
|
|
199
|
-
elemStore[`${prefix}
|
|
200
|
-
elemStore[`${prefix}
|
|
201
|
-
elemStore[`${prefix}
|
|
218
|
+
elemStore[`${prefix}wrapper`] = _vm.$refs.refElem;
|
|
219
|
+
elemStore[`${prefix}scroll`] = _vm.$refs.refFooterScroll;
|
|
220
|
+
elemStore[`${prefix}table`] = _vm.$refs.refFooterTable;
|
|
221
|
+
elemStore[`${prefix}colgroup`] = _vm.$refs.refFooterColgroup;
|
|
222
|
+
elemStore[`${prefix}list`] = _vm.$refs.refFooterTFoot;
|
|
223
|
+
elemStore[`${prefix}xSpace`] = _vm.$refs.refFooterXSpace;
|
|
202
224
|
},
|
|
203
225
|
destroyed() {
|
|
204
|
-
const
|
|
205
|
-
const
|
|
226
|
+
const props = this;
|
|
227
|
+
const $xeTable = this.$parent;
|
|
228
|
+
const tableInternalData = $xeTable;
|
|
229
|
+
const { fixedType } = props;
|
|
230
|
+
const { elemStore } = tableInternalData;
|
|
206
231
|
const prefix = `${fixedType || 'main'}-footer-`;
|
|
207
232
|
elemStore[`${prefix}wrapper`] = null;
|
|
233
|
+
elemStore[`${prefix}scroll`] = null;
|
|
208
234
|
elemStore[`${prefix}table`] = null;
|
|
209
235
|
elemStore[`${prefix}colgroup`] = null;
|
|
210
236
|
elemStore[`${prefix}list`] = null;
|
|
@@ -216,26 +242,26 @@ export default {
|
|
|
216
242
|
const tableProps = $xeTable;
|
|
217
243
|
const tableReactData = $xeTable;
|
|
218
244
|
const tableInternalData = $xeTable;
|
|
219
|
-
const {
|
|
245
|
+
const { xID } = $xeTable;
|
|
220
246
|
const { fixedType, fixedColumn, tableColumn } = props;
|
|
221
247
|
const { spanMethod, footerSpanMethod, showFooterOverflow: allColumnFooterOverflow } = tableProps;
|
|
222
248
|
const { visibleColumn, fullColumnIdData } = tableInternalData;
|
|
223
|
-
const { isGroup, scrollXLoad, scrollYLoad,
|
|
249
|
+
const { isGroup, scrollXLoad, scrollYLoad, dragCol } = tableReactData;
|
|
224
250
|
let renderColumnList = tableColumn;
|
|
251
|
+
let isOptimizeMode = false;
|
|
225
252
|
// 如果是使用优化模式
|
|
226
|
-
if (
|
|
227
|
-
|
|
228
|
-
if (scrollXLoad || scrollYLoad || allColumnFooterOverflow) {
|
|
253
|
+
if (scrollXLoad || scrollYLoad || allColumnFooterOverflow) {
|
|
254
|
+
if (spanMethod || footerSpanMethod) {
|
|
229
255
|
// 如果不支持优化模式
|
|
230
|
-
if (spanMethod || footerSpanMethod) {
|
|
231
|
-
renderColumnList = visibleColumn;
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
renderColumnList = fixedColumn || [];
|
|
235
|
-
}
|
|
236
256
|
}
|
|
237
257
|
else {
|
|
238
|
-
|
|
258
|
+
isOptimizeMode = true;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
if (fixedType) {
|
|
262
|
+
renderColumnList = visibleColumn;
|
|
263
|
+
if (isOptimizeMode) {
|
|
264
|
+
renderColumnList = fixedColumn || [];
|
|
239
265
|
}
|
|
240
266
|
}
|
|
241
267
|
if (!fixedType && !isGroup) {
|
|
@@ -263,104 +289,59 @@ export default {
|
|
|
263
289
|
}
|
|
264
290
|
}
|
|
265
291
|
}
|
|
266
|
-
const ons = {};
|
|
267
|
-
if (!fixedType) {
|
|
268
|
-
ons.scroll = this.scrollEvent;
|
|
269
|
-
}
|
|
270
292
|
return h('div', {
|
|
293
|
+
ref: 'refElem',
|
|
271
294
|
class: ['vxe-table--footer-wrapper', fixedType ? `fixed-${fixedType}--wrapper` : 'body--wrapper'],
|
|
272
295
|
attrs: {
|
|
273
|
-
xid:
|
|
274
|
-
}
|
|
275
|
-
on: ons
|
|
296
|
+
xid: xID
|
|
297
|
+
}
|
|
276
298
|
}, [
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
:
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
attrs: {
|
|
286
|
-
xid: tId,
|
|
287
|
-
cellspacing: 0,
|
|
288
|
-
cellpadding: 0,
|
|
289
|
-
border: 0
|
|
290
|
-
},
|
|
291
|
-
ref: 'table'
|
|
299
|
+
h('div', {
|
|
300
|
+
ref: 'refFooterScroll',
|
|
301
|
+
class: 'vxe-table--footer-inner-wrapper',
|
|
302
|
+
on: {
|
|
303
|
+
scroll(evnt) {
|
|
304
|
+
$xeTable.triggerFooterScrollEvent(evnt, fixedType);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
292
307
|
}, [
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
+
fixedType
|
|
309
|
+
? renderEmptyElement($xeTable)
|
|
310
|
+
: h('div', {
|
|
311
|
+
ref: 'refFooterXSpace',
|
|
312
|
+
class: 'vxe-body--x-space'
|
|
313
|
+
}),
|
|
314
|
+
h('table', {
|
|
315
|
+
ref: 'refFooterTable',
|
|
316
|
+
class: 'vxe-table--footer',
|
|
317
|
+
attrs: {
|
|
318
|
+
xid: xID,
|
|
319
|
+
cellspacing: 0,
|
|
320
|
+
cellpadding: 0,
|
|
321
|
+
border: 0
|
|
322
|
+
}
|
|
323
|
+
}, [
|
|
324
|
+
/**
|
|
325
|
+
* 列宽
|
|
326
|
+
*/
|
|
327
|
+
h('colgroup', {
|
|
328
|
+
ref: 'refFooterColgroup'
|
|
329
|
+
}, renderColumnList.map((column, $columnIndex) => {
|
|
330
|
+
return h('col', {
|
|
308
331
|
attrs: {
|
|
309
|
-
name:
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
332
|
+
name: column.id
|
|
333
|
+
},
|
|
334
|
+
key: $columnIndex
|
|
335
|
+
});
|
|
336
|
+
})),
|
|
337
|
+
/**
|
|
338
|
+
* 底部
|
|
339
|
+
*/
|
|
340
|
+
h('tfoot', {
|
|
341
|
+
ref: 'refFooterTFoot'
|
|
342
|
+
}, renderHeads(h, this, renderColumnList))
|
|
343
|
+
])
|
|
320
344
|
])
|
|
321
345
|
]);
|
|
322
|
-
},
|
|
323
|
-
methods: {
|
|
324
|
-
/**
|
|
325
|
-
* 滚动处理
|
|
326
|
-
* 如果存在列固定左侧,同步更新滚动状态
|
|
327
|
-
* 如果存在列固定右侧,同步更新滚动状态
|
|
328
|
-
*/
|
|
329
|
-
scrollEvent(evnt) {
|
|
330
|
-
const $xeTable = this.$parent;
|
|
331
|
-
const tableInternalData = $xeTable;
|
|
332
|
-
const { inVirtualScroll, inBodyScroll } = tableInternalData;
|
|
333
|
-
if (inVirtualScroll) {
|
|
334
|
-
return;
|
|
335
|
-
}
|
|
336
|
-
if (inBodyScroll) {
|
|
337
|
-
return;
|
|
338
|
-
}
|
|
339
|
-
const { fixedType } = this;
|
|
340
|
-
const { tableHeader, tableBody, tableFooter } = $xeTable.$refs;
|
|
341
|
-
const headerElem = tableHeader ? tableHeader.$el : null;
|
|
342
|
-
const footerElem = tableFooter ? tableFooter.$el : null;
|
|
343
|
-
if (!footerElem) {
|
|
344
|
-
return;
|
|
345
|
-
}
|
|
346
|
-
const bodyElem = tableBody ? tableBody.$el : null;
|
|
347
|
-
if (!bodyElem) {
|
|
348
|
-
return;
|
|
349
|
-
}
|
|
350
|
-
const xHandleEl = $xeTable.$refs.refScrollXHandleElem;
|
|
351
|
-
const scrollLeft = footerElem.scrollLeft;
|
|
352
|
-
const isRollX = true;
|
|
353
|
-
const isRollY = false;
|
|
354
|
-
const scrollTop = bodyElem.scrollTop;
|
|
355
|
-
tableInternalData.inFooterScroll = true;
|
|
356
|
-
setScrollLeft(xHandleEl, scrollLeft);
|
|
357
|
-
setScrollLeft(headerElem, scrollLeft);
|
|
358
|
-
setScrollLeft(bodyElem, scrollLeft);
|
|
359
|
-
$xeTable.triggerScrollXEvent(evnt);
|
|
360
|
-
$xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
|
|
361
|
-
type: renderType,
|
|
362
|
-
fixed: fixedType
|
|
363
|
-
});
|
|
364
|
-
}
|
|
365
346
|
}
|
|
366
347
|
};
|