首页 > 其他分享 >el-table一样的行合并

el-table一样的行合并

时间:2023-12-26 18:00:46浏览次数:18  
标签:el rowspan return index 合并 key table rowSpanNumObject data

 import { getRowSpanMethod } from './use-span-method';
<el-table
                row-key="id"
                v-loading="tableLoading"
                :data="tableListData"
                :max-height="tableHeight"
                :span-method="spanMethod"
            >
</el-table>

const spanMethod = computed(() => {
    return getRowSpanMethod(tableListData.value, ['orgName', 'instanceCode']);
});
use-span-method.js
/**
 * 合并相同数据,导出合并列所需的方法(只适合el-table)
 * @param {Object} data
 * @param {Object} rowSpanArray
 */
export function getRowSpanMethod(data, rowSpanArray) {

    /**
     * 要合并列的数据
     */
    const rowSpanNumObject = {};

    //初始化 rowSpanNumObject
    rowSpanArray.map(item => {
        rowSpanNumObject[item] = new Array(data.length).fill(1, 0, 1).fill(0, 1);
        rowSpanNumObject[`${item}-index`] = 0;
    });
    //计算相关的合并信息
    for (let i = 1; i < data.length; i++) {
        rowSpanArray.map(key => {
            const index = rowSpanNumObject[`${key}-index`];
            if (data[i][key] === data[i - 1][key]) {
                rowSpanNumObject[key][index]++;
            } else {
                rowSpanNumObject[`${key}-index`] = i;
                rowSpanNumObject[key][i] = 1;
            }

        });
    }

    //提供合并的方法并导出
    const spanMethod = function({ row, column, rowIndex, columnIndex }) {
        if (rowSpanArray.includes(column['property'])) {
            const rowspan = rowSpanNumObject[column['property']][rowIndex];
            if (rowspan > 0) {
                return { rowspan: rowspan, colspan: 1 }
            }
            return { rowspan: 0, colspan: 0 }
        }
        return { rowspan: 1, colspan: 1 }
    };

    return spanMethod;
} 

 

标签:el,rowspan,return,index,合并,key,table,rowSpanNumObject,data
From: https://www.cnblogs.com/zhangxingxia/p/17928966.html

相关文章

  • vue3 elementplus 表格表头过长 三个点显示
    vue3:constrenderHeaderMethods=({column})=>{returncreateVNode(resolveComponent('el-tooltip'),{effect:'dark',content:column.label,placement:'top'......
  • # 声明合并
    声明合并如果定义了两个相同名字的函数、接口或类,那么它们会合并成一个类型。接口的合并接口中的属性在合并时会简单的合并到一个接口中:interfaceAlarm{price:number;}interfaceAlarm{weight:number;}相当于:interfaceAlarm{price:number;w......
  • .NET8操作Mysql,Pomelo.EntityFrameworkCore.MySql版本目前最高只有7.0解决办法
    Pomelo.EntityFrameworkCore.MySql7.0是不支持.NET8的,但现在Pomelo.EntityFrameworkCore.MySql的最新版本只有7.0因为 Pomelo.EntityFrameworkCore.MySql8.0还在研发中,还没有正式的版本,只有公测版本,可以在控制台中直接输入命令安装即可Install-PackagePomelo.EntityFrameworkCor......
  • OpenCV Label标注软件
    传统OpenCV图像处理一般不需要进行数据training,目前流行的神经网络的图像处理都需要基于数据进行训练,首先要对图像数据打标签,有几个常用的Label标注软件:labelimg:只能使用矩形圈出对象labelme:支持使用多边形来圈出对象anylabeling:除了手工打标签外,还提供AI自动打标......
  • GPT-3《Language Models are Few-Shot Learners》解读
    GPT-3和GPT-2差别1. 效果上,超出GPT-2非常多,能生成人类难以区分的新闻文章;2. 主推few-shot,相比于GPT-2的zero-shot,具有很强的创新性;3. 模型结构略微变化,采用sparseattention模块;4. 海量训练语料 45TB(清洗后570GB),相比于GPT-2的40GB;5. 海量模型参数,最大模型为......
  • 现场图曝光!ASML第一台2nm光刻机正式交付Intel:组装起来比卡车还大
    现场图曝光!ASML第一台2nm光刻机正式交付Intel:组装起来比卡车还大投递人 itwriter 发布于 2023-12-2509:07 评论(1) 有399人阅读 原文链接 [收藏] « »快科技12月24日消息,近日,荷兰光刻机巨头ASML公司宣布,优先向Intel公司交付其新型高数值孔径(HighNAEU......
  • 基于Python-Windows环境的Excel页面截图并邮件正文发送
    截图模块#截图模块defget_snapshot():#定义变量#excel文件的绝对位置excel_file=r'E:\L.xlsx'#输出图片的绝对位置output_png_path=r'E:\L.png'#excel的sheet名称excel_tb='每日销售'#注意要装excel软件,否则会报错excel=win......
  • 爬虫遇到abort method will be deleted later!怎么解决
    当你在爬虫过程中遇到`abort`methodwillbedeletedlater!的错误时,这通常是由于网站的反爬虫机制所导致的。网站为了防止被爬虫程序过度访问,会设置一些限制,例如频率限制、验证码验证等。为了解决这个问题,你可以尝试以下几种方法:1.增加延迟:在发送HTTP请求之间增加一定的延迟时间,可......
  • 无涯教程-Java9 - JShell(REPL)
    REPL代表"Read-Eval-PrintLoop"。使用JShell,java具有REPL函数。使用REPL,无涯教程可以对基于Java的逻辑进行编码和测试,而无需使用javac进行编译,并且可以直接查看计算输出。运行JShell打开命令提示符,然后键入jshell。$jshell|WelcometoJShell--Version9-ea|Forani......
  • Selenium的操作
    简介Selenium是广泛使用的模拟浏览器运行的库,它是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,并且支持大多数现代Web浏览器。一、环境安装2.安装selenimum包pipinstallselenium2.安装浏览器驱动在官方下载EdgeDriverMicrosoftEd......