• elementUi实现动态表格单元格合并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方法是开始合并

  • 相关阅读:
    医疗行业数据分析,为医疗提质增效提供科学支持
    Spark Streaming状态管理函数updateStateByKey和mapWithState
    皕杰小程序之app.josn
    喷淋式蒸发器
    文心一言 VS 讯飞星火 VS chatgpt (92)-- 算法导论8.3 5题
    【直播】-DRM和TZC400的介绍-2022/11/26
    maven工程结构搭建
    TSNE降维学习
    【第1天】SQL快速入门-基础查询(SQL 小虚竹)
    springboot基于微信小程序的电器商城系统的设计与实现毕业设计源码251453
  • 原文地址:https://blog.csdn.net/weixin_43923808/article/details/127746425