antd——实现单元格合并和自定义勾选功能——基础积累

antd实现table表格的单元格合并及自定义勾选功能

表格合并单元格及添加勾选功能:
在这里插入图片描述
antd实现单元格合并需要通过下面的方式来处理:

columns=[
	{
      title: "订单",
      dataIndex: "code",
      key: "code",
      customRender: (value, row, index) => {
        return {
          children: (
            <div style="display:flex;">
              <a-checkbox
                v-model={row.editFlag}
                style="margin-right:6px;"
              />
              <div>
                <div>{row.billOrderCode}</div>
                <div>{row.productName}</div>
              </div>
            </div>
          ),
          attrs: {
            rowSpan: this.codeArr[index],
          },
        };
      },
      customCell: (row, index) => {
        return {
          on: {
            click: (e) => {
              this.selectRow(row, index);
            },
          },
        };
      },
      width: 120,
    },
]

合并单元格部分的内容为一个多选框和部分字段

 customRender: (value, row, index) => {
  return {
    children: (
      <div style="display:flex;">
        <a-checkbox
          v-model={row.editFlag}
          style="margin-right:6px;"
        />
        <div>
          <div>{row.billOrderCode}</div>
          <div>{row.productName}</div>
        </div>
      </div>
    ),
    attrs: {
      rowSpan: this.codeArr[index],
    },
  };
},

合并单元格的部分

attrs: {
  rowSpan: this.codeArr[index],
},

触发点击事件

customCell: (row, index) => {
  return {
    on: {
      click: (e) => {
        this.selectRow(row, index);
      },
    },
  };
},

两个数组的合并

this.selectedRows = this.selectedRows.concat(arr);

对象数组的去重方法

对象数组的去重方法:

this.selectedRows = this.resetArray(this.selectedRows, "id");

使用的resetArray方法:

resetArray(Arr, id) {
  var obj = {};
  const arrays = Arr.reduce((setArr, item) => {
    obj[item[id]] ? "" : (obj[item[id]] = true && setArr.push(item));
    return setArr;
  }, []);
  return arrays;
},

获取合并单元格的数组

filterTableData() {
  let contactDot = 0;
  this.serialArr = [];
  this.tableData.forEach((item, index) => {
    if (index == 0) {
      this.serialArr.push(1);
    } else {
      if (item.serial === this.tableData[index - 1].serial) {
        this.serialArr[contactDot] += 1;
        this.serialArr.push(0);
      } else {
        contactDot = index;
        this.serialArr.push(1);
      }
    }
  });
  this.changeColumns();
},

changeColumns方法

changeColumns(){
	this.columns = [
	{
           title: "物料类型",
           dataIndex: "materialType",
           key: "materialType",
           scopedSlots: { customRender: "materialType" },
           width: 100,
           align: "center",
           customRender: (value, row, index) => {
             return {
               children: <span>{row.materialTypeName}</span>,
               attrs: {
                 rowSpan: this.serialArr[index],
               },
             };
           },
         },
	]
}

完成!!!多多积累,多多收获!!!

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶浩成520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值