基于elementui的表頭自定義篩選功能

項目研發(fā)過程中遇到一個自動表頭篩選的邏輯,其主要是利用el-table的 render-header屬性進行實現(xiàn)的,話不多少,直接上代碼:

render-header(ps):

列標題 Label 區(qū)域渲染使用的 Function

Function(h, { column, $index })

第一步:在el-table-column的增加該屬性:render-header="renderHeader"


? ? ? <el-table-column?prop="sowStatus"?label="狀態(tài)"?align="center"?:render-header="renderHeader"?min-width="90">

??????????<template?slot-scope="scope">

????????????<div?v-if="scope.row.sowStatus?==?null">-</div>

????????????<div?v-else>

??????????????<span?v-if="scope.row.sowBackFlag">已退回</span>

??????????????<span?v-else>{{emnuList.get(scope.row.sowStatus)}}</span>

????????????</div>

??????????</template>

????????</el-table-column>

第二步:在methods里增加如下代碼


renderHeader(createElement,?{?column,?$index?})?{

??????let?proty?=?column.property

??????//?console.log('該列的綁定數(shù)據(jù)',?column)

??????//?console.log(proty)

??????return?createElement(

????????'div',

????????{

??????????style:?'display:flex;justify-content:?center;'

????????},

????????[

??????????createElement(TableHeader,?{

????????????style:?'cursor:?pointer;',

????????????props:?{

??????????????column:?column,

??????????????options:?proty,

??????????????tableQuery:?this.tableParams,

????????????}

??????????})

????????]

??????)

????}

第三步:新建 TableHeader.vue組件


<template>

??<div?class="table-header">

????<span?@click="clickIcon(column)">{{?column.label?}}<span?class="el-icon-sort"></span></span>

??</div>

</template>

<script>

export?default?{

??name:?'TableHeader',

??data()?{

????return?{}

??},

??props:?{

????type:?{

??????type:?String,

??????default:?''

????},

????defaultValue:?{

??????type:?String,

??????default:?''

????},

????options:?{

??????type:?[Array,?String],

??????default:?function()?{

????????return?[]

??????}

????},

????defaultProps:?{

??????type:?Object,

??????default:?function()?{

????????return?{

??????????label:?'label',

??????????value:?'value'

????????}

??????}

????},

????//傳遞過來的接口參數(shù)

????tableQuery:?{

??????type:?Object,

??????default:?function()?{

????????return?{}

??????}

????},

????cancelCb:?{

??????type:?Function

????},

????//?父組件傳遞過來的自定義表列名字

????column:?{

??????type:?Object,

??????default:?function()?{

????????return?{

??????????label:?'label',

??????????value:?'value'

????????}

??????}

????}

??},

??mounted()?{},

??methods:?{

????clickIcon(column)?{

??????//?在這里處理排序的邏輯

????}

??}

}

</script>

<style?scoped></style>



第四步:在script代碼段引入自定義的表頭組件


import?TableHeader?from?'./TableHeader'

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容