It takes me least 4 hours.😢
This commit is contained in:
梁灏 2017-01-13 20:18:21 +08:00
parent 8f5b16867d
commit d16dce64d6
2 changed files with 235 additions and 72 deletions

View file

@ -169,6 +169,7 @@
showSlotHeader: true, showSlotHeader: true,
showSlotFooter: true, showSlotFooter: true,
bodyHeight: 0, bodyHeight: 0,
bodyRealHeight: 0,
scrollBarWidth: getScrollBarSize() scrollBarWidth: getScrollBarSize()
}; };
}, },
@ -206,7 +207,17 @@
tableStyle () { tableStyle () {
let style = {}; let style = {};
if (this.tableWidth !== 0) { if (this.tableWidth !== 0) {
const width = this.bodyHeight === 0 ? this.tableWidth : this.tableWidth - this.scrollBarWidth; let width = '';
if (this.bodyHeight === 0) {
width = this.tableWidth;
} else {
if (this.bodyHeight > this.bodyRealHeight) {
width = this.tableWidth;
} else {
width = this.tableWidth - this.scrollBarWidth;
}
}
// const width = this.bodyHeight === 0 ? this.tableWidth : this.tableWidth - this.scrollBarWidth;
style.width = `${width}px`; style.width = `${width}px`;
} }
return style; return style;
@ -242,7 +253,13 @@
fixedBodyStyle () { fixedBodyStyle () {
let style = {}; let style = {};
if (this.bodyHeight !== 0) { if (this.bodyHeight !== 0) {
style.height = this.scrollBarWidth > 0 ? `${this.bodyHeight}px` : `${this.bodyHeight - 1}px`; let height = this.bodyHeight + this.scrollBarWidth - 1;
if (this.width && this.width < this.tableWidth){
height = this.bodyHeight;
}
// style.height = this.scrollBarWidth > 0 ? `${this.bodyHeight}px` : `${this.bodyHeight - 1}px`;
style.height = this.scrollBarWidth > 0 ? `${height}px` : `${height - 1}px`;
} }
return style; return style;
}, },
@ -315,6 +332,8 @@
this.columnsWidth = columnsWidth; this.columnsWidth = columnsWidth;
} }
}); });
// get table real height,for fixed when set height prop,but height < table's height,show scrollBarWidth
this.bodyRealHeight = parseInt(getStyle(this.$refs.tbody.$el, 'height'));
}); });
}, },
handleMouseIn (_index) { handleMouseIn (_index) {

View file

@ -1,56 +1,24 @@
<template> <template>
<!--<i-select :model.sync="model1" style="width:200px">--> <div style="width: 800px">
<!--<i-option v-for="item in cityList" :value="item.value">{{ item.label }}</i-option>--> <i-table width="550" height="200" border :columns="columns5" :data="data4"></i-table>
<!--</i-select>--> <br>
<i-button @click="data7 = data6">Dispatch</i-button> <i-table border height="300" :columns="columns1" :data="data1"></i-table>
<br/> <br>
<i-table border :content="self" :columns="columns7" :data="data7"></i-table> <i-table border height="300" :columns="columns1" :data="data2"></i-table>
<br/> <br>
<i-table border :content="self" :columns="columns7" :data="data7" size="small"></i-table> <i-table border height="300" :columns="columns2" :data="data1"></i-table>
<br/> <br>
<i-table border :content="self" :columns="columns7" :data="data7" size="large"></i-table> <i-table border height="300" :columns="columns3" :data="data1"></i-table>
<br/> </div>
<i-table border :content="self" :columns="columns7" :data="data7" height="600"></i-table>
</template> </template>
<script> <script>
export default { export default {
data () { data () {
return { return {
cityList: [ columns1: [
{
value: 'beijing',
label: '北京市'
},
{
value: 'shanghai',
label: '上海市'
},
{
value: 'shenzhen',
label: '深圳市'
},
{
value: 'hangzhou',
label: '杭州市'
},
{
value: 'nanjing',
label: '南京市'
},
{
value: 'chongqing',
label: '重庆市'
}
],
model1: 'shanghai',
self: this,
columns7: [
{ {
title: '姓名', title: '姓名',
key: 'name', key: 'name'
render (row, column, index) {
return `<Icon type="person"></Icon> <strong>${row.name}</strong>`;
}
}, },
{ {
title: '年龄', title: '年龄',
@ -59,21 +27,79 @@
{ {
title: '地址', title: '地址',
key: 'address' key: 'address'
},
{
title: '操作',
key: 'action',
align: 'center',
render (row, column, index) {
return `
<i-select :model.sync="model1" style="width:200px">
<i-option v-for="item in cityList" :value="item.value">{{ item.label }}</i-option>
</i-select><br><br><br>
`;
}
} }
], ],
data6: [ columns2: [
{
title: '姓名',
key: 'name'
},
{
title: '年龄',
key: 'age',
fixed: 'left'
},
{
title: '地址',
key: 'address'
}
],
columns3: [
{
title: '姓名',
key: 'name'
},
{
title: '年龄',
key: 'age',
fixed: 'right'
},
{
title: '地址',
key: 'address'
}
],
data1: [
{
name: '王小明',
age: 18,
address: '北京市朝阳区芍药居'
},
{
name: '张小刚',
age: 25,
address: '北京市海淀区西二旗'
},
{
name: '李小红',
age: 30,
address: '上海市浦东新区世纪大道'
},
{
name: '周小伟',
age: 26,
address: '深圳市南山区深南大道'
},
{
name: '王小明',
age: 18,
address: '北京市朝阳区芍药居'
},
{
name: '张小刚',
age: 25,
address: '北京市海淀区西二旗'
},
{
name: '李小红',
age: 30,
address: '上海市浦东新区世纪大道'
},
{
name: '周小伟',
age: 26,
address: '深圳市南山区深南大道'
},
{ {
name: '王小明', name: '王小明',
age: 18, age: 18,
@ -95,18 +121,136 @@
address: '深圳市南山区深南大道' address: '深圳市南山区深南大道'
} }
], ],
data7: [] data2: [
} {
}, name: '王小明',
methods: { age: 18,
show (index) { address: '北京市朝阳区芍药居'
this.$Modal.info({ },
title: '用户信息', {
content: `姓名:${this.data6[index].name}<br>年龄:${this.data6[index].age}<br>地址:${this.data6[index].address}` name: '张小刚',
}) age: 25,
}, address: '北京市海淀区西二旗'
remove (index) { },
this.data6.splice(index, 1); {
name: '李小红',
age: 30,
address: '上海市浦东新区世纪大道'
},
{
name: '周小伟',
age: 26,
address: '深圳市南山区深南大道'
}
],
columns5: [
{
title: '姓名',
key: 'name',
width: 100,
fixed: 'left'
},
{
title: '年龄',
key: 'age',
width: 100
},
{
title: '省份',
key: 'province',
width: 100
},
{
title: '市区',
key: 'city',
width: 100
},
{
title: '地址',
key: 'address',
width: 200
},
{
title: '邮编',
key: 'zip',
width: 100
},
{
title: '操作',
key: 'action',
fixed: 'right',
width: 120,
render () {
return `<i-button type="text" size="small">查看</i-button><i-button type="text" size="small">编辑</i-button>`;
}
}
],
data4: [
{
name: '王小明',
age: 18,
address: '北京市朝阳区芍药居',
province: '北京市',
city: '朝阳区',
zip: 100000
},
{
name: '张小刚',
age: 25,
address: '北京市海淀区西二旗',
province: '北京市',
city: '海淀区',
zip: 100000
},
{
name: '李小红',
age: 30,
address: '上海市浦东新区世纪大道',
province: '上海市',
city: '浦东新区',
zip: 100000
},
{
name: '周小伟',
age: 26,
address: '深圳市南山区深南大道',
province: '广东',
city: '南山区',
zip: 100000
},
{
name: '王小明',
age: 18,
address: '北京市朝阳区芍药居',
province: '北京市',
city: '朝阳区',
zip: 100000
},
{
name: '张小刚',
age: 25,
address: '北京市海淀区西二旗',
province: '北京市',
city: '海淀区',
zip: 100000
},
{
name: '李小红',
age: 30,
address: '上海市浦东新区世纪大道',
province: '上海市',
city: '浦东新区',
zip: 100000
},
{
name: '周小伟',
age: 26,
address: '深圳市南山区深南大道',
province: '广东',
city: '南山区',
zip: 100000
}
]
} }
} }
} }