当前位置:   article > 正文

echarts自定义图片首次加载不显示的问题的修改<vue>_js整合echars第一次展示图空

js整合echars第一次展示图空

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

  1. setTimeout(() => { // 解决echarts树图图片首次加载不出现的问题
  2. echarts.init(chart).resize();
  3. }, 200);

2.通过上述修改后,还是有bug,那就是点击父节点展开和合并子节点的时候,图片又会消失,所以又有了下方代码

  1. echarts.init(chart).on('click', function() { // 解决点击父节点合并或展开后子节点图片不显示的问题
  2. echarts.init(chart).resize();
  3. });

3.整个完整组件代码如下:

  1. <template>
  2. <div>
  3. <div ref="main" style="width: 100%;height: 460px;"></div>
  4. </div>
  5. </template>
  6. <script>
  7. import echarts from 'echarts'
  8. require('echarts/theme/macarons') // echarts theme
  9. export default {
  10. name: 'TrackChains',
  11. data() {
  12. return {
  13. dataTree: [
  14. {
  15. 'name': '创建文档',
  16. 'type': 'create',
  17. 'documentName': 'test.doc',
  18. 'documentId': '83f6-98ec3b3d11b0',
  19. 'circulationTimes': '0',
  20. 'filePath': 'c:\test.doc',
  21. 'fileSize': '10M',
  22. 'updateTime': '2021-10-20 10:37',
  23. 'terminalName': 'T10001',
  24. 'operatorName': 'U1',
  25. 'symbol': 'image://' + require('@/assets/trackChains/create.png'),
  26. 'children': [
  27. {
  28. 'name': '编辑文档',
  29. 'type': 'edit',
  30. 'documentName': 'test.doc',
  31. 'documentId': '83f6-98ec3b3d11b0',
  32. 'circulationTimes': '0',
  33. 'filePath': 'c:\\test.doc',
  34. 'fileSize': '10M',
  35. 'updateTime': '2021-10-20 10:37',
  36. 'terminalName': 'T10001',
  37. 'operatorName': 'U1',
  38. 'symbol': 'image://' + require('@/assets/trackChains/edit.png'),
  39. 'children': [
  40. {
  41. 'name': '重命名文档',
  42. 'type': 'rename',
  43. 'documentName': '测试.doc',
  44. 'documentId': '83f6-98ec3b3d11b0',
  45. 'circulationTimes': '0',
  46. 'filePath': 'c:\\测试.doc',
  47. 'fileSize': '10M',
  48. 'updateTime': '2021-10-20 10:37',
  49. 'terminalName': 'T10001',
  50. 'operatorName': 'U1',
  51. 'symbol': 'image://' + require('@/assets/trackChains/rename.png'),
  52. 'children': [
  53. {
  54. 'name': '剪切文档',
  55. 'type': 'cat',
  56. 'documentName': '测试.doc',
  57. 'documentId': '83f6-98ec3b3d11b0',
  58. 'circulationTimes': '0',
  59. 'filePath': 'c:\\测试.doc',
  60. 'fileSize': '10M',
  61. 'updateTime': '2021-10-20 10:37',
  62. 'terminalName': 'T10001',
  63. 'operatorName': 'U1',
  64. 'symbol': 'image://' + require('@/assets/trackChains/cat.png'),
  65. 'children': [
  66. {
  67. 'name': '流转(1002)',
  68. 'type': 'circulation',
  69. 'symbol': 'image://' + require('@/assets/trackChains/circulation.png')
  70. }
  71. ]
  72. }
  73. ]
  74. },
  75. {
  76. 'name': '复制文档',
  77. 'type': 'copy',
  78. 'documentName': 'test(1).doc',
  79. 'documentId': '83f6-98ec3b3d11b0',
  80. 'circulationTimes': '0',
  81. 'filePath': 'c:\\test(1).doc',
  82. 'fileSize': '10M',
  83. 'updateTime': '2021-10-20 10:37',
  84. 'terminalName': 'T10001',
  85. 'operatorName': 'U1',
  86. 'symbol': 'image://' + require('@/assets/trackChains/copy.png'),
  87. 'children': [
  88. {
  89. 'name': '重命名文档',
  90. 'type': 'rename',
  91. 'documentName': 'dog.doc',
  92. 'documentId': '83f6-98ec3b3d11b0',
  93. 'circulationTimes': '0',
  94. 'filePath': 'c:\\dog.doc',
  95. 'fileSize': '10M',
  96. 'updateTime': '2021-10-20 10:37',
  97. 'terminalName': 'T10001',
  98. 'operatorName': 'U1',
  99. 'symbol': 'image://' + require('@/assets/trackChains/rename.png'),
  100. 'children': [
  101. {
  102. 'name': '删除文档',
  103. 'type': 'delete',
  104. 'documentName': '测试.doc',
  105. 'documentId': '83f6-98ec3b3d11b0',
  106. 'circulationTimes': '0',
  107. 'filePath': 'c:\\测试.doc',
  108. 'fileSize': '10M',
  109. 'updateTime': '2021-10-20 10:37',
  110. 'terminalName': 'T10001',
  111. 'operatorName': 'U1',
  112. 'symbol': 'image://' + require('@/assets/trackChains/delete.png')
  113. }
  114. ]
  115. }
  116. ]
  117. }
  118. ]
  119. }
  120. ]
  121. }
  122. ]
  123. }
  124. },
  125. mounted: function() {
  126. this.setOptions()
  127. },
  128. methods: {
  129. // 实现自适应
  130. day_init() {
  131. const self = this; // 因为箭头函数会改变this指向,指向windows。所以先把this保存
  132. const todaypieId = this.$refs.main
  133. if (!todaypieId) {
  134. return false;
  135. } else {
  136. setTimeout(() => {
  137. window.onresize = function() {
  138. // self.chart = echarts.init(self.$refs.myEchart);
  139. self.chart_today = echarts.init(
  140. todaypieId
  141. );
  142. self.chart_today.resize();
  143. };
  144. }, 200);
  145. }
  146. },
  147. setOptions() {
  148. // console.log('data', JSON.parse(JSON.stringify(this.dataTree)))
  149. const defaultOpt = {
  150. tooltip: {
  151. trigger: 'item',
  152. triggerOn: 'mousemove',
  153. enterable: true, // 鼠标是否可进入提示框浮层中
  154. formatter: this.formatterHover// 修改鼠标悬停显示的内容
  155. },
  156. series: [
  157. {
  158. type: 'tree',
  159. data: this.dataTree,
  160. top: '1%',
  161. left: '7%',
  162. bottom: '1%',
  163. right: '20%',
  164. // layout: 'radial',
  165. label: {
  166. position: 'left',
  167. verticalAlign: 'middle',
  168. align: 'right',
  169. fontSize: 9
  170. },
  171. leaves: {
  172. label: {
  173. position: 'right',
  174. verticalAlign: 'middle',
  175. align: 'left'
  176. }
  177. },
  178. symbolSize: [30, 30],
  179. edgeForkPosition: '72%',
  180. roam: true, // 鼠标缩放,拖拽整颗树
  181. expandAndCollapse: true, // 无关的子树折叠收起
  182. animationDuration: 550,
  183. animationDurationUpdate: 750,
  184. width: '50%'// 组件宽度
  185. }
  186. ]
  187. }
  188. const chart = this.$refs.main
  189. if (chart) {
  190. setTimeout(() => { // 解决echarts树图图片首次加载不出现的问题
  191. echarts.init(chart).resize();
  192. }, 200);
  193. echarts.init(chart).setOption(defaultOpt); // 将画布添加到页面中
  194. echarts.init(chart).on('click', function() { // 解决点击父节点合并或展开后子节点图片不显示的问题
  195. echarts.init(chart).resize();
  196. });
  197. }
  198. },
  199. /**
  200. * 鼠标悬停时,显示节点详情
  201. * @param params 当前悬停的详细信息
  202. * @returns {string|*}
  203. */
  204. formatterHover(params) {
  205. const deviceType = params.data.type;
  206. if (deviceType != 'circulation') {
  207. return '<span style="padding-left:5px;height:20px;line-height:20px;display: inline-block;font-size: 13px;">文档编辑方式:' + params.data.name + '</span>' + '<br>' +
  208. '<span style="padding-left:5px;height:20px;line-height:20px;display: inline-block;font-size: 13px;">文档名称:' + params.data.documentName + '</span>' + '<br>' +
  209. '<span style="padding-left:5px;height:20px;line-height:20px;display: inline-block;font-size: 13px;">文档ID:' + params.data.documentId + '</span>' + '<br>' +
  210. '<span style="padding-left:5px;height:20px;line-height:20px;display: inline-block;font-size: 13px;">文件路径:' + params.data.filePath + '</span>' + '<br>' +
  211. '<span style="padding-left:5px;height:20px;line-height:20px;display: inline-block;font-size: 13px;">文件大小:' + params.data.fileSize + '</span>' + '<br>' +
  212. '<span style="padding-left:5px;height:20px;line-height:20px;display: inline-block;font-size: 13px;">终端名称:' + params.data.terminalName + '</span>' + '<br>' +
  213. '<span style="padding-left:5px;height:20px;line-height:20px;display: inline-block;font-size: 13px;">操作员名称:' + params.data.operatorName + '</span>' + '<br>' +
  214. '<span style="padding-left:5px;height:20px;line-height:20px;display: inline-block;font-size: 13px;">流转次数:' + params.data.circulationTimes + '</span>' + '<br>' +
  215. '<span style="padding-left:5px;height:20px;line-height:20px;display: inline-block;font-size: 13px;">更新时间:' + params.data.updateTime + '</span>' + '<br>'
  216. } else {
  217. return params.data.name
  218. }
  219. }
  220. }
  221. }
  222. </script>
  223. <style scoped>
  224. </style>

如下想用js实现上述代码,可参选另一篇文章:参考地址

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/124045
推荐阅读