4.0.5 • Published 5 months ago

x-table-vue v4.0.5

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

x-table-vue

表格功能的 VUE 实现。

源码有完整示例代码。

主要功能

  • 固定表头,浏览器和固定区域
  • 固定列
  • 分页功能
  • 拖动调整列宽度
  • 列的拖拽交互
  • 单元格合并
  • 行展开收起
  • extend 行参与筛选
  • 透视表功能
  • 自定义单元格的 class 和 style
  • 表格底部
  • 表头搜索、筛选、排序
  • checkbox 选择列
  • waterfall 滚动加载更多
  • 组件单元格

Demo

版本


  • v4.0.5

基于


安装


npm install x-table-vue

使用


全局引入

在main.js中引入

import xTable from 'x-table-vue';
vue.use(xTable);

或者 在组件中引入

import { XTable } from 'x-table-vue';

组件中使用

<x-table
    :is-use-storage="false"
    :is-use-single-table="isUseSingleTable"
    :is-fix-header="isFixHeader"
    :is-sticky="isSticky"
    :columns=tableColumns
    :config="tableConfig"
    :data="tableData"
    :expand-data="tableExpandData"
    :expand-action="tableExpandAction"
    :expand-span-column-data="tableExpandSpanColumnData"
    :title="tableHeaderTitle"
    :header-data="tableHeaderData"
    :footer-data="tableFooterData"
    :page-data="pageData"
    :sort-data="sortData"
    :search-data="searchData"
    :filter-data="filterData"
    :pivot-table="pivotTable"
    :custom-cell="customCell"
    :expand-join-filter-search-columns="['c2']"
    :expend-filter-search-result-show-type="'fit'"
    @handleTable="handleTable"
>
    <tempalte v-slot:[`th-${dataIndex}`]="{ record, text }">表头单元格内容插槽</tempalte>
    <tempalte v-slot:[`th-sort-${dataIndex}`]="{ record, text }">表头排序插槽</tempalte>
    <tempalte v-slot:[`th-search-${dataIndex}`]="{ record, text }">表头搜索插槽</tempalte>
    <tempalte v-slot:[`th-filter-${dataIndex}`]="{ record, text }">表头筛选插槽</tempalte>
    <tempalte v-slot:th-drag>表头拖动交换位置插槽</tempalte>
    <tempalte v-slot:th-resize>表头拖动表格宽度插槽</tempalte>
    
    <tempalte v-slot:[`td-${dataIndex}`]="{ record, text, expand }">单元格内容插槽,expand的状态 ''/open/close </tempalte>
    
    <tempalte v-slot:[`tf-${dataIndex}`]="{ record, text }">尾部单元格内容插槽</tempalte>
</x-table>

参数说明


参数类型说明
isUseStorageboolean是否启用storage缓存用户拖动交互后的column数据
isUseSingleTableboolean是否使用单表格,单表格为只有一个table标签,不支持固定在浏览器顶部,需要设置height属性
isFixHeaderboolean固定表头开关
isStickyboolean固定列开关
configobject表格配置数据,具体参考下方配置说明
columnsarray表格所有的列数据,具体参考下方表头说明
titlearray表头标题数据
dataarray表格数据
expandDataobject可展开行数据,只支持一层展开
expandActionobject控制可展开行的展开关闭
expandSpanColumnDataobject控制展开行合并的column数据,数据格式同columns
headerDataarray表头数据
footerDataarray表尾数据
pageDataobject分页信息
sortDataobject列排序信息,每次只支持一列排序
searchDataobject列查询数据,查询数据会叠加计算
filterDataobject列筛选数据,筛选数据会叠加计算
pivotTablearray透视表,需要合并行的列,列索引, 列索引
customCellobject自定义单元格class和style
expandJoinFilterSearchColumnsarray参与筛选和查询的extendData dataIndex, dataIndex
expendFilterSearchResultShowTypestringextend筛选结果的展示方式 fit:符合结果的extend展开 open:全部打开 close:全部不打开
checkboxSelectedDataarraycheckbox 开启时的已选中值
isWaterfallboolean开启滚动加载更多

tableConfig 说明

{
    key: 'table', // 同页面有多个table组件时,区分不同表格使用,主要用在dom id上,所以需保证唯一。
    scrollHeight: '100%', // 表格的高度,超过高度,table会出现y轴滚动条,设置成100%,则根据父组件的设置。
    scrollWidth: '100%', // 表格的宽度,超过宽度,tbale会出现x轴滚动条,设置成100%,则根据父组件的设置。
    scrollBarWidth: 15, // 滚动条宽度
    scrollBarHeight: 15, // 滚动条高度
    miniWidth: '160px', // columns 里没有设置表格宽度的列会默认使用最小width
    resizeMin: 160, // 动态改变表格列宽时,最小的宽度,小于当前宽度,会取该宽度值
    resizeMax: 500, // 动态改变表格列宽时,最大的宽度,大于当前宽度,会取该宽度值
    border: 1, // 0 无边框, 1 有边框, 2 四周无边框
    rowKey: 'id', // 循环表格数据的时候,:key 会取该设置的 data key 的值
    noWrap: true, // 是否运行表格数据换行
    isUseNoWrapTitle: true, // 是否显示隐藏时的title
}

columns 说明

checkbox 为 dataIndex 的保留值,需要使用多选按钮时,把 dataIndex 设置为该值。

{
    dataIndex: `显示数据的索引,对应 data 里的 key`,
    dragGroup: '', // 只在表头第一行绑定,拖动交互表格列的组,表头支持多组各种拖动更换顺序,不支持不同组之间的拖动。
    resizeable: true, // 是否开启拖动列改变列宽度,只在表头第一行绑定
    align: '', // 内容的对齐方式 left / right
    sticky: 'left'; // 列固定的方向,left / right
    widthLock: false, // 列宽固定,固定的列宽不会被重新赋值
    width: '220px'; // 列宽度,如果固定列,这个值需设置
    serach: true; // 是否开启查询, 通过 slot 设置样式,并自行获取用户查询的值,通过改变prop searchData,触发表格查询
    sort: 'init'; // 是否开启排序 init / up / down, 通过 slot 设置样式,并自行获取用户设置的值,通过改变prop sortData值,触发表格排序。
    filter: true; // 是否开启筛选, 通过 slot 设置样式,并自行获取用户选择的值,通过改变prop filterData值,触发表格筛选。
}

title、data、headerData、footerData 说明

{
  colSpan: 1, // 合并的列数量,如果被合并,设置为 0,如果合并别人,设置为合并的列数(包含自己),例如 3
  rowSpan: 1, // 合并的行数量,如果被合并,设置为 0,如果合并别人,设置为合并的行数(包含自己),例如 3
  value: '', // 名称值
}

expandData 说明

{
    rowKey: {
        type: '', // span时为行合并,data时为数据合并
        isOpen: false, // 是否打开,响应捕捉
        data: [], // 数据同data,span时需设置colSpan为列数
    }
}

expandAction 说明

{
    rowKey: 'open/close'
}

expandSpanColumnData 说明

{
    common: { // span的 column 数据
        dataIndex: `显示数据的索引,对应 data 里的 key`,
        align: '', // 内容的对齐方式 left / right
    }
}

pageData 说明

{
    page: 1, // 当前页码
    size: 20, // 每页显示的条数
}

sortData 说明

{
    dataIndex: '', // 排序列的索引
    sortType: '', // 排序类型 init / up / down
}

searchData 说明

{
    dataIndex // 搜索列的索引 : {
      isShow: false, // 是否显示搜索弹层
      value: '', // 搜索的字符串
    },
    dataIndex // 搜索列的索引 : {
      isShow: false, // 是否显示搜索弹层
      value: '', // 搜索的字符串
    },
}

filterData 说明

{
    dataIndex // 筛选列的索引 : {
      isShow: false, // 是否显示筛选弹层
      value: [], // 已选中的值
    },
    dataIndex // 筛选列的索引 : {
      isShow: false, // 是否显示筛选弹层
      value: [], // 已选中的值
    },
}

pivotTable 说明

按下标顺序一级一级的透视

[
    dataIndex // 筛选列的索引
    dataIndex // 筛选列的索引
]

customCell 说明

自定义单元格的 class 和 style

{
    // record 当前行的值,dataIndex 当前列的索引
    header: (record, dataIndex) => {
       return {
          class: {},
          style: {},
       }
    },
    body: (record, dataIndex) => {
       return {
          class: {},
          style: {},
       }
    },
    footer: (record, dataIndex) => {
       return {
          class: {},
          style: {},
       }
    }
}

expandJoinFilterSearchColumns 说明

extend 参与表头查询和筛选的列,参数为列的 dataIndex

[dataIndex, dataIndex]

expendFilterSearchResultShowType 说明

extend 搜索结果的展示方式

fit:extend 里有符合条件的展开
open:只有父和子里有一个符合条件就展开
close:只展示父

handleTable 说明

组件会把变化 emit 出来,格式为:

{
    type: 'page',
    data: {
        page: '', // 当前页码
        total: '', // 当前条件下的数据总条数
    }
}

样式说明 less

组件只完成了核心功能,样式用户可根据各自的UI交互,自行完成。

样式说明
.x-table-wrapper最外层包裹层
.x-table-area表格区域|
.x-table-contenttable包裹层
thead td .sort-up表头的排序向上包裹层
thead td .sort-down表头的排序向下包裹层|
.x-table-border表格边框
.x-table-fix-header固定表头时的表头
.x-head-domthead的class
.x-sticky-shadow列固定的阴影
.x-sticky-left-shadow列固定的左阴影
.x-sticky-right-shadow列固定的右阴影
.x-resize-dom-handle拖动改变列宽时候的响应元素
.x-drag-dom-handle拖动交互列顺序时候的响应元素
.x-page-area分页区域
/deep/ .x-table-wrapper {
   ....
}
4.0.5

5 months ago

4.0.4

11 months ago

4.0.3

11 months ago

4.0.1

1 year ago

4.0.0

1 year ago

4.0.2

12 months ago

3.2.7

2 years ago

3.2.6

3 years ago

3.2.5

3 years ago

3.2.4

3 years ago

3.2.3

3 years ago

3.2.2

3 years ago

3.1.3

3 years ago

3.2.1

3 years ago

3.1.2

3 years ago

3.1.1

3 years ago

3.0.0

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago