简介

基于element-table封装,把分页组件一起封装。有以下优点

  • 使用本地缓存支持自定义需要显示的列以及调整列显示顺序 。
  • 和原来的element-table用法一模一样。经测试能在写中后台业务时极大提升开发速度。
  • 节省每次书写大量标签代码以及每个需要使用表格时都需要重写分页逻辑。同时还自带静态数据的分页展示功能,直接避免数据过多渲染卡顿的问题

333FA342-5274-44BA-9A7C-EBE99566AF4F.png 2944191A-C295-4FCC-9B81-8ECC097EC226.png

重要数据或者方法

const tableData = [{ val: 1 }];//数据源
const columns = [{ label: "第一列", prop: "val" }];//定义有多少列以及每列显示什么
const pagination = {
  pageIndex: 1,
  pageSize: 15,
  total: 0,
  pageSizes: [15, 30, 50],
  layout: "sizes, prev, pager, next,total", //具体含义同elementUi官方分页组件
};
const loadData=()={}//一个更新数据tableData的方法(往往就是发起请求时处理返回数据的那个接口),方便分页发生变化时更新数据

最佳实践

安装

yarn add @qcsfe/table-list

引入

import tableList from '@qcsfe/table-list'

基本使用

<tableList
:data="tableData"
:columns="columns"
:pagination="pagination"
@loadData="loadData"
/>

第一列显示数字行数

<tableList
index
:data="tableData"
:columns="columns"
:pagination="pagination"
@loadData="loadData"
/>

显示选择项,能够勾选某一行

其中 checkedData 就是每次勾选的数据 可通过传入 selectable(具体可查看 element 官方文档关于该参数的含义)来控制某一行是否能勾选

<tableList
selection
:data="tableData"
:columns="columns"
:checkedData.sync='checkedData'
:pagination="pagination"
@loadData="loadData"
/>

某一列需要自定义样式,如实现按钮,输入框,或者一些其他效果等

const columns = [{ label: "第一列", slot: "operate" }];
<tableList
:data="tableData"
:columns="columns"
:pagination="pagination"
@loadData="loadData"
>
  <template v-slot:operate="{ row }">
	{{row}}自定义列
	</template>
</tableList>

想根据data中的某个变量动态控制某一列是否展示,只要在columns配置中放入一个hidden字段即可。该字段一般传入一个箭头函数(方便定位this)

const columns = [
  { label: "第一列会展示", prop: "val1" },
  { label: "第二列不会展示", prop: "val2",hidden:()=>this.hide  }  //这样就能根据某个变量控制某一列是否展示
  ]

某一列需要自定义表头样式,如需要在表头增加一些图片这类

const columns = [{ label: "第一列", label: "val",slotHeader:'header' }];
<tableList
:data="tableData"
:columns="columns"
:pagination="pagination"
@loadData="loadData"
>
 <template v-slot:header="{ row }">
	{{row}}自定义表头
	</template>
</tableList>

组件配置文档

参数 说明 类型 可选值 默认值
data 必须,表格数据源 Array ——
columns 必须,定义了表格显示哪些列。详情可查看 columnsAttributes Array - ——
pagination 必须,表格分页配置,具体可看 paginationAttributes Object - -
loadData 必须,更新表格数据源的函数,当切换分页组件或者排序这些需要查询参数时就需要重新通知父组件去查询数据,这个事件起到这个作用 Function -
index 第一列是否显示行索引 boolean -- false
selection 第一列是否显示选择框以允许勾选 boolean -- false
checkedData .sync 形式传递,当 selection 为真是所勾选的数据 Array - -
selectable 某一列是否可勾选的判断函数 Function(row, index) Function - -
_uuEditKey 是否显示右上角的编辑按钮,当传了唯一值的时候就会显示 string -- ''
_isRefresh 是否显示右上角刷新按钮 boolean -- false
needPagination 是否需要开启分页功能,如果传入false则将数据全量展示 boolean -- true
localPaginate 是否开启本地分页,开启后会将数据根据pagination配置自动进行分页展示 boolean -- false
selectCountLimit 如果开启了表格勾选功能,那么该选项能控制能勾选的数目 number -- 100000

组件提供的methods

方法名 说明 参数 返回值
reload 调用后会重置pagination的pageIndex,并抛出$emit('loadData')事件,外部可监听进行数据重新加载 - -

columnsAttributes 配置某一列的具体参数(这里支持的没有 element 官方那么多,仅仅只有官方文档中部分较为常用的属性)

参数 说明 类型 可选值 默认值
prop 决定该显示哪个字段,该字段和 slot 必须要填写一个 String - -
label 表头显示 String - -
formatter 同 element 官方的 formatter,用来格式化单元格 Function(row, column, cellValue, index) - -
align 控制内容的显示位置 String left/center/right center
width 对应列的宽度 String - ——
min-width 对应列的最小宽度 String - ——
slot 当某一列需要自定义时使用该字段插入插槽,该字段和 prop 必须填写要填写一个 String - -
slotHeader 当某一列表头需要自定时使用该字段 String - -
fixed 列是否固定在左侧或者右侧,true 表示固定在左侧 string, boolean true, left, right -
show-overflow-tooltip 当内容过长被隐藏时显示省略号,注意当传了 slot 时不会生效 Boolean - false
sortable 同 element 官方 Table-column Attributes 属性 - - -
sort-method 同 element 官方 Table-column Attributes 属性 - - -
sort-by 同 element 官方 Table-column Attributes 属性 - - -
sort-orders 同 element 官方 Table-column Attributes 属性 - - -
hidden 用来控制某一列能不能展示,通常用来实现根据data中的某个变量控制某列是否展示 boolean 或者 function - false

paginationAttributes (配置分页,具体可翻阅 element 的分页组件)

示例

{
        pageIndex: 1,
        pageSize: 15,
        total: 1000,
        pageSizes: [15, 30, 50],
        layout: "total, sizes, prev, pager, next",
      }
参数 说明 类型 可选值 默认值
pageIndex 当前页码 Number - 1
pageSize 每页显示的数量 Number - 15
total 总数 Number - 0
pageSizes 控制每页数目的下拉选项 Array - [15, 30, 50]
layout 组件布局,子组件名用逗号分隔 String sizes, prev, pager, next, jumper, ->, total, slot "total, sizes, prev, pager, next"