vxe-table中vxe-grid中的合并单元格方式(合并行、列)

 更新时间:2025年04月24日 16:29:52   作者:大个个个个个儿  
这篇文章主要介绍了vxe-table中vxe-grid中的合并单元格方式(合并行、列),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vxe-table中vxe-grid的合并单元格(合并行、列)

效果图(我所用到的是合并行)

根据personName人员名称相同合并行

实例代码

<vxe-grid v-bind="gridOptions" ref="tableRefs"></vxe-grid>


// 列表表格数据
const gridOptions = ref({
  data: [],
  align: 'center',
  loading: false,
  border: true,
  height: '300px',
  columns: [
    { type: 'seq', width: 50 },
    {
      title: '人员名称',
      field: 'personName'
    },
    {
      title: '人员类型',
      field: 'typeName'
    },
    {
      title: '代垫公司',
      field: 'proxyOrgName'
    },
    {
      title: '开始时间',
      field: 'startTime'
    },
    {
      title: '结束时间',
      field: 'endTime'
    }
  ]
});
const getPage = async () => {
  gridOptions.value.loading = true;
  const res = await PersonnelTypeManagementApi.personHistory({
    pageNo: customMade.value.pageNo,
    pageSize: customMade.value.pageSize,
    orgId: rightOrgId.value,
    personId: props.rowData.personId
  });
  gridOptions.value.loading = false;
  gridOptions.value.data = res.data.rows;
  nextTick(() => { //必须在nextTick中请求,否则表格不会重新渲染
    updateMergeCells(res.data.rows);
  });
  customMade.value.total = res.data.totalRows;
};
// 合并规则
const updateMergeCells = tableData => {
  const merges = [];
  let prevPersonName = null;
  let count = 0;

  for (let rowIndex = 0; rowIndex < tableData.length; rowIndex++) {
    const currentRow = tableData[rowIndex];
    if (prevPersonName === currentRow.personName) {
      count++;
    } else {
      if (count > 0) {
        // 注意这里 row 是从 rowIndex - count 开始的
        merges.push({ row: rowIndex - count - 1, col: 1, rowspan: count + 1, colspan: 1 });
      }
      prevPersonName = currentRow.personName;
      count = 0;
    }
  }

  // 处理最后一组相同的 personName
  if (count > 0) {
    merges.push({ row: tableData.length - count - 1, col: 1, rowspan: count + 1, colspan: 1 });
  }

  if (tableRefs.value) {
    tableRefs.value.setMergeCells(merges);//设置合并
  }
};

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决vue中el-date-picker type=daterange日期不回显的问题

    解决vue中el-date-picker type=daterange日期不回显的问题

    这篇文章主要介绍了解决vue中el-date-picker type=daterange日期不回显的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • vue实现图片平铺方式

    vue实现图片平铺方式

    在Vue中,实现图片或组件的平铺布局并允许用户进行修改,可以通过数据绑定、模板编写与交互设计来实现图片平铺,使用v-for指令和动态组件,可以创建可编辑的组件平铺布局,允许用户通过点击触发编辑操作,通过外部编辑面板修改属性后保存更改
    2024-10-10
  • Vue.js中的组件系统

    Vue.js中的组件系统

    这篇文章主要介绍了Vue.js之组件系统,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • Element Steps步骤条的使用方法

    Element Steps步骤条的使用方法

    这篇文章主要介绍了Element Steps步骤条的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Vue3.0之引入Element-plus ui样式的两种方法

    Vue3.0之引入Element-plus ui样式的两种方法

    本文主要介绍了Vue3.0之引入Element-plus ui样式的两种方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • vue的简介及@vue/cli 脚手架的使用示例

    vue的简介及@vue/cli 脚手架的使用示例

    vue 是一个 渐进式的javascript框架,脚手架是一个通用概念,帮助搭建项目的工具,本文以vue2为例结合实例代码给大家详细讲解,感兴趣的朋友跟随小编一起看看吧
    2022-12-12
  • uniapp微信小程序axios库的封装及使用详细教程

    uniapp微信小程序axios库的封装及使用详细教程

    这篇文章主要给大家介绍了关于uniapp微信小程序axios库的封装及使用的相关资料,Axios是一个基于promise网络请求库,作用于node.js和浏览器中axios-miniprogram-adapteraxios的小程序适配器,需要的朋友可以参考下
    2023-08-08
  • Vue中使用iframe踩坑问题记录 iframe+postMessage

    Vue中使用iframe踩坑问题记录 iframe+postMessage

    这篇文章主要介绍了Vue中使用iframe踩坑问题记录 iframe+postMessage,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • vue2.0 解决抽取公用js的问题

    vue2.0 解决抽取公用js的问题

    这篇文章主要介绍了vue2.0 解决抽取公用js的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • vue通过笛卡儿积实现sku库存配置方式

    vue通过笛卡儿积实现sku库存配置方式

    这篇文章主要介绍了vue通过笛卡儿积实现sku库存配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04

最新评论