vue + Element Ui 中生成动态合并表格及后端数据说明及常见问题

这篇具有很好参考价值的文章主要介绍了vue + Element Ui 中生成动态合并表格及后端数据说明及常见问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、首先按需求举个例子:

在利用vue的一些框架开发中(比如ruoyi),有时会遇见这样需要一对多对多显示的表格(如下图),按照相同项合并多余的行。看到这如果和你遇见的问题相似那就步入正题

vue + Element Ui 中生成动态合并表格及后端数据说明及常见问题,spring boot,mybatis,前端框架,vue.js,Powered by 金山文档

二、前端的设计

<h2>动态合并表格<h2>
  <el-table
  :data="tableData"
  style="width: 100%"
  :span-method="objectSpanMethod"
  border
  >
<!--遍历表-->
    <el-table-column
      :prop="item.prop"
      :label="item.label"
      v-for="(item, index) in tableHeader"<!--按设定的表头-->
      :key="index"
    ></el-table-column>
  </el-table>
</el-dialog>

讲解中不以具体某些数据举例,统一用tableDatap[]数据对象数组表示需要遍历的数据

<script>
export default {
  name: "MultiRowMergeTable",
  data() {
    this.spanMap = {};
    this.mergedColumns = ["examineName","examineProject"]
    return {
      tableHeader: [
        {
          prop: "examineName",
          label: "检查表",
        },
        {
          prop: "examineProject",
          label: "检查项目",
        },
        {
          prop: "examineWord",
          label: "检查内容",
        },
        {
          prop: "remark",
          label: "备注",
        }
      ],
      tableData: []
    }
  },
  created() {
    this.getList();//进入页面时调用getList()获取tableData[]数据
  },
  methods: {
    //具体获取数据方法因需求而异
    getList() {
      listExamineTableData(this.queryParams).then(response => {
        this.tableData = response.data;
        this.getSpanArr(this.tableData);
      });
    },
    getSpanArr(data) {
      for (var i = 0; i < data.length; i++) {
        if (i === 0) {
          this.mergedColumns.forEach(column => {
            this.spanMap[column] = {
              spanArr: [1],
              pos: 0
            }
          })
        } else {
          this.mergedColumns.forEach(column => {
            if (data[i][column] === data[i - 1][column]) {
              this.spanMap[column].spanArr[this.spanMap[column].pos] += 1;
              this.spanMap[column].spanArr.push(0)
            } else {
              this.spanMap[column].spanArr.push(1);
              this.spanMap[column].pos = i;
            }
          })
        }
      }
    },
    objectSpanMethod({ column, rowIndex }) {
      if (this.spanMap[column.property]) {
        const _row = this.spanMap[column.property].spanArr[rowIndex];
        const _col = _row > 0 ? 1 : 0;
        return {
          rowspan: _row,
          colspan: _col
        }
      }
    }
  }
}
</script>

到这里前端的开发就已经完成了,只要getSpanArr(data) 和objectSpanMethod({ column, rowIndex })方法正常无错的带入就不会有太大问题。

三、后端数据说明及常见问题

后端代码就正常编写Controller类,Service类,Mapper类

常见并经常忽略Bug的来了

数据库以下列形式表示时

vue + Element Ui 中生成动态合并表格及后端数据说明及常见问题,spring boot,mybatis,前端框架,vue.js,Powered by 金山文档

前端会显示为:

vue + Element Ui 中生成动态合并表格及后端数据说明及常见问题,spring boot,mybatis,前端框架,vue.js,Powered by 金山文档

原因就是前端合并单元格的方法中只合并连续相同的数据行 ,由于数据添加顺序、时间等因素不同的影响无法保证相同连续。

所以我们在查询数据库的时候需要运用SQL语句中的自定义排序查询,运用自定义排序就需要新建一个与之对应的数据字典。如下简单的一个表project_dict

vue + Element Ui 中生成动态合并表格及后端数据说明及常见问题,spring boot,mybatis,前端框架,vue.js,Powered by 金山文档

在对应的mybatis配置文件Mapper.xml中写以下查询语句

<select id="selectExamineProjectNotNullList" parameterType="String" resultMap="SysExamineProjectResult">
    select *
    from sys_examine_project
    inner  join project_dict p on p.examine_project = sys_examine_project.examine_project 
and sys_examine_project.examine_name = #{examineName}  
    order by p.id
</select>

其他and的条件因人而异但是这句连接数据字典的条件一定要有

inner  join project_dict p on p.examine_project = sys_examine_project.examine_project

查询结果如下:

vue + Element Ui 中生成动态合并表格及后端数据说明及常见问题,spring boot,mybatis,前端框架,vue.js,Powered by 金山文档

综上,就可以得到一个心怡的依靠动态数据合并单元格表格了文章来源地址https://www.toymoban.com/news/detail-519943.html

vue + Element Ui 中生成动态合并表格及后端数据说明及常见问题,spring boot,mybatis,前端框架,vue.js,Powered by 金山文档

到了这里,关于vue + Element Ui 中生成动态合并表格及后端数据说明及常见问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • vue中Element-ui 表格 (Table)合并行、列单元格

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

    2024年02月10日
    浏览(47)
  • vue element-ui表格组件动态多级表头

    实际项目的需求,需要根据后端动态获取的方式来初始化表格的表头包含哪些信息,且有很多信息是有规律的,所以我们需要Element UI动态生成多级表头。需要的效果图如下: 由于统计维度是可变化的(它可以是省市也可以是区县),所以需要专门设置一个表格的数据来保存

    2024年02月10日
    浏览(52)
  • Vue+Element ui动态表格 实现表头自适应宽度

    根据业务需求,工作中会出现表头信息不固定,根据后台返回数据,我们要实现动态表格的实现 1. tableData为表格数据,tableHeader为表头数据。 2. 实现表头自适应宽度(二种方法)     ① 第一种通过动态width来定义,通过表头数据的遍历,将label的表头信息传入方法中     

    2024年02月15日
    浏览(48)
  • vue+Element UI Table表格动态渲染表头内容及操作按钮

    循环表格头信息数组 封装操作组件并引入表格文件内 配置表头信息数组及添加操作事件

    2024年02月13日
    浏览(66)
  • VUE element-ui实现表格动态展示、动态删减列、动态排序、动态搜索条件配置、表单组件化。

        1、本组件支持列表的表头自定义配置,checkbox实现 2、本组件支持列表列排序,vuedraggable是拖拽插件,上图中字段管理里的拖拽效果 ,需要的话请自行npm install 3、本组件支持查询条件动态配置,穿梭框实现 https://download.csdn.net/download/askuld/88216937

    2024年01月16日
    浏览(60)
  • vue+Element UI 实现动态表单(点击按钮增删表格及嵌套输入框的增删)(1)

    el-button size=“small” @click=“addTable”新增 el-button size=“small” @click=“delTable”删除 el-table ref=“table” :data=“tableDataBind.taAssessltems” tooltip-effect=“dark” border @selection-change=“selectRow” 规格: 重量: 数量: 加工费: el-button size=“mini” type=“primary” icon=“el-icon-circle-plus-ou

    2024年04月13日
    浏览(43)
  • Vue+Element-UI 中 el-table 动态合并单元格 :span-method 方法

    记录一下工作时遇到的 el-table 合并单元格的需求,超详细😊 el-table官方提供了合并单元格的方法与返回格式 如下: 根据叙述有了如下思路: 因为后端返回的数据非统一, 可能不是按照类别排好的😨, 所以官网的例子满足不了所有的需求所以我们通过遍历table的数据比较前后两

    2024年02月12日
    浏览(64)
  • 基于vue和element-ui的表格组件,主推数据渲染,支持内容和方法灵活绑定,提供动态具名插槽自定义内容

            组件名为commonTable,主要是基于element-ui中的表格组件进行二次封装的组件,集成了常用的表格功能,除默认内容的显示外,还包括以下几点:         1. 状态的筛选和显示;         2. 操作按钮的显示和方法绑定;         3. 自定义具名插槽内容的封装;      

    2024年02月07日
    浏览(50)
  • Element table根据字段合并表格(可多字段合并),附带拖拽列动态合并

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

    2024年02月11日
    浏览(43)
  • element-ui 表格(table)合并表头下面合并列且可以收缩展开

    百度了一大堆,发现了首行不能合并,想到了用dom做,找到了下面这个链接 1、表头合并 —— 给table添加属性:header-cell-style=\\\"headerStyle\\\",里面给首行设置跨行 element-ui表头合并 - ^Mao^ - 博客园 2、表内合并 —— 给table添加属性:span-method=\\\"arraySpanMethod\\\",里面设置合并 Element - The wor

    2024年02月16日
    浏览(56)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包