Element-ui table进阶使用

最近项目有多个报表开发的需求,我采用的是凤翎前端组件框架(基于element-ui开发),大伙可以直接参考element-ui组件库文档,把标签中的fks替换为el即可。下面我会按顺序一一展开细说这些需求:

1、有多级表头,合并单元格

如下图所示,降雨量是顶级表头,下面是二三级表头,最后才是表身部分。多级表头很好实现,直接在上一级table-column下创建多个同级table-column就行,一层套一层自由嵌套。

合并单元格就用自带的span-method,比如下图中红框部分单元格,先通过行列index定位,然后return一个数组或者对象,里面前者值为行,后者值为列,比如[1,3]意思就是1行放3列,{rowspan:2,colspan:1}意思就是2行放1列,两种写法都行。

2、能展示数据(非常规行列显示)

通常图表展示数据从上往下是一致的,像下图左右两边数据结构部分一致、部分不同,这就需要专门拼接数据结构。

Table示例中数据格式如下,每个对象对应每一行,对象里的每个参数对应行中每列单元格,所以我们可以先拼接每一行的对象,如下图代码所示,最后进行单元格合并。

3、在table某些区域画框

可以通过给对应单元格设置上下左右边框样式实现,首先用table的cell-class-name属性给单元格设置class名,还是用columnIndex和rowIndex来判断想要设置的单元格,如下图所示。

然后设置对应的css样式即可。

4、特定单元格颜色要能根据不同值显示不同颜色

这个和第3条一样用table的cell-class-name属性给单元格设置class名,只不过要通过传入row的值判断并设置不同class名称。

5、特定单元格可以编辑(鼠标移入或者双击开始编辑,鼠标移出结束编辑,并且编辑后背景色要变成白色),并保留两位小数

编辑可以用cell-click和cell-mouse-leave配合slot-scope实现;替换背景色可以将之前单元格class名称移除后另外添加新class名称实现;编辑时保留几位小数可以直接用这行代码οninput="value=value.replace(/[^\d^\.]+/g,'').replace(/^0+(\d)/,'$1').replace(/^\./,'0.').match(/\d+.?\d{0,1}/)",最后面的数为几就是保留几位小数。

6、可以前端导出table为excel(还是推荐后端拼接模板并导出)

第一张报表用的是pikaz-excel-js插件,git地址为https://github.com/pikaz-18/pikaz-excel-js,网上文档虽然多,但很多都很基础,官方文档介绍也很简单,没有很详细深入,好在导出的excel看着还原度很高。但用户使用时发现提供的模板和导出的excel文件还是不完全一样,打印时会有其它问题产生,并且前端拼接模板耗时久,所以后面报表还是由后端统一拼接并接口返回文件流供前端导出。个人建议报表导出功能优先后端来写。

7、可以选择日期、时间段

8、如何让table强制刷新

有时候我们希望table数据变化时刷新table,但直接修改绑定的data对象不会生效,这时候可以给table绑定一个key值,想要强制刷新table时修改这个key值就行。

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值