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 表单输入框不支持focus及blur事件的解决方案
Nov 17 Vue.js
vue+element_ui上传文件,并传递额外参数操作
Dec 05 Vue.js
vue添加自定义右键菜单的完整实例
Dec 08 Vue.js
vue 数据操作相关总结
Dec 17 Vue.js
基于VUE实现简单的学生信息管理系统
Jan 13 Vue.js
vue+element table表格实现动态列筛选的示例代码
Jan 14 Vue.js
vue使用过滤器格式化日期
Jan 20 Vue.js
vue实现简易计算器功能
Jan 20 Vue.js
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 Vue.js
vue 中 get / delete 传递数组参数方法
Mar 23 Vue.js
vue-element-admin项目导入和导出的实现
May 21 Vue.js
关于Vue中的options选项
Mar 22 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开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
js中使用replace方法完成某个字符的转换
2014/08/20 Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
2015/02/28 Javascript
浅谈Javascript的静态属性和原型属性
2015/05/07 Javascript
jQuery实现简单的列表式导航菜单效果代码
2015/08/31 Javascript
基于jQuery实现多层次的手风琴效果附源码
2015/09/21 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
js学习总结之dom2级事件基础知识详解
2017/07/27 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
js实现弹幕飞机效果
2020/08/27 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛 DT VS HGT
2014/05/22 DOTA
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
JavaScript实现一维数组转化为二维数组
2018/04/17 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
2020/02/26 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
Python的collections模块真的很好用
2021/03/01 Python
美国电视购物:QVC
2017/02/06 全球购物
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
Shell编程面试题
2016/05/29 面试题
小学后勤管理制度
2014/01/14 职场文书
大学校园毕业自我鉴定
2014/01/15 职场文书
银行简历自我评价
2014/02/11 职场文书
黄继光的英雄事迹材料
2014/02/13 职场文书
秘书英文求职信
2014/04/16 职场文书
2015年财务部工作总结
2015/04/10 职场文书
员工升职自我评价
2019/03/26 职场文书
公司年会晚会开幕词
2019/04/02 职场文书
85句关于理想的名言警句大全
2019/08/22 职场文书
python实现进度条的多种实现
2021/04/29 Python
css3带你实现3D转换效果
2022/02/24 HTML / CSS
MSSQL基本语法操作
2022/04/11 SQL Server