表格
我们封装了
Table
组件、
baTable
类、
baTableApi
类、
表格顶部菜单
组件等,以方便快速生成和制作表格。
TIP
我们提供了一个 表格示例模块 ,内含大量表格使用、编程式操作的实际示例,欢迎下载体验。
Table 组件
Table
组件位于
\src\components\table
,我们基于
el-table
封装了该组件,所以
el-table
的
所有事件属性
都是可以直接在
Table
组件上使用的,部分属性可能失效,比如
el-table
的
size
,这是因为
Table
组件拥有一些默认的
css
样式。
组件属性
属性名 | 注释 | 值 |
---|---|---|
pagination | 是否显示底部分页组件 | boolean |
... | 其他 el-table 的属性可以直接使用 | - |
组件方法
方法名 | 注释 | 参数 |
---|---|---|
getRef |
获取内部
el-table
的
ref
,然后就可以使用
el-table
的所有方法
|
- |
组件插槽
插槽名 | 注释 | 子标签 |
---|---|---|
neck | 表格头与表格主体中间区域 | 任意 |
columnPrepend |
通过此插槽在
baTable
类中定义的列之前插入列
|
el-table-column |
columnAppend |
通过此插槽在
baTable
类中定义的列之后插入列
|
el-table-column |
footer | 表格底部区域 | 任意 |
任意 |
列使用
render:slot, slotName:插槽名称
来使用
slot
渲染
|
任意 |
TIP
Table
组件和下方的
baTable
类是搭配使用的,
baTable
类为表格提供数据,并可以响应表格组件的各种事件,组件的使用示例,也请参考下方
baTable
类的示例。
baTable 类
-
此类代码位于:
\src\utils\baTable.ts
-
我们在类里面封装好了一个表格应有的
属性
和大量方法
,预设了查看前、查看后、编辑前
等大量钩子 -
在组件上下文中,可以
随时重写
它的方法和修改属性值(理解这点非常重要):
-
比如重写鉴权:
baTable.auth = (node: string) => {....}
-
比如展开公共搜索组件:
baTable.table.showComSearch = true
-
比如重写鉴权:
-
可以建立新类继承
baTable
重写之后再使用(可高度自定义,重写示例:src\views\backend\security\sensitiveData\index.ts
)。
TIP
在
index.vue
文件
new baTable()
,并将实例
provide
给上下文,然后,利用它,你就可以在上下文任何组件,任何时候改变表格所有属性数据(该实例的所有属性均具备响应性),或执行任何方法,只要你代码的逻辑能实现你的需求。
使用示例
以下为使用示例,实际使用表格非常灵活,请发挥您的想象力;
baTable
类支持的属性和方法,在
表格所有可用属性
有介绍,但我们更推荐您直接查阅
src\utils\baTable.ts
文件代码(有注释,不知道有哪些属性可用时,可直接查看
ts
的类型定义)
表格列
表格列数据是在实例化
baTable
时定义的,此处对列数据进行了详细介绍,但表格可用属性非常多,我们更推荐您直接查阅
src\utils\baTable.ts
文件代码(有注释,不知道有哪些属性可用时,可直接查看
ts
的类型定义)
TIP
当编程式定义表格列无法满足您的需求时,请使用表格插槽或自定义单元格渲染。
表格列的可用属性
自定义单元格渲染
我们预设了一系列的单元格渲染方式
image、switch、tag...
,若它们不能满足您的需求,我们提供了另外三种方案,最终方案实现了完全的自定义渲染能力。
自定义表格顶部按钮
有时您需要自定义表格顶部的按钮,请直接
点击此处查看示例代码
,或者您可以参考
表格示例模块
或
数据安全管理->数据回收站
,我们在该管理功能内,通过插槽自定义了一个表格顶部的
还原
按钮(代码示例更完整)。
自定义表格行侧边按钮
有时您需要自定义表格行侧边的按钮,请参考下方示例,您也可以参考
表格示例模块
或
数据安全管理->数据回收站
,我们在该管理功能内,实例化
baTable
时定义了一个额外的表格侧边确认还原按钮。
深度使用表格(重要)
随意设置表格属性参数
表格的参数属性,在代码任何地方,都可以进行更改,比如:
自动获取表格筛选条件
有时您需要带着一些筛选条件跳转到表格,并获取筛选后的数据,您可以直接参考会员管理->编辑会员资料->调整余额;我们在跳转到余额日志管理时,携带了
user_id
参数,该参数由于和表格字段对应,所以会自动获取到并作为公共搜索的筛选条件。
表格所有可用属性
重写 baTable 类方法
baTable
在双击单元格、刷新、提交等操作前,均提供了钩子,如果这些钩子不能满足您的需求,您还可以重写
baTable
类方法的实现:
表格公共搜索
表格公共/通用搜索是在实例化
baTable
时定义的,表格列的
render、operator、comSearchRender
属性共同参与公共搜索框的渲染。
comSearchRender
支持
remoteSelect、select、date、customRender、slot
,详细使用方法请直接查看下方示例代码。
render | operator | comSearchRender | 公共搜索渲染 |
---|---|---|---|
任意 |
false
|
不渲染 | |
任意 |
RANGE、NOT RANGE
|
生成两个输入框(A和B),可输入
从A到B
的范围值
|
|
任意 |
NULL、NOT NULL
|
生成一个复选框,勾选则搜索值为
NULL、NOT NULL
的情况
|
|
datetime |
RANGE、NOT RANGE
|
时间范围选择器 | |
datetime |
=、>、<
等比较符号,请参考
表格列
的
operator
属性
|
时间选择器 | |
tag |
=、>、<
等比较符号
|
生成下拉框,下拉列表定义请参考
表格列
的
replaceValue
|
|
switch | 无需设定 |
生成下拉框:
1=开,0=关
,也可以通过设置
表格列
的
replaceValue
自定义值
|
|
任意 |
表格列
的其他
operator
属性
|
生成普通字符串输入框 | |
任意 |
=、>、<
等比较符号
|
remoteSelect | 远程下拉 |
任意 |
=、>、<
等比较符号
|
select | 下拉框 |
任意 | 无需设定 | date | 日期选择器(纯日期无时间) |
datetime |
RANGE、NOT RANGE
|
date | 日期范围选择器(纯日期无时间) |
任意 | 任意 | customRender | 自定义渲染组件 ,请参考下方示例 |
公共搜索示例代码
完全自定义公共搜索的渲染
方案三:弃用表格自带的公共搜索
- 请参考 表格顶部组件 ,禁用掉公共搜索
- 完整实现一个自定义的公共搜索组件
-
然后你可以通过
baTable.table.showComSearch
来判断您自定义公共搜索组件的显示隐藏状态
baTableApi 类
此类代码位于:
\src\api\common.ts
,它实现快速生成一个控制器的:
增、删、改、查、排序
的操作
url
和请求方法,提供控制器的
url
即可。此类通常与
baTable
类搭配使用,若需单独定义
api
请求函数,可以直接在
\src\api
目录下定义,无需经过
baTableApi
。
使用示例
表格顶部组件
TableHeader
组件内含有公共搜索和表头操作按钮,菜单按钮可以自动根据当前路由进行
鉴权
,当前管理员无权限的按钮,则不会显示。
属性列表
属性名 | 注释 |
---|---|
buttons |
要显示的按钮数组,比如
['refresh', 'add', 'comSearch']
,即表示于表格顶部显示
刷新、添加、公共搜索
按钮
|
quick-search-placeholder |
快速搜索输入框的
placeholder
|
插槽列表
插槽名 | 注释 |
---|---|
refreshPrepend | 刷新按钮前插槽 |
refreshAppend | 刷新按钮后插槽 |
— | 此插槽内容将放置在组件内置的菜单按钮之后,可自定义表格顶部按钮等 |
quickSearchPrepend | 快速搜索前插槽 |
任意 |
列配置中使用
comSearchRender:'slot', comSearchSlotName: 插槽名称
来通过
slot
渲染公共搜索
|
支持的菜单按钮
菜单按钮 | 注释 |
---|---|
refresh | 刷新按钮 |
add | 添加 |
edit | 编辑 |
delete | 删除 |
comSearch | 公共搜索 |
quickSearch | 快速搜索 |
columnDisplay | 字段显示状态 |
unfold |
展开/折叠,与
baTable.table.expandAll
属性关联
|
表格顶部菜单示例代码
src/views/backend/security/dataRecycleLog/index.vue
文件