elementPlus表格table自定义合计行,还不止一行!

一、背景描述

技术环境:vite3+vue3+ts

遇到问题:合计行要自定义展示两行,并且表格表体滚动时保持贴底状态,不跟随滚动

原型图里表格灰色部分:

这么一看两行果然是自定义,给绑定数据做改动不能满足了

嘶~

那就继续尝试吧!

二、思路&方案

1、表格组件可以开启合计属性(点我直达),描述如下:

 element ui里有人举例如何多行,但是在plus里实现不了,不满足产品需求

此方法pass

2、要不还是修改样式把?粘性布局我觉得ok

把每页最后一行数据标记好,自定义数据内容,利用表格属性:

 明显产品需求的自定义两行,这个看着倒是可以解决,开始尝试如下:

ts代码

const rowClass = ({ row }: { row: IRowDataType }) => {
  if (row.isCustom) {
    return 'fixed-row'
  } else {
    return ''
  }
}

scss代码:

:deep(.fixed-row) {
  display: table-row;
  position: sticky;
  bottom: 0 !important;
  width: 100%;
  z-index: 2;
  font-weight: 600;
}

尝试下来发现粘性布局多个的话只有一个生效!!

ok,问题解决了一半,继续找另一半解决办法

3、于是继续翻找API,果然有一个插槽选项比较合适,如下:

 这个插槽可以用,先安排上,但是有个问题,没办法和表体一起滚起来,这是一块区域固定的,

那就把插槽当自定义的第二行吧,第一行用刚才的法子解决

修改好样式,再微调下,这样整体问题解决100%

三、总结

elementPlus的表格插件,是挺好用的,就是官网时不时的打不开。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在el-table中添加自定义合计,你需要进以下几个步骤: 1. 在el-table中添加合计的位置。你可以选择将合计插入到表格数据中的任意位置,例如,在第二的位置插入合计(索引为1)。 2. 在表格数据中添加合计的数据。你可以根据实际需求为合计添加相应的数据。 3. 在el-table中定义合计的模板。你可以使用<template>标签来定义合计的样式和内容。 4. 使用计算属性来处理表格数据,并在合适的位置插入合计的数据。在计算属性中,你可以通过对原始表格数据进处理,将合计的数据插入到正确的位置。 下面是一个示例代码,演示了如何在el-table中添加自定义合计: ``` <template> <el-table :data="computedTableData"> <el-table-column type="index" label="序号" width="80"></el-table-column> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column prop="score" label="分数"></el-table-column> <!-- 添加合计的模板 --> <template slot="append"> <el-table-column label="合计"> <template slot-scope="scope"> {{ getTotal(scope.$index) }} </template> </el-table-column> </template> </el-table> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 18, score: 80 }, { name: '李四', age: 20, score: 90 }, { name: '王五', age: 22, score: 85 } ] }; }, computed: { computedTableData() { let totalRow = { name: '合计', age: 0, score: 0 }; // 在合适的位置插入合计的数据 this.tableData.splice(1, 0, totalRow); return this.tableData; } }, methods: { getTotal(index) { // 计算合计值 let total = 0; for (let i = 0; i < this.tableData.length; i++) { total += this.tableData[i].score; } return total; } } }; </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值