原生表格合并

原生表格合并

!](https://img-blog.csdnimg.cn/65fe6dce6b6d42b7b51f9d341bc9b605.png)

<table border="1" width="600" height="230" cellspacing="0">
    <thead>
      <tr style="color: #B3B3B3;">
        <td>方案计划</td>
        <td>条款代码</td>
        <td>条款名称</td>
        <td>责任代码</td>
        <td>责任名称</td>
      </tr>
    </thead>
    <tr v-for="item in dataList">
      <td v-if="item.show0" :rowspan="item.num0" style="width:5.5%;">{{item.fajh}}</td>
      <td v-if="item.show" :rowspan="item.num" style="width:10%;">{{item.tkdm}}</td>
      <td v-if="item.show" :rowspan="item.num" style="width:7%;">{{item.tkmc}}</td>
      <td style="width:7%;">{{item.zrdm}}</td>
      <td style="width:5%;">{{item.zrmc}}</td>
    </tr>
  </table>

数据源

dataList: [
        {
          fajh: "方案计划",
          tkdm: "条款代码1",
          tkmc: "条款名称1",
          zrdm: "责任代码1",
          zrmc: "责任名称1"
        },
        {
          fajh: "方案计划",
          tkdm: "条款代码1",
          tkmc: "条款名称1",
          zrdm: "责任代码2",
          zrmc: "责任名称2"
        },
        {
          fajh: "方案计划",
          tkdm: "条款代码2",
          tkmc: "条款名称1",
          zrdm: "责任代码3",
          zrmc: "责任名称3"
        },
        {
          fajh: "方案计划",
          tkdm: "条款代码2",
          tkmc: "条款名称2",
          zrdm: "责任代码1",
          zrmc: "责任名称1"
        },
        {
          fajh: "方案计划",
          tkdm: "条款代码2",
          tkmc: "条款名称2",
          zrdm: "责任代码1",
          zrmc: "责任名称1"
        },
        {
          fajh: "方案计划",
          tkdm: "条款代码2",
          tkmc: "条款名称2",
          zrdm: "责任代码2",
          zrmc: "责任名称2"
        },
        {
          fajh: "方案计划2",
          tkdm: "条款代码1",
          tkmc: "条款名称1",
          zrdm: "责任代码1",
          zrmc: "责任名称1"
        },
        {
          fajh: "方案计划2",
          tkdm: "条款代码1",
          tkmc: "条款名称1",
          zrdm: "责任代码2",
          zrmc: "责任名称2"
        },
        {
          fajh: "方案计划2",
          tkdm: "条款代码1",
          tkmc: "条款名称1",
          zrdm: "责任代码3",
          zrmc: "责任名称3"
        },
        {
          fajh: "方案计划3",
          tkdm: "条款代码2",
          tkmc: "条款名称2",
          zrdm: "责任代码1",
          zrmc: "责任名称1"
        },
        {
          fajh: "方案计划2",
          tkdm: "条款代码3",
          tkmc: "条款名称3",
          zrdm: "责任代码1",
          zrmc: "责任名称1"
        },
        {
          fajh: "方案计划2",
          tkdm: "条款代码3",
          tkmc: "条款名称3",
          zrdm: "责任代码2",
          zrmc: "责任名称2"
        },
        {
          fajh: "方案计划2",
          tkdm: "条款代码3",
          tkmc: "条款名称3",
          zrdm: "责任代码3",
          zrmc: "责任名称3"
        },
      ],

如果是扁平的数据格式,直接调用合并方法,如果是嵌套的数据格式需要先处理成扁平格式

for(let i = 0 ;i < this.dataList1.length;i++){
      for(let j = 0 ; j < this.dataList1[i].tkdmList.length; j++){
        let aa = {}
        for(let m = 0 ; m  < this.dataList1[i].tkdmList[j].zrdm.length ;m++){
          let obj = {}
          obj.zrdm = this.dataList1[i].tkdmList[j].zrdm[m].zrdm;
          obj.zrmc = this.dataList1[i].tkdmList[j].zrdm[m].zrmc;
          obj.tkmc = this.dataList1[i].tkdmList[j].tkmc;
          obj.tkdm  = this.dataList1[i].tkdmList[j].tkdm;
          obj.fajh  = this.dataList1[i].fajh;
          arr.push(obj)
        }
      }
    }

js合并方法

function combine(data1) { //合并单元格方法
		for(let i = 0; i < data1.length; i++) {
      data1[i].show0 = true;
			data1[i].num0 = 1;
			data1[i].show = true;
			data1[i].num = 1;
			data1[i].col = 1;
		}
		var ob = {};
		for(let i = 0; i < data1.length - 1; i++) {
			var a = data1[i].tkdm;
      var aa = data1[i].fajh;
			// if(ob[a] == undefined) {
				ob[a] = 1;
        ob[aa] = 1;
			// }
			for(let l = i + 1; l < data1.length; l++) {
				var b = data1[l].tkdm;
        var bb = data1[l].fajh;
        if(a == b) {
					data1[l].show = false;
					ob[a]++;
					data1[i].num = ob[a];
				}else{
          ob[a] =1
          break
        }
			}
      for(let l = i + 1; l < data1.length; l++) {
        var bb = data1[l].fajh;
				if(aa == bb) {
					data1[l].show0 = false;
					ob[aa]++;
					data1[i].num0 = ob[aa];
				}else{
          ob[aa] =1
          break
        }
			}
		}
		return data1
	}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值