echarts自定义图片首次加载不显示的问题的修改 vue

1.图片修改后,只有点击节点的时候才会显示图片,刚加载进去不显示图片,加上下面代码即可显示

setTimeout(() => { // 解决echarts树图图片首次加载不出现的问题
echarts.init(chart).resize();
}, 200);
2.通过上述修改后,还是有bug,那就是点击父节点展开和合并子节点的时候,图片又会消失,所以又有了下方代码

echarts.init(chart).on('click', function() { // 解决点击父节点合并或展开后子节点图片不显示的问题
echarts.init(chart).resize();
});
3.整个完整组件代码如下:

<template>
<div>
<div ref="main" style=" 100%;height: 460px;"></div>
</div>
</template>

<script>
import echarts from 'echarts'
require('echarts/theme/macarons') // echarts theme

export default {
name: 'TrackChains',
data() {
return {
dataTree: [
{
'name': '创建文档',
'type': 'create',
'documentName': 'test.doc',
'documentId': '83f6-98ec3b3d11b0',
'circulationTimes': '0',
'filePath': 'c:\test.doc',
'fileSize': '10M',
'updateTime': '2021-10-20 10:37',
'terminalName': 'T10001',
'operatorName': 'U1',
'symbol': 'image://' + require('@/assets/trackChains/create.png'),
'children': [
{
'name': '编辑文档',
'type': 'edit',
'documentName': 'test.doc',
'documentId': '83f6-98ec3b3d11b0',
'circulationTimes': '0',
'filePath': 'c:\\test.doc',
'fileSize': '10M',
'updateTime': '2021-10-20 10:37',
'terminalName': 'T10001',
'operatorName': 'U1',
'symbol': 'image://' + require('@/assets/trackChains/edit.png'),
'children': [
{
'name': '重命名文档',
'type': 'rename',
'documentName': '测试.doc',
'documentId': '83f6-98ec3b3d11b0',
'circulationTimes': '0',
'filePath': 'c:\\测试.doc',
'fileSize': '10M',
'updateTime': '2021-10-20 10:37',
'terminalName': 'T10001',
'operatorName': 'U1',
'symbol': 'image://' + require('@/assets/trackChains/rename.png'),
'children': [
{
'name': '剪切文档',
'type': 'cat',
'documentName': '测试.doc',
'documentId': '83f6-98ec3b3d11b0',
'circulationTimes': '0',
'filePath': 'c:\\测试.doc',
'fileSize': '10M',
'updateTime': '2021-10-20 10:37',
'terminalName': 'T10001',
'operatorName': 'U1',
'symbol': 'image://' + require('@/assets/trackChains/cat.png'),
'children': [
{
'name': '流转(1002)',
'type': 'circulation',
'symbol': 'image://' + require('@/assets/trackChains/circulation.png')
}
]
}
]
},
{
'name': '复制文档',
'type': 'copy',
'documentName': 'test(1).doc',
'documentId': '83f6-98ec3b3d11b0',
'circulationTimes': '0',
'filePath': 'c:\\test(1).doc',
'fileSize': '10M',
'updateTime': '2021-10-20 10:37',
'terminalName': 'T10001',
'operatorName': 'U1',
'symbol': 'image://' + require('@/assets/trackChains/copy.png'),
'children': [
{
'name': '重命名文档',
'type': 'rename',
'documentName': 'dog.doc',
'documentId': '83f6-98ec3b3d11b0',
'circulationTimes': '0',
'filePath': 'c:\\dog.doc',
'fileSize': '10M',
'updateTime': '2021-10-20 10:37',
'terminalName': 'T10001',
'operatorName': 'U1',
'symbol': 'image://' + require('@/assets/trackChains/rename.png'),
'children': [
{
'name': '删除文档',
'type': 'delete',
'documentName': '测试.doc',
'documentId': '83f6-98ec3b3d11b0',
'circulationTimes': '0',
'filePath': 'c:\\测试.doc',
'fileSize': '10M',
'updateTime': '2021-10-20 10:37',
'terminalName': 'T10001',
'operatorName': 'U1',
'symbol': 'image://' + require('@/assets/trackChains/delete.png')
}
]
}
]
}
]
}
]
}
]
}
},
mounted: function() {
this.setOptions()
},
methods: {
// 实现自适应
day_init() {
const self = this; // 因为箭头函数会改变this指向,指向windows。所以先把this保存
const todaypieId = this.$refs.main
if (!todaypieId) {
return false;
} else {
setTimeout(() => {
window.onresize = function() {
// self.chart = echarts.init(self.$refs.myEchart);
self.chart_today = echarts.init(
todaypieId
);
self.chart_today.resize();
};
}, 200);
}
},
setOptions() {
// console.log('data', JSON.parse(JSON.stringify(this.dataTree)))
const defaultOpt = {
tooltip: {
trigger: 'item',
triggerOn: 'mousemove',
enterable: true, // 鼠标是否可进入提示框浮层中
formatter: this.formatterHover// 修改鼠标悬停显示的内容
},
series: [
{
type: 'tree',
data: this.dataTree,
top: '1%',
left: '7%',
bottom: '1%',
right: '20%',
// layout: 'radial',
label: {
position: 'left',
verticalAlign: 'middle',
align: 'right',
fontSize: 9
},
leaves: {
label: {
position: 'right',
verticalAlign: 'middle',
align: 'left'
}
},
symbolSize: [30, 30],
edgeForkPosition: '72%',
roam: true, // 鼠标缩放,拖拽整颗树
expandAndCollapse: true, // 无关的子树折叠收起
animationDuration: 550,
animationDurationUpdate: 750,
'50%'// 组件宽度
}
]
}

const chart = this.$refs.main
if (chart) {
setTimeout(() => { // 解决echarts树图图片首次加载不出现的问题
echarts.init(chart).resize();
}, 200);
echarts.init(chart).setOption(defaultOpt); // 将画布添加到页面中
echarts.init(chart).on('click', function() { // 解决点击父节点合并或展开后子节点图片不显示的问题
echarts.init(chart).resize();
});
}
},
/**
* 鼠标悬停时,显示节点详情
* @param params 当前悬停的详细信息
* @returns {string|*}
*/
formatterHover(params) {
const deviceType = params.data.type;
if (deviceType != 'circulation') {
return '<span style="padding-left:5px;height:20px;line-height:20px;display: inline-block;font-size: 13px;">文档编辑方式:' + params.data.name + '</span>' + '<br>' +
'<span style="padding-left:5px;height:20px;line-height:20px;display: inline-block;font-size: 13px;">文档名称:' + params.data.documentName + '</span>' + '<br>' +
'<span style="padding-left:5px;height:20px;line-height:20px;display: inline-block;font-size: 13px;">文档ID:' + params.data.documentId + '</span>' + '<br>' +
'<span style="padding-left:5px;height:20px;line-height:20px;display: inline-block;font-size: 13px;">文件路径:' + params.data.filePath + '</span>' + '<br>' +
'<span style="padding-left:5px;height:20px;line-height:20px;display: inline-block;font-size: 13px;">文件大小:' + params.data.fileSize + '</span>' + '<br>' +
'<span style="padding-left:5px;height:20px;line-height:20px;display: inline-block;font-size: 13px;">终端名称:' + params.data.terminalName + '</span>' + '<br>' +
'<span style="padding-left:5px;height:20px;line-height:20px;display: inline-block;font-size: 13px;">操作员名称:' + params.data.operatorName + '</span>' + '<br>' +
'<span style="padding-left:5px;height:20px;line-height:20px;display: inline-block;font-size: 13px;">流转次数:' + params.data.circulationTimes + '</span>' + '<br>' +
'<span style="padding-left:5px;height:20px;line-height:20px;display: inline-block;font-size: 13px;">更新时间:' + params.data.updateTime + '</span>' + '<br>'
} else {
return params.data.name
}
}
}
}
</script>

<style scoped>

</style>
如下想用js实现上述代码,可参选另一篇文章:参考地址
https://blog.csdn.net/qq_36509946/article/details/108219598

正道的光终将来临,当太阳升起的时候,光芒总会普照大地温暖人间。些许的阴霾也终会有被阳光洒满的一天
原文地址:https://www.cnblogs.com/sjruxe/p/15568287.html