<div class="stock" v-for="(item, index) in dataList" :key="index">
<el-tooltip effect="dark" placement="top" manual :ref="'tooltip-' + item.id">
<div slot="content">
编号: {{ item.code }}
{{ popoverList }}
</div>
<div class="tooltip" @click="handleClickView(item.id)">
<div>点击查看数据</div>
</div>
</el-tooltip>
</div>
data() {
return {
dataList: [
{id: 1, code: '123'},
{id: 2, code: '145'},
{id: 3, code: '125'},
],
popoverList: null,
clickId: ''
}
},
created() {
document.addEventListener('click', this.handleClick)
},
methods: {
handleClick() {
if (this.clickId === '') {
return
} else {
this.$refs[`${'tooltip-' + this.clickId}`][0].showPopper = !this.$refs[`${'tooltip-' + this.clickId}`][0].showPopper
this.clickId = ''
}
},
handleClickView(id) {
getById(id).then(res => {
if (res.code === 0) {
this.popoverList = res.data
this.clickId = id
const refsWithKeyword = this.getRefsWithKeyword('tooltip', id)
refsWithKeyword.forEach(item => {
item[0].showPopper = false
})
this.$refs[`${'tooltip-' + id}`][0].showPopper = !this.$refs[`${'tooltip-' + id}`][0].showPopper
}
})
},
getRefsWithKeyword(keyword, id) {
return Object.keys(this.$refs)
.filter(refName => refName.includes(keyword) && !refName.includes(id))
.map(refName => this.$refs[refName]);
},
}