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中setup使用(两种用法)
Dec 02 Vue.js
vue+elementUI动态增加表单项并添加验证的代码详解
Dec 17 Vue.js
vue中watch的用法汇总
Dec 28 Vue.js
vue实现图书管理系统
Dec 29 Vue.js
vue-cli4.0多环境配置变量与模式详解
Dec 30 Vue.js
Vue实现摇一摇功能(兼容ios13.3以上)
Jan 26 Vue.js
开发一个封装iframe的vue组件
Mar 29 Vue.js
vue实现可拖拽的dialog弹框
May 13 Vue.js
vue.js Router中嵌套路由的实用示例
Jun 27 Vue.js
vue中利用mqtt服务端实现即时通讯的步骤记录
Jul 01 Vue.js
深入讲解Vue中父子组件通信与事件触发
Mar 22 Vue.js
使用vue判断当前环境是安卓还是IOS
Apr 12 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设计模式 Decorator(装饰模式)
2011/06/26 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
一个符号插入器 中用到的js代码
2007/09/04 Javascript
img标签中onerror用法
2009/08/13 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
2016/06/20 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
Vue组件之极简的地址选择器的实现
2018/05/31 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
图片文字识别(OCR)插件Ocrad.js教程
2018/11/26 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
2021/02/26 Vue.js
Python生成随机密码
2015/03/10 Python
Python XML转Json之XML2Dict的使用方法
2019/01/15 Python
Django使用Channels实现WebSocket的方法
2019/07/28 Python
python爬虫中多线程的使用详解
2019/09/23 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
2020/01/20 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
廉政教育的心得体会
2014/09/01 职场文书
寒山寺导游词
2015/02/03 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers
Redis实现分布式锁的五种方法详解
2022/06/14 Redis