vue使用el-table動(dòng)態(tài)合并列及行
本文實(shí)例為大家分享了vue使用el-table動(dòng)態(tài)合并列及行的具體代碼,供大家參考,具體內(nèi)容如下
前兩天項(xiàng)目中需要用到表單合并,特此記錄,放便以后使用。
首先我使用的element-ui中的el-table,文檔中提供span-method方法可以實(shí)現(xiàn)合并行或列,大家不熟悉的可以去看看element文檔地址,但是文檔提供的例子很簡(jiǎn)單,不能滿足復(fù)雜的頁(yè)面,所以需要處理一下數(shù)據(jù)。
如下代碼:
getListDataForRowAndColumn(data){ let self = this; self.rowAndColumn = []; self.rowRoomColumn = []; for (var i = 0; i < data.length; i++) { if (i === 0) { // 如果是第一條記錄(即索引是0的時(shí)候),向數(shù)組中加入1 self.rowAndColumn.push(1); self.pos = 0; self.rowRoomColumn.push(1); self.posT = 0; } else { //data[i].typeDesc就是你從接口讀取的字段信息,下同 if (data[i].typeDesc === data[i - 1].typeDesc) { // 如果typeDesc相等就累加,并且push 0 self.rowAndColumn[self.pos] += 1 self.rowAndColumn.push(0) if (data[i].areaDesc === data[i - 1].areaDesc) { // 如果areaDesc相等就累加,并且push 0 self.rowRoomColumn[self.posT] += 1 self.rowRoomColumn.push(0) } else { self.rowRoomColumn.push(1) self.posT = i } } else { // 不相等push 1 self.rowAndColumn.push(1) self.pos = i; self.rowRoomColumn.push(1) self.posT = i } } } },
以上代碼就是來(lái)整理你的數(shù)據(jù),注釋寫(xiě)的很清楚了,相信大家都能看懂,真不行就打印出來(lái)看看。
處理完數(shù)據(jù)后就用到上面提到的span-method方法了。如圖:
objectSpanMethod方法如下:
objectSpanMethod({ row, column, rowIndex, columnIndex }) { let self = this if (columnIndex === 1) { if (self.rowAndColumn[rowIndex]) { let rowNum = self.rowAndColumn[rowIndex]; return { rowspan: rowNum, colspan: rowNum > 0 ? 1 : 0 } } return { rowspan: 0, colspan: 0 } } if (columnIndex === 2) { if (self.rowRoomColumn[rowIndex]) { let roomNum = self.rowRoomColumn[rowIndex]; return { rowspan: roomNum, colspan: roomNum > 0 ? 1 : 0 } } return { rowspan: 0, colspan: 0 } } },
搞定,來(lái)看看看效果圖吧
注意,使用這方法時(shí)一定要讓后端經(jīng)過(guò)排序后再傳出來(lái),否則頁(yè)面可能會(huì)達(dá)不到你想要的效果。因?yàn)槲沂菑牡诙虚_(kāi)始合并的,所以objectSpanMethod方法中的columnIndex從1開(kāi)始的,可根據(jù)你的實(shí)際情況來(lái)。把從接口獲取到的數(shù)據(jù)放到getListDataForRowAndColumn這方法里即可,記得定義rowAndColumn,rowRoomColumn。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue利用computed解決單項(xiàng)數(shù)據(jù)流的問(wèn)題
Vue是一個(gè)非常流行和強(qiáng)大的前端框架,它讓我們可以用簡(jiǎn)潔和優(yōu)雅的方式來(lái)構(gòu)建用戶界面,但是,Vue也有一些需要注意和掌握的細(xì)節(jié)和技巧,今天我們來(lái)分享一個(gè)Vue中非常經(jīng)典的問(wèn)題,也是一個(gè)非常實(shí)用的技巧,Vue利用computed解決單項(xiàng)數(shù)據(jù)流,需要的朋友可以參考下2023-08-08VUE單頁(yè)面切換動(dòng)畫(huà)代碼(全網(wǎng)最好的切換效果)
今天小編就為大家分享一篇VUE單頁(yè)面切換動(dòng)畫(huà)代碼(全網(wǎng)最好的切換效果),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10vue項(xiàng)目如何實(shí)現(xiàn)前端預(yù)覽word與pdf格式文件
最近項(xiàng)目中需要在線預(yù)覽WORD文檔,所以給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目如何實(shí)現(xiàn)前端預(yù)覽word與pdf格式文件的相關(guān)資料,需要的朋友可以參考下2023-03-03如何用vue-pdf包實(shí)現(xiàn)pdf文件預(yù)覽,支持分頁(yè)
這篇文章主要介紹了如何用vue-pdf包實(shí)現(xiàn)pdf文件預(yù)覽,支持分頁(yè)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03vue2基本響應(yīng)式實(shí)現(xiàn)方式之讓數(shù)組也變成響應(yīng)式
這篇文章主要介紹了vue2基本響應(yīng)式實(shí)現(xiàn)方式之讓數(shù)組也變成響應(yīng)式問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04如何使用crypto-js對(duì)文件上傳下載進(jìn)行加密處理
這篇文章主要介紹了如何使用crypto-js對(duì)文件上傳下載進(jìn)行加密處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05