element-ui table表格底部合计自定义配置过程
作者:痴心阿文
这篇文章主要介绍了element-ui table表格底部合计自定义配置过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
element-ui table表格底部合计自定义配置
【element-ui】
table表格底部合计自定义配置,最近做管理系统用到饿了么UI,用到了table表格合计需求,常用的table底部,有时候不是所有内容都需要合计,比如上图这个编号是数字,但是不需要合计计算处理的,这时候就需要用到自定义表格,把不需要合计的内容隐藏掉
效果如下:
方法写在下面:
带合计的表格设置
1.参数 show-summary
2. 方法 :summary-method="getSummaries"
<!--带合计的表格设置--> <el-table :data="infolist" border show-summary style="width: 100%;" @selection-change="selectionChangeHandleMateria" max-height="450" :summary-method="getSummaries"> <el-table-column type="selection" align="center" header-align="center" width="50"></el-table-column> <el-table-column prop="short_name" header-align="center" label="简称" align="center" show-overflow-tooltip> </el-table-column> <el-table-column prop="goods_code" header-align="center" label="商品编码" align="center" show-overflow-tooltip> </el-table-column> <el-table-column prop="goods_name" header-align="center" label="商品名称" align="center" show-overflow-tooltip> </el-table-column> <el-table-column prop="goods_spec" header-align="center" label="规格" align="center" show-overflow-tooltip> </el-table-column> <el-table-column prop="water_quantity" header-align="center" label="水份含量(%)" align="center" show-overflow-tooltip> </el-table-column> <el-table-column prop="material_quantity" header-align="center" label="原料重量(kg)" align="center" show-overflow-tooltip> <template slot-scope="scope"> <el-input v-model="scope.row.material_quantity" placeholder="请输入数量"></el-input> </template> </el-table-column> <el-table-column fixed="right" header-align="center" align="center" width="200" label="操作" show-overflow-tooltip> <template slot-scope="scope"> <i class="icon-btn el-icon-delete" @click.stop="deleteInfo(scope.row)"></i> </template> </el-table-column> </el-table>
自定义方法 getSummaries
//自定义方法 getSummaries(param) { const { columns, data } = param; const sums = {}; columns.forEach((column, index) => { if (index === 0) { sums[index] = '合计'; return; } // if (index === 3) { // sums[index] = ''; // return; // } const values = data.map(item => Number(item[column.property])); if (column.label == "水份含量(%)" || column.label == "原料重量(kg)") { if (!values.every(value => isNaN(value))) { sums[index] = values.reduce((prev, curr) => { const value = Number(curr); if (!isNaN(value)) { return prev + curr; } else { return prev; } }, 0); // sums[index] += ' kg'; } else { // sums[index] = 'N/A'; } } }); return sums; },
最后关于表格底部样式问题
官方默认合计行在表格尾部展示,以下为更改合计行的位置,放表格的首行位置
通过css实现可以加以下代码:
// /deep/ 为深度操作符,可以穿透到子组件 /deep/ .el-table { display: flex; flex-direction: column; } // order默认值为0,只需将表体order置为1即可移到最后,这样合计行就上移到表体上方 /deep/ .el-table__body-wrapper { order: 1; }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。