表格的单元格合并和表头的合并——vxe-table

news2024/11/25 22:51:11
vxe-table的官网:https://vxetable.cn/#/table/advanced/mergeCell

在你的项目中下载安装完成后,先在main.js文件中引入:

import VXETable from 'vxe-table'
import 'vxe-table/lib/style.css'
Vue.use(VXETable)

一、单元格合并

效果图:在这里插入图片描述
代码:

<template>
  <div>
    <vxe-table
      border
      resizable
      align="center"
      :span-method="mergeRowMethod"
      :data="tableData3">
      <vxe-column field="key" title="标题1"></vxe-column>
      <vxe-column field="key1" title="标题2"></vxe-column>
      <vxe-column field="max" title="标题5"></vxe-column>
      <vxe-column field="min" title="标题6"></vxe-column>
      <vxe-column field="height" title="标题7"></vxe-column>
      <vxe-column field="low" title="标题8"></vxe-column>
      <vxe-column field="" title="操作">
        <template scope="scope">
          <span @click="updateClick(scope.row,scope.rowIndex)">操作</span>
          <span style="margin-left: 15px;">删除</span>
        </template>
      </vxe-column>
    </vxe-table>
  </div>
</template>

<script>
export default {
  data () {
    return {
      tableData3: [
        { id: 10001, key: '内容1', key1: '22%', max: 20, min: 10, height: 27, low: 19 },
        { id: 10002, key: '内容1', key1: '22%', max: 20, min: 10, height: 27, low: 19 },
        { id: 10002, key: '内容1', key1: '22%', max: 20, min: 10, height: 27, low: 19 },
        { id: 10003, key: '内容2', key1: '35%', max: 20, min: 10, height: 27, low: 19 },
        { id: 10004, key: '内容2', key1: '35%', max: 20, min: 10, height: 27, low: 19 },
      ],
    }
  },
  methods: {
    // 通用行合并函数(将相同多列数据合并为一行)
    mergeRowMethod ({ row, _rowIndex, column, visibleData }) {
      // 你需要哪一列进行合并,就写他的字段名
      const fields = ['key', 'key1']
      const cellValue = row[column.property]
      if (cellValue && fields.includes(column.property)) {
        const prevRow = visibleData[_rowIndex - 1]
        let nextRow = visibleData[_rowIndex + 1]
        if (prevRow && prevRow[column.property] === cellValue) {
          return { rowspan: 0, colspan: 0 }
        } else {
          let countRowspan = 1
          while (nextRow && nextRow[column.property] === cellValue) {
            nextRow = visibleData[++countRowspan + _rowIndex]
          }
          if (countRowspan > 1) {
            return { rowspan: countRowspan, colspan: 1 }
          }
        }
      }
    },
    updateClick (row, rowIndex) {
      console.log(row, rowIndex);
    },
  }
}
</script>

如果数据相同,但是你不想要他合并,例如:
在这里插入图片描述
如上图,虽然内容1和内容2后面对应的百分比都是22%,但是你不希望该单元格整体合并,你可以将标题1和标题2的field属性改成同一个参数名,就可以解决了,如下:

<template>
  <div>
    <vxe-table
      border
      resizable
      align="center"
      :span-method="mergeRowMethod"
      :data="tableData3">
      <vxe-column field="key" title="标题1"></vxe-column>
      <vxe-column field="key" title="标题2">
        <template slot-scope="scope">
          {{ scope.row.key1 }}
        </template>
      </vxe-column>
      <vxe-column field="max" title="标题5"></vxe-column>
      <vxe-column field="min" title="标题6"></vxe-column>
      <vxe-column field="height" title="标题7"></vxe-column>
      <vxe-column field="low" title="标题8"></vxe-column>
      <vxe-column field="" title="操作">
        <template scope="scope">
          <span @click="updateClick(scope.row,scope.rowIndex)">操作</span>
          <span style="margin-left: 15px;">删除</span>
        </template>
      </vxe-column>
    </vxe-table>
  </div>
</template>

二、表头合并

效果图:
在这里插入图片描述
代码:
columns里的field属性和data里的属性名是对应的,例如{ field: ‘address’, title: ‘标题3-4’, },标题3-4这一列展示的就是data里的address所对应的值

<template>
	<div>
  		<vxe-grid v-bind="gridOptions"></vxe-grid>
	</div>
</template>
<script>
export default {
  data () {
    return {
      gridOptions: {
        border: true,
        resizable: true,
        align: 'center',
        // 分组列头,通过 children 定义子列
        columns: [
          {
            title: '标题1',
            children: [
              {
                field: '', title: '标题1-1',
                children: [
                  { field: 'bank', title: '' },
                ]
              },
            ]
          },
          {
            title: '标题2',
            children: [
              {
                field: '',
                title: '20%',
                children: [
                  { field: 'ran', title: '标题2-1', },
                  { field: 'rank', title: '标题2-2', },
                  { field: 'ranki', title: '标题2-3', },
                  { field: 'rankin', title: '标题2-4', },
                ]
              },
            ]
          },
          {
            title: '标题3',
            children: [
              {
                field: '',
                title: '35%',
                children: [
                  { field: 'role', title: '标题3-1', },
                  { field: 'sex', title: '标题3-2', },
                  { field: 'age', title: '标题3-3', },
                  { field: 'address', title: '标题3-4', },
                ]
              },
            ]
          },
          {
            field: 'data4',
            title: '标题4',
          },
        ],
        data: [
          { id: 10001, bank: '工商银行', data4: 1, ran: '1', rank: '2', ranki: '3', rankin: '4', role: '35', sex: 'Man', age: 28, address: 'Shenzhen' },
          { id: 10002, bank: '交通银行', data4: 2, ran: '2', rank: '2', ranki: '3', rankin: '4', role: 'Test', sex: 'Women', age: 22, address: 'Guangzhou' },
          { id: 10003, bank: '工农银行', data4: 3, ran: '3', rank: '2', ranki: '3', rankin: '4', role: 'PM', sex: 'Man', age: 32, address: 'Shanghai' },
          { id: 10004, bank: '招商银行', data4: 4, ran: '4', rank: '2', ranki: '3', rankin: '4', role: 'Designer', sex: 'Women', age: 23, address: 'Shenzhen' },
        ]
      },
    }
  },
  methods: {
  }
}
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1626118.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年【安全生产监管人员】考试技巧及安全生产监管人员模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【安全生产监管人员】考试技巧及安全生产监管人员模拟考试&#xff0c;包含安全生产监管人员考试技巧答案和解析及安全生产监管人员模拟考试练习。安全生产模拟考试一点通结合国家安全生产监管人员考试最新大纲…

Java | Leetcode Java题解之第50题Pow(x,n)

题目&#xff1a; 题解&#xff1a; class Solution {public double myPow(double x, int n) {long N n;return N > 0 ? quickMul(x, N) : 1.0 / quickMul(x, -N);}public double quickMul(double x, long N) {if (N 0) {return 1.0;}double y quickMul(x, N / 2);retu…

大数据开发详解

点击下载《大数据开发详解》 1. 前言 随着信息化时代的快速发展&#xff0c;大数据已经成为了企业和组织不可或缺的重要资源。大数据开发则是指通过一系列技术手段&#xff0c;对海量数据进行收集、存储、处理、分析和挖掘&#xff0c;以实现数据的价值化利用。大数据开发涉及…

进口透明可视耐腐蚀PFA进样管特氟龙圆底试管适配MC-ICP-MS

PFA进样管可适配Neptune plus多接收器等离子质谱仪&#xff08;MC-ICP-MS&#xff09;&#xff0c;广泛应用于地球化学、核保障、环境科学、金属组学领域&#xff0c;在生物、物理、化学、材料等多个学科的交叉方向也有良好的应用前景。 外观半透明&#xff0c;便于观察管内情…

YOLOV5 TensorRT部署 BatchedNMS(engine模型推理)(下)

主要是在王新宇代码的基础上改进,引入对BatchedNMS的解码 文章目录 1. 修改yolov5.cpp2.修改yololayer.h1. 修改yolov5.cpp 首先增加全局变量,名字根据转onnx时修改的节点名字来,查看onnx文件可以看到,顺序不要弄错。 const char *INPUT_NAME = “images”; const char …

基于深度学习的实时人脸检测与情绪分类

情绪分类 实时人脸检测与情绪分类 Kaggle Competion 数据集 fer2013 中的测试准确率为 66%CK数据集的检验准确率为99.87%情绪分类器模型预测从网络摄像头捕获的实时视频中的平均成本时间为 4~ 10ms 关键技术要点&#xff1a; 实时人脸检测&#xff1a;系统采用了前沿的人脸检…

提交链码-编辑前后端,调用链码功能

一 . 链码介绍 1.什么链码&#xff1f; • 链码是一段用 Go、Node.js 或者 Java 实现了规定接口的程序。链码在安全的Docker容器中运行&#xff0c; 与背书节点的进程隔离。通过应用程序提交的交易&#xff0c;链码初始化和管理账本状态。• 链码通常处理网络成员协商达成的业…

vue下载文件时显示进度条

1.单个下载&#xff08;开始是导出按钮 下载显示进度条&#xff09; html <el-button click.stop"exportReport(scope.row, scope.index)" v-if"!scope.row.schedule" icon"el-icon-download"size"small" type"text"styl…

2023最新!MySQL8于win10环境下的安装配置保姆级教程

2023最新&#xff01;MySQL8于win10环境下的安装配置保姆级教程 MySQL官网&#xff1a;https://www.mysql.com/downloads/ 导航 文章目录 2023最新&#xff01;MySQL8于win10环境下的安装配置保姆级教程导航一、MySQL下载二、安装MySQLchoosing a Setup Typeselect products…

软件测试面试题(三)

Selenium 相关Selenium 基础什么是 Selenium&#xff1f;什么是 Selenium WebdriverS 什么是 elenium IDE&#xff1f;常用自动化测试工具机器运行原理&#xff0c;写出一段元素查找的代码&#xff1f;如何开展自动化测试框架的构建&#xff1f;如何设计自动化测试用例webdrive…

Angular 由一个bug说起之五:为什么现代CSS系统倾向于少用或不用absolute定位?

在现代网页设计中&#xff0c;CSS&#xff08;层叠样式表&#xff09;是不可或缺的一部分。在过去&#xff0c;使用position: absolute定位元素是一种常见的技术&#xff0c;但是随着前端开发的发展&#xff0c;现代CSS系统倾向于减少或避免使用absolute定位。本文将探讨这一趋…

上班族必备的便签备忘录app 好用的便签备忘录软件

上班族每天都需要处理大量的工作事项&#xff0c;从策划方案到客户沟通&#xff0c;每一个环节都至关重要。然而&#xff0c;仅仅依靠大脑记忆&#xff0c;很容易遗漏某些细节&#xff0c;甚至可能错过重要的截止日期。为了避免这种情况&#xff0c;许多人选择使用一款优秀的便…

NATAPP内网穿透工具安装和使用教程

文章目录 目录 文章目录 安装流程 小结 概要安装流程技术细节小结 概要 必须要按照先操作完第一步 再操作第二步骤下载教程 1.进入网址注册&#xff1a;NATAPP - 2.下载网址&#xff1a;NATAPP-内网穿透 基于ngrok的国内高速内网映射工具 流程 注册NATAPP 实名认证通过之后…

学习笔记Label自右向左滚动和父容器内左右移动方法(含代码)

一、【滚动效果】 【radialMenu1控件】菜单切换浏览器和控制台 需要定时器Timer&#xff08;默认属性EnabledFalse,Interval100&#xff09; 二、【方法1和方法2&#xff0c;通过属性切换开关和方向】 try{if (myObject.TextScrollSwitch){//打开移动if(myObject.TextScroll…

固态继电器:推进可再生能源系统

随着可再生能源系统的发展&#xff0c;太阳能系统日益成为现代能源解决方案的先锋。在这种背景下&#xff0c;固态继电器&#xff08;SSR&#xff09;&#xff0c;特别是光耦固态继电器的利用变得日益突出。本文旨在深入探讨SSR在可再生能源系统中的多方位应用&#xff0c;重点…

echarts利用graphic属性给饼图添加内圈图片及外圈图片(可自适应宽度位于饼图中心)

最终效果图&#xff1a; 目录 前言资源主要部分graphic介绍style介绍代码 加载饼图方法&#xff08;option所有的配置&#xff09; 前言 思路是看到这个博客启发的&#xff1a;点击跳转查看博客&#xff0c;然后在graphic属性里改了我的实际需求&#xff0c;譬如图片的宽高、…

Django框架之python后端框架介绍

一、网络框架及MVC、MTV模型 1、网络框架 网络框架&#xff08;Web framework&#xff09;是一种软件框架&#xff0c;用于帮助开发人员构建Web应用程序和Web服务。它提供了一系列预先编写好的代码和工具&#xff0c;以简化开发过程并提高开发效率。网络框架通常包括以下功能…

Python-VBA函数之旅-len函数

目录 一、len函数的常见应用场景&#xff1a; 二、len函数使用注意事项&#xff1a; 三、如何用好len函数&#xff1f; 1、len函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a;神奇夜光杯-CSDN博客 一、…

【上岗认证】错题整理记录

目录 &#x1f31e;一、阶段1&#xff1a;编码规范 &#x1f30a;编码规范考试-CC &#x1f31e;二、阶段2&#xff1a;开发基础 &#x1f30a;C/C &#x1f30a;数据库&#xff08;Oracle/MySql&#xff09; &#x1f31e;三、阶段3&#xff1a;测试基础 &#x1f30a;…

好的猫咪主食冻干到底该咋选?品控稳定的主食冻干推荐

315中国之声报道的河北省邢台市南和区某宠粮代工厂的“行业潜规则”&#xff0c;给各位铲屎官拉响了警钟。配料表上写的鸡肉含量为52%&#xff0c;新鲜鸡小胸含量为20%&#xff0c;所谓的鲜鸡肉其实就是鸡肉粉。本来养宠物是为了让自己身心愉悦&#xff0c;但这样的行业乱象弄得…