vue+ antd 表格多行合并问题

**

vue+ antd 表格行合并问题

**这里的代码适合多行合并,例如我得表格先按照年份,在按照月份

在这里插入图片描述

if (data.success) {
            let arr = data.data;
            // 处理表格合并
            const arr1 = _.sortBy(arr, ['year', 'month']);
            const obj = _.groupBy(arr1, 'year');
            console.log(arr1, obj, '===========arr1');
            for (const firstKey in obj) {
              let firstColRowSpan = 1;
              let secondColRowSpan = 1;
              if (Object.hasOwnProperty.call(obj, firstKey)) {
                firstColRowSpan = obj[firstKey].length;
                obj[firstKey].forEach((element, i) => {
                  element.firstColRowSpan = i % firstColRowSpan === 0 ? firstColRowSpan : 0;
                });
                const obj2 = _.groupBy(obj[firstKey], 'month');
                for (const secondKey in obj2) {
                  if (Object.hasOwnProperty.call(obj2, secondKey)) {
                    secondColRowSpan = obj2[secondKey].length;
                    obj2[secondKey].forEach((element, i) => {
                      element.secondColRowSpan = i % secondColRowSpan === 0 ? secondColRowSpan : 0;
                    });
                  }
                }
              }
            }
            this.tableData = arr1;
          }

在column部分

const handleFirstCollapseRows = (value, row, index) => {
  const { firstColRowSpan } = row || {};
  return {
    children: value,
    attrs: {
      rowSpan: firstColRowSpan
    }
  };
};
const handleSecondCollapseRows = (value, row, index) => {
  const { secondColRowSpan } = row || {};
  return {
    children: value,
    attrs: {
      rowSpan: secondColRowSpan
    }
  };
};

{
        title: '年份',
        dataIndex: 'year',
        align: 'center',
        width: 100,
        customRender: handleFirstCollapseRows,
      },
      {
        title: '月份',
        dataIndex: 'month',
        align: 'center',
        width: 100,
        customRender: handleSecondCollapseRows,
      },

这个代码通用

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue antd table 是一种非常方便的数据表格组件,可以用来展示和管理大量的数据信息。在使用中,我们有时候需要在某个单元格里面嵌套一个表格,用来展示更详细的数据信息。这种场景下,我们需要实现vue antd table一格加多的效果。 实现这个效果的方法有多种,这里介绍一种比较简单的方式: 1. 首先,在vue antd table中找到需要嵌套的单元格,给它加上一个 slot 插槽。例如: ```html <a-table-column title="姓名"> <template slot-scope="text, record"> <span>{{ record.name }}</span> <div slot="expandedRowRender"> <p>更详细的信息。。。</p> <p>更详细的信息。。。</p> <p>更详细的信息。。。</p> </div> </template> </a-table-column> ``` 这里要注意,设置 slot 的名称为 expandedRowRender,这样才可以使多数据展开在同一个单元格内。 2. 接着,在 a-table 中添加一个属性,用来指定当前表格是否支持展开:expandedRowRender。例如: ```html <a-table :columns="columns" :data-source="data" :pagination="false" :expanded-row-render="true"></a-table> ``` 这里要注意,设置 expanded-row-render 的值为 true,表示允许展开。当然,还可以给 expanded-row-render 设置具体的属性值,比如属性值为 object 表示可以通过对象来配置展开的。 3. 最后,在 table 中添加一个事件监听函数,用来处理展开功能的具体逻辑。例如: ```html <a-table :columns="columns" :data-source="data" :pagination="false" :expanded-row-render="true" @expandedRowsChange="onExpandedRowsChange"></a-table> ``` 在 onExpandedRowsChange 函数中,我们可以进一些表格展开和关闭的操作,例如: ```javascript methods: { onExpandedRowsChange(rows) { if (rows.length == 0) { // 关闭所有 return; } console.log('展开:', rows[0]); } } ``` 需要注意的是,由于 expandedRowRender 的值为 true,表示允许展开,所以属性 @expandedRowsChange 才会生效,才能实现展开的效果。 通过以上三个步骤,我们就可以实现vue antd table一格加多的效果了。当然,具体实现方式还要根据自己的实际情况来进调整,如果你还有其他更好的实现方式,欢迎在评论中分享给大家。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值