Element-ui table进阶使用

embedded/2024/12/23 1:28:14/

最近项目有多个报表开发的需求,我采用的是凤翎前端组件框架(基于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值就行。


http://www.ppmy.cn/embedded/100467.html

相关文章

Git(面试篇)

目录 配置操作 全局配置 当前仓库配置 查看global配置 查看当前仓库配置 删除global配置 删除当前仓库配置 本地操作 查看变更情况 将当前目录及其子目录下所有变更都加入到暂存区 将仓库内所有变更都加入到暂存区 将指定文件添加到暂存区 比较工作区和暂存区的所有…

云计算实训32——roles基本用法、使用剧本安装nginx、使用roles实现lnmp

一、安装nginx并更改其端口 编辑hosts配置文件 [rootmo ~]# vim /etc/ansible/hosts 创建目录 [rootmo ~]# mkdir /etc/ansible/playbook 编辑配置文件 [rootmo ~]# vim /etc/ansible/playbook/nginx.yml 执行测试 [rootmo ~]# ansible-playbook /etc/ansible/playbook/n…

YoloV8改进策略:卷积篇|ACConv2d模块在YoloV8中的创新应用与显著性能提升|简单易用|即插即用

摘要 在本文中,我们创新性地将ACConv2d模块引入到YoloV8目标检测模型中,通过对YoloV8中原有的Conv卷积层进行替换,实现了模型性能的大幅提升。ACConv2d模块基于不对称卷积块(ACB)的设计思想,利用1D非对称卷积(13和31卷积)来增强标准方形卷积核(如33卷积)的表征能力。…

二进制协议集合

二进制协议在网络通信中通常用于提高数据传输的效率和速度,相比于文本协议(如 HTTP 的 JSON 或 XML),二进制协议的数据格式更为紧凑,解析和处理速度更快。以下是一些常见的二进制协议: 1. Protocol Buffer…

C语言-有两个磁盘文件A和B,各存放一行字母,今要求把这两个文件的信息合并(按字母顺序排列),输出到一个新文件C中去-深度代码解析

1、题目要求 有两个磁盘文件A和B,各存放一行字母,今要求把这两个文件的信息合并(按字母顺序排列),输出到一个新文件C中去 2、准备工作 问题1:为什么不需要手动创建C.txt文件? 答:根…

基础算法--高精度数据(2)

本节继续上节内容:高精度数据处理。本节主题是回文数。 一、判断方法 什么是回文数:一个数字从左往右读与从右往左读是一样的,那么这个数就是回文数。例如:121,6226,3333、12121等。简单的判断回文数的方…

Mysql 报错 1365 - Division by 0

Mysql 报错 1365 - Division by 0 解决办法 直接运行一下命令 set sql_mode(select REPLACE(sql_mode,ERROR_FOR_DIVISION_BY_ZERO,));

【Electron】桌面应用开发启动直接打开一个网址或者浏览器打开一个网址

【Electron】桌面应用开发启动时直接打开一个网址或者跳转浏览器打开一个网址 前一篇有写过 Electron 桌面应用开发快速入门到打包Windows应用程序 但是现在需要程序打开的时候直接打开一个链接,在程序的窗口打开或者直接跳转浏览器打开 一、启动时直接打开一个网…