<template>
<div class="table-cooperte">
<el-table
:data="tableData"
stripe
style="width: 100%"
border
ref="table"
:span-method="objectSpanMethod"
tooltip-effect="dark"
:height="tableHeight"
:row-style="rowStyleHandel"
:header-cell-style="{background:'#ff0000',color: '#fff'}"
>
<el-table-column label="多级表头使用" align="center">
<el-table-column prop="date" label="日期" align="center"></el-table-column>
<el-table-column prop="name" label="姓名" align="center"></el-table-column>
<el-table-column prop="address" label="地址" align="center" min-width="50"></el-table-column>
<el-table-column fixed="right" label="操作" align="center" min-width="100">
<template slot-scope="scope">
<el-button @click="handleAdd(scope.row)" type="text" size="small">新增</el-button>
<el-button @click="handleDel(scope.$index)" type="text" size="small">删除</el-button>
</template>
</el-table-column>
</el-table-column>
</el-table>
<el-table
:data="tableData"
stripe
style="width: 100%"
border
ref="table1"
tooltip-effect="dark"
:height="tableHeight"
@selection-change="handleSelect"
:row-key="row => row.id"
:header-cell-style="{background:'#333',color: '#fff'}"
>
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"></el-table-column>
<el-table-column type="index" label="序号" align="center"></el-table-column>
<el-table-column prop="date" label="日期" align="center"></el-table-column>
<el-table-column prop="name" label="姓名" align="center"></el-table-column>
<el-table-column prop="address" label="地址" align="center" min-width="50"></el-table-column>
<el-table-column fixed="right" label="操作" align="center" min-width="100">
<template slot-scope="scope">
<el-button @click="handleExport(scope.row)" type="text" size="small">导出</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template> <script>
export default {
data() {
return {
tableHeight: 400,
tableData: [
{
id: 1,
date: "2016-05-02",
name: "王小7",
address: "上海市普陀区金沙江路 1518 弄"
},
{
id: 2,
date: "2016-05-04",
name: "王小虎2",
address: "上海市普陀区金沙江路 1517 弄"
},
{
id: 3,
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄"
},
{
date: "2016-05-03",
name: "王小9",
address: "上海市普陀区金沙江路 1516 弄"
},
{
id: 4,
date: "2016-05-03",
name: "王小1",
address: "上海市普陀区金沙江路 1516 弄"
},
{
id: 5,
date: "2016-05-03",
name: "王小2",
address: "上海市普陀区金沙江路 1516 弄"
},
{
id: 6,
date: "2016-05-03",
name: "王小3",
address: "上海市普陀区金沙江路 1516 弄"
}
],
spanArr: [], // 合并数据
pos: 0, // 合并标记
multipleList: [], // 选中数据
}
},
created() {
this.getSpanArr(this.tableData);
},
mounted(){
/*
stripe 斑马纹属性
header-cell-style 表头样式
其他具体属性参照官网api调用
*/
},
methods: {
// 1、row-class-name 类名控制 2、row-style 样式控制
rowStyleHandel({ row, rowIndex }) {
// console.log(row,rowIndex)
if (row.name == "王小7") {
return "background:#999;color:#ff0000 !";
}
},
// 合并列
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
const _row = this.spanArr[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col
};
}
},
getSpanArr(data) {
for (var i = 0; i < data.length; i++) {
if (i === 0) {
this.spanArr.push(1);
this.pos = 0;
} else {
// 判断当前元素与上一个元素是否相同 可以是data[i][0]和data[i - 1][0]比较或者类推
if ( data[i].date === data[i - 1].date) {
this.spanArr[this.pos] += 1;
this.spanArr.push(0);
} else {
this.spanArr.push(1);
this.pos = i;
}
}
}
},
// 选中 -- 若要 翻页记忆选中:row-key="row => row.id" 不一定是id可以是唯一属性区别 type="selection"加上:reserve-selection="true" 适用场景:列表页导出、批量操作 不适用于有回显的(新增编辑详情同一组件情况需要特别处理)
handleSelect(val){
console.log(val)
this.multipleList = val;
},
// 新增
handleAdd(row) {
this.tableData.push(row);
},
// 删除
handleDel(index) {
this.tableData.splice(index, 1);
},
// 导出 -- 设置响应体 responseType: 'blob', 需要先 cnpm i js-file-download -S 安装依赖
handleExport(row){
// 接口 返回成功后 写上下面代码
this.$message({
type: 'success',
message: '导出成功'
})
let fileDownload = require("js-file-download");
// console.log(res.headers['content-disposition'].split("=")[1],'头部')
fileDownload(res.data,decodeURIComponent(res.headers['content-disposition'].split("=")[1]));
},
}
};
</script> <style>
</style>

element ui表格常用功能如:导出 新增 删除 多选 跨页多选 固定表头 多级表头 合并行列 等常见需求的更多相关文章

  1. element ui 表格提交时获取所有选中的checkbox的数据

    <el-table ref="multipleTable" :data="appList" @selection-change="changeF ...

  2. Element UI表格组件技巧:如何简洁实现跨页勾选、跨页统计功能

    业务场景 在使用Element UI的Table组件时,常常面对这样的业务需求: 表格数据的每一项都要提供勾选框,当切换分页时,能够记忆所有页面勾选的数据,以实现批量提交不同页面勾选数据的功能.并且, ...

  3. vue2.0+Element UI 表格前端分页和后端分页

    之前写过一篇博客,当时对element ui框架还不太了解,分页组件用 html + css 自己写的,比较麻烦,而且只提到了后端分页 (见 https://www.cnblogs.com/zdd20 ...

  4. vue + element ui 表格自定义表头,提供线上demo

    前言:工作中用到 vue+element ui 的前端框架,需要使用自定义表头,需要使用 re.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9710826.h ...

  5. 封装一个优雅的element ui表格组件

    现在做后台系统用vue + elementUI 的越来越多,那element ui的 el-table 组件肯定也离不开.虽然element ui的table组件很好.但是表格和分页是分离的.每次写表 ...

  6. element UI表格行高、padding等设置报错问题

    element UI里面表格的行高需要自己调整高度和设置padding,直接写style是不行的,里面有 : 1.row-style (行的 style) 2.header-row-styl   (表 ...

  7. element ui表格表头顺序错乱的问题

    因为在项目中两个表格共用了同一个组件, 但由于表头不完全相同, 就通过v-if来控制表头的显示隐藏,没想到造成了表头顺序的错乱, 经过多方查找资料,最后找到了解决方法: 即为每一列el-table-c ...

  8. element ui表格实现单选 但是单选取消会报错

    1.在el-table中添加两个事件  @selection-change="handleSelectionChange"  @current-change="choos ...

  9. Element ui表格展示多张图片问题

    显示一张图片的方法: <el-table-column label="头像" width="100"> <template scope=&qu ...

随机推荐

  1. Photon介绍与安装

    Photon光子引擎是一款实时的Socket服务器和开发框架,快速.使用方便.容易扩展. 服务端架构在windows系统平台上,采用C#语言编写. 客户端SDK提供了多种平台的开发API,包括DotN ...

  2. HDU4624 Endless Spin 和 HAOI2015 按位或

    Endless Spin 给你一段长度为[1..n]的白色区间,每次随机的取一个子区间将这个区间涂黑,问整个区间被涂黑时需要的期望次数. n<=50 题解 显然是min-max容斥,但是n的范围 ...

  3. 测试mybatis延迟加载错误与解决方法

    什么是延迟加载? 延迟加载又叫懒加载,也叫按需加载,也就是说先加载主信息,需要的时候,再去加载从信息. 需求: 查询订单信息,需要时再去查询用户信息 实现方式: 编写两个statement,其中一个s ...

  4. swift的类型系统

    顶级抽象:protocol 具体类型:值类型.引用类型 类型操作:扩展 其他: 范型.函数式类型:function.monand

  5. scala 学习笔记--集合

    1.scala集合的null 是nil 而不是null 2.set的三个方法union,intersect,diff union--合并去重 intersect--交集 diff--a减去(a和b交集 ...

  6. 编译lua固件NodeMcu 8266

    https://www.cnblogs.com/yangfengwu/p/10547024.html 因为我现在的Wifi的教程是lua语言编写的,但是有些功能需要自己编译lua固件才可以,这篇文章就 ...

  7. [RN] React Native 打包时 减少 Apk 的大小

    React Native 打包时 减少 Apk 的大小 主要有两个方法: 在打包前设置 android\app\build.gradle 文件中 1) def enableProguardInRele ...

  8. 正睿2019省选附加赛 Day10 (这篇其实已经都咕咕了...)

    目录 2019.3.13 A.算算算(二项式定理 斯特林数) B.买买买 C.树树树 2019.3.13 比赛链接 A.算算算(二项式定理 斯特林数) 题目链接 \(x^k\)可以用二项式定理展开,需 ...

  9. lintcode-1038. 珠宝和石头

    题目描述 给定字符串J代表是珠宝的石头类型,而S代表你拥有的石头.S中的每个字符都是你拥有的一个石头. 你想知道你的石头有多少是珠宝. J中的字母一定不同,J和S中的字符都是字母. 字母区分大小写,因 ...

  10. 第10组 Alpha冲刺(4/4)

    队名:凹凸曼 组长博客 作业博客 组员实践情况 童景霖 过去两天完成了哪些任务 文字/口头描述 继续学习Android studio和Java 制作剩余界面前端 展示GitHub当日代码/文档签入记录 ...