表格单列相同字段值合并

在这里插入图片描述
用specName(el.specName === row.specName)和id的区别(el.id === row.id),使用id的时候id是唯一值,判断的时候不会出现重复情况,使用specName的时候,如果有重复的值,会出现合并错位的情况。
解决方案:先按照specType进行排序,然后按specType的值进行分组,合并的规则是每一个分组的第一列进行合并{ rowspan: length, colspan: 1 },其它列跳过{ rowspan: 0, colspan: 0 }

<template>
    <Table :columns="columns" :data="data" border :span-method="handleSpan">
    <template #specType="{ row }">{{ specTypes[row.specType] }}</template>
  </Table>
</template>
<script>
    export default {
        data () {
            return {
              specTypes: {
                1: '烟支形式',
                2: '包装形式',
                3: '滤棒形式'
              },
                columns: [
                    {
                        title: 'Date',
                        type: 'index'
                    },
                    {
                        title: 'specType',
                        key: 'specType',
                       slot: 'specType'
                    },
                    {
                        title: 'specName',
                        key: 'specName'
                    }
                ],
                data: [
                    {
                        "specName": "标准支",
                        specType: 1
                    },{
                        "specName": "标准支",
                        specType: 1
                    }, {
                        "specName": "多元复合",
                        specType: 3
                    }, {
                        "specName": "中支",
                        specType: 1
                    }, {
                        "specName": "标准硬盒",
                        specType: 2
                    }, {
                        "specName": "细支",
                        specType: 1
                    }, {
                        "specName": "标准软盒",
                        specType: 2
                    }, {
                        "specName": "标准",
                        specType: 3
                    }
                ],
                obj: {}
            }
        },
      created () {
        // 第一步:分组排序
        this.data = this.data.map((el, idx) => {
          el.id = idx
          return el
        }).sort((a, b) => a.specType - b.specType)
        // 第二步:分类分组,为了后续单元格合并单元时所处数组索引
        this.obj = this.data.reduce((total, cur, idx) => {
          if (!total[cur.specType]) {
            total[cur.specType] = this.data.filter(el => el.specType === cur.specType)
          }
          return total
        }, {})
      },
        methods: {
            handleSpan ({ row, column, rowIndex, columnIndex }) {
                // 第三步:判断是否第二列,是进行单元格合并处理,否则正常显示(即1-1)
                // tmp===
                // const children = this.data.filter(el => el.specType === row.specType)
								if (columnIndex === 1) {
                  // 拿到当前所属分组的所有元素
                  const tmp = this.obj[row.specType]
                  // 获取当前单元格所在元素对应分组的索引
                  // 如果是当前分组的第一个元素则进行合并处理,否则直接跳过即(0)
                  const idx = tmp.findIndex(el => el.id === row.id)
                  // tmp===
                  // const idx = children.findIndex(el => el.specName === row.specName)
                  return {
                    // rowspan: idx === 0 ? children.length : 0,
                    rowspan: idx === 0 ? tmp.length : 0,
                    colspan: 1
                  }
                }
              return {
                rowspan: 1,
                colspan: 1
              }
            }
        }
    }
</script>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在LaTeX中,可以使用竖线来插入表格的分割线。要在表格中的单列插入竖线,你可以在相应的列格式中使用竖线符号 `|`。例如,如果你想在第二列之后插入分割线,你可以将列格式设置为 `|c|c|c|`,其中 `|` 表示插入竖线,`c` 表示居中对齐的列。这样就会在第二列之后插入分割线。 然而,请注意,在使用竖线时可能会遇到一些问题,如引用所提到的竖线截断问题。为了解决这个问题,可以使用 `multirow` 和 `multicolumn` 宏包来实现更复杂的表格布局,并在需要插入分割线的地方使用 `cline` 命令。`cline` 命令可以在表格中的特定行之间插入部分分割线。例如,`\cline{2-3}` 可以在第二列和第三列之间插入一个部分分割线。 因此,如果你想在表格中的单列插入分割线,你可以使用竖线符号 `|` 或 `cline` 命令来实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Latex中的表格](https://blog.csdn.net/m0_49946797/article/details/119356892)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Excel2LaTeX表格竖线截断问题解决](https://download.csdn.net/download/weixin_38516386/13686867)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值