el-table利用折叠面板 type=“expand“ 嵌套el-table,并实现 明细数据多选,选中明细数据后返回原数据得嵌套格式

news2024/9/22 7:27:43

效果图:

废话不多说直接上代码,完整代码展示:

<template>
  <el-table
    border
    ref="multipleTable"
    :data="tableData"
    tooltip-effect="dark"
    style="width: 100%"
  >
    <el-table-column
      width="50"
      label="明细"
      type="expand"
    >
      <template slot-scope="scope">
        <el-table
          @selection-change="handleInnerSelectionChange(scope.row, $event)"
          border
          :data="scope.row.orderItemInfos"
          size="mini"
          style="width: 95%; margin-left: 3%"
        >
          <el-table-column type="selection" width="55" />
          <el-table-column prop="xmmc" label="商品名称" align="center" />
          <el-table-column prop="ggxh" label="规则型号" align="center" />
          <el-table-column prop="xmsl" label="数量" align="center" />
          <el-table-column prop="xmdw" label="单位" align="center" />
        </el-table>
      </template>
    </el-table-column>
    <el-table-column
      type="index"
      label="序号"
      width="50"
    />
    <el-table-column
      prop="ghfMc"
      label="购方名称"
      width="220"
    />
    <el-table-column
      prop="ghfNsrsbh"
      label="购方税号"
      width="200"
    />
  </el-table>

  <!-- 示例按钮用于测试 -->
  <el-button @click="getSelectedData">获取选中数据</el-button>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        {
          id: 1,
          ghfMc: '公司A',
          ghfNsrsbh: '1234567890',
          fphm: '发票1',
          kphjje: '1000',
          sykchje: '500',
          hjbhsje: '800',
          kpse: '200',
          orderItemInfos: [
            { xmmc: '商品A', ggxh: '规格A', xmsl: 10, xmdw: '件' },
            { xmmc: '商品B', ggxh: '规格B', xmsl: 20, xmdw: '件' }
          ]
        },
        {
          id: 2,
          ghfMc: '公司B',
          ghfNsrsbh: '0987654321',
          fphm: '发票2',
          kphjje: '1500',
          sykchje: '700',
          hjbhsje: '1000',
          kpse: '500',
          orderItemInfos: [
            { xmmc: '商品C', ggxh: '规格C', xmsl: 15, xmdw: '件' },
            { xmmc: '商品D', ggxh: '规格D', xmsl: 25, xmdw: '件' }
          ]
        }
      ],
      selectedMainRows: [], // 选中的主行
      selectedDetailRows: {}, // 选中的明细行,按主行 ID 分类
      selectedDataRows: [] // 最终选中的数据
    };
  },
  methods: {
  // 处理子表格的选择变化
handleInnerSelectionChange(row, selectedRows) {
  // 使用 row 的 id 作为键值,存储选中的子表格行
  this.selectedDetailRows[row.id] = selectedRows;

  // 确保主行也被选中
  if (!this.selectedMainRows.includes(row)) {
    this.selectedMainRows.push(row);
  }

  // 更新最终选中的数据
  this.selectedDataRows = this.getSelectedData();
}

// 获取最终选中的数据
getSelectedData() {
  const selectedData = [];

  // 遍历选中的主行
  this.selectedMainRows.forEach(mainRow => {
    // 获取当前主行对应的子表格行
    const detailRows = this.selectedDetailRows[mainRow.id] || [];

    // 如果有选中的子表格行,则将主行及其子行添加到结果中
    if (detailRows.length > 0) {
      selectedData.push({
        ...mainRow, // 合并主行数据
        hzqrdDetailVOList: detailRows // 添加选中的子行
      });
    }
  });

  // 返回最终选中的数据
  return selectedData;
}
};
</script>

通过这种方式,我们可以确保每次子表格中的选择发生变化时,主行和子行的数据都能得到同步更新,并且可以通过 getSelectedData 方法获取最终选中的数据。

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

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

相关文章

线程池在接受到30个比较耗时的任务时的状态,在前面30个比较耗时的任务还没执行完成的情况下,再来多少个任务会触发拒绝策略?

目录 一、提出问题 二、解答 问题 1: 线程池在接受到30个比较耗时的任务时的状态 问题 2: 在前面30个比较耗时的任务还没执行完成的情况下&#xff0c;再来多少个任务会触发拒绝策略&#xff1f; 总结 一、提出问题 我们首先自定义一个线程池&#xff1a; new ThreadPoo…

18042 计算分段函数值

### 伪代码 1. 读取输入的实数x。 2. 根据x的值计算y&#xff1a; - 如果x < 1&#xff0c;y x。 - 如果1 < x < 10&#xff0c;y 2x - 1。 - 如果x > 10&#xff0c;y 3x - 11。 3. 输出y的值&#xff0c;保留两位小数。 ### C代码 #include <io…

fl studio 21/24破解版(水果音乐制作软件24) v24.1.1.4285附安装教程

fl studio 21/24破解版&#xff0c;又被国内网友称之为水果音乐制作软件24&#xff0c;是Image-Line公司成立26周年而发布的一个版本&#xff0c;是目前互联网上最优秀的完整的软件音乐制作环境或数字音频工作站&#xff0c;包含了编排&#xff0c;录制&#xff0c;编辑&#x…

World of Warcraft [CLASSIC][80][Grandel] Call to Arms: Warsong Gulch

Call to Arms: Warsong Gulch - Quest - 魔兽世界怀旧服CTM4.34《大地的裂变》数据库_大灾变85级魔兽数据库_ctm数据库 10人PVP战歌峡谷&#xff0c;该战场经常用来互刷军衔和荣誉&#xff0c;哈哈 wow plugin_魔兽世界挂机插件-CSDN博客

完美解决node-sass@4.14.1 postinstall: `node scripts/build.js` 问题

node v14.16.0 安装node-sass4.14.1会出现报错 看日志排查发现设置的源国内的都有问题 直接梯子下载&#xff1a; https://github.com/sass/node-sass/releases/download/v4.14.1/win32-x64-83_binding.node 本地启动phpstudy&#xff0c;当然你也可以放在你服务器上&#xff0…

学习笔记 ---- 数论分块(整除分块)

文章目录 算法概述引理引理 1 1 1引理 2 2 2 数论分块结论&#xff08;区间右端点公式&#xff09;过程 N N N 维数论分块向上取整的数论分块 例题 H ( n ) H(n) H(n)[CQOI2007] 余数求和[清华集训2012] 模积和 算法 概述 数论分块可以快速计算一些含有除法向下取整的和式(即…

掌握 SQL 数据操纵的基础技巧

在数据库管理中&#xff0c;SQL 数据操纵语言 (DML) 是至关重要的工具。它主要包括 INSERT、UPDATE 和 DELETE 语句&#xff0c;用于对数据库中的数据进行插入、更新和删除操作。本文将带你快速了解这些基本操作。 插入数据 在创建了一个表之后&#xff0c;最常见的操作就是插…

基于SpringBoot+Vue+MySQL的的宠物商城网站

系统背景 基于SpringBootVueMySQL的宠物商城网站是一个结合了现代Web开发技术的综合性电商平台&#xff0c;专为宠物爱好者及宠物商家设计。该系统背景可以从多个方面来阐述&#xff0c;包括但不限于市场需求、技术选型、用户体验以及平台价值等方面。 1. 市场需求 随着人们生…

python内置模块time详解(我们需要了解的多种时间格式)

Python的time模块提供了各种与时间相关的函数。我们可以获取当前时间、操作时间日期、计算两个时间差等。 时间有两种标准表示法: 数字表示: 整数或浮点数&#xff0c;通常是自从1970年1月1日以来的秒数。9个整数组成的元组&#xff1a;元组项包含年份&#xff0c;月份&#…

第 4 章 第 4 章 卷积神经网络-datawhale ai夏令营

独热向量 y ′ 的长度决 定了模型可以识别出多少不同种类的东西。我们希望 y ′ 和 yˆ 的交叉熵越小越好。 为了避免过拟合&#xff0c;在做图像识别的时候&#xff0c;考虑到图像本身的特性&#xff0c;并不一定 需要全连接&#xff0c;即不需要每个神经元跟输入的每个维度都…

进程通信——消息队列

文章目录 1.概念1.0 IPC1.1 什么是消息队列1.2 消息队列工作机制1.3 消息队列与其他进程通信机制的比较&#xff1a; 2.使用System-V版2.1 用户消息缓冲区2.2 创建消息队列msgget2.3 添加消息到消息队列msgsend2.4 从消息队列读取消息、2.5 消息队列的控制函数msgctrl2.6 msqid…

SpringBoot中,启动A服务,naocs却注册B服务,解决思路。

今天遇到了一个令我非常费解的报错&#xff0c;我明明启动的是auth服务&#xff0c;但是nacos愣是给我注册的patient服务&#xff0c;下面看看解决思路&#xff08;虽然我这个问题很乌龙&#xff0c;但如果真的是你的配置有问题&#xff0c;那么这篇文章也是可以帮助到你。&…

开源通用验证码识别OCR —— DdddOcr 源码赏析(二)

文章目录 前言DdddOcr分类识别调用识别功能classification 函数源码classification 函数源码解读1. 分类功能不支持目标检测2. 转换为Image对象3. 根据模型配置调整图片尺寸和色彩模式4. 图像数据转换为浮点数据并归一化5. 图像数据预处理6. 运行模型&#xff0c;返回预测结果 …

如何在Windows和Mac上免费提取RAR文件?这里有方法

序言 你有没有下载过一个文件,却发现它有一个奇怪的.rar文件扩展名?RAR是一种压缩文件格式,与ZIP文件非常相似,在本文中,我们将向你展示如何在Windows或macOS上打开RAR文件。 如何在Windows 11上打开RAR文件 Windows 11在2023年增加了对RAR文件的原生支持。从那时起,你…

前端框架vue3中的条件渲染(v-show,v-if,v-else-if,v-else)

目录 v-show: 需求&#xff1a; v-if 区别与v-show&#xff1a; v-if和v-show的选择&#xff1a; v-else-if和v-else 联合使用&#xff1a; v-show: 部分代码如图&#xff1a; <body><div id"root"><div ><h1>n的值为{{n}}</h1>…

【计算机网络】浏览器输入访问某网址时,后台流程是什么

在访问网址时&#xff0c;后台的具体流程可以因不同的网站、服务器和应用架构而异。 实际过程中可能还涉及更多的细节和步骤&#xff0c;如缓存处理、重定向、负载均衡等。 此外&#xff0c;不同的网站和应用架构可能会有不同的实现方式和优化策略。 部分特定网站或应用&#x…

数据仓库系列19:数据血缘分析在数据仓库中有什么应用?

你是否曾经在复杂的数据仓库中迷失方向&#xff0c;不知道某个数据是从哪里来的&#xff0c;又会流向何方&#xff1f;或者在处理数据质量问题时&#xff0c;无法快速定位根源&#xff1f;如果是这样&#xff0c;那么数据血缘分析将会成为你的得力助手&#xff0c;帮助你在数据…

协议转换桥+高速协议传输终端

多路协议传输终端&#xff08;正在更新&#xff09; 整体框图&#xff08;正在更新&#xff09; 万兆UDP协议栈 整体框图 10G 8b10b phy层设计 整体框图 报文格式

从pdf复制的表格内容粘贴到word或excel表格保持表格格式

对于it工作&#xff0c;硬件和软件&#xff0c;经常需要从pdf复制表格内容到word或excel&#xff0c;但是windows的ctrlc和ctrlv只能复制内容而不能保留表格的格式。 粘贴进word或excel的表格后&#xff0c;不能保持原来表格的排列&#xff0c;特别是word&#xff0c;复制的pdf…

[Leetcode] 接雨水(相向双指针)

可以直接移步大神的解题思路&#xff0c;非常详细 -> 盛最多水的容器 接雨水_哔哩哔哩_bilibili 11. 盛最多水的容器 https://leetcode.cn/problems/container-with-most-water/description/ 42. 接雨水 https://leetcode.cn/problems/trapping-rain-water/description/ 11…