使用vxe-table合并單元格后增加選中效果
vxe-table合并單元格后增加選中效果
<vxe-table :data="retrievalList" :row-class-name="setRowClass" @cell-click="selectRow"> <vxe-column field="name" title="姓名"></vxe-column> </vxe-table>
后端返回的JSON格式 (合并單元格需要對數(shù)據(jù)處理后,通過setMergeCells合并)
注:
相關(guān)單元格全部選中
效果圖:
data() { return { sourceList: [], // 后端返回的JSON數(shù)據(jù) retrievalList: [], // 格式化后的數(shù)據(jù) [{},{},{}] } }, methods: { // 設(shè)置已選中的單元格類名 setRowClass({row}) { // patId為JSON外層唯一主鍵,選中后根據(jù)主鍵動(dòng)態(tài)設(shè)置類 if (row.patId === this.currentRow.patId) { return 'current-pat'; } }, // 單擊選中 selectRow({row}) { // 獲取當(dāng)前合并的單元格整體信息,此處為多條數(shù)據(jù)的集合 this.currentRow = this.sourceList.find(item => item.patId === row.patId); } }
// scss .vxe-table { .current-pat, .current-pat > td { background-color: #CBECFC !important; } }
所選單元格整體增加背景色,但僅選中單元格特殊標(biāo)識
注 :
(1)第一列被合并單元格選中樣式默認(rèn)跟隨合并后的第一行。
(2)可自行變形,使首列單元格底色與單項(xiàng)選中的單元格一致。
(3)此處存在個(gè)BUG,首次點(diǎn)擊單元格時(shí)未出現(xiàn)選中效果;由于已選擇第一種方案,此處未深究,僅做記錄。
data() { return { sourceList: [], // 后端返回的JSON數(shù)據(jù) retrievalList: [], // 格式化后的數(shù)據(jù) [{},{},{}] } }, methods: { // 設(shè)置行類名 setRowClass({row}) { if (row.itemId === this.firstItemId) { // itemId為JSON內(nèi)層nurseOptPatVoList內(nèi)唯一主鍵,用于設(shè)置被合并列單元格底色 return 'current-first' } else if (row.patId === this.currentRow.patId) { // patId為JSON外層唯一主鍵,選中后根據(jù)主鍵動(dòng)態(tài)設(shè)置類 return 'current-pat' } }, // 單擊選中 selectRow({row}) { // 獲取當(dāng)前合并的單元格整體信息,此處為多條數(shù)據(jù)的集合 this.currentRow = this.sourceList.find(item => item.patId === row.patId); // 獲取當(dāng)前合并的單元格首條信息 let firstItem = this.retrievalList.find(item => item.patId === row.patId); this.firstItemId = firstItem.itemId; }
.vxe-table { .current-pat { background-color: #f00; } .current-first { // 此處不使用important是為了避免背景與選中效果沖突 background-color: #f00; & > .vxe-body--column:first-child { background-color: #f00 !important; } } }
vxe-table自動(dòng)合并單元格
<vxe-table @cell-click="handleClickCell" :span-method="spanMethods" //自動(dòng)合并單元格 :data="tableData2"> </vxe-table> spanMethods({row, $rowIndex, column, data}){ let fields = ["pcsname", "fjname"] let cellValue = row[column.property] if (cellValue && fields.includes(column.property)) { let prevRow = data[$rowIndex - 1] let nextRow = data[$rowIndex + 1] if (prevRow && prevRow[column.property] === cellValue) { return {rowspan: 0, colspan: 0} } else { let countRowspan = 1 while (nextRow && nextRow[column.property] === cellValue) { nextRow = data[++countRowspan + $rowIndex] } if (countRowspan > 1) { return {rowspan: countRowspan, colspan: 1} } } } },
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue+Router+Element實(shí)現(xiàn)簡易導(dǎo)航欄
這篇文章主要為大家詳細(xì)介紹了Vue+Router+Element實(shí)現(xiàn)簡易導(dǎo)航欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09vue3+vite+vant4手機(jī)端項(xiàng)目實(shí)戰(zhàn)記錄
這篇文章主要給大家介紹了關(guān)于vue3+vite+vant4手機(jī)端項(xiàng)目實(shí)戰(zhàn)的相關(guān)資料,Vue3是一種前端開發(fā)框架,它的目標(biāo)是提供更好的性能和開發(fā)體驗(yàn),需要的朋友可以參考下2023-08-08詳解無限滾動(dòng)插件vue-infinite-scroll源碼解析
這篇文章主要介紹了詳解無限滾動(dòng)插件vue-infinite-scroll源碼解析,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-05-05利用Vue實(shí)現(xiàn)一個(gè)markdown編輯器實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于如何利用Vue實(shí)現(xiàn)一個(gè)markdown編輯器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05Vue3配置路由ERROR in [eslint]報(bào)錯(cuò)問題及解決
這篇文章主要介紹了Vue3配置路由ERROR in [eslint]報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10vue 本地環(huán)境跨域請求proxyTable的方法
今天小編就為大家分享一篇vue 本地環(huán)境跨域請求proxyTable的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09Vue實(shí)現(xiàn)docx、pdf格式文件在線預(yù)覽功能
在業(yè)務(wù)中,如果遇到文檔管理類的功能,會(huì)出現(xiàn)需要在線預(yù)覽的業(yè)務(wù)需求,本文主要是通過第三方庫來實(shí)現(xiàn)文檔預(yù)覽功能,并將其封裝成preview組件,感興趣的可以了解一下2022-09-09解決nuxt頁面中mounted、created、watch執(zhí)行兩遍的問題
這篇文章主要介紹了解決nuxt頁面中mounted、created、watch執(zhí)行兩遍的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11