vue之table表格的合并

article/2025/4/25 0:25:17

目录

  • vue之table表格的动态合并
    • vue之table表格的动态合并 后台给数据 处理断层
    • vue之table表格的动态合并 后台给数据 前端处理断层
    • 根据后台数据合并前三列数据

vue之table表格的动态合并

vue之table表格的动态合并 后台给数据 处理断层

  • 转载于:https://blog.csdn.net/qq_43563070/article/details/105545923
    在这里插入图片描述
        <el-table:data="tableData":span-method="arraySpanMethod"borderstyle="width: 100%"><el-table-column prop="id" label="ID" width="180"> </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><script>
export default {name: "ProjectLoanInfoQuery",components: {},data() {return {tableData: [{id: "12987122",name: "王小虎",amount1: "234",amount2: "3.2",amount3: 10,},{id: "12987122",name: "王小虎",amount1: "165",amount2: "4.43",amount3: 12,},{id: "12987122",name: "王小虎",amount1: "324",amount2: "1.9",amount3: 9,},{id: "12987122",name: "王小虎",amount1: "621",amount2: "2.2",amount3: 17,},{id: "12987122",name: "王小虎",amount1: "539",amount2: "4.1",amount3: 15,},{id: "12987122",name: "王小虎",amount1: "234",amount2: "3.2",amount3: 10,},{id: "合计1",name: "",amount1: "121212",amount2: "121212",amount3: "121212",},{id: "12987122",name: "王小虎",amount1: "324",amount2: "1.9",amount3: 9,},{id: "12987122",name: "王小虎",amount1: "621",amount2: "2.2",amount3: 17,},{id: "12987122",name: "王小虎",amount1: "539",amount2: "4.1",amount3: 15,},{id: "12987122",name: "王小虎",amount1: "539",amount2: "4.1",amount3: 15,},{id: "12987122",name: "王小虎",amount1: "539",amount2: "4.1",amount3: 15,},{id: "12987122",name: "王小虎",amount1: "539",amount2: "4.1",amount3: 15,},{id: "合计2",name: "",amount1: "121212",amount2: "121212",amount3: "121212",},],colArr1: [6, 0, 0, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 1],// 合拼数组,1表示不合拼,0表示该行被合并,colArr1的长度就是后台返回的数组长度// tablesumBalanceList: [{curName: "人民币",curcd: "CNY",sumBalance: 1933333333,sumBalanceCanUse: 1932333333,sumBalanceCanUseRmb: 1932333333,sumBalanceRmb: 1933333333,sumBalanceUsed: 1000000,sumBalanceUsedRmb: 1000000,},{curName: "美元",curcd: "USD",sumBalance: 1542289,sumBalanceCanUse: 1542289,sumBalanceCanUseRmb: 1542289,sumBalanceRmb: 1542289,sumBalanceUsed: 2222222,sumBalanceUsedRmb: 2222222,},],};},methods: {arraySpanMethod({ row, column, rowIndex, columnIndex }) {//合拼第一二列的行if (columnIndex === 0 || columnIndex === 1 || columnIndex === 2) {const _row = this.colArr1[rowIndex];const _col = _row > 0 ? 1 : 0;console.log("_row", _row, "_col", _col);//返回行和列的合拼数return {rowspan: _row,colspan: _col,};}},},
};
</script>

vue之table表格的动态合并 后台给数据 前端处理断层

在这里插入图片描述

      <div class="table-wrap"><listTabel:style="{ height: '100%' }":data="tableData":spanMethod="arraySpanMethod":isLoading="loading"ref="listTable"/></div>tableData: {tableCol: [{ prop: "custname", label: "企业名称", minWidth: 250 },{ prop: "type", label: "业务类别", minWidth: 120 },{ prop: "projectName", label: "项目名称", minWidth: 120 },{ prop: "projectInvestAmt", label: "项目总投", minWidth: 120 },{ prop: "projectCapitalAmt", label: "项目资本金", minWidth: 120 },{ prop: "syndicatedTotalAmt", label: "银团总额", minWidth: 120 },{ prop: "bankType", label: "银团行类型", minWidth: 120 },{ prop: "bankName", label: "银行名称", minWidth: 120 },{ prop: "bankApproveDate", label: "批复时间", minWidth: 120 },{ prop: "curcdName", label: "币种", minWidth: 120 },],tableData: [],},colArr1: [],// 请求数据后来后处理this.tableData.tableData = data.dat.data.map( item => {if ( item.id == "小计") {item.custname = "小计";}return item;})this.defaultValue.total = data.dat.count;let colArr = []; // table需要合并的数据 合拼数组,1表示不合拼,0表示该行被合并,colArr1的长度就是后台返回的数组长度let upIndex = 0  // 上一次小计的 index初始值if ( data.dat.data && data.dat.data.length > 0 ) {// 第一个为小计的时候 if ( data.dat.data[0].id  === "小计") {colArr.push(1)upIndex = 1; // 记录上一次小计的 index}data.dat.data.forEach((item, index) => {if ( item.id == "小计" && index != 0 ) { // 判断是否为小计let resIndex = index - upIndex; // 当前合并的index长度 = 当前index - 上一次indexcolArr.push(resIndex) // push 一个 计算出来的合并行数 当前被合并的行for (let i = 0; i < resIndex - 1 ; i++) {colArr.push(0) // push 一个 0 当前被合并的行}colArr.push(1) // push 一个 1 当前被合并的行upIndex = colArr.length; // 记录上一次index} });// 最后一个没有小计的时候 从最后一条合并到上一条有小计的数据if ( data.dat.data[data.dat.data.length - 1 ].id  !== "小计") {let resIndex = data.dat.data.length - upIndex; // 当前合并的index长度 = 当前index - 上一次indexcolArr.push(resIndex) // push 一个 计算出来的合并行数 当前被合并的行} }// console.log("colArr",colArr);this.colArr1 = colArr;// 合并tablearraySpanMethod({ row, column, rowIndex, columnIndex }) {//合拼第一二列的行if (columnIndex <= 6) {const _row = this.colArr1[rowIndex];const _col = _row > 0 ? 1 : 0;// console.log("_row", _row, "_col", _col);//返回行和列的合拼数return {rowspan: _row,colspan: _col,};}},

根据后台数据合并前三列数据

在这里插入图片描述

	// 数据// 合并表格的merageArr: [],meragePos: 0,tableData: [{industryName: "合并1",contractno:"001",custname:"菜鸡1"},{industryName: "合并1",contractno:"001",custname:"菜鸡1"},{industryName: "合并2",contractno:"002",custname:"菜鸡2"},{industryName: "合并2",contractno:"002",custname:"菜鸡2"},{industryName: "合并3",contractno:"003",custname:"菜鸡"},],// 查询后 调用this.merage(this.tableData)	// 合并table数据arraySpanMethod({ row, column, rowIndex, columnIndex }) {if (columnIndex < 2) {const _row = this.merageArr[rowIndex];const _col = _row > 0 ? 1 : 0; //如果被合并了_row=0则它这个列需要取消return {rowspan: _row,colspan: _col,};}},// 要合并的数组的方法merage(tableData) {this.merageInit();for (var i = 0; i < tableData.length; i++) {if (i === 0) {// 第一行正常显示 必须存在this.merageArr.push(1);this.meragePos = 0;} else {// 判断当前元素与上一个元素是否相同 根据是否合并的idif (tableData[i].industryName === tableData[i - 1].industryName) {this.merageArr[this.meragePos] += 1;this.merageArr.push(0);} else {this.merageArr.push(1);this.meragePos = i;}}}},merageInit() {this.merageArr = [];this.meragePos = 0;},

http://chatgpt.dhexx.cn/article/g3Po5Apn.shtml

相关文章

HTML-table表格详解

文章目录 表格表格的说明(创建一个表格)1. 说明2. 设置 表头和表格边框样式设置1. 设置 长表格结构和补充1. 说明2. 结构3. 补充 表格布局(被淘汰)1. 表格布局(已经被 CSS 淘汰) 表格 表格的说明(创建一个表格) <!DOCTYPE html> <html><head><meta char…

HTML中的table表格

表格标签 分为行&#xff08;tr&#xff09;和列&#xff08;td&#xff09;&#xff0c;行及列都可以进行合并操作 table:定义表格 tr:定义行 td:定义列 //先有行&#xff0c;后有列 th:多用于表头&#xff0c;定义表格中…

elementUi——Table表格

Table表格 1、基础表格 在 Table 组件中&#xff0c;每⼀个表格由⼀个 Table-Column 组件构成&#xff0c;也就是表格的列 2、表格常用属性 3、常用属性 4、通过v-for封装适⽤性更好的表格 <el-table :data"tableData"><!-- 循环显示列 --><el-…

table表格的使用(表格的嵌套、合并)

表格基本格式 <table> //第一行 <tr> <td>第一列</td> <td>第二列</td> </tr> //第二行 <tr> <td>第一列</td> <td>第二列</td> </tr> </table> 1.<table></table>&#x…

vue3 antd table表格样式修改——ant design vue table表格的行高调整

vue3 antd项目实战——修改ant design vue table组件的默认样式&#xff08;调整每行行高&#xff09; 知识调用场景复现实际操作解决a-table表格padding过宽 知识调用 文章中可能会用到的知识链接vue3ant design vuets实战【ant-design-vue组件库引入】css样式穿透&#xff0…

web第十课:table表格标签

1.table表格介绍 table是表格标签&#xff0c;里面包含有行tr&#xff0c;行tr里包含td单元格 注意&#xff1a;table里只能包含tr&#xff0c;tr里面也只能包含td&#xff0c;td里面可以包含其他标签 代码演示&#xff1a; 这里在码标签的时候别忘了我们的快捷方式&#xff…

table表格基础

1.table主要用于呈现格式化数据。由行和列组成。 格式&#xff1a; <table><tr><th>表头</th><th>表头</th><th>表头</th></tr><tr><td>列1</td><td>列2</td><td>列3</td>…

手写table表格

<template> <div class"table" style"overflow-y: auto; height:15em; width:100%"> //overflow-y控制y轴滚动<table border"0" width"100%" height"16em" cellpadding"4.8" align"center&qu…

el-table表格还可以这么玩

六年代码两茫茫&#xff0c;不思量&#xff0c;自难忘 6年资深前端主管一枚&#xff0c;只分享技术干货&#xff0c;教你如何优雅地写代码 关注博主不迷路~ 文章目录 前言案例介绍案例截图效果预览template模板script部分css总结 前言 我们都知道表格是横向渲染的&#xff0c;一…

html使table整体居中,如何让整个table表格居中?

早期做网站都离开表格的使用&#xff0c;表格的对齐方式居中又是常用属性。居中最简章的方法就是直接在作用域写上&#xff1a;text-align:center&#xff0c;表格的话直接在table里写上aligncenter就可以了。不过表格已不是当下布局主流&#xff0c;如果习惯于表格布局的同学们…

Html——之table表格

表格&#xff08;table&#xff09;的应用&#xff1a; 表格的创建&#xff1a; <!doctype html> <html> <head> <meta charset"utf-8"> <title>test1</title> <--表格标记--> </head> <body><table>…

前端table表格的用法

文章目录 一、table的基础用法二、table属性三、合并单元格拓展总结 一、table的基础用法 代码如下&#xff1a; <table><tr>//第一行<td>第一行第1列</td><td>第一行第2列</td></tr><tr>//第二行<td>第二行第1列<…

HTML table表格详解

一、表格属性 表格属性 用法 border 代表表格边框厚度 width height 表格宽高 align table tr td 设置水平方向对齐方式 默认值left center right cellspacing 单元格到单元格距离 cellpadding 单元格文字到单元格边框距离 bgcolor 表格背景颜色 table tr td 都可以…

element-ui实现table表格的嵌套(table表格嵌套)功能实现

最近在做电商类型的官网&#xff0c;希望实现的布局如下&#xff1a;有表头和表身&#xff0c;所以我首先想到的就是table表格组件。 表格组件中常见的就是&#xff1a;标题和内容一一对应&#xff1a; 像效果图中的效果&#xff0c;只用基础的表格布局是不行的&#xff0c;因…

table表格

在HTML中&#xff0c;创建表格需要使用table标签 学习table之前&#xff0c;先了解下table标签的常用属性 属性值说明align left center right 规定标的的对齐方式&#xff0c;left左对齐&#xff0c;center居中&#xff0c;right右对齐&#xff1b;bgcolor rgb(x,x,x) #xxx…

table(表格)的简单介绍

table&#xff08;表格&#xff09;的创建 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><table border"1" width"500" height"300" bgcolor…

table表格详细介绍

表格标签 table 我们在浏览网页时经常能发现段落、列表、图片等等元素出现比较多&#xff0c;但偶尔呢&#xff0c;也会看到一些表格元素&#xff0c;那么表格在代码中如何实现呢&#xff1f; 一个完整的表格应该是由table、thead、tbody、tfoot、tr、th、td组成。那么这么多…

table表格基础知识及简单运用

1.什么是table表格 在HTML中我们用< table >标签来定义表格&#xff0c;它和Excel表格类似&#xff0c;都包括行、列、单元格、表头等&#xff0c;但是在功能方面HTML的表格远不如Excel强大。 2.table的常用属性 margin&#xff1a;主要设置表格的外边框padding&#…

HTML中Table表格的使用与漂亮的表格模板

1、表格标记 表格是网页中十分重要的组成元素。表格用来存储数据&#xff0c;包含标题、表头、行和单元格。在HTML语言中&#xff0c;表格标记使用符号<table>表示。定义表格光使用<table>是不够的&#xff0c;还需要定义表格中的行、列、标题等内容。 标记说明表…

西方世界的劫难Ⅳ:真神的国度--十大支线攻略

西方世界的劫难&#xff0c;是在大一即将放暑假的前几天&#xff0c;两位大佬带我打的(犹记当时一个三射箭抢了全部的兵&#xff0c;偷笑)&#xff0c;几经挫折&#xff0c;加上一些前辈的经验&#xff0c;自己也算是真正意义上稍微理解了这个地图&#xff0c;于是记录一下西方…