UI组件--element-ui--Table组件自定义合计行
需求: Element-ui的Table组件自带合计行, 但是需求需要在合计行的某些单元格有特别的样式以及事件, 没有研究出怎么在既有合计行上完成此需求, 于是利用其原本的一些属性完成自定义合计行.
分析: 在Table组件中是有columns(包含所有列的数据的数组)的, 但是只有在summary-method事件中才暴露出来, 用来自定义合计行, 可以利用此事件来获得columns, 但是又不想显示自带的合计行, 就可以这样:
<template>
<el-table
@row-click="rowClick"
@cell-click="singleClick"
:row-class-name="setSumRowStyle"
:data="tableData"
stripe
show-summary
:summary-method="getColumns"
style="width: 100%"
>
</el-table>
</template>
// 获取columns
getColumns(param) {
const { columns } = param;
this.columns = columns;
return []
},
// 计算合计行
getSummaries (data) {
let Obj = {};
Obj.type = 'sum';
let lastData = this.levelList[this.levelList.length - 1];this.columns.forEach((column, index) => {
if (index === 0) {
Obj[column.property] = '全部';
return;
}
if (index === 1) {
Obj[column.property] = "上一层公司名???";
return;
}
const values = data.map(item => Number(item[column.property]));
if (!values.every(value => isNaN(value))) {
Obj[column.property] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
} else {
Obj[column.property] = '--';
}
})
return Obj;
},
// 将合计行数据添加到已有的列表数据的最后一项, 如果是异步, 请在请求到列表数据并且视图更新后再调用合计行方法
getNewTableData (row) {
api.getList(this.checkForm).then(res => {
console.log(res);
if (res.status === 0 && res.result.record.length > 0) {this.columns = [];
let newData = res.result.record;
this.tableData = newData;
this.total = res.result.totalCount;
// 视图更新后再求和
this.$nextTick(() => {
let summaries = this.getSummaries(newData);
this.tableData.push(summaries);
})
}
})
},
以上步骤已经自定义完成, 但是这些是Table组件自带求和可以完成的, 我们辛苦的自定义合计主要是为了扩展事件以及样式, 此时, 只需在table表格中判断一下就可以用了:
样式:
// text_bule_underline是样式名称
<el-table
@row-click="rowClick"
@cell-click="singleClick"
:row-class-name="setSumRowStyle"
:data="tableData"
stripe
show-summary
:summary-method="getColumns"
style="width: 100%"
>
<el-table-column
prop="name"
width="160px"
label="姓名">
<template slot-scope="scope">
<span :class="(scope.row.type && scope.row.type == 'sum') ? 'text_bule_underline': ''">{{scope.row.name}}</span>
</template>
</el-table-column>
<el-table-column
prop="age"
min-width="180px"
label="年龄">
<template slot-scope="scope">
<span :class="(scope.row.type && scope.row.type == 'sum') ? 'text_bule_underline': ''">{{scope.row.age}}</span>
</template>
</el-table-column>
</el-table>
事件: 可以在 @row-click="rowClick" 或者 @cell-click="singleClick" 里面判断触发.
// 点击行
rowClick (row, event, column) {
if (column.label=='查看'|| (row.type && row.type=="sum")) {
return
}
this.getInfo();
},
// 点击单元格
singleClick(row, column, cell, event) {
if (column.label=='查看') {
this.getDetailList();
}
},
目前除了以上这种我还没有找到更好的方法为Table组件合计行的某些单元格加上事件或者样式, 如果有其他更简便的方法, 欢迎交流~
UI组件--element-ui--Table组件自定义合计行的更多相关文章
- Vue. 之 Element获取table中选中的行
Vue. 之 Element获取table中选中的行 问题描述: 如下截图,在Table中选择数据后,然后在点击“统计”按钮,获取Table表中选择的行 解决方案: 1. 给“统计”这个按钮添加一个点 ...
- vue封装element中table组件
后台系统,table被用的次数比较多,所以决定提出来作为组件 1.新建一个Table.vue文件 <!--region 封装的分页 table--> <template> & ...
- 基于Vue的UI框架element el-table表格的自定义排序
html部分: <el-table-column prop="phoneCache" label="手机缓存包编号" align="center ...
- 09 - Vue3 UI Framework - Table 组件
接下来做个自定义的表格组件,即 table 组件 返回阅读列表点击 这里 需求分析 开始之前我们先做一个简单的需求分析 基于原生 table 标签的强语义 允许用户自定义表头.表体 可选是否具有边框 ...
- Element UI——本地引入iconfont不显示
前言 前面因为本地引入Element UI导致了iconfont不显示,所以只好再去Element UI官网去扒下iconfot 步骤 进入官网 组件 | Element UI F12进入控制台,找到 ...
- element ui table组件自定义合计栏,后台给的数据
合计的数据是后台传的,所以用table组件自定义一行用来合计 <el-table border fit v-loading.body="listLoading" elemen ...
- 普通element ui table组件的使用
1.使用基础的element ui 的table的基础使用 首先,使用前要先引用element库到项目中,可以直接引入element的js和css或者在vue项目下按需加载不同的组件 废话不多说,直接 ...
- Element UI table组件源码分析
本文章从如下图所示的最基本的table入手,分析table组件源代码.本人已经对table组件原来的源码进行削减,源码点击这里下载.本文只对重要的代码片段进行讲解,推荐下载代码把项目运行起来,跟着文章 ...
- (Element UI 组件 Table)去除单元格底部的横线
Element UI 组件 Table 有一个属性 border,添加它可以增加纵向边框,但是无法控制横线边框,因此即使是最简单的 el-table,也会包含一个底部横线. 这个底部横线其实是一个 b ...
随机推荐
- C#设计模式(13)——代理模式(Proxy Pattern)(转)
一.引言 在软件开发过程中,有些对象有时候会由于网络或其他的障碍,以至于不能够或者不能直接访问到这些对象,如果直接访问对象给系统带来不必要的复杂性,这时候可以在客户端和目标对象之间增加一层中间层,让代 ...
- 检测U盘插入、拨出状态
头文件 #include <Dbt.h> 关键代码: LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LP ...
- 排序之冒泡排序(bubblesort)
package com.pailian; /* * 冒泡排序 * 比较相邻的俩位数,这样每轮比较都会出现一个最大值或最小值 * 下一轮比较就会减少一次(因为已经知道了一个最大值或最小值) * 注意根据 ...
- 能否显示pdf?
<iframe src='http://km.shengaitcm.com/ADC/_layouts/15/WopiFrame.aspx?sourcedoc=%2FADC%2FDocLib16% ...
- SpringBoot整合Apache Shiro权限验证框架
比较常见的权限框架有两种,一种是Spring Security,另一种是Apache Shiro,两种框架各有优劣,个人感觉Shiro更容易使用,更加灵活,也更符合RABC规则,而且是java官方更推 ...
- shell里连接数据库,将结果输出到变量
result=$(sqlplus -s 'ccc/ccc@21.96.34.34:1521'<<EOF ..... EOF )
- python locust 性能测试:嵌套
TaskSet类和TaskSequence类可用于嵌套<可以在TaskSequences中嵌套TaskSets,反之亦然>: from locust import TaskSet, tas ...
- Git 爬坑路(从小白开始入门) ——(1)
通过git管理项目之前,需要先注册一个GitHub账号,方便在远程仓库进行项目管理. Git之项目在本地仓库的管理(从小白开始): 一.push到远程项目 1.在个人的GitHub账号中,创建一个远程 ...
- clean exit - waiting for changes before restart
在使用nodemon的时候,针对于同一个文件一次使用还好,当多次使用的时候就会出现这样的情况: 解决办法: nodemon clean exit 原因: 可能是因为缓存造成的:
- JS所包含的大纲内容,以及JS中数据类型、运算符的介绍
JavaSctipt javascript:1.特效2.表单验证 原理:何时?1.找到标签 何时?2.操作标签 写在那里? 内联(行内)(不推荐直接写js代码,经常写方法调用) 写在标签里面,以属性的 ...