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中echarts的用法及与elementui-select的协同绑定操作
Nov 17 Vue.js
Vue使用Element实现增删改查+打包的步骤
Nov 25 Vue.js
vue 导航守卫和axios拦截器有哪些区别
Dec 19 Vue.js
vue+openlayers绘制省市边界线
Dec 24 Vue.js
vue+element UI实现树形表格
Dec 29 Vue.js
vue实现简易计算器功能
Jan 20 Vue.js
Vue实现下拉加载更多
May 09 Vue.js
Vue + iView实现Excel上传功能的完整代码
Jun 22 Vue.js
详解Vue的列表渲染
Nov 20 Vue.js
vue实现可以快进后退的跑马灯组件
Apr 08 Vue.js
vue-cli3.x配置全局的scss的时候报错问题及解决
Apr 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
PL-880隐藏功能
2021/03/01 无线电
php中通过正则表达式下载内容中的远程图片的函数代码
2012/01/10 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
2015/12/22 PHP
实例解析php的数据类型
2018/10/24 PHP
ThinkPHP3.2框架操作Redis的方法分析
2019/05/05 PHP
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
2014/01/26 Javascript
创建js对象和js类的方法汇总
2014/12/24 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
JS实现超精简的链接列表在固定区域内滚动效果代码
2015/11/04 Javascript
jquery点击改变class并toggle的实现代码
2016/05/15 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
老生常谈js-react组件生命周期
2017/05/02 Javascript
详解React 在服务端渲染的实现
2017/11/16 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
详解node.js 事件循环
2020/07/22 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
python文件操作整理汇总
2014/10/21 Python
python使用装饰器和线程限制函数执行时间的方法
2015/04/18 Python
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
python list多级排序知识点总结
2019/10/23 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
基于css3实现漂亮便签样式
2013/03/18 HTML / CSS
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
初级会计求职信范文
2014/02/15 职场文书
幼儿园小班家长寄语
2014/04/02 职场文书
单位委托书范本
2014/04/04 职场文书
投资合作意向书范本
2015/05/08 职场文书
社团招新宣传语
2015/07/13 职场文书
2015年七夕情人节感言
2015/08/03 职场文书
周一问候语大全
2015/11/10 职场文书
分享python函数常见关键字
2022/04/26 Python
VMware虚拟机安装 Windows Server 2022的详细图文教程
2022/09/23 Servers