vue项目里 使用Element table 把多个表格合并追加到右侧,更简洁版本(cv即食)

vue项目里 使用Element table 把多个表格合并追加到右侧,更简洁版本(cv即食)

多个表格合并到一个表格里面,新追加的表格需要在右侧进行追加合并,安装好element后,把下面的代码覆盖新项目的HelloWorld.vue文件就行了

vue项目里 使用Element table 把多个表格合并追加到右侧,更简洁版本(cv即食)_第1张图片
vue项目里 使用Element table 把多个表格合并追加到右侧,更简洁版本(cv即食)_第2张图片

HelloWorld.vue
<template>
  <div class="hello">
    <el-table border :data="tableData" style="width: 100%">
      <el-table-column
        v-for="(item, index) in columnData"
        :key="index"
        :prop="item.name"
        :label="item.label"
        align="center"
      ></el-table-column>
    </el-table>
  </div>
</template>

<script>
export default {
  name: "HelloWorld",
  props: {
    msg: String,
  },
  data() {
    return {
      tables: {3: [
          {
            时间: "2022-01-01-表3",
            用户id: "0506-表3",
            销售额: "1个亿-表3",
          },
          {
            时间: "2022-01-01-表3",
            用户id: "0506-表3",
            销售价: "1个亿-表3",
          },
        ],4: [
          {
            时间: "2022-01-01-表4",
            用户id: "0506-4-表4",
            姓名: "小王-表4",
          },
          {
            时间: "2022-01-01-表4",
            用户id: "0506-表4",
            姓名: "小王-表4",
            定价: 66,
          },
          {
            用户id: "0506-表4",
            时间: "2022-01-01--表4",
            姓名: "小王-表4",
          },
          {
            用户id: "0506-表4",
            时间: "2022-01-01-表4",
            姓名: "小王-表4",
            销售定价: "888-表4",
          },
        ],
        t1: [
          {
            平台: "商城-表1",
            时间: "2022-07-07-表1",
            用户id: "007-表1",
          },
          {
            平台: "商城-表1",
            时间: "2022-07-06-表1",
            用户id: "007-表1",
            销售定价: "888-表1",
          },
          {
            平台: "商城-表1",
            时间: "2022-07-08-表1",
            用户id: "007-表1",
            定价额度: '111-表1',
          },
        ],
        t2: [
          {
            时间: "2022-01-01-表2",
            用户姓名: "表2-表2",
            用户id: "0506-表2",
          },
          {
            用户id: "0506-表2",
            时间: "2022-01-01-表2",
            用户姓名: "表2-表2",
            销售额: "1个亿-表2",
          },
        ],
      },
      columnData: [],
      tableData: [],
    };
  },
  mounted() {
    this.init();
  },
  methods: {
    init() {
      let { tables } = this;
      let copyTable = []; // copyTable:把对饮索引的表头合并到对应索引表格的item里面
      let columnData = []; // columnData:表头合集 数组对象,循环单元格的时候用name作为标识,用label展示表头
      let keys = []; // keys:所有表头合集数组

      for (const tKey in tables) {
        // tables[tKey] 每个表格
        tables[tKey].forEach((row, ri) => {
          if (copyTable.length <= ri) {
            copyTable.push({});
          }

          // row 每个表格里的item
          for (const rKey in row) {
            // rKey:item的key值
            let cloumnName = "" + tKey + rKey; // 表名称+key名称
            if (keys.includes(cloumnName) == false) {
              keys.push(cloumnName);
              columnData.push({
                name: cloumnName,
                label: rKey,
              });
            }
            copyTable[ri][cloumnName] = row[rKey];
          }
        });
      }

      // 合并多表行
      console.log("columnData------", columnData);
      console.log("copyTable-------", copyTable);
      console.log("keys------------", keys);
      this.columnData = columnData;
      this.tableData = copyTable;
    },
  },
};
</script>

</style>

你可能感兴趣的:(Javascript,element-ui,vue.js,javascript,前端)