解决objectSpanMethod与expand共存时展开后表格错位问题

1、增加@expand-change="expandHeight"---手动增加高度

2、单列合并('department')

复制代码
 expandHeight(row, expanded) {
      this.$nextTick(() => {
        const rowIndex = this.tableData.findIndex(
          (item) => item.userKey === row.userKey
        );
        if (rowIndex === -1 || !this.spanObj.department) return;

        let realIndex = rowIndex;
        for (let i = rowIndex; i >= 0; i--) {
          if (this.spanObj.department[i] > 0) {
            realIndex = i;
            break;
          }
        }

        const isExpanding = expanded.some(
          (item) => item.userKey === row.userKey
        );

        const newDept = [...this.spanObj.department];
        if (isExpanding) {
          newDept[realIndex] += 1;
        } else {
          newDept[realIndex] -= 1;
        }

        this.spanObj.department = newDept;

        this.$refs.oneRef.doLayout();
      });
    },

3、多列合并('department' ,'group' )

复制代码
    expandHeight(row, expanded) {
      this.$nextTick(() => {
        const rowIndex = this.tableData.findIndex(
          (item) => item.userKey === row.userKey
        );
        if (rowIndex === -1 || !this.spanObj.department || !this.spanObj.group)
          return;

        let deptIndex = rowIndex;
        for (let i = rowIndex; i >= 0; i--) {
          if (this.spanObj.department[i] > 0) {
            deptIndex = i;
            break;
          }
        }

        let groupIndex = rowIndex;
        for (let i = rowIndex; i >= 0; i--) {
          if (this.spanObj.group[i] > 0) {
            groupIndex = i;
            break;
          }
        }

        const isExpanding = expanded.some(
          (item) => item.userKey === row.userKey
        );

        const newDept = [...this.spanObj.department];
        const newGroup = [...this.spanObj.group];

        if (isExpanding) {
          newDept[deptIndex] += 1;
          newGroup[groupIndex] += 1;
        } else {
          newDept[deptIndex] -= 1;
          newGroup[groupIndex] -= 1;
        }

        this.spanObj.department = newDept;
        this.spanObj.group = newGroup;

        this.$refs.oneRef.doLayout();
      });
    },

解决思路:展开某行时候 手动在合并的列中 增加一个高度,其他代码看上一篇

相关推荐
苏灿烤鱼1 小时前
没有机密文件,也没有付费数据,在浏览器里造一颗"间谍卫星"
前端·javascript·github
leonkay1 小时前
C# 特性(Attribute)——【1】基础讲解
开发语言·青少年编程·面试·c#·.net·个人开发
harmful_sheep1 小时前
java group by常见用法
java·开发语言·python
泯泷1 小时前
手搓JSVM第 5 篇:写第一个编译器:从 AST 生成 IR
前端·javascript·算法
SKH.1 小时前
Linux软件编程(6)线程间通信
java·开发语言·数据库
泯泷1 小时前
手搓JSVM第 7 篇:控制流:if、while 与 jump
前端·javascript·算法
泯泷1 小时前
手搓JSVM第 6 篇:把 IR 编成字节码:emit 与 label fixup
前端·javascript·算法
泯泷1 小时前
手搓JSVM第 3 篇:从栈式 VM 到寄存器式 VM:为什么我们选择寄存器
前端·javascript·算法
泯泷2 小时前
第 4 篇:让 VM 支持变量:Slot、Environment 与 TDZ
前端·javascript·算法
whcyhhh2 小时前
头歌实践教学平台:数据科学与大数据技术导论(十六)
大数据·开发语言·python