0.0.6 • Published 6 months ago

el-base-table v0.0.6

Weekly downloads
-
License
ISC
Repository
github
Last release
6 months ago

el-base-table

Public table component based on el-element

项目是基于vue2,是element-ui的el-table的进一步封装,支持前端分页和后端分页。

安装

确保项目已经安装了element-ui

npm install el-base-table

自有属性列表

参数说明类型可选值默认值示例
columns表格的表头数据,及配置;attrs属性里面的值同el-table的Table-column Attributes一致;slot属性不是必须写的,自定义columns时才用到,不同的slot对应不同的slot-name,可参考下面的demo。Array--{attrs:{prop:'',label:''},slot:'slot-name'}
tableDatatable数据Array-[]参考示例demo
hidePage是否要隐藏分页,默认是自带分页的booleanfalse/truefalse-
frontPage需要前端分页是设置true,默认是false后端分页booleanfalse/truefalse-
自有属性分页相关,如下→
pageLayout同el-page的layout属性一致string参考el-page的layout默认:'total, sizes, prev, pager, next'-
pageSizes同el-page的page-sizes属性一致Array参考el-page的page-sizes默认:10, 50, 100-
pageSize同el-page的page-size属性一致number---默认pageSizes数组的第一个值---
total同el-page的total属性一致number参考el-page的total默认:0-

自有事件

方法名说明参数
change修改分页时发出的事件获取参数是{page,pageSize}

示例demo

1. 前端分页:一次性获取全量数据,实例demo
<template>
  <div id="app">
    <el-base-table
      v-loading="loading"
      border
      size="small"
      :columns="columns"
      :tableData="tableData"
      :frontPage="true"
      :pageSizes="[5, 10, 15]"
      :total="total"
    >
      <template v-slot:operate="{ row, prop }">
        <span>{{ row }}{{ prop }}</span>
      </template>
    </el-base-table>
  </div>
</template>

<script>
import ElBaseTable from './components/el-base-table/index.vue'
export default {
  name: 'App',
  components: {
    ElBaseTable
  },
  data() {
    return {
      loading: false,
      columns: [
        { attrs: { prop: 'a', label: 'a名称' } },
        {
          attrs: { prop: 'b', label: 'b名称', fixed: 'right', width: '200px' },
          slot: 'operate'
        }
      ],
      tableData: []
    }
  },
  methods: {
    getData() {
      this.loading = true
      setTimeout(() => {
        this.loading = false
        this.total = 8
        this.tableData = [
          { a: 1, b: 2 },
          { a: 1, b: 2 },
          { a: 1, b: 2 },
          { a: 1, b: 2 },
          { a: 1, b: 333 },
          { a: 1, b: 333 },
          { a: 1, b: 333 },
          { a: 1, b: 333 }
        ]
      }, 1000)
    }
  },
  created() {
    this.getData()
  }
}
</script>

<style></style>
2. 后端分页:实例demo
<template>
  <div id="app">
    <el-base-table
      v-loading="loading"
      border
      size="small"
      :columns="columns"
      :tableData="tableData"
      :pageSizes="[5, 10, 15]"
      :total="total"
      @change="change"
    >
      <template v-slot:operate="{ row, prop }">
        <span>{{ row }}{{ prop }}</span>
      </template>
    </el-base-table>
  </div>
</template>

<script>
import ElBaseTable from './components/el-base-table/index.vue'
export default {
  name: 'App',
  components: {
    ElBaseTable
  },
  data() {
    return {
      loading: false,
      columns: [
        { attrs: { prop: 'a', label: 'a名称' } },
        {
          attrs: { prop: 'b', label: 'b名称', fixed: 'right', width: '200px' },
          slot: 'operate'
        }
      ],
      tableData: []
    }
  },
  methods: {
    change(val) {
      console.log(val)
      this.getData()
    },
    getData() {
      this.total = 35
      this.loading = true
      setTimeout(() => {
        this.loading = false
        this.tableData = [
          { a: 1, b: 2 },
          { a: 1, b: 2 },
          { a: 1, b: 2 },
          { a: 1, b: 2 }
        ]
      }, 1000)
    }
  },
  created() {
    this.getData()
  }
}
</script>

<style></style>
0.0.6

6 months ago

0.0.5

6 months ago

0.0.4

7 months ago

0.0.3

7 months ago

0.0.2

7 months ago

0.0.1

7 months ago

1.0.0

7 months ago