echarts-tree 自定义label,实现组织架构

本文介绍如何使用ECharts库根据部门ID为组织结构图中的节点设置不同颜色边框和标签样式,通过`indexflag`判断并应用`#C5C4D1`, `#B1D0A5`, `#A4B6F1`等颜色,实现个性化展示。同时展示了如何通过formatter和rich对象自定义label内容。
摘要由CSDN通过智能技术生成

效果如下

 js

methods:

根据不同部门 设置不同的颜色边框

遍历所有节点 根据不同id设置不同label

			//遍历所有节点 添加样式
			readNodes: function(nodes) {
				var _this = this
				for (let item of nodes) { // js遍历树形数组结构
					if (item.children && item.children.length) {
						_this.readNodes(item.children)
					}
					//汽车电子研究院
					if (item.indexflag == 3) {
						item.lineStyle = {
							color: '#C5C4D1',
						}
						item.label = {
							backgroundColor: "#FFF",
							shadowColor: "#C5C4D1",
							shadowBlur: 0,
							shadowOffsetY: -2,
							offset: [0, -50],
						}

					}
					//汽车电子研究院
					if (item.indexflag == 301 || String(item.depart_id).substring(0, 3) == "301") {
						item.lineStyle = {
							color: '#B1D0A5',
						}
						item.label = {
							// borderColor:"#B1D0A5",
							// borderWidth:2,		
							backgroundColor: "#FFF",
							shadowColor: "#B1D0A5",
							shadowBlur: 0,
							shadowOffsetY: -2,
						}

					} else if (item.indexflag == 302 || String(item.depart_id).substring(0, 3) == "302") {
						item.lineStyle = {
							color: '#A4B6F1'
						}
						item.label = {
							backgroundColor: "#FFF",
							shadowColor: "#A4B6F1",
							shadowBlur: 0,
							shadowOffsetY: -2,
						}
						//汽车电子营销部
					} else if (item.indexflag == 303 || String(item.depart_id).substring(0, 3) == "303") {
						item.lineStyle = {
							color: '#85B8F1'
						}
						item.label = {
							backgroundColor: "#FFF",
							shadowColor: "#85B8F1",
							shadowBlur: 0,
							shadowOffsetY: -2,
						}
						//综合管理
					} else if (item.indexflag == 304 || String(item.depart_id).substring(0, 3) == "304") {
						item.lineStyle = {
							color: '#9FD1CE'
						}
						item.label = {
							backgroundColor: "#FFF",
							shadowColor: "#9FD1CE",
							shadowBlur: 0,
							shadowOffsetY: -2,
						}
						//制造部
					} else if (item.indexflag == 305 || String(item.depart_id).substring(0, 3) == "305") {
						item.lineStyle = {
							color: '#A384E3'
						}
						item.label = {
							backgroundColor: "#FFF",
							shadowColor: "#A384E3",
							shadowBlur: 0,
							shadowOffsetY: -2,
						}
						//财务部
					} else if (item.indexflag == 306 || String(item.depart_id).substring(0, 3) == "306") {
						item.lineStyle = {
							color: '#FA92B2'
						}
						item.label = {
							backgroundColor: "#FFF",
							shadowColor: "#FA92B2",
							shadowBlur: 0,
							shadowOffsetY: -2,
						}
						//质量部
					} else if (item.indexflag == 307 || String(item.depart_id).substring(0, 3) == "307") {
						item.lineStyle = {
							color: '#F6AF8E'
						}
						item.label = {
							backgroundColor: "#FFF",
							shadowColor: "#F6AF8E",
							shadowBlur: 0,
							shadowOffsetY: -2,
						}
						//采购部
					} else if (item.indexflag == 308 || String(item.depart_id).substring(0, 3) == "308") {

						item.lineStyle = {
							color: '#F5D671'
						}
						item.label = {
							backgroundColor: "#FFF",
							shadowColor: "#F5D671",
							shadowBlur: 0,
							shadowOffsetY: -2,
						}
					}


				}
			},

option

通过formatter自定义label里的内容

下面是echarts 官网示例

 formatter: [
        '{a|这段文本采用样式a}',
        '{b|这段文本采用样式b}这段用默认样式{x|这段用样式x}'
    ].join('\n'),

rich里绑定样式

 rich: {
        a: {
            color: 'red',
            lineHeight: 10
        },
        b: {
            backgroundColor: {
                image: 'xxx/xxx.jpg'
            },
            height: 40
        },
        x: {
            fontSize: 18,
            fontFamily: 'Microsoft YaHei',
            borderColor: '#449933',
            borderRadius: 4
        },
        ...
    }

我自己的部分代码

series:[{

    label:{
        formatter: function(params) {
            if (params.data.indexflag < 10) {
                return "{icon_3|}" + "{depart_name|" + '\n' + params.data.depart_name+ "}"                         
                + '\n' + "{perNum|" + params.data.person_unm + '/' + params.data.organizer 
                + "}" + '\n' + "{name|" + "" + "}";
            }
    
        }
   rich:{
        icon_3: {
	    width: 35,
	    height: 35,
	    lineHeight: 42,
	    align: "center",
	    backgroundColor: {
	    image: "src/assets/img/icon_3.png"
	    }
									},

   }     
  }

}]
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
el-tree是一个Vue组件,用于展示树形结构的数据。可以根据需求自定义el-tree的样式和行为。 在引用和中提供了两种使用el-tree的示例代码。 第一种示例代码中,el-tree的class设置为"treeitems",通过:data属性绑定了数据源,通过node-key属性指定了节点的唯一标识符,通过:props属性指定了节点的标签和子节点属性。通过:load属性可以设置异步加载节点的方法。通过lazy属性设置懒加载。通过:default-expanded-keys属性设置默认展开的节点。通过@node-click事件可以监听节点的点击事件。可以根据具体需求进行修改和定制。 第二种示例代码中,el-tree的:data属性绑定了名为data5的数据源,:props属性指定了节点的标签和子节点属性。通过show-checkbox属性可以显示复选框。通过node-key属性指定了节点的唯一标识符。通过default-expand-all属性设置默认展开所有节点。可以根据具体需求进行修改和定制。 你可以根据具体的需求,进行相应的修改和定制,比如修改节点的样式、添加动画效果等。你可以在el-tree组件中的<template>中添加自己的代码,比如修改箭头的打开和折叠样式,添加动画效果等。你可以在<template>中添加对应的样式、动画等代码。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作](https://download.csdn.net/download/weixin_38542223/13125838)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [自定义《element-UI》el-tree 的样式 、亲测管用](https://blog.csdn.net/m0_57904695/article/details/123514519)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值