Skip to content

Commit f8b4366

Browse files
author
黄书伟
committed
1、Table 组件修复单元格设置背景色,背景色超出单元格的问题
2、Table 组件修复最后一列右距中时,垂直滚动条会遮住文字
1 parent fd93db1 commit f8b4366

File tree

4 files changed

+82
-37
lines changed

4 files changed

+82
-37
lines changed

examples/doc/updateLog.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
2017-1-23 未发布
1+
2017-1-23 已发布
22
1、Table 组件修复当表格无数据时,并且有横向滚动条,表头下方也存在滚动条的bug -- 已完成
3+
2、Table 组件修复单元格设置背景色,背景色超出单元格的问题 -- 已完成
4+
3、Table 组件修复最后一列右距中时,垂直滚动条会遮住文字 -- 已完成
35

46
2017-1-23 已发布
57
1、Table 组件优化复杂表头行合并时,会添加空行

libs/v-table/src/table-resize-mixin.js

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -190,21 +190,12 @@ exports.default = {
190190

191191
if (this.hasFrozenColumn) {
192192

193-
differ -= 2;
193+
differ -= 1;
194194
}
195195

196196
if (currentWidth >= initResizeWidths || differ > 0) {
197197

198-
var average = differ / this.resizeColumns.length;
199-
200-
this.internalColumns.map(function (item) {
201-
202-
if (item.isResize) {
203-
item.width += average;
204-
}
205-
206-
return item;
207-
});
198+
this.setColumnsWidth(differ);
208199
} else {
209200

210201
this.columns.forEach(function (col, index) {
@@ -217,6 +208,33 @@ exports.default = {
217208
}
218209

219210
this.containerWidthCheck();
211+
},
212+
setColumnsWidth: function setColumnsWidth(differ) {
213+
214+
var resizeColumnsLen = this.resizeColumns.length,
215+
average = Math.floor(differ / resizeColumnsLen),
216+
totalAverage = average * resizeColumnsLen,
217+
leftAverage = differ - totalAverage,
218+
leftAverageFloor = Math.floor(leftAverage),
219+
averageColumnsWidthArr = new Array(resizeColumnsLen).fill(average),
220+
index = 0;
221+
222+
for (var i = 0; i < leftAverageFloor; i++) {
223+
224+
averageColumnsWidthArr[i] += 1;
225+
}
226+
227+
averageColumnsWidthArr[resizeColumnsLen - 1] += leftAverage - leftAverageFloor;
228+
229+
this.internalColumns.map(function (item) {
230+
231+
if (item.isResize) {
232+
233+
item.width += averageColumnsWidthArr[index++];
234+
}
235+
236+
return item;
237+
});
220238
}
221239
},
222240

packages/v-table/src/table-resize-mixin.js

Lines changed: 49 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ export default {
2323
this.internalColumns.forEach(item => {
2424

2525
if (item.isResize) {
26-
result.push({width: item.width, field: item.field});
27-
}
26+
result.push({width: item.width, field: item.field});
27+
}
2828

29-
})
29+
})
3030

3131
this.resizeColumns = result;
3232
},
@@ -43,14 +43,14 @@ export default {
4343

4444
this.containerWidthCheckTimer = setTimeout(x => {
4545

46-
let tableContainerWidth = this.$el.clientWidth;
46+
let tableContainerWidth = this.$el.clientWidth;
4747

48-
// 3为容错值
49-
if (tableContainerWidth - this.internalWidth > 3) {
48+
// 3为容错值
49+
if (tableContainerWidth - this.internalWidth > 3) {
5050

51-
this.tableResize();
52-
}
53-
})
51+
this.tableResize();
52+
}
53+
})
5454
},
5555

5656
// 目前适用于有横向自适应功能的表格
@@ -149,12 +149,12 @@ export default {
149149
let differ = bottom2 - totalColumnsHeight;
150150

151151
// 高度足够(table 顶部到文档底部的高度 > 表格高度+滚动条高度)
152-
if (bottom2 > totalColumnsHeight + scrollbarWidth){
152+
if (bottom2 > totalColumnsHeight + scrollbarWidth) {
153153

154154
currentHeight += scrollbarWidth;
155155

156156
}
157-
else if(differ > 0 && differ < scrollbarWidth){
157+
else if (differ > 0 && differ < scrollbarWidth) {
158158

159159
currentHeight += differ;
160160
}
@@ -208,35 +208,60 @@ export default {
208208

209209
if (this.hasFrozenColumn) {
210210

211-
differ -= 2;
211+
differ -= 1;
212212
}
213213

214214
if (currentWidth >= initResizeWidths || differ > 0) {
215215

216-
var average = differ / this.resizeColumns.length;
216+
this.setColumnsWidth(differ);
217217

218-
this.internalColumns.map(item => {
219-
220-
if (item.isResize) {
221-
item.width += average;
222-
}
223-
224-
return item;
225-
})
226218
} else { // 最小化有滚动条时
227219

228220
this.columns.forEach((col, index) => {
229221

230222
if (col.isResize) {
231223

232-
this.internalColumns[index].width = col.width;
233-
}
234-
})
224+
this.internalColumns[index].width = col.width;
225+
}
226+
})
235227
}
236228

237229
this.containerWidthCheck();
238230
},
239231

232+
/*
233+
* 自适应时给列设置宽度
234+
* 备注:浏览器 px 必须精确多整数
235+
* */
236+
setColumnsWidth(differ){
237+
238+
let resizeColumnsLen = this.resizeColumns.length,
239+
average = Math.floor(differ / resizeColumnsLen),
240+
totalAverage = average * resizeColumnsLen,
241+
leftAverage = differ - totalAverage,
242+
leftAverageFloor = Math.floor(leftAverage),
243+
averageColumnsWidthArr = (new Array(resizeColumnsLen)).fill(average),
244+
index = 0;
245+
246+
// 剩余的宽度以整数的形式平均到每个列
247+
for (var i = 0; i < leftAverageFloor; i++) {
248+
249+
averageColumnsWidthArr[i] += 1;
250+
}
251+
252+
// 剩余的小数给最后一列
253+
averageColumnsWidthArr[resizeColumnsLen - 1] += (leftAverage - leftAverageFloor);
254+
255+
this.internalColumns.map(item => {
256+
257+
if (item.isResize) {
258+
259+
item.width += averageColumnsWidthArr[index++];
260+
}
261+
262+
return item;
263+
})
264+
}
240265
},
241266

242267
mounted(){

umd/js/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)