一用踩、關于循環(huán)出來的table列合并
經過多方嘗試這個方法是有用的
<div v-for="(t, index) in tableList" :key="index">
<md-table
:columns="columns"
:data="t.list"
:span-method=(index)=>"heBingLie(index)"
>
</md-table>
</div>
flitterData(arr,columnIndex ) {
let spanOneArr = []
let concatOne = 0
arr.forEach((item, index) => {
if (index === 0) {
spanOneArr.push(1)
} else {
//name 修改
if (columnIndex===0 && item.xinagMu === arr[index - 1].xinagMu) {
//第一列需合并相同內容的判斷條件
spanOneArr[concatOne] += 1
spanOneArr.push(0)
} else {
spanOneArr.push(1)
concatOne = index
}
}
})
return {
one: spanOneArr
}
},
heBingLie({ row, column, rowIndex, columnIndex },index) {
// 需要合并的列
if (columnIndex === 0 || columnIndex === 1 || columnIndex === 2) {
const arr = this.tableList.map(item => {
const _row = this.flitterData(item.list,columnIndex ).one[rowIndex]
const _col = _row > 0 ? 1 : 0
return {
rowspan: _row,
colspan: _col
}
})
return { ...arr[index] }
}
}
二、el-table表頭沒有插槽可以用忙迁,那就只能用Render了
下面的方法是實現表頭popover的方法脐彩。在Render里面使用組件記得提前引入。以下代碼中使用到了this.$createElement是因為要取組件的ref元素姊扔,普通情況下直接用h函數就行惠奸。具體原因是,h函數是作用在渲染的時候恰梢,而ref是取渲染之后的實例佛南。所以這個時候實例還(不存在)在渲染中,ref是undefined
renderHeader: h => {
return this.$createElement(
'div',
{
style: 'display: flex;justify-content: space-between;align-items: center;'
},
[
this.$createElement('span', ''),
this.$createElement('span', '藥品'),
this.$createElement(
Popover,
{
ref: 'popover',
props: {
trigger: 'click'
}
},
[
this.$createElement(Icon, {
slot: 'reference',
props: {
name: 'shezhi-s',
color: '#40a9fe'
},
style: 'cursor: pointer'
}),
this.list.map((i, index) => {
return this.$createElement(Checkbox, {
props: {
value: i.isCheck,
label: i.label,
disabled: i.isDisabled
},
on: {
change: value => {
i.isCheck = value
this.handleClick(i, value)
this.$refs.popover.doClose()
}
}
})
})
]
)
]
)
},
三嵌言、el-tabke的selectable
selectable用于手動對table的checkBox進行手動勾選
{
type: 'selection',
selectable: row => {
return !row.yiShengCBZ
}
},