elemnet-ui组件库大家应该不陌生,在展示多条结构类似的数据方面,el-table可谓扛把子,不仅可以把数据展示的整齐,还支持排序、筛选或其他自定义操作。那么,除了上述的基本功能外,你还遇到过哪些花样的需求呢?下面我们一起盘点下吧~

1 基本使用

如果熟悉基本操作,可直接看下面第二小节。

<template>
<el-table:data="tableData" style="width: 100%">
<el-table-column prop="date" label="日期"></el-table-column>
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="address"label="地址"></el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [
{date: '2016-05-02',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄'},
{date: '2016-05-04',name: '王小虎',address: '上海市普陀区金沙江路 1517 弄'},
{date: '2016-05-01',name: '王小虎',address: '上海市普陀区金沙江路 1519 弄'},
{date: '2016-05-03',name: '王小虎',address: '上海市普陀区金沙江路 1516 弄'}
]
}
}
}
</script>

2 表格数据排序,首行加序号

2.1 当前页排序

设置type属性为index即可显示从 1 开始的索引号。注意:此时如果表格有分页,当前序号只是对当前页的排序。而不是全部数据。每次翻页,序号都会从1开始。

2.2 全部数据排序

<el-table-column fixed label="序号"width="50" align="center">
<template scope="scope">
<span>{{scope.$index+(page - 1) * limit + 1}} </span>
</template>
</el-table-column>

scope.$index:当前行在当前页的序号

page:当前页数

limit:一页显示多少行

3 表格中显示图片

<el-table-column prop="photo" label="照片">
<template slot-scope="scope">
<img :src="scope.row.photo" width="40" height="40" alt=""/>
</template>
</el-table-column>

4 表格中添加开关(el-switch)

<el-table-column property="state" label="状态">
<template slot-scope="scope">
<el-switch v-model="scope.row.state"></el-switch>
</template>
</el-table-column>

5 表格中添加音频播放

通过上面2个实例,我们觉得scope很神奇,什么都可以放。此时如果想添加音频,是否可以直接播放呢?我们先了解一下几种常见的音频格式以及播放方式。

1 .mp3格式,H5的<audio>标签可直接播放。

2 .wav格式,该格式没办法直接播,只能先下载到本地,通过本地播放器播放。

鉴于以上情况,我们拿到音频数据后,需要先判断一下音频格式,再为其选用正确处理方式。

this.tableData.forEach((item) => {
// 接口返回值中,rowRecording字段 表示音频
let rowRecording = item.recording;
if (rowRecording === '') { // 字段值为空,页面显示‘暂无录音’
this.$set(item, 'showAudio', 0);
} else {
let arr = rowRecording.split('.'); // 拿到音频格式后缀
let recordTypeName = arr[arr.length - 1];
if (recordTypeName === 'mp3') { // mp3格式,直接播放
this.$set(item, 'showAudio', 1);
} else if (recordTypeName === 'wav') { // wav格式,提示下载
this.$set(item, 'showAudio', 2);
}
}
});
<el-table-column prop="recording" label="录音" width="120">
<template slot-scope="scope">
<div style="width: 100%;height: 32px;" v-if="scope.row.showAudio===1">
<audio controls style="width:100%;height: 100%;">
<source :src="scope.row.recording" type="audio/wav">
</audio>
</div>
<div v-if="scope.row.showAudio===2">
<a :href="scope.row.recording">点击下载播放</a>
</div>
<div v-if="scope.row.showAudio===0">暂无录音</div>
</template>
</el-table-column>

以上3种需求的实现效果如下:

6 动态生成多级表头

我们知道el-table支持多级表头,效果如下图,顺便我们讨论下多级表头时,表格是如何渲染的。下图中数字代表层级,如果此时我说不管表头有多少级,每一级表头只需要关心自己的直接子元素,以此类推,直到最后一级没有子元素的表头去匹配数据,整个表格就可以正确渲染,你觉得对吗?

也就是说,下图中,第一级表头“配送信息”只需正确找到自己的两个孩子“姓名”和“地址”....., 到了没有子元素的3-1“省份”,那它就负责去匹配数据。

原理我们已经理解,但是官方示例中表头都是在页面里写死的固定数据。实际应用中,很多情况下表头是是接口返回的。那此时,表头需要动态生成,且要保证层级正确,更重要的是,数据渲染要准确。

我们将直接层级关系的表头比喻成父子,那么将表头数据设计成相应的嵌套结构。通过双层for循环,多级表头是不是就可以正确渲染了呢?然后让最后一级表头去匹配数据,数据也就可以正确展示了吧?试一下吧~假设接口返回的多级动态表头数据结构如下:

tableHeader: [
{'label': '日期','prop': 'date'},
{
'label': '信息',
'prop': '信息',
children: [
{prop:"name",label:"姓名"},
{prop:"province",label:"省份"},
{prop:"city",label:"市区"},
{prop:"zip",label:"邮编"}
]
}
]

相信你已经看出谁有子元素了,下面看如何通过双层for循环渲染多级表头。

<el-table :data="tableList">
<el-table-column
v-for='item in tableHeader' :label="item.label"
:prop='item.prop' :key='item.prop'>
<template v-if='item.children && item.children.length'>
<el-table-column
v-for="item1 in item.children" :label="item1.label"
:prop='item1.prop':key='item1.prop'>
</el-table-column>
</template>
</el-table-column>
</el-table>

我们再给一组表格数据:

tableList: [
{
"date": "2020-06-01",
"name": "王小虎",
"province": "上海",
"city": "普陀区",
"zip": 200333
}
]

最终效果如下,完成!

欢迎大家关注我的公粽号,文章更早、更全,扫下面二维码或微信搜“Lemoncool” ,期待您的关注~

el-table的花样需求---表格加图片、加音频、加序号、多级动态表头的更多相关文章

  1. el-table 表格加图片、加音频、加序号、多级动态表头

    elemnet-ui组件库大家应该不陌生,在展示多条结构类似的数据方面,el-table可谓扛把子,不仅可以把数据展示的整齐,还支持排序.筛选或其他自定义操作.那么,除了上述的基本功能外,你还遇到过哪 ...

  2. 使用NPOI2.1.3.1版本导出word附带表格和图片

    原文:http://www.cnblogs.com/afutureBoss/p/4074397.html?utm_source=tuicool&utm_medium=referral 最近项目 ...

  3. poi完美word转html(表格、图片、样式)

    直入正题,需求为页面预览word文档,用的是poi3.8,以下代码支持表格.图片,不支持分页,只支持doc,不支持docx: /** * */ import java.io.BufferedWrite ...

  4. word表格自动编号,前面加章节号

    1.需求 最近要用Word写一些有很多公式的文档,一个小节就有十几个公式,一章有几十个公式.我希望能公式能自动编号.例如我在公式(3.3)前面增加了一个公式并编号后,后面的编号以及引用编号的地方会自动 ...

  5. RWD Table Patterns – 响应式表格解决方案

    在显示复杂的表格数据的时候,相信 Web 开发人员都碰到过显示不下的情况.RWD Table Patterns 是一个很好的响应式表格解决方案.它采用移动优先以及渐进增强的设计理念,在不支持响应式的浏 ...

  6. JS怎样实现图片的懒加载以及jquery.lazyload.js的使用

    在项目中有时候会用到图片的延迟加载,那么延迟加载的好处是啥呢? 我觉得主要包括两点吧,第一是在包含很多大图片长页面中延迟加载图片可以加快页面加载速度:第二是帮助降低服务器负担. 下面介绍一下常用的延迟 ...

  7. POI 生成 word 文档 简单版(包括文字、表格、图片、字体样式设置等)

      POI 生成word 文档 一般有两种方法: ① word模板 生成word 文档 : ② 写代码直接生成 word 文档: 我这里演示的是第二种方法,即写代码生成 word文档,不多说废话,直接 ...

  8. ITextSharp导出PDF表格和图片(C#)

    文章主要介绍使用ITextSharp导出PDF表格和图片的简单操作说明,以下为ITextSharp.dll下载链接 分享链接:http://pan.baidu.com/s/1nuc6glj 密码:3g ...

  9. ViewPager做图片浏览器,加载大量图片OOM的问题修正

    /** * @author CHQ * @version 1.0 * @date 创建时间: 2016/7/26 17:18 * @parameter * @return * 图片查看器 * //可以 ...

随机推荐

  1. 前后端分离产生的跨域问题的解决方案之--jsonp、nginx代理、设置头信息等

    前言 在前后端没有分离的时候,前端开发要么是写静态页面,数据渲染后端来做,要么就是前端的页面和后端的代码刚开始的时候就合并在一起,每次后端代码更新了之后,前端也要更新一下代码,然后重启一下服务,还是比 ...

  2. 阿里云部署Java开发环境

    阿里云部署Java网站和微信开发调试心得技巧(上) 本文主要是记录在阿里云服务器从零开始搭建Java执行环境并且部署web project的过程,方面以后查阅. 一.申请阿里云服务器 购买阿里云服务器 ...

  3. APP定位元素之UiSelector

    1.UiSelector 类介绍 功能:通过各种属性与节点关系定位组件 操作步骤:找到对象->操作对象 2.四中匹配关系的介绍 (1)完全匹配 (2)包含匹配 (3)正则匹配 (4)起始匹 例子 ...

  4. shell判断语句

    1.test命令  也可以用[  ]来表示 返回值为0时为true,返回值为1时为false. 例1:str1=aaa,str2=bbb 1)判断字符串是否为空(省略了-n选项,-n选项是不为空,-z ...

  5. 【Ubuntu】利用sudo修改/etc/sudoers翻车

      翻车背景:利用命令行创建新用户,这里不得不提该翻车博客[1],当然这里并没有怪罪的意思,贴出来只是为了让后来者使用正确命令修改sudoers文件.系统:Ubuntu18.04 利用[1]中的“新用 ...

  6. [书籍分享]0-006.App营销解密:移动互联网时代的营销革命

    封面 内容简介 如何在移动互联网上推广和销售自己的产品?如何通过移动互联网为顾客提供服务?如何在移动互联网上树立和传播自己的品牌?这几乎是当下所有互联网企业和传统企业都在思考的问题,企业要想在移动互联 ...

  7. java1.8时间处理

    object TimeUtil { var DEFAULT_FORMAT = DateTimeFormatter.ofPattern("yyyyMMddHHmmss") var H ...

  8. JAVA自学笔记(2)

    Java跳跃级知识储备 1.Mathod新篇章 1.0进制转化(方法中的参数其实就是局部变量,在方法中定义的变量要赋初值) import java.util.Scanner; public class ...

  9. 一、【python】机器学习基础

    专有名词 机器学习 (machine learning) 预测分析 (predictive analytics) 统计学习 (statistical learning) 监督学习 (supervise ...

  10. 个人工具,编辑器visual studio code

    个人收集的使用方法:简化版 主要基于基础web前端开发,visual studio code教程——基础使用.扩展插件安装使用 下载地址: https://visualstudio.microsoft ...