el-table多级表头封装(+表头省略号)

28 篇文章 0 订阅
18 篇文章 0 订阅
<template>
  <div>
    <p>表格数据</p>
    <el-table
      :data="tableData"
      border
      height="400px"
      max-height="400px"
      size="small"
      row-class-name="row"
      cell-class-name="column"
      :highlight-current-row="true"
      fit
    >
      <el-table-column
        v-for="(item, index) in tableLabel"
        :key="index"
        :prop="item.prop"
        :width="item.width"
        :label="item.label"
        :render-header="renderHeader"
        show-overflow-tooltip
        align="center"
      >
        <el-table-column
          v-for="(itemchildren, indexchildren) in item.tableLabel"
          :key="indexchildren"
          :prop="itemchildren.prop"
          :width="itemchildren.width"
          :label="itemchildren.label"
          :render-header="renderHeader"
          show-overflow-tooltip
          align="center"
        >
        </el-table-column>
      </el-table-column>
    </el-table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        {
          id: 1,
          date: "2018-07-24",
          profit: 35394.05,
        },
        {
          id: 2,
          const: 102203.71,
          profit: 35394.05,
        },
      ],
      // 子组件的表头数据
      tableLabel: [
        { label: "", width: "40", prop: "id" },
        { label: "多级表头",
          tableLabel: [
            { label: "销售额第三方", width: "", prop: "sale" },
            { label: "成本啥的啥的", width: "", prop: "const" },
            { label: "利润第三", width: "", prop: "profit" },
          ],
        },
        { label: "销售量", width: "", prop: "sales" },
        { label: "销售额第三方", width: "", prop: "sale" },
        { label: "成本啥的啥的", width: "", prop: "const" },
        { label: "利润第三", width: "", prop: "profit" },
      ],
    };
  },
  methods: {
    // 表头省略号,超出n显示,例:超出4
    renderHeader(h, { column }) {
      // console.log($index);
      let titleText = column.label;
      if (column.label.length > 4) {
        titleText = column.label.slice(0, 4) + "...";
        return [
          h(
            "el-tooltip",
            {
              props: {
                content: (function () {
                  const label = column.label;
                  return label;
                })(),
                placement: "top",
              },
            },
            [h("div", {}, titleText)]
          ),
        ];
      }
      return titleText;
    }
  },
};
</script>

<style>
</style>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天气晚来秋~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值