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 mockchangelog
v1.0.24
- 增加表格组件show属性v1.0.23
- 增加组件OneTable的导出v1.0.22
- 修复多语言无默认语言显示pathbugv1.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和formInitAfterv1.0.13
- searchBar组件支持cascader类型组件v1.0.12
- 新增搜索栏选择组件多选值序列化选项v1.0.11
- 增加搜索栏show可以为Function的特性
- 搜索表单空值为空去掉1.0.24
4 years ago