vue+element-ui 封裝table

tabletext(封裝table頁面代碼)

https://blog.csdn.net/weixin_43886711/article/details/102780607

<template>

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

????????<el-table?id="iTable"?v-loading.iTable="options.loading"?:data="list"?:stripe="options.stripe"

????????????ref="mutipleTable"?@selection-change="handleSelectionChange"?border>

????????????<el-table-column?v-if="options.mutiSelect"?type="selection"?style="width:?55px;">

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

????????????<!--region?數(shù)據(jù)列-->

????????????<template?v-for="(column,?index)?in?columns">

????????????????<el-table-column?:prop="column.prop"?:key='column.label'?:label="column.label"?:align="column.align"

????????????????????:width="column.width">

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

????????????????????????<template?v-if="!column.render">

????????????????????????????<template?v-if="column.formatter">

????????????????????????????????<span?v-html="column.formatter(scope.row,?column)"></span>

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

????????????????????????????<template?v-else>

????????????????????????????????<span>{{scope.row[column.prop]}}</span>

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

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

????????????????????????<template?v-else>

????????????????????????????<expand-dom?:column="column"?:row="scope.row"?:render="column.render"?:index="index">

????????????????????????????</expand-dom>

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

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

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

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

????????????<!--region?按鈕操作組-->

????????????<el-table-column?ref="fixedColumn"?label="操作"?align="center"?:width="operates.width"?:fixed="operates.fixed"

????????????????v-if="operates.list.filter(_x=>_x.show?===?true).length?>?0">

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

????????????????????<div?class="operate-group">

????????????????????????<template?v-for="(btn,?key)?in?operates.list">

????????????????????????????<div?class="item"?v-if="btn.show"?:key='btn.id'>

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //也可以換成el-button

????????????????????????????????<span?:style="btn.style"?size="mini"?:class="btn.class"?:plain="btn.plain"

????????????????????????????????@click="btn.method(key,scope.row)">{{?btn.label?}}

????????????????????????????????</span>

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

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

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

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

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

????????????<!--endregion-->

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

????</div>

</template>

<script>

????import?{?mapGetters?}?from?'vuex';

????export?default?{

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

????????????list:?{

????????????????type:?Array,

????????????????default:?[]

????????????},?//?數(shù)據(jù)列表

????????????columns:?{

????????????????type:?Array,

????????????????default:?[]

????????????},?//?需要展示的列?===?prop:列數(shù)據(jù)對應(yīng)的屬性梢薪,label:列名事期,align:對齊方式悴品,width:列寬

????????????operates:?{},?//?操作按鈕組?===?label:?文本咧栗,type?:類型(primary?/?success?/?warning?/?danger?/?info?/?text)谁撼,show:是否顯示器钟,icon:按鈕圖標(biāo)邮旷,plain:是否樸素按鈕懦尝,disabled:是否禁用累舷,method:回調(diào)方法

????????????options:?{

????????????????type:?Object,

????????????????default:?{

????????????????????stripe:?false,?//?是否為斑馬紋?table

????????????????????highlightCurrentRow:?false?//?是否要高亮當(dāng)前行

????????????????},

????????????}?//?table?表格的控制參數(shù)

????????},

????????//組件

????????components:?{

????????????expandDom:?{

????????????????functional:?true,

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

????????????????????row:?Object,

????????????????????render:?Function,

????????????????????index:?Number,

????????????????????column:?{

????????????????????????type:?Object,

????????????????????????default:?null

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

????????????????},

????????????????render:?(h,?ctx)?=>?{

????????????????????const?params?=?{

????????????????????????row:?ctx.props.row,

????????????????????????index:?ctx.props.index

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

????????????????????if?(ctx.props.column)?params.column?=?ctx.props.column

????????????????????return?ctx.props.render(h,?params)

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

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

????????},

????????//?數(shù)據(jù)

????????data()?{

????????????return?{

????????????????pageIndex:?1,

????????????????multipleSelection:?[],?//?多行選中

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

????????},

????????mounted()?{

????????},

????????computed:?{

????????},

????????methods:?{

????????????//?多行選中

????????????handleSelectionChange(val)?{

????????????????this.multipleSelection?=?val

????????????????this.$emit('handleSelectionChange',?val)

????????????},

????????????//?顯示?表格操作彈窗

????????????showActionTableDialog()?{

????????????????console.log(4444)

????????????????this.$emit('handelAction')

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

????????},

????}

</script>

<style>

????.operate-group?{

????????display:?flex;

????????flex-direction:?row;

????????justify-content:?space-around;

????}

</style>



引用頁面

<template>

????<div?class="app-container?calendar-list-container">

????????<el-row>

????????????<el-col?:span="24">

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

????????????????????<tabletext?:list="list"?@handleSelectionChange="handleSelectionChange"?:options="options"

????????????????????????:columns="columns"?:operates="operates">

????????????????????</tabletext>

????????????????????<div?class="pagination-container">

????????????????????????<el-pagination?@size-change="handleSizeChange"?@current-change="handleCurrentChange"

????????????????????????????:current-page.sync="listQuery.page"?:page-sizes="[10,20,30,?50]"

????????????????????????????:page-size="listQuery.limit"?layout="total,?sizes,?prev,?pager,?next,?jumper"

????????????????????????????:total="total">?</el-pagination>

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

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

????????????</el-col>

????????</el-row>

????</div>

</template>

<script>

????import?tabletext?from?'views/layout/tabletext';

????import?{?page?}?from?'api/dl/meter/index';

????export?default?{

????????name:?'table1',

????????components:?{

????????????tabletext

????????},

????????computed:?{},

????????data()?{

????????????return?{

????????????????list:?[],?//?table數(shù)據(jù)

????????????????listQuery:?{

????????????????????page:?1,

????????????????????limit:?20,

????????????????????systemname:?undefined

????????????????},

????????????????total:?null,

????????????????options:?{

????????????????????stripe:?true,?//?是否為斑馬紋?table

????????????????????loading:?false,?//?是否添加表格loading加載動畫

????????????????????highlightCurrentRow:?true,?//?是否支持當(dāng)前行高亮顯示

????????????????????mutiSelect:?false,?//?是否支持列表項(xiàng)選中功能

????????????????},?//?table?的參數(shù)

????????????????columns:?[

????????????????????{

????????????????????????prop:?'meterid',

????????????????????????label:?'電表ID',

????????????????????????align:?'center',

????????????????????},?{

????????????????????????prop:?'title',

????????????????????????label:?'電表名稱',

????????????????????????align:?'center',

????????????????????????formatter:?(row,?column,?cellValue)?=>?{

????????????????????????????console.log(row.isenable)

????????????????????????????console.log(row)

????????????????????????????return?`<span?style="white-space:?nowrap;color:?dodgerblue;">${row.metername}</span>`

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

????????????????????},{

????????????????????????prop:?'meteraddress',

????????????????????????label:?'電表地址',

????????????????????????align:?'center',

????????????????????},?{

????????????????????????prop:?'magnification',

????????????????????????label:?'倍率',

????????????????????????align:?'center',

????????????????????},{

????????????????????????prop:?'manufacturer',

????????????????????????label:?'廠家',

????????????????????????align:?'center',

????????????????????},{

????????????????????????prop:?'metermodel',

????????????????????????label:?'型號',

????????????????????????align:?'center',

????????????????????},{

????????????????????????prop:?'meterrule',

????????????????????????label:?'規(guī)約',

????????????????????????align:?'center',

????????????????????},{

????????????????????????prop:?'cabinetnum',

????????????????????????label:?'柜號',

????????????????????????align:?'center',

????????????????????},{

????????????????????????prop:?'remark',

????????????????????????label:?'備注',

????????????????????????align:?'center',

????????????????????},{

????????????????????????prop:?'isenable',

????????????????????????label:?'是否有效',

????????????????????????align:?'center',

????????????????????????render:?(h,?params)?=>?{

????????????????????????????return?h('span',?{

????????????????????????????},?params.row.isenable?===?'1'???'是'?:?params.row.isenable?===?'2'???'否'?:?'')

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

????????????????????},

????????????????],?//?需要展示的列

????????????????//?按鈕

????????????????operates:?{

????????????????????width:?150,

????????????????????list:?[

????????????????????????{

????????????????????????????id:?'1',

????????????????????????????label:?'編輯',

????????????????????????????style:?'cursor:pointer;color:?#409eff;',

????????????????????????????show:?true,

????????????????????????????class:?'el-icon-edit',

????????????????????????????plain:?true,

????????????????????????????method:?(scope,?row)?=>?{

????????????????????????????????console.log(scope)

????????????????????????????????console.log(row)

????????????????????????????????this.handleEdit(row)

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

????????????????????????},

????????????????????????{

????????????????????????????id:?'2',

????????????????????????????label:?'刪除',

????????????????????????????style:?'cursor:pointer;color:?#b3450e;',

????????????????????????????class:?'el-icon-delete',

????????????????????????????show:?true,

????????????????????????????plain:?false,

????????????????????????????method:?(index,?row)?=>?{

????????????????????????????????this.handleDel(row)

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

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

????????????????????]

????????????????}?//?列操作按鈕

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

????????},

????????created()?{

????????????this.getList();

????????},

????????methods:?{

????????????//?選中行

????????????handleSelectionChange(val)?{

????????????????console.log('val:',?val)

????????????},

????????????//?編輯

????????????handleEdit(index,?row)?{

????????????????console.log('?index:',?index)

????????????????console.log('?row:',?row)

????????????},

????????????//?刪除

????????????handleDel(index,?row)?{

????????????????console.log('?index:',?index)

????????????????console.log('?row:',?row)

????????????},

????????????getList()?{

????????????????console.log(this.listQuery)

????????????????page(this.listQuery).then(response?=>?{

????????????????????this.list?=?response.data.rows;

????????????????????this.total?=?response.data.total;

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

????????????},

????????????handleSizeChange(val)?{

????????????????console.log(val)

????????????????this.listQuery.limit?=?val;

????????????????this.getList()

????????????},

????????????handleCurrentChange(val)?{

????????????????console.log(val)

????????????????this.listQuery.page?=?val;

????????????????this.getList()

????????????},

????????}

????}

</script>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末浩考,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子被盈,更是在濱河造成了極大的恐慌析孽,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件只怎,死亡現(xiàn)場離奇詭異袜瞬,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)身堡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門邓尤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贴谎,你說我怎么就攤上這事汞扎。” “怎么了擅这?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵澈魄,是天一觀的道長。 經(jīng)常有香客問我仲翎,道長痹扇,這世上最難降的妖魔是什么铛漓? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮鲫构,結(jié)果婚禮上浓恶,老公的妹妹穿的比我還像新娘。我一直安慰自己结笨,他們只是感情好包晰,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著禀梳,像睡著了一般杜窄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上算途,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天塞耕,我揣著相機(jī)與錄音,去河邊找鬼嘴瓤。 笑死扫外,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的廓脆。 我是一名探鬼主播筛谚,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼停忿!你這毒婦竟也來了驾讲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤席赂,失蹤者是張志新(化名)和其女友劉穎吮铭,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颅停,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谓晌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了癞揉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纸肉。...
    茶點(diǎn)故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖喊熟,靈堂內(nèi)的尸體忽然破棺而出柏肪,到底是詐尸還是另有隱情,我是刑警寧澤逊移,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布预吆,位于F島的核電站,受9級特大地震影響胳泉,放射性物質(zhì)發(fā)生泄漏拐叉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一扇商、第九天 我趴在偏房一處隱蔽的房頂上張望凤瘦。 院中可真熱鬧,春花似錦案铺、人聲如沸蔬芥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽笔诵。三九已至,卻和暖如春姑子,著一層夾襖步出監(jiān)牢的瞬間乎婿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工街佑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谢翎,地道東北人。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓沐旨,卻偏偏與公主長得像森逮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子磁携,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評論 2 359