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,
    };
  }

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

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

相关推荐
我是小路路呀19 分钟前
vue开始时间小于结束时间,时间格式:年月日时分
前端·javascript·vue.js
li_Michael_li33 分钟前
Vue 3 模板引用(Template Refs)详解与实战示例
前端·javascript·vue.js
慈云数据4 小时前
从开发到上线:基于 Linux 云服务器的前后端分离项目部署实践(Vue + Node.js)
linux·服务器·vue.js
小小鸭程序员10 小时前
Vue组件化开发深度解析:Element UI与Ant Design Vue对比实践
java·vue.js·spring·ui·elementui
拉不动的猪10 小时前
vue自定义指令的几个注意点
前端·javascript·vue.js
陌路物是人非10 小时前
SpringBoot + Netty + Vue + WebSocket实现在线聊天
vue.js·spring boot·websocket·netty
拉不动的猪10 小时前
uniapp与React Native/vue 的简单对比
前端·vue.js·面试
揣晓丹13 小时前
JAVA实战开源项目:校园失物招领系统(Vue+SpringBoot) 附源码
java·开发语言·vue.js·spring boot·开源
顽疲13 小时前
从零用java实现 小红书 springboot vue uniapp (11)集成AI聊天机器人
java·vue.js·spring boot·ai