vue中使用 el-table 合计表头并自定义合并列并显示后端返回的合计数据

在这里插入图片描述

效果图

请添加图片描述

html
	<el-table
        ref="table"
        :data="tableData.list"
        style="width: 100%"
        :header-cell-style="{ background: 'var(--shallow-green)' }"
        :row-class-name="rowBgClass"
        border
        size="medium"
        show-summary
        :span-method="handler"
        :summary-method="getSum"
      >
        <el-table-column type="selection" width="70" align="center" />
        <el-table-column type="index" label="序号" width="70" align="center" />
        <el-table-column
          label="分包单位"
          width="200"
          align="center"
          prop="FENBAODANWEI"
        >
          <template slot-scope="scope">
            <el-button type="text" @click="checkDeatil(scope.row)">{{
              scope.row.FENBAODANWEI
            }}</el-button>
          </template>
        </el-table-column>
        <el-table-column
          v-for="(item, index) of tableData.table"
          :key="index"
          :label="item.NAME"
          align="center"
          :prop="item.ID"
        >
          <template slot-scope="scope">
            <div>
              <span>{{
                scope.row["A_" + item.ID] ? scope.row["A_" + item.ID] : 0
              }}</span>
            </div>
          </template>
        </el-table-column>
      </el-table>
主要是需要ref以及show-summary, :span-method=“handler” 和 :summary-method=“getSum”
method
handler() {
      this.$nextTick((x) => {
        if (this.$refs.table.$el) {
          var current = this.$refs.table.$el
            .querySelector(".el-table__footer-wrapper")
            .querySelector(".el-table__footer");
          var tds = current.rows[0].cells;
          tds[0].style.display = "none";
          tds[1].style.display = "none";
          tds[2].colSpan = "3";
        }
      });
    },
    getSum(param) {
        if (this.countArr) {
          const { columns, data } = param;
          const sums = [];
          columns.forEach((column, index) => {
            console.log(column, index, "aaaaaaaa", this.countArr);
            if (column.property != undefined && index === 2) {
              sums[index] = "合计";
              return;
            }else if(column.property != undefined && index === 3){
              sums[index] = this.countArr[0].A_111V6320230B
            }else if(column.property != undefined && index === 4){
              sums[index] = this.countArr[0].A_1J2B27A12328
            }
          });

          return sums;
        }
    },
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue3 ,可以使用 `v-slot` 和 `@click` 指令来实现点击表头修改表格数据的功能。 首先,在 `<el-table>` 标签添加 `@header-click` 监听器来捕获表头点击事件,并将其绑定到一个方法: ```html <el-table :data="tableData" @header-click="handleHeaderClick"> <!-- 表格 --> </el-table> ``` 然后,在 `handleHeaderClick` 方法获取到被点击的表头的字段名,并根据需要修改表格数据。例如,可以按照表头的升降序对表格数据排序,或者筛选出符合某些条件的数据。 ```js methods: { handleHeaderClick(column) { // 获取被点击的表头的字段名 const prop = column.property; // 根据字段名进表格数据的修改操作 // 例如,按照升降序对表格数据排序 this.tableData.sort((a, b) => a[prop] - b[prop]); } } ``` 最后,可以在需要修改表格数据表头使用 `v-slot` 和 `@click` 指令来添加点击事件。例如,下面的代码演示了如何在“操作”上添加一个“删除”按钮,点击该按钮后删除对应的数据: ```html <el-table :data="tableData" @header-click="handleHeaderClick"> <el-table-column label="姓名" prop="name"></el-table-column> <el-table-column label="年龄" prop="age"></el-table-column> <el-table-column label="操作"> <template v-slot:header> <span>操作</span> <span @click="handleDeleteAll">全部删除</span> </template> <template v-slot="scope"> <el-button @click="handleDelete(scope.row)">删除</el-button> </template> </el-table-column> </el-table> ``` 其,`handleDeleteAll` 方法可以用来删除所有数据,而 `handleDelete` 方法则可以用来删除单个数据。 ```js methods: { handleHeaderClick(column) { // 获取被点击的表头的字段名 const prop = column.property; // 根据字段名进表格数据的修改操作 // 例如,按照升降序对表格数据排序 this.tableData.sort((a, b) => a[prop] - b[prop]); }, handleDelete(row) { // 从表格数据删除指定数据 const index = this.tableData.indexOf(row); if (index !== -1) { this.tableData.splice(index, 1); } }, handleDeleteAll() { // 删除所有数据 this.tableData = []; } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值