<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. oVirt-postgresql

    连接数据库 方法一: cd /opt/rh/rh-postgresql95/root/bin su postgres ./psql \c engine 执行sql语句即可 方法二: 用pgAdmin访 ...

  2. Spring Boot 之:Actuator 监控

    在 Spring Boot 2.x 中为了安全,Actuator 只开放了两个端点 /actuator/health 和 /actuator/info.可以在配置文件中设置打开. Actuator 默 ...

  3. CSS IE Hack

    条件注释判断浏览器!: [if !IE],The NOT operator. This is placed immediately in front of the feature, operator, ...

  4. Hive修改表语句

    0x01:重命名表 1 ALTER TABLE table_name RENAME TO new_table_name; 上面这个命令可以重命名表,数据所在的位置和分区都没有改变. 0x02:改变列名 ...

  5. 最近的思考x

    数据结构与文件格式: 自我管理与成长管理: 静态分析与动态分析.

  6. [React] Handle React Suspense Errors with an Error Boundary

    Error Boundaries are the way you handle errors with React, and Suspense embraces this completely. Le ...

  7. Colorful events

  8. 第03组 Alpha事后诸葛亮

    组长博客 项目Postmortem模板 设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们软件要解决的的问题是福州大学校园二手书的处理问题.应该定 ...

  9. node.js 自启动工具 supervisor

    supervisor 会不停的watch 你应用下面的所有文件,发现有文件被修改,就重新载入程序文件这样就实现了部署,修 改了程序文件后马上就能看到变更后的结果.麻麻再也不用担心我的重启 nodejs ...

  10. 如何理解 Web API

    什么是web API? web API 控制器.路由 测试  Web  API  什么是web API ? 简单说,API是接口,访问程序的某一个功能或者数据,实现移动端和客户端的程序之间的数据交互: ...