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 禁用浏览器的前进后退操作

    Vue 禁用浏览器的前进后退操作

    这篇文章主要介绍了Vue 禁用浏览器的前进后退操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • vue addRoutes路由动态加载操作

    vue addRoutes路由动态加载操作

    这篇文章主要介绍了vue addRoutes路由动态加载操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Vue使用font-face自定义字体的案例详解

    Vue使用font-face自定义字体的案例详解

    @font-face 是 CSS 中的一个规则,它允许你加载服务器上的字体文件(远程或者本地),并在网页中使用这些字体,本文给大家介绍了Vue使用font-face自定义字体的案例,并通过代码讲解的非常详细,需要的朋友可以参考下
    2024-03-03
  • webpack中的optimization配置示例详解

    webpack中的optimization配置示例详解

    这篇文章主要介绍了webpack中的optimization配置详解,主要就是根据不同的策略来分割打包出来的bundle,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • vue工程如何为组件自动注入全局样式文件

    vue工程如何为组件自动注入全局样式文件

    这篇文章主要介绍了vue工程如何为组件自动注入全局样式文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue将html页面生成高清晰pdf文件的方法

    vue将html页面生成高清晰pdf文件的方法

    最近工作中遇到个需求,需要实现个可视化图表页的PDF文件导出,所以下面这篇文章主要给大家介绍了关于利用vue如何将html页面生成高清晰pdf文件的相关资料,需要的朋友可以参考下
    2022-03-03
  • vuex学习之Actions的用法详解

    vuex学习之Actions的用法详解

    本篇文章主要介绍了vuex学习之Actions的用法详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • vue基于websocket实现智能聊天及吸附动画效果

    vue基于websocket实现智能聊天及吸附动画效果

    这篇文章主要介绍了vue基于websocket实现智能聊天及吸附动画效果,主要功能是基于websocket实现聊天功能,封装了一个socket.js文件,使用Jwchat插件实现类似QQ、微信电脑端的功能,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 基于elementUI使用v-model实现经纬度输入的vue组件

    基于elementUI使用v-model实现经纬度输入的vue组件

    这篇文章主要介绍了基于elementUI使用v-model实现经纬度输入的vue组件,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • 详解关于Vue2.0路由开启keep-alive时需要注意的地方

    详解关于Vue2.0路由开启keep-alive时需要注意的地方

    这篇文章主要介绍了关于Vue2.0路由开启keep-alive时需要注意的地方,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09

最新评论