很多表格都要一个移除的功能,所谓移除,就是前端把表格的数据删除,普通的表格删除很简单,调用数据的删除方法就行.但是当表格是多层的嵌套类型时,就不能再使用普通的删除方法了.下面介绍一种自己在项目中用的方法,比较简单
实现思路: 把当前要移除的产品唯一值(id)与原始数据进行比较,找到当前选中的数据在原始数据中的位置,删除这一项,重新调用表格合并处理方法处理数据
注意事项: 一定要让后台返回一个可供比较删除的唯一值,一般是id
表格数据展示效果:
 
 
 
页面的代码
  1. methods: {
  2. // 原始数据
  3. getTable () {
  4. let arr = [{
  5. deliveryId: 1,
  6. deliveryNo: '8899',
  7. deliveryDate: '1504108800000',
  8. productIdList: [{
  9. orderNo: '1212',
  10. productname: '手机1',
  11. modelNo: 'v-20',
  12. productNum: 'v4545',
  13. unitPrice: 2399,
  14. productId: 11
  15. }, {
  16. orderNo: '1232',
  17. productname: '手机2',
  18. modelNo: 'v-23',
  19. productNum: 'v4566',
  20. unitPrice: 2299,
  21. productId: 12
  22. }]
  23. }, {
  24. deliveryId: 2,
  25. deliveryNo: '3355',
  26. deliveryDate: '1547469776000',
  27. productIdList: [{
  28. orderNo: '1222',
  29. productname: '手机4',
  30. modelNo: 'x-20',
  31. productNum: 'x4545',
  32. unitPrice: 699,
  33. productId: 13
  34. }, {
  35. orderNo: '1242',
  36. productname: '手机5',
  37. modelNo: 'x-23',
  38. productNum: 'x4566',
  39. unitPrice: 899,
  40. productId: 14
  41. }]
  42. }]
  43. this.saveTable = arr
  44. this.dealTable(arr)
  45. },
  46.  
  47. // 表格合并方法
  48. arraySpanMethod ({ row, column, rowIndex, columnIndex }) {
  49. if (columnIndex === 0 || columnIndex === 1) {
  50. if (row.nameIndex) {
  51. return [row.nameIndex, 1]
  52. } else return [0, 0]
  53. }
  54. },
  55.  
  56. // 处理表格数据(两层数据)
  57. // 处理需要合并表格数据
  58. dealTable (table) {
  59. let getDate = [] // 存储新表格数据
  60. let typeIndex = [0] // 保存id,订单需要合并的值
  61. table.forEach((v, index) => {
  62. if (v.productIdList && v.productIdList.length) {
  63. v.productIdList.forEach((subV, i, typeData) => {
  64. if (i === typeData.length - 1) {
  65. typeIndex.push(typeData.length) // 类型循环完成后把数据长度存起来
  66. }
  67. subV.deliveryId = v.deliveryId
  68. subV.deliveryNo = v.deliveryNo
  69. subV.deliveryDate = v.deliveryDate
  70. getDate.push(subV)
  71. })
  72. }
  73. })
  74. let t = 0
  75. typeIndex.forEach((v, i, typeArr) => {
  76. if (typeArr[i + 1]) {
  77. getDate[t].nameIndex = typeArr[i + 1]
  78. t += typeArr[i + 1]
  79. }
  80. })
  81. this.invoiceList = getDate
  82. },
  83.  
  84. // 移除
  85. removeOrder (row) {
  86. // 在原始数据中删除
  87. this.saveTable.some((item, index, arr) => {
  88. if (item.productIdList && item.productIdList.length) {
  89. item.productIdList.some((subItem, subIndex) => {
  90. if (subItem.productId === row.productId) {
  91. arr[index].productIdList.splice(subIndex, 1)
  92. // 删除后重新处理数据
  93. this.dealTable(arr)
  94. return true
  95. }
  96. })
  97. }
  98. })
  99. }
  100. }
 

element-ui多层嵌套表格数据删除的更多相关文章

  1. vue2.0 + Element UI + axios实现表格分页

    注:本文分页组件用原生 html + css 实现,element-ui里有专门的分页组件可以不用自己写,详情见另一篇博客:https://www.cnblogs.com/zdd2017/p/1115 ...

  2. ASP.NET提取多层嵌套json数据的方法

    本文实例讲述了ASP.NET利用第三方类库Newtonsoft.Json提取多层嵌套json数据的方法,具体例子如下. 假设需要提取的json字符串如下: {"name":&quo ...

  3. 详解ASP.NET提取多层嵌套json数据的方法

    本篇文章主要介绍了ASP.NET提取多层嵌套json数据的方法,利用第三方类库Newtonsoft.Json提取多层嵌套json数据的方法,有兴趣的可以了解一下. 本文实例讲述了ASP.NET利用第三 ...

  4. element ui table(表格)点击一行展开

    element ui是一个非常不错的vue的UI框架,element对table进行了封装,简化了vue对表格的渲染. element ui表格中有一个功能是展开行,在2.0版本官网例子中,只可以点击 ...

  5. Vue框架Element UI教程-axios请求数据

    Element UI手册:https://cloud.tencent.com/developer/doc/1270 中文文档:http://element-cn.eleme.io/#/zh-CN gi ...

  6. 解决模糊查询问题 element UI 从服务器搜索数据,输入关键字进行查找

    做项目是遇见下拉框的形式,后台返回来3万多条,用element UI中的select选择器中的搜索还是会造成页面卡顿和系统崩溃,因此用了它的远程搜索功能,发现还不错,解决了这个问题. 代码1 < ...

  7. 提取多层嵌套Json数据

    在.net 2.0中提取这样的json {"name":"lily","age":23,"addr":{"ci ...

  8. element ui + sortablejs实现表格的行列拖拽

    <template> <div class="container"> <el-table :data="tableData" bo ...

  9. Gson 解析多层嵌套JSON数据

    http://stackoverflow.com/questions/14139437/java-type-generic-as-argument-for-gson

随机推荐

  1. Web测试实践--Rec 4

    累计完成任务情况: 阶段内容 参与人 整理小组工作记录,维护小组博客 小尹 分析产品并撰写文档相关板块 小靳 撰写文档中对被测系统进行功能性分析相关板块 小龙.小黄 撰写文档中用户调研相关板块 小熊 ...

  2. [GO]gtk的windows环境搭建

    首先需要安装一个命令行的工作,我们这里安装的是msys2,直接百度地址然后安装即可,我这里安装的是64位 安装好之后进行该软件源配置 修改mirrorlist.msys ## Primary ## m ...

  3. ADF文件数据结构解析和ADF文件读写

    包括位姿和特征点位置和描述信息. What does an Area Description File (ADF) looks like? 4down votefavorite 2 I'm start ...

  4. Win10 安装配置Android sdk及adb环境变量

    今天在新买的win10系统笔记本上安装配置adb,开始觉得挺简单的事,公司win7电脑上有现成的,但实际过程中……没想的那么简单了!好了,废话少说,直接正题. 研究了好一会下,总算搞定,总结如下: 1 ...

  5. ThinkJS 中的Logic层

    第一个为什么需要Logic层: 当在 Action 里处理用户的请求时,经常要先获取用户提交过来的数据,然后对其校验,如果校验没问题后才能进行后续的操作:当参数校验完成后,有时候还要进行权限判断等,这 ...

  6. C++ 调用C++写的类库的2种方法之一(隐式链接)

    一:创建C++ DLL类库,名称:Dll1 1.Dll1.h /*#ifndef Dll_API #else #define Dll_API _declspec(dllimport) #endif * ...

  7. 直接导入用户信息到discuz ucenter.

    上一篇帖子: 直接导入帖子到Discuz 论坛数据库. 结束时说要写一篇导入用户的帖子, 一直没时间, 但是咱不能做太监,不是? 所以今天赶快补上. 在做discuz整合或者迁移是, 很多人可能遇到相 ...

  8. UWA发布 | 2017 Unity手游体检蓝皮书 — ARPG篇

    报告目录: 一.ARPG手游总体性能开销分析 二.ARPG手游CPU模块性能开销分析 三.ARPG手游内存模块性能开销分析 四.ARPG手游资源管理分析 五.UWA对于ARPG手游研发团队的建议 一. ...

  9. Echart自定义y轴刻度信息2

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. 3.iptables 扩展模块

    --tcp-flags 用于匹配报文的tcp头的标志位 iptables -t filter -I INPUT -p tcp -m tcp --dport 22  --tcp-flags SYN,AC ...