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 相关文章推荐
vue3.0实现点击切换验证码(组件)及校验
Nov 18 Vue.js
vue实现广告栏上下滚动效果
Nov 26 Vue.js
vue动态合并单元格并添加小计合计功能示例
Nov 26 Vue.js
vue实现滚动鼠标滚轮切换页面
Dec 13 Vue.js
为什么推荐使用JSX开发Vue3
Dec 28 Vue.js
解决vue项目本地启动时无法携带cookie的问题
Feb 06 Vue.js
vite2.0+vue3移动端项目实战详解
Mar 03 Vue.js
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
Jun 09 Vue.js
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
vue elementUI批量上传文件
Apr 26 Vue.js
ant design vue的form表单取值方法
Jun 01 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中将网页导出为Word文档的代码
2012/05/25 PHP
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
PHP之正则表达式捕获组与非捕获组(详解)
2015/07/29 PHP
php上传大文件失败的原因及应对策略
2015/10/20 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
2016/05/09 PHP
PHP操作路由器实现方法示例
2019/04/27 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
教您去掉ie网页加载进度条的方法
2010/12/09 Javascript
jQuery EasyUI API 中文文档 可调整尺寸
2011/09/29 Javascript
jQuery学习之prop和attr的区别示例介绍
2013/11/15 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
JQuery中$(document)是什么意思有什么作用
2014/07/21 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
canvas雪花效果核心代码分享
2017/02/19 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
JS实现匀速与减速缓慢运动的动画效果封装示例
2018/08/27 Javascript
vue实现打印功能的两种方法
2018/09/07 Javascript
4个顶级JavaScript高级文本编辑器
2018/10/10 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
2019/01/31 Javascript
使用js和canvas实现时钟效果
2020/09/08 Javascript
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
Python中的特殊语法:filter、map、reduce、lambda介绍
2015/04/14 Python
python学习必备知识汇总
2017/09/08 Python
对python For 循环的三种遍历方式解析
2019/02/01 Python
Python使用pyserial进行串口通信的实例
2019/07/02 Python
Python 如何测试文件是否存在
2020/07/31 Python
继电保护工岗位职责
2014/01/05 职场文书
店长职务说明书
2014/02/04 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
拾金不昧表扬稿
2015/01/16 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
庆七一晚会主持词
2015/06/30 职场文书
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript