vue动态合并单元格并添加小计合计功能示例


Posted in Vue.js onNovember 26, 2020

1、效果图

vue动态合并单元格并添加小计合计功能示例

2、后台返回数据格式(平铺式)

vue动态合并单元格并添加小计合计功能示例

3、后台返回数据后,整理所需要展示的属性存储到(items)数组内

var obj = {
    "id": curItems[i].id,
    "feeName": curItems[i].feeName,
    "projectName": curItems[i].projectName,
    "projectDetailsName": curItems[i].projectDetailsName,
    "zbMoney": curItems[i].zbMoney,
    "qyMoney": curItems[i].qyMoney,
    "projectId": curItems[i].projectId,
    "instructions": curItems[i].instructions,
    "contentText": curItems[i].contentText,
    "measureText": curItems[i].measureText
   }
   if (curItems[i].projectDetailsName == '合计:') {
    obj.projectName = curItems[i - 1].projectName
   }
   _self.items.push(obj)
   }

4、调用initData(调用后会删除需要合并的字段内容)

_self.initData()

initData(){
  const that = this;
  let arry = [];
  let itemsCopy = JSON.parse(JSON.stringify(that.items));
  for (let i = 0; i < itemsCopy.length; i++) {
   for (let j = (i + 1); j < itemsCopy.length; j++) {
   for (let h in itemsCopy[i]) {
    for (let k in itemsCopy[j]) {
    if (k == 'feeName' || k == 'projectName' || k == 'projectDetailsName') {
     if (itemsCopy[j][k] != '小计:' && itemsCopy[j][k] != '合计:') {
     if (h === k && itemsCopy[i][h] === itemsCopy[j][k]) {
      delete itemsCopy[j][k]
     }
     }
    }
    }
   }
   }
   arry.push(itemsCopy[i]);
  }
  that.dataT = arry;
  },

vue动态合并单元格并添加小计合计功能示例

4、合并行数的代码

rowSpanF: function (key, val) {
  const that = this;
  let num = 0;
  for (let i in that.items) {
   for (let j in that.items[i]) {
   if (j == 'feeName' || j == 'projectName' || j == 'projectDetailsName') {
    if (key === j && val === that.items[i][j]) {
    if (that.items[i][j] == '小计:' || that.items[i][j] == '合计:') {
     return
    }
    num++;
    }
   }
   }
  }

  if(num==0){
   return 1
  }
  return num;
  },

5、html

vue动态合并单元格并添加小计合计功能示例

代码如下:

<tr v-for="(item,$index) in dataT"> 


   <td
   v-if="key!='id'&&(key=='feeName'||key=='projectName'||key=='projectDetailsName'||key=='zbMoney'||key=='qyMoney'||key=='projectId'||key=='instructions'||key=='contentText'||key=='measureText')"
   v-for="(val,key) in item" :rowspan="rowSpanF(key,val)">
   <span v-if="key=='feeName'">{{val}}</span>
   <span v-if="key=='projectName'">{{val}}</span>
   <span v-if="key=='projectDetailsName'">{{val}}</span>
   <span v-if="key=='zbMoney'">{{val}}</span>
   <span v-if="key=='qyMoney'">{{val}}</span>
   <span v-if="key=='projectId'">{{item['zbMoney']+item['qyMoney']}}</span>
   <span v-if="key=='instructions'">{{val}} </span>
   <span v-if="key=='contentText'">{{val}}</span>
   <span v-if="key=='measureText'">{{val}}</span>
   </td>
   <td>
   <div v-if="item.projectDetailsName!='小计:'&&item.projectDetailsName!='合计:'">
    <!--<span @click="toAdd(allItems[$index])"><a>添加</a></span>-->
    <span @click="toEdit(item)"><a>编辑</a></span>
    <span>
     <a-popconfirm
     title="确定删除吗?"
     okText="确定"
     cancelText="取消"
     @confirm="() => deletArr(item)">
      <a href="javascript:;" rel="external nofollow" >删除</a>
     </a-popconfirm>
    </span>
   </div>
   </td>


  </tr>

注意事项:

后台返回数据必须符合该条件

vue动态合并单元格并添加小计合计功能示例

vue动态合并单元格并添加小计合计功能示例

总结

到此这篇关于vue动态合并单元格并添加小计合计功能的文章就介绍到这了,更多相关vue动态合并单元格添加小计合计内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
vue + el-form 实现的多层循环表单验证
Nov 25 Vue.js
vue表单验证之禁止input输入框输入空格
Dec 03 Vue.js
如何在vue中使用kindeditor富文本编辑器
Dec 19 Vue.js
Vue使用鼠标在Canvas上绘制矩形
Dec 24 Vue.js
Vue 数据响应式相关总结
Jan 28 Vue.js
Vue 实例中使用$refs的注意事项
Jan 29 Vue.js
如何管理Vue中的缓存页面
Feb 06 Vue.js
Vue中使用wangeditor富文本编辑的问题
Feb 07 Vue.js
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
Feb 20 Vue.js
vue使用localStorage持久性存储实现评论列表
Apr 14 Vue.js
vue里使用create, mounted调用方法
Apr 26 Vue.js
vue如何在data中引入图片的正确路径
Jun 05 Vue.js
vue单元格多列合并的实现
Nov 26 #Vue.js
VUE项目实现主题切换的多种方法
Nov 26 #Vue.js
Vue项目如何引入bootstrap、elementUI、echarts
Nov 26 #Vue.js
vue实现广告栏上下滚动效果
Nov 26 #Vue.js
Vue组件生命周期运行原理解析
Nov 25 #Vue.js
vue element-ul实现展开和收起功能的实例代码
Nov 25 #Vue.js
在Vue中使用mockjs代码实例
Nov 25 #Vue.js
You might like
php+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
php生成QRcode实例
2014/09/22 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
JavaScript关于select的相关操作说明
2010/01/13 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
移动端利用H5实现压缩图片上传功能
2017/03/29 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
详解原生js实现offset方法
2017/06/15 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
QML实现圆环颜色选择器
2019/09/25 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
解决.ui文件生成的.py文件运行不出现界面的方法
2019/06/19 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
2019/08/31 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
NARS化妆品官方商店:美国彩妆品牌
2017/08/26 全球购物
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
线程同步的方法
2016/11/23 面试题
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
土木建筑学生自我评价
2014/01/14 职场文书
党员批评与自我批评
2014/02/12 职场文书
采购经理岗位职责
2014/02/16 职场文书
领导干部保密承诺书
2014/08/30 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers