element 表格第一列合并,第二列展开后出现错位情况

展开后发现蓝色一行挤下来,而且还错位了

解决思路:展开行,在dom上其实是新增了一行的高度,合并上新增一个高度就可以

复制代码
<el-table
  v-loading="tabLoading"
  fit
  ref="oneRef"
  height="100%"
  :span-method="objectSpanMethod"
  @expand-change="expandHeight"
  highlight-current-row
>

async expandHeight(row: any, expanded: any) {
    this.$nextTick(() => {
      this.spanObj = dataMethod(this.data, ['factoryDivText']);
      const A10 = expanded.filter((k: any) => {
        return 'A10' == k.factoryDiv;
      });
      if (A10.length > 0) {
        this.spanObj.factoryDivText[0] = this.spanObj.factoryDivText[0] + A10.length;
      }

      const A20 = expanded.filter((k: any) => {
        return 'A20' == k.factoryDiv;
      });
      if (A20.length > 0) {
        let A20Index = 0;
        this.spanObj.factoryDivText.map((v: any, index: any) => {
          if (A10.length == 0) {
            this.spanObj.factoryDivText[0] = this.spanObj.factoryDivText[0] + A20.length;
          } else {
            if (index != 0 && v != 0) A20Index = index;
          }
        });
        this.spanObj.factoryDivText[A20Index] = this.spanObj.factoryDivText[0] + A20.length;
      }
      (this.$refs.oneRef as any).doLayout();
    });
  }



export const dataMethod = (data: any[], isH: string[]) => {
  const spanObj: any = {};
  const pos: any = {};
  let lastItem: any = null; // 上一个数据项
  data.map((it, i) => {
    Object.keys(it).map(key => {
      if (i === 0) {
        spanObj[key] = [1];
        pos[key] = i;
      } else {
        if (isH.includes(key) && lastItem && isEqual(lastItem, it, isH)) {
          spanObj[key][pos[key]] += 1;
          spanObj[key].push(0);
        } else {
          spanObj[key].push(1);
          pos[key] = i;
        }
      }
    });
    lastItem = it;
  });

  return spanObj;
};


objectSpanMethod({ column, rowIndex }: any) {
    const _row = this.spanObj[column.property] ? this.spanObj[column.property][rowIndex] : 1;
    const _col = _row > 0 ? 1 : 0;
    return {
      rowspan: _row,
      colspan: _col,
    };
  }

获取点击后合并的长度+合并的数字

最终结果展开后正常展示了

相关推荐
前端摸鱼匠36 分钟前
Vue 3 的v-bind合并行为:讲解v-bind与普通属性合并的规则
前端·javascript·vue.js·前端框架·ecmascript
Python私教11 小时前
Pure-Admin-Thin 深度解析:完整版和精简版到底怎么选?
vue.js·人工智能·开源
ayqy贾杰13 小时前
Cursor SDK发布!开发者可直接搬走其内核
前端·vue.js·面试
李白的天不白13 小时前
vue 数据格式问题
前端·vue.js·windows
小白蒋博客13 小时前
【ai开发段永平投资理财的知识图谱网站】第一天:搭 Vite + Vue 项目,跑通 Hello World
vue.js·人工智能·trae
@yanyu6661 天前
登录注册功能-明文
vue.js·springboot
滕青山1 天前
在线PDF拆分工具核心JS实现
前端·javascript·vue.js
光影少年1 天前
前端在页面渲染优化和组件优化经验?
前端·vue.js·react.js·前端框架
李白的天不白2 天前
VUE依赖配置问题
前端·javascript·vue.js
小智社群2 天前
获取贝壳新房列表
前端·javascript·vue.js