当前位置:   article > 正文

elementUi实现动态表格单元格合并span-method方法

span-method

element的2.x

(注意是2.X新加的方法)

1.span-method方法

可以实现合并行或列,

2.参数

方法的参数是一个对象,里面包含当前行row、当前列column、当前行号rowIndex、当前列号columnIndex四个属性。

3.两种 return 返回方式

1) 

 return [1,2]也可以返回一个对象

2)

return {
rowspan: 2,//实际上就是给td加上rowspan属性
colspan: 1//实际上就是给td加上colspan属性
};

下面是为了实现‘空间’文字相同的上下合并(比如卫生间有两个一样的需要合并)

合并前:

 合并后:

 

贴上一个完整代码

注意::span-method="objectSpanMethod"

  1. <el-table :data="customerInfo.projectList" :span-method="objectSpanMethod" border v-if="customerInfo.dzState==2" :row-style="{height:'10px'}" style="width: 100%">
  2. <el-table-column align="center" label="空间" width="125">
  3. <template slot-scope="scope">
  4. <span>{{ scope.row.space}}</span>
  5. <!-- <el-input @change="space_edit(scope.row)" v-model="scope.row.space"></el-input> -->
  6. </template>
  7. </el-table-column>
  8. <el-table-column label="定制报价项" header-align="center" align="center">
  9. <template slot-scope="scope">
  10. <span>{{ scope.row.name}}</span>
  11. </template>
  12. </el-table-column>
  13. <el-table-column label="类型" header-align="center" align="center">
  14. <template slot-scope="scope">
  15. <span>{{typeRole(scope.row.boardType)}}</span>
  16. </template>
  17. </el-table-column>
  18. <el-table-column label="报价单位" header-align="center" align="center">
  19. <template slot-scope="scope">
  20. <span>{{ scope.row.unit }}</span>
  21. </template>
  22. </el-table-column>
  23. <el-table-column label="数量" width="90" header-align="center" align="center">
  24. <template slot-scope="scope">
  25. <el-input @change="num_edit(scope.row)" :disabled="customerInfo.dzModifyStatus==0" v-model="scope.row.num"></el-input>
  26. </template>
  27. </el-table-column>
  28. <el-table-column label="单价" header-align="center" align="center">
  29. <template slot-scope="scope">
  30. <span>{{ formatMoney(scope.row.price) }}</span>
  31. </template>
  32. </el-table-column>
  33. </el-table>
  1. data() {
  2. return {
  3. projectList:[{space: "厨房",name: "总部的门板便宜啦",unit: "平方",boardType: 2,num: null,price: 120000},
  4. {space: "卫生间",name: "总-衣柜抽屉",unit: "套",boardType: 2,num: null,price: 20000},
  5. {space: "卫生间",name: "总-全屋拉手-小丙修改",unit: "个",boardType: 2,num: null,price: 16000},
  6. {space: "书房",name: "总-全屋拉手",unit: "个",boardType: 2,num: null,price: 1600}],
  7. spanArr:[]
  8. }
  9. }
  1. methods: {
  2. objectSpanMethod({ row, column, rowIndex, columnIndex }) {
  3. if (columnIndex === 0) {
  4. const _row = this.spanArr[rowIndex];
  5. const _col = _row > 0 ? 1 : 0;
  6. console.log(_col, '_col');
  7. return {
  8. rowspan: _row, //
  9. colspan: _col //
  10. };
  11. }
  12. },
  13. getSpanArr(data) {
  14. this.spanArr = [];
  15. for (var i = 0; i < data.length; i++) {
  16. if (i === 0) {
  17. this.spanArr.push(1);
  18. this.pos = 0;
  19. } else {
  20. // 判断当前元素与上一个元素是否相同
  21. if (data[i].space === data[i - 1].space && data[i].space) {
  22. this.spanArr[this.pos] += 1;
  23. this.spanArr.push(0);
  24. } else {
  25. this.spanArr.push(1);
  26. this.pos = i;
  27. }
  28. }
  29. }
  30. console.log(this.spanArr, ' this.spanArr');
  31. },
  32. }

数组传给这方法,获取排序顺序 spanArr

  1. created() {
  2. this.getSpanArr(this.projectList);
  3. //在动态获取数组传给这方法
  4. }

打印spanArr

 objectSpanMethod方法是开始合并

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/279830
推荐阅读
相关标签
  

闽ICP备14008679号