美文网首页
el-table自定义合并行或列

el-table自定义合并行或列

作者: 小怪兽出没_86e0 | 来源:发表于2021-11-22 10:55 被阅读0次

    ElementUI:通过给table传入span-method方法可以实现合并行或列,方法的参数是一个对象,里面包含当前行row、当前列column、当前行号rowIndex、当前列号columnIndex四个属性。该函数可以返回一个包含两个元素的数组,第一个元素代表rowspan,第二个元素代表colspan。 也可以返回一个键名为rowspan和colspan的对象。

    以下是合并行:

    template:

    <el-table

          :data="tableData"

          :span-method="objectSpanMethod"

          border

          style="width: 100%; margin-top: 20px">

          <el-table-column prop="date" align="center" label="时间日期" width="120"></el-table-column>

          <el-table-column prop="time" label="单位" width="120"></el-table-column>

          <el-table-column prop="unit" label=""></el-table-column>

          <el-table-column

            prop="name"

            label="姓名">

          </el-table-column>

          <el-table-column

            prop="amount1"

            label="数值 1(元)">

          </el-table-column>

          <el-table-column

            prop="amount2"

            label="数值 2(元)">

          </el-table-column>

          <el-table-column

            prop="amount3"

            label="数值 3(元)">

          </el-table-column>

        </el-table>

    js:

    data() {

      return {

    spanArr: [],

    pos: 0

      }

    },

    watch: {

      tableData: {

        handler () {

          this.getSpanArr(this.tableData)

        },

        immediate: true

      }

    },

    methods: {

    // 根据条件合并随意行数,因为合并的行数可能是不固定的(传入的data参数为从后台数据数据)

        getSpanArr(data) {

          this.spanArr = []

          this.pos = 0

          for (var i = 0; i < data.length; i++) {

            if (i === 0) {

              // 如果是第一条记录(即索引是0的时候),向数组中加入1

              this.spanArr.push(1)

              this.pos = 0

            } else {

              if (data[i].name=== data[i - 1].name) {

                // 如果name相等就累加,并且push 0 (这里的判断视自己的判定依据改变,name就是要对比的字段)

                this.spanArr[this.pos] += 1

                this.spanArr.push(0)

              } else {

                // 不相等push 1

                this.spanArr.push(1)

                this.pos = i

              }

            }

          }

        },

        objectSpanMethod({ row, column, rowIndex, columnIndex }) {

          // 用于设置要合并的列 0 表示第一列

          if (columnIndex === 0) {

            const cRow = this.spanArr[rowIndex]

            const cCol = cRow > 0 ? 1 : 0

            return {

              rowspan: cRow, // 合并的行数

              colspan: cCol // 合并的列数,为0表示不显示

            }

          }

        }

    }

    原文链接:https://blog.csdn.net/qq_38157825/article/details/119211247

    相关文章

      网友评论

          本文标题:el-table自定义合并行或列

          本文链接:https://www.haomeiwen.com/subject/vnzvtrtx.html