one-table v0.1.5
one-table
介绍
基于vue和element二次开发的业务table组件,适合用来快速开发后台管理界面。
感觉复杂度已经超过原生组件,如果是熟悉vue和elementui的来写应该问题不大,熟悉了就写得很快,适合用来统一代码风格。
引入方式
npm
npm install one-table -s
yarn
yarn add one-table -s
全局引入
import OneTable from 'one-table'
Vue.use(OneTable,headerConfig)
***全局注册时可选请求头参数,格式为Obeject
调用实例
<template>
<div>
<One-Table
ref="oneTable"
:table-global-config-props="tableGlobalConfigProps"
:table-pagination-config-auto="tablePaginationConfigAuto"
:table-config-field="tableConfigField"
:form-global-config-props="formGlobalConfigProps"
:requset-url="requsetUrl"
:requset-config="requsetConfig"
:table-column-formatter="tableColumnFormatter"
:table-form-search-config="tableFormSearchConfig"
:form-config-options-list="formConfigOptionsList"
:table-form-botton-config="tableFormBottonConfig"
:btn-table-column-option="btnTableColumnOption"
:header-config="headerConfig"
@tableColumnClick="tableColumnClick"
@btnTableClick="btnTableClick"
@autoPage="autoPage"
/>
</div>
</template>
<script type="text/javascript">
export default {
data() {
return {
// 表格全局参数
tableGlobalConfigProps: {
tableType: 'table', // 表格类型 table,tree
treeChildren: 'children', // 为树形结构时children属性名
treeHasChildren: 'hasChildren', // 为树形结构时hasChildren属性名
rowKey: 'id', // 行key 为tree时必传
selectionCheck: true, // 是否有选择框
reserveSelection: true, // 选择框分页时是否记忆
autoRequest: true, // 创建时自动请求
handRequestSetPage: true, // 手动处理返回数据
requsetType: 'get', // 默认get
needIndex: true // 需要序号
},
// 请求头参数
headerConfig:{
token:''
},
// 表格全局配置
formGlobalConfigProps: {
size: 'mini',
inline: true
},
// 请求地址
requsetUrl: '/api/v1/user/list',
// 额外的请求参数 自定义~比如token?
requsetConfig: {},
// 表格分页参数自定义
tablePaginationConfigAuto: {
page: 'page',
pageSize: 'page_size'
},
// 搜索区域定义
tableFormSearchConfig: [
{
id: 'position_type',
name: '用户身份',
value: '',
type: 'select',
placeholder: '用户身份',
rules: []
},
{
id: 'name',
name: '用户姓名',
value: '',
type: 'input',
placeholder: '请输入用户姓名',
rules: []
}
],
tableFormBottonConfig: [
{
type: 'add',
text: '添加人员',
icon: 'el-icon-plus',
btType: 'success',
size: 'mini',
loading: false
}
],
formConfigOptionsList: {
position_type: [{ name: '客户经理', id: 1 }, { name: '支撑经理', id: 2 }],
status: [{ name: '未激活', id: 0 }, { name: '已激活', id: 1 }]
},
// 表格字段定义
tableConfigField: [
{
id: 'name',
name: '姓名'
},
{
id: 'role_types',
name: '角色',
formatter: true,
isHtml: true
},
{
id: 'bank_idcard',
name: '银行身份证',
width: 200
},
{
id: 'option',
type: 'option',
name: '操作',
width: 220,
data: [
{
type: 'add',
text: '新增',
icon: 'el-icon-plus',
btType: 'info'
},
]
}
]
}
},
computed: {},
watch: {},
created() {},
mounted() {},
methods: {
// 手动处理返回数据
autoPage(data, callback) {
callback(data.data.list.data, data.data.list.total)
},
// 表格操作列点击回调
tableColumnClick(row, btType) {
switch (btType) {
case 'add':
break
case 'edit':
break
}
},
// 按钮区域点击
btnTableClick(type) {
switch (type) {
case 'add':
this.$refs.editDialog.show()
break
}
},
// 表格操作按钮显示与否
btnTableColumnOption(row, type) {
switch (type) {
case 'add':
return true
default:
return true
}
},
// 表格格式化 ---tableConfigField设置的formater字段为true
tableColumnFormatter(row, column, cellValue, index) {
switch (column.property) {
case 'role_types':
const role_typesList = row.role_types.map(item => {
return item.name
})
return `<el-tag>${role_typesList.join(',')}</el-tag>`
default:
return cellValue
}
}
}
}
</script>
一.全局参数:tableGlobalConfigProps
参数名 | 说明 | 默认值 | 参数类型 | 是否必须 | 可选 |
---|---|---|---|---|---|
tableType | 表格类型 | table | String | false | table,tree |
treeChildren | 为树形结构时children属性名 | children | String | false | |
treeHasChildren | 为树形结构时hasChildren属性名 | hasChildren | String | false | |
rowKey | 行key 为tree时必传 | id | String | false | |
selectionCheck | 是否有选择框 | true | Boolean | false | true,false |
autoRequest | 创建时自动请求列表 | true | Boolean | false | true,false |
requsetType | 请求方式 | get | String | true | 常规都行 |
needIndex | 列头是否需要序号 | true | Boolean | false | true,false |
autoRequestSetPage | 是否手动处理返回数据 | false | Boolean | false | true,false |
二.其他参数
参数名 | 说明 | 默认值 | 参数类型 | 是否必须 | 可选 |
---|---|---|---|---|---|
requsetUrl | 表格请求地址 | String | true | ||
requsetConfig | 附加请求参数 | Object | flase | ||
tablePaginationType | 表格分页方式 | backstage | String | true | web,backstage |
tablePaginationConfigAuto | 表格分页的请求参数 | {page: pageSize: '} | Object | true | |
tableConfigField | 表格数据源字段 | [] | Array | true | |
tableColumnFormatter | 表格筛选方法 | Function | false | ||
btnTableColumnOption | 表格操作按钮显示与否 | Function | false | ||
formGlobalConfigProps | 表单全局配置 | Object | false | ||
tableFormSearchConfig | 表格搜索配置 | Array | false | ||
tableFormBottonConfig | 表格下按钮区域 | Array | false | ||
headerConfig | 请求头参数 | Object | false |
三:table方法(额外函数)
ps:已经继承了element-ui的table的大多数常用方法,可直接调用,如clearSelection,setCurrentRow
函数名 | 说明 | 返回值 |
---|---|---|
getMultipleSelection | 获取已选中数据 | 已选中数据列表 |
setPage | 手动设置数据 | 无 |
四.回调方法(额外函数)
ps:已经继承了element-ui的table的大多数常用方法,可直接调用,如row-click,selection-change
函数名 | 说明 | 参数 |
---|---|---|
tableColumnClick | 表格操作列点击回调 | row,btType(当前点击行,当前点击按钮类型) |
btnTableClick | 按钮区域点击 | type(当前点击类型) |
autoPage | autoRequestSetPage为true时,每次请求时触发 | 后台返回的data |
五.部分参数详解
autoRequestSetPage
手动处理返回数据。 可能每个接口返回的数据结构不一致,需要手动处理一下。当autoRequestSetPage为true时,需要监听autoPage方法。方法会返回两个参数,一个为后台请求回来的数据(未处理),一个为callback函数,手动处理完成后必须调用callback,callback(data,total)接收两个参数,data为处理后的列表数据,total为数据总长度,当分页方式为web时,total可不传。
tablePaginationConfigAuto
用来设置分页信息的参数
因为每个项目或接口的page和pagesize参数基本会不一致,所以用来自定义page和pagesize参数,此参数有默认值为 {
page: 'currentPage',
pageSize: 'pagesize'
}
tableConfigField
用来设置表头信息的参数列表
参数名 | 说明 | 类型 | 是否必须 |
---|---|---|---|
id | id值,为prop使用的值 | null | true |
name | 列头显示名 | string | true |
type | 显示类型,可选option,imgage,默认为空 | string | false |
formatter | 是否需要筛选,可以通过tableColumnFormatter进行筛选 | Boolean | false |
isHtml | 是否为html片段 | Boolean | false |
data | type为option时需要,同tableFormBottonConfig参数 | Array | false |
sortable | 是否支持排序(原生属性) | Boolean | false |
width | 行宽度(原生属性) | Number | false |
fixed | 是否固定(原生属性) | Boolean | false |
tableColumnFormatter(row, column, cellValue, index)
用来筛选内容的方法,每次都会调用,必须返回处理值
返回值 | 说明 |
---|---|
row | 当前行 |
column | 当前列 |
cellValue | 当前cell值 |
index | 当前行index |
btnTableColumnOption(row, type)
用来筛选行是否显示操作按钮,这非常常见,比如这一行的状态为未激活,那么操作按钮就不应该显示激活按钮。必须返回处理值
返回值 | 说明 |
---|---|
row | 当前行 |
type | 当前按钮type,为data-option-type |
formGlobalConfigProps
用来设置表格搜索区域表单的参数列表....还没想到支持些啥~
参数 | 说明 | 类型 | 是否必须 |
---|---|---|---|
size | 搜索区域表单大小 | String | false |
tableFormSearchConfig
表单搜索区域表单配置
参数 | 说明 | 类型 | 是否必须 |
---|---|---|---|
id | 表单id,即搜索时使用的参数名 | String | true |
name | 表单组件名字 | String | false |
value | 组件默认值 | String | false |
type | 组件类型,支持input,select,date,daterange,rate,checkbox,inputNumber,cascader | String | true |
placeholder | 提示语 | String | false |
rules | 表单校验规则 | Array | false |
min | 为inputNumber,rate时支持 | Number | false |
max | 为inputNumber,rate时支持 | Number | false |
value-format | 为时间时支持 | String | false |
format | 为时间时支持 | String | false |
rangeSeparator | 中置文字(时间范围时支持) | String | false |
startPlaceholder | 开始时间提示(时间范围时支持) | String | false |
endPlaceholder | 结束时间提示(时间范围时支持) | String | false |
tableFormBottonConfig
搜索区域下方的按钮区域配置
参数 | 说明 | 类型 | 是否必须 |
---|---|---|---|
type | 自定义类型 | String | true |
text | 按钮文字 | String | true |
icon | 按钮图标 | String | false |
btType | 按钮类型,primary / success / warning / danger / info / text | String | false |
size | 按钮大小,medium / small / mini | String | false |
loading | 按钮加载状态 | Boolean | false |
headerConfig
自定义请求头参数,两种方式添加 1.如上直接绑定到组件。 2.在Vue.use(OneTable,headerConfig)时初始化,则该项目下所有one-table请求都会带上该请求头