赞
踩
Echarts树状图每层级样式
<template> <div :style="{height: chartHeight + 'px'}"> <div ref="myChart" style="height: 300px" id="chart-tree"></div> </div> </template> <script> export default { data() { return { chartHeight: 1000, linkInfoTree:[] //属性数据 } }, methods:{ getGQRightTree(){ let myChart = echarts.init(this.$refs.myChart); for (let i in this.linkInfoTree) { // 设置指定节点样式 if (this.linkInfoTree[i].id == 1) { let arr = this.linkInfoTree[i].children this.linkInfoTree[i].label = { color: '#fff', backgroundColor:'#409eff', padding: [6, 12], width:70, overflow: 'truncate', // truncate截断,并在末尾显示ellipsis配置的文本,默认为...;break换行;breakAll换行,并强制单词内换行 ellipsis: '...', }; for(let k in arr) { arr[k].label = { color: '#fff', backgroundColor:'#409eff', padding: [6, 12], width:70, overflow: 'truncate', // truncate截断,并在末尾显示ellipsis配置的文本,默认为...;break换行;breakAll换行,并强制单词内换行 ellipsis: '...', }; } }else { this.linkInfoTree[i].label = { backgroundColor: '#F0F5FA', borderColor: '#409eff', borderWidth: 1, borderType: 'solid', borderRadius: 4, padding: [6, 12], color: '#000', // 字体颜色 overflow: 'truncate', // truncate截断,并在末尾显示ellipsis配置的文本,默认为...;break换行;breakAll换行,并强制单词内换行 ellipsis: '...', }; } } let option1={ tooltip: { trigger: 'item', triggerOn: 'mousemove' }, series: [ { type: 'tree', data: this.linkInfoTree, top: "1%", left: "10%", bottom: "1%", right: "50%", layout: 'orthogonal', // 树图的布局,正交orthogonal和径向radial两种 // orient: 'LR', // 树图中正交布局的方向,'LR','RL','TB','BT',只有布局是正交时才生效 edgeShape: 'curve', // 树图边的形状,有曲线curve和折线polyline两种,只有正交布局下生效 roam: false, // 是否开启鼠标缩放或平移,默认false initialTreeDepth: 2, // 树图初始的展开层级(深度),根节点是0,不设置时全部展开 // symbol: 'arrow', // 标记的图形,默认是emptyCircle;circle,rect,roundRect,triangle,diamond,pin,arrow,none // symbolRotate: 270, // 配合arrow图形使用效果较好 symbolSize: 0, // 大于0时是圆圈,等于0时不展示,标记的大小 itemStyle: { // 树图中每个节点的样式 color: '#1890FF', // 节点未展开时的填充色 borderColor: '#409eff', // 图形的描边颜色 borderWidth: 1, // 描边线宽,为0时无描边 borderType: 'dotted', // 描边类型 borderCap: 'square', // 指定线段末端的绘制方式butt方形结束,round圆形结束,square // shadowColor: 'rgba(0,121,221,0.3)', // 阴影颜色 // shadowBlur: 16, // 图形阴影的模糊大小 // opacity: 1 // 图形透明度 }, label: { // 每个节点对应的文本标签样式 show: true, // 是否显示标签 distance: 3, // 文本距离图形元素的距离 position: 'left', // 标签位置 verticalAlign: 'middle', // 文字垂直对齐方式,默认自动,top,middle,bottom align: 'center', // 文字水平对齐方式,默认自动,left,right,center fontSize: 12, // 字体大小 color: '#000', // 字体颜色 // backgroundColor: '#F0F5FA', // borderColor: '#409eff', // borderWidth: 1, // borderType: 'solid', // borderRadius: 4, // padding: [6, 12], // shadowColor: 'rgba(0,121,221,0.3)', // 文字块的背景阴影颜色 // shadowBlur: 6, // 文字块的背景阴影长度 width:150, // 文字超出宽度是否截断或者换行;只有配置width时有效 overflow: 'truncate', // truncate截断,并在末尾显示ellipsis配置的文本,默认为...;break换行;breakAll换行,并强制单词内换行 ellipsis: '...', // 第三节点之后的样式 formatter:(params) =>{ if(params.treeAncestors.length == 4 || params.treeAncestors.length == 5 || params.treeAncestors.length == 6 ){ return `{labelTwo|${params.name}}` } }, rich:{ labelTwo:{ padding: [6, 12], backgroundColor: '#F0F5FA', borderColor: '#409eff', borderWidth: 1, borderType: 'solid', borderRadius: 4, }, } }, lineStyle: { // 树图边的样式 color: '#409eff', // 树图边的颜色 width: 1, // 树图边的宽度 curveness: 0.5, // 树图边的曲度\ height:20, padding: [6, 12] // shadowColor: 'rgba(0, 0, 0, 0.5)', // 阴影颜色 // shadowBlur: 10 // 图形阴影的模糊大小 }, emphasis: { // 树图中图形和标签高亮的样式 focus: 'descendant' }, blur: { // 淡出状态的相关配置,开启emphasis.focus后有效 itemStyle: {}, // 节点的样式 lineStyle: {}, // 树图边的样式 label: {} // 淡出标签的文本样式 }, leaves: { // 叶子节点的特殊配置 label: { // 叶子节点的文本标签样式 distance: 8, // color: '#1890FF', position: 'right', verticalAlign: 'middle', align: 'left', // 第三节点之后带子级个数 formatter:(params) =>{ if(params.treeAncestors.length == 4 || params.treeAncestors.length == 5 || params.treeAncestors.length == 6 ){ let str = '-' if(params.data.children.length > 0) { return `{labelName|${params.name}}{labelMark|${str}}{length|${params.data.children.length}}` }else { return `{labelTwo|${params.name}}` } } }, rich:{ labelTwo:{ padding: [6,8], backgroundColor: '#F0F5FA', borderColor: '#409eff', borderWidth: 1, borderType: 'solid', borderRadius: 4, }, labelName:{ padding: [6, 8], backgroundColor: '#F0F5FA', borderColor: '#409eff', borderWidth: 1, borderType: 'solid', borderRadius: 4, }, labelMark:{ color: '#409eff' }, length:{ padding: [4,4], fontSize: 12, backgroundColor: '#F0F5FA', borderColor: '#409eff', borderWidth: 1, borderType: 'solid', borderRadius: 10, } } }, itemStyle: { }, // 叶子节点的样式 emphasis: {}, // 叶子节点高亮状态的配置 blur: {}, // 叶子节点淡出状态的配置 select: {} // 叶子节点选中状态的配置 }, animation: true, // 是否开启动画 expandAndCollapse: true, // 子树折叠和展开的交互,默认打开 animationDuration: 550, // 初始动画的时长 animationEasing: 'linear', // 初始动画的缓动效果 animationDelay: 0, // 初始动画的延迟 animationDurationUpdate: 750, // 数据更新动画的时长 animationEasingUpdate: 'cubicInOut', // 数据更新动画的缓动效果 } ] } option1 && myChart.setOption(option1); this.initChartTree(option1) }, // 高度自适应 initChartTree(option1) { let myChart = echarts.init(this.$refs.myChart) // this.$nextTick(() => { option1 && myChart.setOption(option1) const eleArr = Array.from(new Set(myChart._chartsViews[0]._data._graphicEls)) const itemHeight = 30 const currentHeight = itemHeight * (eleArr.length - 1) || itemHeight const newHeight = Math.max(currentHeight, itemHeight) this.chartHeight = newHeight myChart.resize({ height: newHeight }) // }) }, } } </script>```
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。