1.0.24 • Published 4 years ago
integrate-table v1.0.24
integrated-table
一个基于 elementui
的集成表格组件,支持分页,搜索栏JSON
配置,表格JSON
配置,自动根据页面固定表头
- 设计理念
- 统一后台表格样式
- 简化代码,一套配置解决
- 计划
功能点
- JSON表格
- JSON搜索栏
- 集成表格
- 表格策略配置
- 搜索栏支持组件
- input
- select
- date
- dateRange
安装
npm install integrated-table
文档
全局引入
import IntegratedTable from '@futu/integrated-table'
Vue.use(IntegratedTable)
自定义策略
集成表格提供了一套策略配置,表格默认策略有时间戳,可通过设定表格属性
type
为timestamp
设置, 同时,表格也可以增加自定义策略,减少表格转化成本。
Vue.use(IntegratedTable, {
strategy: {
staff: () => {
return 33
}
}
})
和表格一样,搜索栏提供全局配置和单组件配置,全局配置作用于所有的搜索栏控件,单组件配置作用于搜索栏单个 类别组件的配置。
Vue.use(IntegratedTable, {
searchBarProps: {
global: { // 全局配置
clearable: true
},
dateRange: { // 单个类别组件配置
pickerOptions: dateRangePickerOptions
}
}
})
组件使用
<template>
<integrated-table
:options="options"
size="mini"
request-url="http://localhost:8090/table"
:hooks="hooks"
>
<template slot="btn-group">
<el-button size="small" type="primary">新增</el-button>
</template>
</integrated-table>
</template>
<script>
export default {
name: 'IntegratedTable',
data() {
return {
options: {
search: {
base: [
{
name: 'name',
type: 'input'
},
{
name: ['date_start', 'date_end'], // 日期范围传两个属性
type: 'dateRange'
},
{
name: 'sex',
type: 'select',
options: [ // 也可以传对象,默认{ key: value }形式,可自定义 labelKey
{ label: '男', value: 1 },
{ label: '女', value: 2 }
],
optionProp: { labelKey: 'label', valueKey: 'value' } // 默认映射,如果是这个映射可以不用写
}
],
more: [ // 如果不配置more将只展示基础筛选
{
name: 'age',
type: 'input',
associations: [
{
watch: 'form.age',
func(form, property, properties) {
console.log(form)
}
}
]
}
]
},
columns: [
{
label: '姓名',
prop: 'name'
},
{
label: '创建时间',
prop: 'created_at',
type: 'timestamp'
},
{
label: '年龄',
prop: 'age',
render: function(scope) {
return <span>24</span>
}
}
]
}
}
}
}
</script>
搜索栏属性配置
属性 | 类型 | 说明 | 版本支持 | 默认值 |
---|---|---|---|---|
name | String, Array | 属性名 | 必传 | |
label | String | 显示在组件前面的label值, 为空不显示 | v1.0.14 | 空 |
type | String | 类别组件,目前支持input ,select ,dateRange ,date ,cascader | 必传 | |
options | Array,Object | select和cascader 专属,配置选项,对于cascader,与elementui的options一致。对于select来说,支持对象和数组 对象默认取key作为option的value, 如果value是对象,那么需要定义optionProp中的labelKey | select必传 | |
optionProp | Object | select专属,配置选项的key和value,数据格式为{ labelKey: ' ', labelKey: ' ' } | select必传 | |
props | Object | 可传入elementui 支持的属性 | 空 | |
on | Object | 可传入elementui 支持的事件 | 空 | |
show | Boolean, Function | 是否展示 | true | |
valueSerialize | Boolean, Object<{ isSerialize: boolean, delimiter: string }> | select专属,是否序列化值,用于多选场景, | 1.0.12 | false |
default | Any | 定义默认值 | 空 | |
associations | Array | 联动属性,数组格式,可以监听其他属性值的变化,每一项需传入如下的watch和func | 空 | |
associations.watch | String,Function | 可传入字符串或一个函数,如form.age 表示监听form 表单的age属性,当属性发生变化触发回调方法, 当传函数时,可监听多个属性的变化,参考计算属性 | 空 | |
associations.func | Function | 监听属性发生变化的回调,参数为(form, property, properties) , form 为整个搜索栏的表单,property为当前控件的配置,properties为整个搜索栏的配置 | 空 |
表格组件props配置
属性 | 类型 | 说明 | 默认值 | 版本 |
---|---|---|---|---|
options | Object | 表格选项配置 | 必传 | |
requestUrl | String | 请求方法 | 必传 | |
showPage | Boolean | 是否展示分页 | true | V1.0.19 |
size | String | 全局控制搜索栏的大小 | normal | |
hooks | Function | 钩子函数,可在组件搜索前,搜索后,清除筛选的时机插入或自定义逻辑 | null | |
其他elementui el-table props可直接传入 |
表格属性配置
属性 | 类型 | 说明 | 版本 |
---|---|---|---|
prop | String | 对应列内容的字段名 | |
label | String | 显示的标题 | |
type | String | 策略名,默认策略有timestamp | |
columns | Array | 嵌套列,实现合并表头 | V1.0.19 |
render | Function | 自定义渲染方法, 可传入jsx, 接收参数同elementui scope | |
其他elementui列属性 | 参考elementui |
自定义搜索钩子
可在搜索的时候干预搜索栏的表单配置,比如增加属性,删除属性,修改属性等
hooks({ searchHook }) {
searchHook.tap('test', (searchParams) => {
searchParams.name = 'finnwu'
return searchParams // 必须return 出去
})
}
单独使用搜索栏
搜索栏默认也是全局组件,可以直接使用,如果想使用没有全局配置的搜索栏,可以在文件中手动导入
import IntegratedTable from '@futu/integrated-table';
const FlexSearchBar = IntegratedTable.FlexSearchBar;
const JsonSearchBar = IntegratedTable.JsonSearchBar;
搜索栏组件prop配置
属性 | 类型 | 说明 | 版本 |
---|---|---|---|
form | Object | 搜索栏表单对象,可传入空对象 | |
properties | Array | 搜索栏属性配置, 参考搜索栏属性配置表格 | |
hooks | Object | 钩子对象,支持 formInitBefore 和formInitAfter | v1.0.14 |
elementui 通用属性 | 可以传size , clearable 这些属性,默认这些会透传下给表单组件 |
搜索栏支持组件
组件 | 说明 | 版本 |
---|---|---|
input | 输入框组件 | |
select | 选择 | |
date | 日期组件 | |
dateRange | 日期范围组件 | |
cascader | 级联组件 | v1.0.13 |
radio | 单选 | v1.0.14 |
custom | 自定义组件 | v1.0.14 |
开发
npm run dev
npm run mock
changelog
v1.0.24
- 增加表格组件show属性
v1.0.23
- 增加组件OneTable的导出
v1.0.22
- 修复多语言无默认语言显示pathbug
v1.0.21
- 支持多语言
v1.0.19
- 表格组件组件showPage属性
- 表格组件列嵌套,可以合并表头
v1.0.18
- 增加搜索栏获取数据方法
- 增加raido取消选择方法
v1.0.17
- 修复钩子执行顺序问题
v1.0.16
- 修复多个组件搜索数据共享问题
v1.0.15
- integrated-table 增加清除方法
- integrated-table 增加各种钩子
v1.0.14
- searchBar组件增加custom类型组件
- searchBar组件属性增加label属性
- searchBar组件prop增加hooks钩子,formInitBefore和formInitAfter
v1.0.13
- searchBar组件支持cascader类型组件
v1.0.12
- 新增搜索栏选择组件多选值序列化选项
v1.0.11
- 增加搜索栏show可以为Function的特性
- 搜索表单空值为空去掉
1.0.24
4 years ago