首页 > 其他分享 >对el-table进行二次封装

对el-table进行二次封装

时间:2022-11-22 18:13:52浏览次数:54  
标签:el 封装 表格 default label table prop type

新建组件:

<template>
  <div class="table-container">
    <el-table
      :data="tableData"
      width="100%"
      :height="height"
      :row-style="{ height: `${rowHeight}px` }"
      v-loading="loading"
      border=""
    >
      <template v-for="(item, index) in tableHeader">
        <slot v-if="item.slot" :name="item.slot"></slot>
        <el-table-column
          v-else
          :key="index"
          :prop="item.prop"
          :label="item.label"
          :type="item.type"
          :min-width="item.minWidth ? item.minWidth : ''"
          :width="item.width ? item.width : ''"
          :align="item.align || 'center'"
          :show-overflow-tooltip="item.tooltip || false "
        >
        </el-table-column>
      </template>
    </el-table>
  </div>
</template>
<script>
export default {
  name: "CustomElTable",
  props: {
    // 表格数据
    tableData: {
      type: Array,
      default: () => {
        return [];
      },
    },
    // 表格头标题
    tableHeader: {
      type: Array,
      require: true,
      default: () => {
        return [];
      },
    },
    // 表格高度
    height: {
      type: [Number, String],
      default: 500,
    },
    // 表格行高
    rowHeight: {
      type: [Number, String],
      default: 44,
    },
    // 加载层
    loading: {
      type: Boolean,
      default: false,
    },
  },
};
</script>

<style lang="scss">
.table-container {
  height: 100%;
}
</style>

使用组件:

<custom-el-table
  :tableHeader="tableData.header"
  :tableData="tableData.list"
  :loading="tableData.loading"
>
  <el-table-column slot="img" label="图片" align="center">
    <template slot-scope="{ row }">
      <el-image
        style="width: 70px; height: 50px"
        v-for="(item, index) in row.pictureList"
        :key="index"
        :src="item.pictureUrl"
        fit="cover"
        :preview-src-list="[item.pictureUrl]"
      />
    </template>
  </el-table-column>
  <el-table-column slot="status" label="状态" align="center">
    <template slot-scope="{ row }">
      <template v-if="Number(row.status) === 1">
        <el-popover
          placement="bottom"
          width="300"
          trigger="click"
          :content="row.operExplain"
        >
          <el-button slot="reference" type="text"
            >{{ row.status | filtersDict(statusList) }}
            <span class="el-icon-info"></span>
          </el-button>
        </el-popover>
      </template>
      <template v-else> {{ row.status | filtersDict(statusList) }} </template>
    </template>
  </el-table-column>
  <el-table-column
    slot="operation"
    label="操作"
    align="center"
    width="100px"
    fixed="right"
  >
    <template slot-scope="{ row }">
      <el-button
        type="text"
        icon="el-icon-circle-check"
        class="table-edit-btn"
        @click="handleOperation(row)"
        >处理</el-button
      >
    </template>
  </el-table-column>
</custom-el-table>

  

tableData: {
  loading: false,
  total: 0,
  header: [
    { label: "序号", type: "index", width: "120px" },
    { label: "农户姓名", prop: "farmerName" },
    { label: "联系电话", prop: "farmerMobile" },
    { label: "购买内容", prop: "content", tooltip: true },
    { label: "购买原因", prop: "applyReason", tooltip: true },
    { slot: "img" },
    { label: "送货地址", prop: "detailAddr" },
    { label: "发布时间", prop: "applyTime" },
    { slot: "status" },
    { label: "处理人", prop: "operName" },
    { slot: "operation" },
  ],
  list: [],
},

  

需要修改的自己添加自己定义的属性!!!!!

标签:el,封装,表格,default,label,table,prop,type
From: https://www.cnblogs.com/zaijin-yang/p/16915976.html

相关文章

  • Pinely Round 1 (Div. 1 + Div. 2)
    比赛链接A题意构造两个长为\(n\)排列,使得两排列有长为\(a\)公共前缀和长为\(b\)的公共后缀。题解知识点:构造。注意到,当\(a+b\leqn-2\)时,中间段至少有两个位......
  • go版本的hello world
    go版本的helloworld在这一部分我们只是使用“helloworld”的程序来向大家介绍一下go语言的所编写的程序的基本组成。packagemainimport"fmt"funcmain(){ //终......
  • 感染explorer.exe,使用映像劫持,ShellExecHook…的AV杀手GRHSGIH.EXE1
    感染explorer.exe,使用映像劫持,ShellExecHook…的AV杀手GRHSGIH.EXE1endurer原创2008-01-18第1版刚才一位朋友打电话来求助,说他电脑中了病毒,金山毒霸无法启动,无法复制/粘......
  • bazel学习
    bazel学习afast,scalable,multi-languageandextensiblebuildsystembazel就是一个编译打包工具,类似于make、cmake等安装⚠️:Centos7系统安装bazel4参考:https:/......
  • InfluxDB(3):Telegraf基本使用
    Telegraf简介Telegraf是一个基于插件的开源指标采集工具。本身是为InfluxDB(一款时序数据库)量身打造的数据收集器,但是它过于优秀,能够将抓取的数据写到很多地方,尤其在时序数......
  • 【强大的数据迁移和恢复解决方案】KernelApps及其产品介绍
     KernelApps是范围广泛的强大的数据迁移和恢复解决方案可以根据用户的需求提供多种采购方案  KernelApps提供交换服务器、Office365、电子邮件迁移......
  • CentOS7没有telnet命令的解决方法
    文章目录​​1、找到telnet命令所在的软件包​​​​2、安装telnet软件包​​​​3、验证​​​​4、获取视频教程​​​​5、文章版权​​在CentOS中,输入telnet命令,提示com......
  • 掌握shell语言脚本
    一篇文章让你彻底掌握shell语言由于bash是Linux标准默认的shell解释器,可以说bash是shell编程的基础。本文主要介绍bash的语法,对于linux指令不做任何介......
  • 封装适用于CentOS7的MySQL离线包
    1构建一个centos7.6.1810的docker镜像,用于下载MySQL+xtrabackup所需安装包7.6.1810的docker镜像,低版本最小安装,会尽可能把所需的包拉齐。Dockerfile文件如下FROMcent......
  • Bootstrap-Table 表格插件
    Bootstrap-Table表格插件个人学习关注32018.10.2022:44:16字数2,382阅读97,623JS插件文档库邀你一起协同创作-简书Bootstrap-TableBootstraptable是一......