#独家
vue 原生table合并单元格多余数据问题?

2023-05-29 0 1,057
 data_list:  [
            {
                question_code: "63",
                module_id: "20",
                module_name: "务效做例离场",
                sub_tool_code: "51",
                content_code: "97",
                question_type: 90,
                merge_number:1,
                item_attr: 42,
                item_attr_name: '普通题目',
                opr_date: "1982-10-09"
            },
             {
                question_code: "63",
                module_id: "20",
                module_name: "务效做例离场",
                sub_tool_code: "51",
                content_code: "97",
                question_type: 90,
                merge_number:1,
                item_attr: 42,
                item_attr_name: '普通题目2',
                opr_date: "1982-10-09"
            },
            {
                question_code: "63",
                module_id: "20",
                module_name: "务效做例离场",
                sub_tool_code: "51",
                content_code: "97",
                question_type: 90,
                merge_number:2,
                item_attr: 42,
                item_attr_name: '普通题目',
                opr_date: "1982-10-09"
            },
            {
                question_code: "63",
                module_id: "20",
                module_name: "务效做例离场",
                sub_tool_code: "51",
                content_code: "97",
                question_type: 90,
                merge_number:2,
                item_attr: 42,
                item_attr_name: '普通题目',
                opr_date: "1982-10-09"
            }
        ]
       <table
              cellspacing="0"
              cellpadding="0"
              border="1"
              style="height: auto; width: 100%"
            >
              <thead>
                <tr>
                  <th>题目ID</th>
                  <th>题目维度</th>
                  <th>题干</th>
                  <th>题目内容标记</th>
                  <th>a</th>
                  <th>se.a</th>
                  <th>b</th>
                  <th>se.b</th>
                  <th>题目属性</th>
                  <th>操作时间</th>
                  <th>对应操作</th>
                </tr>
              </thead>

              <tr v-for="(item, index) in data_list" :key="index">
                <td>
                  {{ item.qustion_code }}
                </td>
                <td>
                  {{ item.module_name }}
                </td>
                <td>
                  {{ item.sub_tool_code }}
                </td>
                <td>
                  {{ item.content_code }}
                </td>
                <td>
                  {{ item.distinction }}
                </td>
                <td>
                  {{ item.distinction_variance }}
                </td>
                <td>
                  {{ item.difficulty }}
                </td>
                <td>
                  {{ item.difficulty_variance }}
                </td>
                <td :rowspan="2">
                  {{ item.item_attr }}
                </td>
                <td :rowspan="item.merge_number">
                  {{ item.operate_time }}
                </td>
              </tr>
            </table>

想要合并原生table单元格,merge_number大于2的代表需要合并,合并的td为item_attr_name,但是合并后表格剩下的数据会像后移,应该如何隐藏掉多余的数据呢

原数据最后两项 merge_number = 2,我猜是希望把后两行合并。
这样的话,需要处理一下,第一个 merge_number 大于 1 的,要写 rowspan,后面的 merge_number - 1 行,需要忽略这个单元格。

先做处理,默认 merge 设置为 0,表示不处理合并的问题。按下面的逻辑

  • 如果 merge_number === 1,那 merge-- 之后仍然为 0
  • 如果 merge_number > 1,那 merge-- 之后值大于 0,下次需要处理
  • 如果 mrege > 0 表示有要合并的,还没合并完,当前 row_number = 0,表示忽略这行。同时 mrege-- 表示处理了一行需要合并的行。
// 这里 data 就是题中给的数据
import {data} from "./data.js";

const data_list = ((data) => {
  let merge = 0;
  data.forEach(row => {
    if (merge > 0) {
      row.merge_number = 0
    } else {
      merge = row.merge_number;
    }
    merge--;
  });
  return data;
})(data);

在 Vue 中,需要判断 merge_number === 0 的情况,不渲染对应的 td

<template v-if="item.merge_number > 0">
  <td :rowspan="item.merge_number">
    {{ item.item_attr }}
  </td>
  <td :rowspan="item.merge_number">
    {{ item.operate_time }}
  </td>
</template>
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 vue 原生table合并单元格多余数据问题? https://www.jkxiazai.com/1750.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务