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中如何自定义右键菜单详解
Dec 08 Vue.js
vue项目中openlayers绘制行政区划
Dec 24 Vue.js
vue 使用class创建和清除水印的示例代码
Dec 25 Vue.js
详解template标签用法(含vue中的用法总结)
Jan 12 Vue.js
vue 计算属性和侦听器的使用小结
Jan 25 Vue.js
vue3 watch和watchEffect的使用以及有哪些区别
Jan 26 Vue.js
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
Feb 26 Vue.js
Vue多选列表组件深入详解
Mar 02 Vue.js
如何使用vue3打造一个物料库
May 08 Vue.js
vue项目多环境配置(.env)的实现
Jul 21 Vue.js
vue使用refs获取嵌套组件中的值过程
Mar 31 Vue.js
vue实现登陆页面开发实践
May 30 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
mysql 性能的检查和优化方法
2009/06/21 PHP
使用PHP下载CSS文件中的图片的代码
2013/09/24 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
33种Javascript 表格排序控件收集
2009/12/03 Javascript
jquery.messager.js插件导致页面抖动的解决方法
2013/07/14 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
js编写一个简单的产品放大效果代码
2016/06/27 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
Vue实现路由跳转和嵌套
2017/06/20 Javascript
自适应布局meta标签中viewport、content、width、initial-scale、minimum-scale、maximum-scale总结
2017/08/18 Javascript
基于vue 实现token验证的实例代码
2017/12/14 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
微信小程序实现打卡日历功能
2020/09/21 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
python小技巧之批量抓取美女图片
2014/06/06 Python
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
Mac下Anaconda的安装和使用教程
2018/11/29 Python
Python读取指定日期邮件的实例
2019/02/01 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
Python sql注入 过滤字符串的非法字符实例
2020/04/03 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
End Clothing美国站:英国男士潮牌商城
2018/04/20 全球购物
迪卡侬(Decathlon)加拿大官网:源自法国的运动专业超市
2020/11/22 全球购物
离婚协议书范本及离婚须知
2014/10/15 职场文书
发布会邀请函
2015/01/31 职场文书
2016年艾滋病宣传活动总结
2016/04/01 职场文书