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 的异常处理机制
Nov 30 Vue.js
vue祖孙组件之间的数据传递案例
Dec 07 Vue.js
Vue 实现一个简单的鼠标拖拽滚动效果插件
Dec 10 Vue.js
Vue如何跨组件传递Slot的实现
Dec 14 Vue.js
vue实现简易计算器功能
Jan 20 Vue.js
vue实现倒计时功能
Mar 24 Vue.js
如何让vue长列表快速加载
Mar 29 Vue.js
vue+springboot实现登录验证码
May 27 Vue.js
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 Vue.js
vue+elementUI实现表格列的显示与隐藏
Apr 13 Vue.js
Vue OpenLayer 为地图绘制风场效果
Apr 24 Vue.js
Vue深入理解插槽slot的使用
Aug 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写的小东西
2006/12/06 PHP
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
php 如何获取数组第一个值
2013/08/06 PHP
PHP mysql与mysqli事务使用说明 分享
2013/08/17 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
2014/05/29 PHP
PHP解决URL中文GBK乱码问题的两种方法
2014/06/03 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
2019/04/09 PHP
javascript 限制输入脚本大全
2009/11/03 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
js图片延迟技术一般的思路与示例
2014/03/20 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
2016/05/20 Javascript
jquery dataTable 获取某行数据
2017/05/05 jQuery
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
详解JS数值Number类型
2018/02/07 Javascript
Webpack的dll功能使用
2018/06/28 Javascript
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
bpython 功能强大的Python shell
2016/02/16 Python
python简单实现刷新智联简历
2016/03/30 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
利用Hyperic调用Python实现进程守护
2018/01/02 Python
详解Python3 基本数据类型
2019/04/19 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
Python的形参和实参使用方式
2019/12/24 Python
英国工具中心:UK Tool Centre
2017/07/10 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
一些关于MySql加速和优化的面试题
2014/01/30 面试题
教师辞职报告范文
2014/01/20 职场文书
幼儿园安全检查制度
2014/01/30 职场文书
酒店行政人事部经理职务说明书
2014/02/26 职场文书
2016年感恩教师节校园广播稿
2015/12/18 职场文书
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
redis lua限流算法实现示例
2022/07/15 Redis