基于vue+Element Table 表格的封装

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于vue+Element Table 表格的封装相关的知识,希望对你有一定的参考价值。

项目场景:

项目场景:需要频繁使用列表进行呈现数据,不可能每次都写一个表格,可以将表格封装为一个组件,在需要使用时可以直接调用。


效果展示:


项目结构:

具体实现:

<!-- 

  component:列表
  time:2022/11/15

  UserData:列数据
  tableConfig:表格的列配置,[UserId,key,label,width]
  getTableHeaderStyle:表格CSS类名

  表格数据:
  tableConfig:[
    
      label:姓名,
      width:150,
      key:UserName
    
  ]
  UserData:[
    
      "UserId":"1",
      "UserName":"杠铁侠",
      "UserNameValue":1,
      "UserGender":"男",
      "UserAge":"31",
      "UserItem":"斯塔克工业",
      "UserItemValue":"1",
      "UserPostion":"Java工程师",
      "UserPostionValue":"1",
      "UserPhone": "15987462455",
      "UserEmail": "154893@163.com",
      "UserEntryTime":"2020-8-27",
      "Useraddress":"上海市普陀区金沙江路 1518 弄"
    ,
  ]

-->
<template>
  <div class="UserTable">
    <el-table
      :data="UserData"
      style="width: 100%"
      :header-cell-style="getTableHeaderStyle"
    >
      <template slot="empty">
        <el-empty :image-size="100" description=暂无数据></el-empty>
      </template>
      <el-table-column
        v-for="column in tableConfig"
        :key="column.UserId"
        :prop=column.key
        :label=column.label
        :width=column.width>
      </el-table-column>
      <el-table-column
        fixed="right"
        label="操作"
        width="100">
        <template slot-scope="scope">
          <el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button>
          <el-button type="text" size="small">编辑</el-button>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>

<script>
export default 
  data()
    return
      Userdata:[],
      tableconfig:[],
    
  ,
  props:
    tableConfig:
      default()
        return [];
      
    ,
    UserData:
      default()
        return [];
      
    ,
  ,
  methods: 
    getTableHeaderStyle()
      return "background:#eee"
    ,
    handleClick(row) 
      console.log(row);
    ,
  ,

</script>

<style>
.el-table
  padding: 0px 10px 0px 0px;

.el-table__body-wrapper
  padding-bottom: 10px;

</style>
<template>
	<!-- 只需要传入数据及配置 -->
	<Table :UserData="Userdata" :tableConfig="tableconfig"></Table>
</template>

<script>
import UserData from @/data/User
import Table from @/views/components/Table.vue
export default 
  props:UserData,
  components:
    Table
  ,
  data()
    Userdata:[],
    tableconfig:[],
  
  methods()
  	Tableconfig()  //列表配置
      this.tableconfig = [
         //用户姓名
          label:姓名,
          width:140,
          key:UserName,
        ,
         //用户性别
          label:性别,
          width:140,
          key:UserGender,
        ,
         //用户年龄
          label:年龄,
          width:140,
          key:UserAge,
        ,
         //用户团队
          label:团队,
          width:180,
          key:UserItem,
        ,
         //用户职位
          label:职位,
          width:200,
          key:UserPostion,
        ,
         //用户电话
          label:电话,
          width:200,
          key:UserPhone,
        ,
         //用户邮箱
          label:邮箱,
          width:250,
          key:UserEmail,
        ,
         //用户入职时间
          label:入职时间,
          width:150,
          key:UserEntryTime,
        ,
         //用户地址
          label:地址,
          width:300,
          key:Useraddress,
        ,
      ]
    ,
	,
  mounted()
    this.Userdata = UserData
    this.Tableconfig()
  ,

</script>

以上是关于基于vue+Element Table 表格的封装的主要内容,如果未能解决你的问题,请参考以下文章

Cat-Table-Select 基于Vue+Element的表格选择器

Cat-Table-Select 基于Vue+Element的表格选择器

vue + element ui table表格二次封装 常用功能

Vue + Element-ui实现后台管理系统---封装一个Form表单组件和Table表格组件

Vue + Element-ui实现后台管理系统---封装一个Form表单组件和Table表格组件

vue+element ui table组件封装,使用render渲染