合并行和列

本文介绍了一种JavaScript方法实现的表格数据处理,通过`objectSpanMethod`函数合并行和列,以复评、审核等认可率为例,实时计算并展示总计。关键步骤包括行数计数和条件判断以决定单元格合并策略。
摘要由CSDN通过智能技术生成
<w-table :span-method="objectSpanMethod">
//合计和合并行
      objectSpanMethod({
        row,
        column,
        rowIndex,
        columnIndex
      }) {
        console.log(row)
        console.log(column)
        console.log(rowIndex)
        console.log(columnIndex)
        let rowNum1 = 0
        let rowNum2 = 0
        let rowNum3 = 0
        let rowNum4 = 0
        console.log(this.tableContent,"this.tableContent")
        this.tableContent.forEach((item) => {
          if (item.ItemName == "复评认可率") {
            rowNum1++
          }
          if (item.ItemName == "审核认可率") {
            rowNum2++
          }
          if (item.ItemName == "回复采纳率") {
            rowNum3++
          }
          if (item.ItemName == "点评认可率") {
            rowNum4++
          }
        })
        console.log(rowNum1)
        console.log(rowNum2)
        console.log(rowNum3)
        console.log(rowNum4)
        //合并行
        if (columnIndex === 0) {
          if (row.ItemName == "复评认可率") {
            if (rowIndex === 0) {
              return {
                rowspan: rowNum1,
                colspan: 1
              }
            }
            return {
              rowspan: 0,
              colspan: 0
            };
          }
          if (row.ItemName == "审核认可率" && rowNum1 != 0) {
            if (rowIndex === rowNum1) {
              return {
                rowspan: rowNum2,
                colspan: 1
              }
            }
            return {
              rowspan: 0,
              colspan: 0
            };
          }
          if (row.ItemName == "审核认可率" && rowNum1 == 0) {
            if (rowIndex === rowNum1) {
              return {
                rowspan: rowNum2,
                colspan: 1
              }
            }
            return {
              rowspan: 0,
              colspan: 0
            };
          }
          if (row.ItemName == "回复采纳率" && rowNum1 != 0 && rowNum2 != 0) {
            if (rowIndex === rowNum1 + rowNum2) {
              return {
                rowspan: rowNum3,
                colspan: 1
              }
            }
            return {
              rowspan: 0,
              colspan: 0
            };
          }
          if (row.ItemName == "点评认可率" && rowNum1 != 0 && rowNum2 != 0 && rowNum3 != 0) {
            if (rowIndex === rowNum1 + rowNum2 + rowNum3) {
              return {
                rowspan: rowNum4,
                colspan: 1
              }
            }
            return {
              rowspan: 0,
              colspan: 0
            };
          }
          else {
            return {
              rowspan: 1,
              colspan: 1
            };
          }
        }
        //合并列
        if (row.ItemName == "复评认可率") {
          if (columnIndex === 1 && rowIndex == rowNum1-1) {
            return {
              rowspan: 1,
              colspan: 2
            }
          }
            else if (columnIndex === 2 && rowIndex == rowNum1-1) {
            return [0, 0];
          }
        }
        if (row.ItemName == "审核认可率") {
          if (columnIndex === 1 && rowIndex == rowNum1 + rowNum2 -1) {
            return {
              rowspan: 1,
              colspan: 2
            }
          }
            else if (columnIndex === 2 && rowIndex == rowNum1 + rowNum2 -1) {
            return [0, 0];
          }
        }
        if (row.ItemName == "回复采纳率") {
          if (columnIndex === 1 && rowIndex == rowNum1 + rowNum2 + rowNum3 -1) {
            return {
              rowspan: 1,
              colspan: 2
            }
          }
            else if (columnIndex === 2 && rowIndex == rowNum1 + rowNum2 + rowNum3 -1) {
            return [0, 0];
          }
        }
        if (row.ItemName == "点评认可率") {
          if (columnIndex === 1 && rowIndex == rowNum1 + rowNum2 + rowNum3 + rowNum4 -1) {
            return {
              rowspan: 1,
              colspan: 2
            }
          }
            else if (columnIndex === 2 && rowIndex == rowNum1 + rowNum2 + rowNum3 + rowNum4 -1) {
            return [0, 0];
          }
        }
      },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值