FitsTable 表格

wuzeling2022年9月27日大约 15 分钟约 4388 字

FitsTable 表格

基本使用

基础表格

通过 columns 传入对象数组,配置表格的列,其中 filed 设置列的字段名,title 设置列标题, width 定义列宽。通过 data 配置表格的数据,对象的键与列字段名相对应。


悬浮提示

当内容过长时,通过配置 showOverflow=true 和 showHeaderOverflow=true 可以全局开启内容和表头悬浮提示。如果只需要个别列开启悬浮提示,则只为 columns 中的对象添加该属性即可。


拖动列宽

通过设置 columnConfig.resizable=true 开启可拖动调整列宽。注意:如果开启拖动列宽,建议通过设置 border='full' 显示表格的所有边框,以免造成样式上的缺漏或不美观。


斑马纹表格

通过 stripe=true 开启斑马纹。另外,通过配置 rowConfig.isHover=true 开启当鼠标移到行时,高亮当前行。


无边框表格

通过 border='none' 去掉表格的所有边框。可选值还有default(默认), full(完整边框), outer(外边框), inner(内边框)。


带状态表格

通过配置 rowClassName,传入一个字符串或函数,给行附加类名。


固定列

当横向内容过多时,将列固定在左右两侧。给列对象配置 fixed,传入'left' 或 'right',设置固定列的位置。(注意:如果列宽足够的情况下,固定列不会浮动显示。)


单选行

通过配置 rowConfig.isCurrent=true 属性,点击并选中行数据。之后由 current-change 事件来管理选中时触发的事件。


多选行

在 columns 属性中配置一个 type='checkbox' 的对象,即可实现多选功能。之后由 checkbox-change 事件来管理手动勾选行复选框时触发的事件;另外,通过配置 checkboxConfig.range = true 开启复选框范围选择功能(启用后通过鼠标在复选框的列内滑动选中或取消指定行)。本例还演示了通过配置 checkboxConfig.checkMethod 指定了禁用地址在'幸福小区'的勾选项。


流体高度

通过配置 maxHeight 为表格指定最大高度。此时若表格所需的高度大于最大高度,则会显示一个滚动条。


排序

给 columns 里的对象配置 sortable=true 即可开启排序。另外,可通过给 columns 里面的对象配置 sortBy 属性,自定义排序方法。本例演示了姓名列通过名字的长度进行排序。


筛选

给 columns 里的对象配置 filters 和 filterMethod,可以开启筛选表格数据。filters为对象数组,定义筛选条件。filterMethod 为筛选方法,该方法的返回值用来决定该行是否显示。


树结构

给 columns 里的对象配置 treeNode=true 指定该列为树节点。通过给 data 中的对象配置 children 属性,设置子节点。注意:这里还需要开启 treeConfig,哪怕没有属性,也要传一个空对象,否则子节点显示不出来。


树结构-自定义图标

通过设置 treeConfig.iconOpen 和 treeConfig.iconClose 定义收起和打开树的显示图标。


树结构-懒加载

通过配置 treeConfig.lazy=true 开启树形懒加载, 通过配置 treeConfig.loadMethod 定义异步加载子节点的方法。另外,还需要给 data 里的对象配置 hacChild=true 标识是否存在子节点,从而控制是否允许被点击,默认值为 false 不可点击。


表尾合计

通过配置 showFooter=true 开启表尾行。 再通过 footerMethod 定义表尾的数据获取方法,返回一个二维数组。另外,可以通过设置 footerRowClassName 给表尾行添加类名。


合并行、列

通过配置 mergeCells 合并指定的单元格,该值为一个对象数组,对象的属性包括row、col、rowspan、colspan。


自定义索引

给 columns 里的对象配置 type=seq 开启序号列。另外,可通过 seqConfig.seqMethod 自定义序列号。 本例演示了自定义序列号,序列号的间隔为2。


数据代理

通过配置 proxyConfig.ajax.query,返回一个Promise,响应结果通过resolve(props)返回,其中props.list存放列表数组。另外还需要通过 proxyConfig.props 配置获取的列表属性。没有开启分页的列表只需要配置 props.list 即可,例如配置了 props.list='myList', 那么Promise返回的对象中列表属性也需要命名为 myList。


数据代理+自动加载

当页面渲染完成后默认会自动加载查询数据。如果不希望自动加载,则配置 autoLoad=false 并且可以通过几种方式触发查询:第一种方式,通过配置 toolbarConfig.tools 开启工具栏的工具列表,其中的 刷新数据按钮可以触发查询。第二种方式,可以在代码逻辑中通过获取表格实例并调用 commitProxy('query')方法触发查询。


数据代理+表单默认值

开启数据代理后,如果配置了表单并且需要给表单赋默认值,则需要将 proxyConfig.form 配置为 false(默认不配置也为false),否则会报错且无法正确赋值。


数据代理+分页器

通过配置 pagerConfig.enabled=true 开启分页,响应结果通过resolve(props)返回,其中props.total存放列表总数。


数据代理+插槽

当表格的表单位置是在工具栏区域时,这时候不需要将表单配置在formConfig中,而是直接使用toolbarConfig.slots.buttons 设置工具栏左侧的插槽,将搜索组件放在这个插槽内。组件需要发出一个事件,用于表格接受表单的参数,接收到参数后可以将该表单用一个响应式对象保存起来,随后调用表格的commitProxy('query')方法手动触发查询。


复杂表头

基本使用

通过给 columns 中的对象传递 children 属性定义子列,即可实现表头分组。


交叉高亮

首先交叉高亮需要让表格的行和列分别高亮起来,行的高亮配置可以通过 rowConfig.isHover=true 直接开启,列的高亮没有配置项,需要自己处理,本案例用到表格的 cellMouseenter 事件,因此需要传递 tooltipConfig配置(空对象也行)。然后给每个子列添加headerClassName和className,类名是帮助我们给该列添加高亮的样式。在cellMouseenter方法中开启监听mouseover事件,具体逻辑操作可以看代码。最后需要在卸载页面的生命周期内移除监听事件。


插槽表格

自定义列模板

通过给 columns 里的对象设置 slots 属性,该属性是一个对象,其中键为default,值为自定义插槽名称。之后在FitsTable组件中通过<template #自定义插槽名称>的形式即可自定义列模板。


自定义表头

通过给 columns 里的对象设置 slots 属性,该属性是一个对象,其中键为header,值为自定义插槽名称。之后在FitsTable组件中通过<template #自定义插槽名称>的形式即可自定义表头模板。本例还演示了给columns中的对象设置headerClassName表头类名。


展开行

给 columns 里的对象配置 type=expand 开启展开行,并通过给 columns 里的对象设置 slots 属性,该属性是一个对象,其中键为content,值为自定义插槽名称。之后在FitsTable组件中通过 <template #自定义插槽名称> 的形式即可自定义列模板。


自定义按钮区域

通过配置 toolbarConfig.slots 属性可以使用插槽。该属性是一个对象,其中键为 buttons,值为自定义插槽名称。之后在FitsTable组件中通过 <template #自定义插槽名称> 的形式即可自定义工具栏左侧的按钮区域。


主从表

主从表也是通过展开行来实现的,可以看上面展开行表格的例子,只需要在插槽内再使用一次表格组件就完成了。


动态表格

动态表格展示了表单+表格的结合使用。表格内部的渲染器主要是通过表格插槽实现的。


拖拽表格

拖拽行

vxe-table 表格不支持拖动功能;可以结合 sortablejs 实现拖动效果。由于直接操作了 Dom 节点,需要与 Vue 的数据同步,必须设置 rowConfig.useKey=true ,并且根据 vue 的规则自行实现数据同步。


拖拽列

vxe-table 表格不支持拖动功能;可以结合 sortablejs 实现拖动效果。由于直接操作了 Dom 节点,需要与 Vue 的数据同步,必须设置 columnConfig.useKey=true ,并且根据 vue 的规则自行实现数据同步。


编辑表格

编辑模式切换

给 columns 里的对象配置 editRender 属性设置渲染器名称等,即可开启可编辑功能。


点击触发编辑

通过配置 editConfig.trigger 设置编辑器的触发方式。可以通过单击、双击和手动方式触发。本例演示了切换单击和双击的触发方式,手动触发请移步下一个例子。


手动触发编辑

手动的触发方式需要配置 editConfig.trigger='manual',且只对 editConfig.mode='row'有效。


虚拟滚动

默认情况下,如果设置了 height、maxHeight,则会根据触发规则自动启用虚拟渲染(触发规则由 scroll-x.gt | scroll-y.gt 设置)。虚拟滚动启用后只会渲染指定范围内的可视区数据,其他的数据将被卷去收起,当滚动到可视区时才被渲染出来。注意:根据官网配置显示,一旦启用虚拟滚动就无法使用展开行、树结构等特殊功能。


FitsTable 组件属性

属性说明类型必填项默认值
option表格全局配置FitsTableProps必填-
gridEvents表格监听事件VxeGridListeners非必填-

FitsTableProps 表格属性

属性说明类型必填项默认值
toolbarConfig工具栏配置FitsToolsBarConfig | VxeGridPropTypes.ToolbarConfig非必填-
formConfig表单配置FitsTableProFormConfig | VxeGridPropTypes.FormConfig非必填-
columns列配置VxeGridPropTypes.Columns非必填-
pagerConfig分页配置FitsTableProPagerConfig | VxeGridPropTypes.PagerConfig非必填-
proxyConfig数据代理配置FitsTableProProxyConfig | VxeGridPropTypes.ProxyConfig非必填-
storage数据缓存配置StorageStrategy非必填-
slots表格插槽{ empty?: string, form?: string, toolbar?: string, top?: string, bottom?: string, pager?: string }非必填-

FitsToolsBarConfig 工具栏属性

属性说明类型必填项默认值
buttons左侧按钮组列表FitsToolsBtnConfig[]非必填-
tools右侧工具列表FitstoolsOption非必填-
slots工具栏插槽{ buttons?: string, tools?: string }非必填-

FitsToolsBtnConfig 工具栏左侧按钮组属性

属性说明类型必填项默认值
code按钮的唯一id编码string非必填-
name按钮的名字string非必填-
status按钮的状态'primary' | 'success' | 'info' | 'warning' | 'danger'非必填-
disabled是否禁用boolean非必填-
onClick按钮的绑定事件() => void非必填-

FitstoolsOption 工具栏右侧工具配置

属性说明类型必填项默认值
export导出boolean非必填true
fullscreen放大缩小(全屏显示)boolean非必填true
refresh刷新boolean非必填-
custom自定义列boolean非必填true
search是否显示搜索区域boolean非必填-
query常用查询boolean非必填true
enabled是否关闭所有功能栏boolean非必填true

FitsTableProFormConfig 表单属性

属性说明类型必填项默认值
data表单数据Object非必填-
items表单项列表fitsTableFormItemProps[]非必填-

fitsTableFormItemProps 表单项配置

属性说明类型必填项默认值
title标题string非必填-
field字段名string非必填-
align内容对齐方式'left' | 'center' | 'right' | null非必填'center'
titleAlign标题对齐方式'left' | 'center' | 'right' | null非必填-
titleWidth标题宽度string | number非必填-
className类名string非必填'searchBtns'
titlePrefix前缀配置项VxeFormItemPropTypes.TitlePrefix非必填-
titleSuffix后缀配置项VxeFormItemPropTypes.TitleSuffix非必填-
titleOverflow是否省略boolean非必填-
itemRender表单项渲染配置FormItemRenderOptions非必填-
slots插槽VxeFormItemPropTypes.Slots非必填-

FitsTableProPagerConfig 分页属性

属性说明类型必填项默认值
layouts自定义布局Array<'PrevJump' | 'PrevPage' | 'Number' | 'JumpNumber' | 'NextPage' | 'NextJump' | 'Sizes' | 'Jump' | 'FullJump' | 'PageCount' | 'Total'>非必填['Total', 'Sizes', 'PrevJump', 'PrevPage', 'Number', 'NextPage', 'NextJump', 'FullJump']
currentPage当前页number非必填1
pageSize每页大小number非必填10
total总条数number非必填0
pagerCount显示页码按钮的数量number非必填7
pageSizes每页大小选项列表number[] | { label?: number/string, value?: number/string }[]非必填[10,15,20,50,100]
align列对其方式'right' | 'center' | 'left'非必填'right'
background带背景颜色boolean非必填true
autoHidden当只有一页时隐藏boolean非必填false

FitsTableProProxyConfig 数据代理属性

属性说明类型必填项默认值
enabled开启数据代理模式boolean非必填-
autoLoad是否自动加载查询数据boolean非必填-
seq存在 type=index 列时有效,是否代理动态序号(根据分页动态变化)boolean非必填-
sort是否代理排序boolean非必填-
filter是否代理筛选boolean非必填-
form是否代理表单boolean非必填-
ajax代理配置{ query?(params: ProxyAjaxQueryParams, ...args: any[]): Promise<ProxyAjaxQueryParams | any> }非必填-

StorageStrategy 数据缓存配置

属性说明类型必填项默认值
enabled是否开启数据缓存boolean非必填false
dataBase数据库名字,首字母大写string非必填''
dataSheet数据表名,首字母大写string非必填'FitsTableComponent'
key键值对的键值string必填''
store需要缓存的变量名any非必填-

ProxyAjaxQueryParams 数据代理查询方法配置

属性说明类型必填项默认值
$grid获取表格实例的相关信息boolean非必填-
page获取分页相关信息boolean非必填-
sort获取服务端排序相关信息boolean非必填-
sorts获取排序相关信息boolean非必填-
filters获取服务端过滤相关信息boolean非必填-
form获取表单相关信息boolean非必填-

更多属性详情请参考 vxe-gridopen in new window

上次编辑于: 2023/7/5 03:00:45
贡献者: caoguanjie
Loading...