vue table动态合并, 自定义合并,参照合并,组合合并

这篇具有很好参考价值的文章主要介绍了vue table动态合并, 自定义合并,参照合并,组合合并。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

<template>
  <div>
    <el-table
      :data="tableData"
      :span-method="objectSpanMethod"
      border
      :header-cell-style="{ textAlign: 'center' }"
    >
      <el-table-column prop="area" label="区域" align="center">
      </el-table-column>
      <el-table-column prop="province" label="省份" align="center" />
      <el-table-column prop="month_1" label="一月" align="center" />
      <el-table-column prop="month_2" label="二月" align="center" />
      <el-table-column prop="month_3" label="三月" align="center" />
    </el-table>
  </div>
</template>
<script>
export default {
  data() {
    return {
      // 表格数据
      tableData: [
        // 一年级
        {
          area: "华北",
          province: "北京",
          month_1: "100",
          month_2: "张三",
          month_3: "90"
        },
        {
          area: "华北",
          province: "北京",
          month_1: "200",
          month_2: "张三",
          month_3: "90"
        },
        {
          area: "华北",
          province: "山西",
          month_1: "100",
          month_2: "张三",
          month_3: "90"
        },
        {
          area: "华北",
          province: "辽宁",
          month_1: "100",
          month_2: "张三",
          month_3: "90"
        },
        {
          area: "东北",
          province: "吉林",
          month_1: "100",
          month_2: "张三",
          month_3: "90"
        },
        {
          area: "东北",
          province: "黑2",
          month_1: "100",
          month_2: "张三",
          month_3: "90"
        },
        {
          area: "东北",
          province: "黑2",
          month_1: "100",
          month_2: "张三",
          month_3: "90"
        },
        {
          area: "东北",
          province: "黑2",
          month_1: "100",
          month_2: "张三",
          month_3: "90"
        },
        {
          area: "西北",
          province: "黑2",
          month_1: "100",
          month_2: "张三",
          month_3: "90"
        },
        {
          area: "西北",
          province: "西二",
          month_1: "100",
          month_2: "张三",
          month_3: "90"
        },
        {
          area: "西北",
          province: "西三",
          month_1: "100",
          month_2: "张三",
          month_3: "90"
        },
      ],
    };
  },
  methods: {
    /**
     * 分析每一列,找出相同的
     * @param data
     */
    setTabelRowSpan(tableData, fieldArr, effectMerge = {}) {
      let lastItem = {}
      fieldArr.forEach((field, index) => {
        let judgeArr = fieldArr.slice(0, index + 1)
        if (effectMerge[field]) {
          judgeArr = [...effectMerge[field], field]
          
        }
        tableData.forEach(item => {
          item.mergeCell = fieldArr
          const rowSpan = `rowspan_${field}`
          // 判断是否合并到上个单元格。
          if (judgeArr.every(e => lastItem[e] === item[e] && item[e] !== '')) {
            // 判断是否所在行的列对应的值全部相同,并且此列的值不为空
            // 是:合并行
            item[rowSpan] = 0
            lastItem[rowSpan] += 1
          } else {
            // 否:完成一次同类合并。lastItem重新赋值,进入下一次合并计算。
            item[rowSpan] = 1
            lastItem = item
          }
        })
      })
    },
    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
      if (row.mergeCell.includes(column.property)) {
        const rowspan = row[`rowspan_${column.property}`]
        if (rowspan) {
          return { rowspan: rowspan, colspan: 1 }
        } else {
          return { rowspan: 0, colspan: 0 }
        }
      }
    }
  },
  mounted() {
    // 需要参照合并的列
    const effectMerge = {
      month_1: ['area'],
      month_3: ['area']
    }
    const arr = ['area', 'province', 'month_1', 'month_2', 'month_3']
    this.setTabelRowSpan(this.tableData, arr, effectMerge)
}
</script>
<style lang="scss" scoped></style>

效果图
vue table动态合并, 自定义合并,参照合并,组合合并,vue.js,javascript,ecmascript
vue3 案例地址:vue3效果文章来源地址https://www.toymoban.com/news/detail-632619.html

到了这里,关于vue table动态合并, 自定义合并,参照合并,组合合并的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Element table根据字段合并表格(可多字段合并),附带拖拽列动态合并

    效果如图,姓名 数值1 字段进行自动合并 封装合并列js - tableMerge.js 拖拽使用sortablejs 如果拖拽列 要动态生成列 注意不支持行拖拽

    2024年02月11日
    浏览(45)
  • react结合antd的Table组件实现动态单元格合并

    首先看一下antd的Table表单组件,合并单元格,用到了rowSpan(合并行)和colSpan(合并列)  后台返回的数据 我们希望把category的值相同的,行合并成一个单元格 类似于这种  rowSpan这个属性可以指定合并行。例如说第一行,指定rowSpan为3,意思就是合并三行,则后面紧挨的两行的ro

    2024年02月12日
    浏览(46)
  • Element Plus el-table 自定义合并行和列

    原文链接:Element Plus el-table 自定义合并行和列 目标效果是将表格行数据中某个属性值相同的项合并到一起,效果如下: sortArray() 此方法根据目标属性值( StoAlias )排序了。 点击 传送门 查看更多关于【el-table 合并行或列】的信息。

    2024年02月12日
    浏览(38)
  • ant-design-vue的table表格行合并和列合并

    场景说明: 1、列合并:需要在表格最后一列进行合并,如图: 思路:相当于是第二列的最后一栏(colSpan )占比5列,第2列后面的4列最后一行(colSpan )占比0。 代码示例 行合并需求如图:将指定列的多行合并成一行 思路:和合并列差不多;第一列的第一行和第二行要合并

    2024年02月16日
    浏览(40)
  • vue3 elementplus table根据某id相同合并单元格

    1.标签上加入合并方法 2.他会根据 pymt_pl_lmt_id 该值判断,相同的合并单元格。

    2024年02月11日
    浏览(38)
  • vue中Element-ui 表格 (Table)合并行、列单元格

    先在el-table里加个属性:span-method绑定方法objectSpanMethod(),这个用来把你想合并的列根据你写的逻辑来合并,再写个getSpanArr(),这个写合并的逻辑。 加一个属性两个方法,然后在获取表格数据的时候调用一下getSpanArr(),示例代码写了四个逻辑,根据id相同合并,根据id和其他字段

    2024年02月10日
    浏览(49)
  • 前端 vue el-table 增加合计行及合并单元格

    自己总结的,不好别喷,谢谢~~~  表格触发调用方法  合计行代码 在 合计行方法中 直接去修改了表格样式  

    2024年02月07日
    浏览(48)
  • Vue - Element el-table 表头、行、列合并,底部或顶部显示汇总行

    GitHub Demo 地址 在线预览 使用 el-table 的 span-method 方法合并行和列 使用 el-table 的 header-cell-style 方法合并表头 使用 el-table 的 cell-class-name 方法配合css样式隐藏Checkbox 使用 el-table 的 show-summary 、 summary-method 方法配合css样式设置汇总行和汇总行样式

    2024年02月14日
    浏览(46)
  • vue3中el-table实现多表头并表格合并行或列

    1、el-table中添加事件 :span-method=\\\"genderSpanCity\\\" 2、js添加函数 效果图为

    2024年01月23日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包