前言
这几天做一个项目需要用到表格来展示数据,由于项目用到了Element这个框架,所以就直接用Table组件来写。在做的过程中遇到了一些问题,虽然都解决了,不妨记录下来,希望遇到这些问题的童鞋有个参考
1.
如上图所示,这个表格需要用到多级表头的形式来展示数据,Element Table组件已经提供这种类型的,可以直接拿来用,只需要在 el-table-column 里面嵌套 el-table-column,就可以实现多级表头官网的代码:
<el-table
:data="tableData"
style="width: 100%">
<el-table-column
prop="date"
label="日期"
width="150">
</el-table-column>
<el-table-column label="配送信息">
<el-table-column
prop="name"
label="姓名"
width="120">
</el-table-column>
<el-table-column label="地址">
<el-table-column
prop="province"
label="省份"
width="120">
</el-table-column>
<el-table-column
prop="city"
label="市区"
width="120">
</el-table-column>
<el-table-column
prop="address"
label="地址"
width="300">
</el-table-column>
<el-table-column
prop="zip"
label="邮编"
width="120">
</el-table-column>
</el-table-column>
</el-table-column>
</el-table>
然后我们实现了多级表头,但是有一个问题,我们的表头数据不是固定,是根据年份来动态展示的,所以只能根据接口返回的数据来处理。为了能够方便的展示数据,接口返回的数据格式也是跟后端那边约定好的,数据格式如下:
tableHeadData: ['2018年1~6月','2017年1~6月','2016年'],
tableData: [{
businessType: '定制产品化软件1',
data: [
{
date: '2018年1~6月',
income: 128,
proportion: '12%',
increase: 25,
increaseRate: '24%'
},{
date: '2017年1~6月',
income: 100,
proportion: '10%',
increase: 20,
increaseRate: '34%'
},{
date: '2016年',
income: 1000,
proportion: '10%',
increase: 20,
increaseRate: '34%'
}
]
}, {
businessType: '定制工程化软件2',
data: [
{
date: '2018年1~6月',
income: 100,
proportion: '10%',
increase: 20,
increaseRate: '14%'
},{
date: '2017年1~6月',
income: 200,
proportion: '20%',
increase: 20,
increaseRate: '24%'
},{
date: '2016年',
income: 10000,
proportion: '10%',
increase: 20,
increaseRate: '34%'
}
]
}, {
businessType: '合计',
data: [
{
date: '2018年1~6月',
income: 328,
proportion: '22%',
increase: 45,
increaseRate: '38%'
},{
date: '2017年1~6月',
income: 300,
proportion: '30%',
increase: 40,
increaseRate: '58%'
},{
date: '2016年',
income: 11000,
proportion: '10%',
increase: 20,
increaseRate: '34%'
}
]
}]
最后通过v-for就可以实现数据动态获取了
2.
这个表格的表头跟第一个的表头就不一样了,年份不是最高一级的,而是跟“客户”和“上期金额”同级。接口返回的数据格式跟第一个表格数据格式一样,如果用v-for来循环渲染数据的话,就没办法渲染了,本来是想在最外面加一层el-table-column的,然而表头变了,多了一行空白的。后面想了一下,直接用th标签替换el-table-column,简单粗暴
以上就是个人处理的方法,各位掘友要是有好的方法欢迎来交流,要是有哪些写得不对的欢迎指正!