在运用element-ui的表格展开行组件时,默认的是点击左边的小箭头才能展开,但是实际的需求却是点击一整行展开,实现方法如下:
<el-table
:data="entdatas"
style="width: 100%" row-key="id" :expand-row-keys="entexpands" @row-click="rowExpand">
<el-table-column type="expand">
<template scope="props">
<el-form label-position="left" inline class="demo-table-expand">
<el-form-item label="名称:">
<span style="cursor:pointer;color:#4AA6FF;" @click="_goEntDetail(props.row.ENTNAME)">{{props.row.ENTNAME}}</span>
</el-form-item>
<el-form-item label="类型:">
<span>{{props.row.ENTTYPE}}</span>
</el-form-item>
<el-form-item label="状态:">
<span>{{props.row.ENTSTATUS}}</span>
</el-form-item>
<el-form-item label="日期:">
<span>{{props.row.ESDATE}}</span>
</el-form-item>
</el-form>
</template>
</el-table-column>
<el-table-column
label="名称"
prop="ENTNAME">
</el-table-column>
<el-table-column
label="状态"
prop="ENTSTATUS">
</el-table-column>
<el-table-column
label="日期"
prop="ESDATE">
</el-table-column>
</el-table>
export default {
data() {
return {
entdatas:[],
entexpands: []
}
},
rowExpand(row, event, column) {
Array.prototype.remove = function (val) {
let index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
};
if (this.entexpands.indexOf(row.id) < 0) {
this.entexpands= [];
row.id = this.generateUUID();
this.entexpands.push(row.id);
} else {
this.entexpands.remove(row.id);
}
},
其中我们是把行id作为唯一标识,但是有时候我们的数据中并没有唯一标识,所以可以采用以下方法生成唯一标识:
generateUUID() {
var d = new Date().getTime();
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = (d + Math.random()*16)%16 | 0;
d = Math.floor(d/16);
return (c=='x' ? r : (r&0x3|0x8)).toString(16);
});
return uuid;
},