element-datatable
一款基于element-ui的表格插件秕磷,支持所有element-ui的屬性和方法掀虎,可以接受本地數(shù)據(jù)和ajax參數(shù)異步請求服務器數(shù)據(jù)
A form plug-in based on element-ui that supports the properties and methods of all element-ui and can accept local data or ajax parameter asynchronous request server data
相關依賴 Dependencies
- axios, element-ui, qs
- IE >= 9
基本用法 Build Setup
- 安裝 install
npm i element-datatable -S
在項目中引入element-ui依賴,參見http://element.eleme.io. 引入element相關的css等文件.
使用本地數(shù)據(jù) use local data
<template>
<div id="app">
<element-datatable :column-attributes="columnAttributes" :data="tableData" />
</div>
</template>
<script>
import { ElementDatatable } from '@/components'
export default {
name: "App",
components: {
ElementDatatable
},
data() {
return {
tableData: [
{
date: '2018-09-30',
content: '123',
isDelay: false,
delayReason: '',
checked: true
}
],
columnAttributes: [ // columnAttributes里面的屬性與table-column attributes 一致, 但是采用小駝峰命名
{ label: "序號", type: 'index', width: '50', align: 'center' },
{ type: 'selection', align: 'center', width: 55 },
{ label: '日期', prop: 'date', width: '120', align: 'center', sortable: true },
{ label: '工作內容', prop: 'content', headerAlign: 'center', },
{ label: '工期是否延誤', prop: 'isDelay', headerAlign: 'center', width: 130 },
{ label: '延誤原因', prop: 'delayReason', headerAlign: 'center' }
]
}
}
}
</script>
- 使用ajax獲取數(shù)據(jù) get data by ajax
<template>
<div id="app">
<element-datatable :column-attributes="columnAttributes" :ajax="ajax" />
</div>
</template>
<script>
import ElementDatatable from './components'
export default {
name: "App",
components: {
ElementDatatable
},
data() {
return {
tableData: [
{
date: '2018-09-30',
content: '123',
isDelay: false,
delayReason: '',
checked: true
}
],
columnAttributes: [
{ label: "序號", type: 'index', width: '50', align: 'center' },
{ type: 'selection', align: 'center', width: 55 },
{ label: '日期', prop: 'date', width: '120', align: 'center', sortable: true },
{ label: '工作內容', prop: 'content', headerAlign: 'center', },
{ label: '工期是否延誤', prop: 'isDelay', headerAlign: 'center', width: 130 },
{ label: '延誤原因', prop: 'delayReason', headerAlign: 'center' }
],
ajax: { // 支持傳入完整的ajax對象
url: '',
method: '',
headers: {},
params: {},
data: {}
}
}
}
}
</script>
有關el-table和el-table-column使用方法泳炉,請參考element-ui相關說明
其它功能 Other property & event
支持所有的el-table、el-table-column屬性、事件和方法.
checked-prop
僅在tyep="selection"時有效,該屬性接收一個字符串指定某一屬性或方法,通過驗證數(shù)據(jù)的指定屬性值確認是否選中該條數(shù)據(jù)围苫;方法接收兩個參數(shù)(row, index), 通過返回true或false指定該數(shù)據(jù)是否選中selectAbleProp
僅在tyep="selection"時有效裤园,該屬性接收一個字符串指定某一屬性,通過驗證數(shù)據(jù)的該屬性值判斷是否可選剂府,作用與el-table-column的selectable屬性相同拧揽。
ElementDatatable Attributes
參數(shù) | 說明 | 類型 | 可選值 | 默認值 |
---|---|---|---|---|
ajax | 用于向后端發(fā)送ajax請求, 類型為string時接收一個url地址, 類型為object時接收整個ajax對象腺占, 默認使用get方式 | string / object | -- | -- |
serverParams | 表格請求的查詢條件淤袜、請求參數(shù) | object | -- | -- |
showLoading | 表格請求時是否顯示loading加載 | boolean | -- | true |
columnAttributes | 表格列的屬性, 屬性值與element table-column attributes 一致衰伯, 但是采用小駝峰命名規(guī)則 | array | -- | -- |
checkedProp | 僅對 type=selection 的列有效铡羡, 指定默認選中, 或者傳入一個函數(shù)意鲸,返回一個Boolean 表示是否選中 | string/function(row, index) | -- | -- |
selectAbleProp | 僅對 type=selection 的列有效烦周,與表格列中的selectAble屬性作用一致,決定這一行的 CheckBox 是否可以勾選 | string | -- | -- |
createdUnload | 指定表格初始化的時候是否發(fā)送請求獲取數(shù)據(jù) | boolean | -- | false |
pageIndexKey | 指定表格的pageIndex屬性 | string | -- | pageIndex |
pageSizeKey | 指定表格的pageSize屬性 | string | -- | pageSize |
dataKey | 指定后臺返回數(shù)據(jù)的key值 | string | -- | tbody |
totalKey | 指定后臺返回表格總條數(shù)的key值 | string | -- | -- |
data | 采用本地數(shù)據(jù)時有效怎顾,顯示的數(shù)據(jù) | array | -- | -- |
height | Table 的高度读慎,默認為自動高度。如果 height 為 number 類型槐雾,單位 px夭委;如果 height 為 string 類型,則這個高度會設置為 Table 的 style.height 的值募强,Table 的高度會受控于外部樣式株灸。 | string/number | -- | -- |
max-height | Table 的最大高度 | string/number | -- | -- |
stripe | 是否為斑馬紋 table | boolean | -- | false |
border | 是否帶有縱向邊框 | boolean | -- | true |
size | Table 的尺寸 | string | medium / small / mini | -- |
fit | 列的寬度是否自撐開 | boolean | -- | true |
show-header | 是否顯示表頭 | boolean | -- | true |
highlight-current-row | 是否要高亮當前行 | boolean | -- | false |
current-row-key | 當前行的 key,只寫屬性 | string/number | -- | -- |
row-class-name | 行的 className 的回調方法擎值,也可以使用字符串為所有行設置一個固定的 className蚂且。 | Function({row, rowIndex})/String | -- | -- |
row-style | 行的 style 的回調方法,也可以使用一個固定的 Object 為所有行設置一樣的 Style幅恋。 | Function({row, rowIndex})/Object | -- | -- |
cell-class-name | 單元格的 className 的回調方法杏死,也可以使用字符串為所有單元格設置一個固定的 className。 | Function({row, column, rowIndex, columnIndex})/String | -- | -- |
cell-style | 單元格的 style 的回調方法,也可以使用一個固定的 Object 為所有單元格設置一樣的 Style淑翼。 | Function({row, column, rowIndex, columnIndex})/Object | -- | -- |
header-row-class-name | 表頭行的 className 的回調方法腐巢,也可以使用字符串為所有表頭行設置一個固定的 className。 | Function({row, rowIndex})/String | -- | -- |
header-row-style | 表頭行的 style 的回調方法玄括,也可以使用一個固定的 Object 為所有表頭行設置一樣的 Style冯丙。 | Function({row, rowIndex})/Object | -- | -- |
header-cell-class-name | 表頭單元格的 className 的回調方法,也可以使用字符串為所有表頭單元格設置一個固定的 className遭京。 | Function({row, column, rowIndex, columnIndex})/String | -- | -- |
header-cell-style | 表頭單元格的 style 的回調方法胃惜,也可以使用一個固定的 Object 為所有表頭單元格設置一樣的 Style。 | Function({row, column, rowIndex, columnIndex})/Object | -- | -- |
row-key | 行數(shù)據(jù)的 Key哪雕,用來優(yōu)化 Table 的渲染船殉;在使用 reserve-selection 功能的情況下,該屬性是必填的斯嚎。類型為 String 時利虫,支持多層訪問:user.info.id,但不支持 user.info[0].id堡僻,此種情況請使用 Function糠惫。 | Function(row)/String | -- | -- |
empty-text | 空數(shù)據(jù)時顯示的文本內容,也可以通過 slot="empty" 設置 | String | -- | 暫無數(shù)據(jù) |
default-expand-all | 是否默認展開所有行钉疫,當 Table 中存在 type="expand" 的 Column 的時候有效 | Boolean | -- | false |
expand-row-keys | 可以通過該屬性設置 Table 目前的展開行硼讽,需要設置 row-key 屬性才能使用,該屬性為展開行的 keys 數(shù)組牲阁。 | Array | -- | |
default-sort | 默認的排序列的 prop 和順序理郑。它的prop屬性指定默認的排序的列,order指定默認排序的順序 | Object | order: ascending, descending | 如果只指定了prop, 沒有指定order, 則默認順序是ascending |
tooltip-effect | tooltip effect 屬性 | String | dark/light | -- |
show-summary | 是否在表尾顯示合計行 | Boolean | -- | false |
sum-text | 合計行第一列的文本 | String | -- | 合計 |
summary-method | 自定義的合計計算方法 | Function({ columns, data }) | -- | -- |
span-method | 合并行或列的計算方法 | Function({ row, column, rowIndex, columnIndex }) | -- | -- |
select-on-indeterminate | 在多選表格中咨油,當僅有部分行被選中時您炉,點擊表頭的多選框時的行為。若為 true役电,則選中所有行赚爵;若為 false,則取消選擇所有行 | Boolean | -- | true |
small | 是否使用小型分頁樣式 | boolean | -- | false |
background | 是否為分頁按鈕添加背景色 | -- | false | |
page-count | 總頁數(shù)法瑟,total 和 page-count 設置任意一個就可以達到顯示頁碼的功能冀膝;如果要支持 page-sizes 的更改,則需要使用 total 屬性 | Number | -- | -- |
pager-count | 頁碼按鈕的數(shù)量霎挟,當總頁數(shù)超過該值時會折疊 | number | 大于等于 5 且小于等于 21 的奇數(shù) | 7 |
layout | 組件布局窝剖,子組件名用逗號分隔 | String | sizes, prev, pager, next, jumper, ->, total, slot | 'prev, pager, next, jumper, ->, total' |
page-sizes | 每頁顯示個數(shù)選擇器的選項設置 | number[] | -- | [10, 20, 30, 50, 100] |
popper-class | 每頁顯示個數(shù)選擇器的下拉框類名 | string | -- | -- |
prev-text | 替代圖標顯示的上一頁文字 | string | -- | -- |
next-text | 替代圖標顯示的下一頁文字 | string | -- | -- |
disabled | 是否禁用分頁按鈕 | boolean | -- | false |
ElementDatatable Events
事件名 | 說明 | 參數(shù) |
---|---|---|
select | 當用戶手動勾選數(shù)據(jù)行的 Checkbox 時觸發(fā)的事件 | selection, row |
select-all | 當用戶手動勾選全選 Checkbox 時觸發(fā)的事件 | selection |
selection-change | 當選擇項發(fā)生變化時會觸發(fā)該事件 | selection |
cell-mouse-enter | 當單元格 hover 進入時會觸發(fā)該事件 | row, column, cell, event |
cell-mouse-leave | 當單元格 hover 退出時會觸發(fā)該事件 | row, column, cell, event |
cell-click | 當某個單元格被點擊時會觸發(fā)該事件 | row, column, cell, event |
cell-dblclick | 當某個單元格被雙擊擊時會觸發(fā)該事件 | row, column, cell, event |
row-click | 當某一行被點擊時會觸發(fā)該事件 | row, event, column |
row-contextmenu | 當某一行被鼠標右鍵點擊時會觸發(fā)該事件 | row, event |
row-dblclick | 當某一行被雙擊時會觸發(fā)該事件 | row, event |
header-click | 當某一列的表頭被點擊時會觸發(fā)該事件 | column, event |
header-contextmenu | 當某一列的表頭被鼠標右鍵點擊時觸發(fā)該事件 | column, event |
sort-change | 當表格的排序條件發(fā)生變化的時候會觸發(fā)該事件 | { column, prop, order } |
filter-change | 當表格的篩選條件發(fā)生變化的時候會觸發(fā)該事件,參數(shù)的值是一個對象酥夭,對象的 key 是 column 的 columnKey赐纱,對應的 value 為用戶選擇的篩選條件的數(shù)組脊奋。 | filters |
current-change | 當表格的當前行發(fā)生變化的時候會觸發(fā)該事件,如果要高亮當前行疙描,請打開表格的 highlight-current-row 屬性 | currentRow, oldCurrentRow |
header-dragend | 當拖動表頭改變了列的寬度的時候會觸發(fā)該事件 | newWidth, oldWidth, column, event |
expand-change | 當用戶對某一行展開或者關閉的時候會觸發(fā)該事件 | row, expandedRows |
ElementDatatable Methods
方法名 | 說明 | 參數(shù) |
---|---|---|
reloadData | 重新加載表格數(shù)據(jù),可以新加參數(shù)座位查詢字段 | searchObj |
ElementDatatable Slot
slot
slot name=“first”