el-table合计行不展示,el-table自定义合计

el-table合并行不展示,可能是因为表格的高度超过了屏幕的高度,设置样式

.el-table {   
  overflow: visible !important; 
}
.el-table__footer-wrapper {
  overflow: auto;
}
.el-table--scrollable-x .el-table__body-wrapper {
  overflow: hidden;
}

el-table自定义合计行的样式,实例如下:

设置el-table,show-summary设置合计行,默认情况下,只要数据是数字类型的就会自动进行累加并且展示最后结果。:summary-method="getSummaries自定义合计行展示数据,可以设置不需要展示的累加数据。

    <el-table 
      :data="tableData" 
      style="width: 100%;margin-top:10px" 
      row-key="id"
      v-loading="tableLoading" 
      border size="small" 
      id="exportExcel" 
      show-summary
      :summary-method="getSummaries"
      >
<!-- ... 设置的各列数据 -->
</el-table>

// 表格合计 指定列
    getSummaries(param) {
      const Index = [6,8,11,12,13,14]
      const { columns, data } = param;
        const sums = [];
        columns.forEach((column, index) => {
          if (index === 0) {
            // 默认 第一列展示总计,可以进行修改
            sums[index] = '总价';
            return;
          }
            // 判断是否是数字 不是数字的话 展示空 是数字的话 添加'元'字
          const values = data.map(item => { 
            return Number(item[column.property]);
            });
          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] += ' 元';
          } else {
            sums[index] = '';
          }
          if (Index.includes(index)) {
            sums[index] = ''
          }
        });
        return sums;
    },

需要对表格合计行进行合并的话,可以使用监听的方法,对表格进行监听:

watch: {
    tableData:{
        immediate:true,
        async handler(){
          await this.$nextTick(); // 数据假如是从异步获取的话,可以进行这部操作
          const tables = document.querySelectorAll('#exportExcel .el-table__footer-wrapper tr>td'); // 拿到合计行
          tables[0].colSpan=3; // 合并前三列
          tables[0].style.textAlign='center' // 居中显示
          tables[1].style.display='none' // 1/2设置为none后面的才不会移位,不然后面的会移位
          tables[2].style.display='none'
       }
    }
  },

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值