el-table合并行

需求:

1、”用户任务“中的”代码“需要按照升序进行排列;
2、”用户任务“中连续的”会签“是共用一个序号,并且序号进行合并

效果

el-table合并行_第1张图片

解决方法

列表排序一般是前端传值,后端进行排序。由于后端返回的表格列表没有 序号indexNum 这个字段,我是自己做的一个处理去进行添加,方便后续相同序号的合并

--ListTable.ts--
// 获取表格列表以及添加序号indexNum
  search(resetPaging: boolean) {
    if (resetPaging) {
      this.paging.page = 1;
    }
    let params = this.buildFilter();
    let loading = this.$loading(ConstantMgr.loadingOption);
    UserTaskInsApi.query(params)
      .then((res) => {
        if (res.success) {
          let dataList = res.data!;
          this.index = 1;
          this.tempIndex = 0;
          dataList.forEach((item: any, index) => {
            if (index === 0) {
              item.indexNum = this.index;
              this.tempIndex = this.index;
              this.index++;
              this.temp = item;
            } else {
              if (item.bpmUserTaskDefinitionId !== this.temp.bpmUserTaskDefinitionId) {
                item.indexNum = this.index;
                this.tempIndex = this.index;
                this.index++;
              } else {
                item.indexNum = this.tempIndex;
              }
            }
            // this.index++;
            this.temp = item;
          });
          this.records = dataList;
          console.log('records=>', this.records);
        }
      })
      .catch((err) => {
        this.$message.error(err.message);
      })
      .finally(() => {
        loading.close();
      });
  }

// 相同序号进行合并
  onMergeLines(records) {
    this.spanArr = [];
    this.position = 0;
    records.forEach((item, index) => {
      if (index === 0) {
        this.spanArr.push(1);
        this.position = 0;
      } else {
        if (records[index].indexNum === records[index - 1].indexNum) {
          this.spanArr[this.position] += 1; // 合并行
          this.spanArr.push(0);
        } else {
          this.spanArr.push(1);
          this.position = index;
        }
      }
    });
  }
  objectSpanMethod({ row, column, rowIndex, columnIndex }) {
    if (columnIndex === 0) { // 如果是第一列也就是序号那列就进行合并
      const _row = this.spanArr[rowIndex];
      const _col = _row > 0 ? 1 : 0;
      return {
        rowspan: _row,
        colspan: _col,
      };
    }
  }



--ListTable.vue--

 
     ……
  

推荐资料 :https://element.eleme.cn/#/zh-CN

你可能感兴趣的:(工作积累,elementui,html,前端框架)