Lynnyin

 

点击上图人员切换至下方股权关系图,点击的为公司则继续在该图展示被点击公司的公司股份结构图,点击股权关系图切换至上图公司股份结构图

 公司股份结构图:https://gallery.echartsjs.com/editor.html?c=xkiiaUN8q     (他人编写)

股权关系图:https://gallery.echartsjs.com/editor.html?c=xvLVfMXW2m   (他人编写)

他人写的股权穿透图

 

 

该图有一处无法满足我个人需求,点击子公司进行相应的操作。但是该方法不支持点击点击事件,因为点击区域由下图红色框树形设置的大小决定,当Size为1的时候则能够被点击的区域极小。

 

 

 以下修正后的代码可支持点击事件:https://gallery.echartsjs.com/editor.html?c=xpXuQej3au&v=2

只写了部分我认为比较重要的注释,以下为代码

var data2 = [{
        name: "马云",
        children: [{ //子集
            name: "北京国风信通科技有限公司",
            value: \'控股\',
            percent: \'60%\',
            money: \'120万元\'
        },
        {
            name: "北京阿里巴巴信息技术有限公司",
            value: \'\',
            percent: \'1.43%\',
            money: \'800万元\'
        },
        {
            name: "高德软件有限公司",
            value: \'控股\',
            percent: \'67%\',
            money: \'16242.4242万元\'
        }, {
            name: "杭州大井头贰拾贰号文化艺术有限公司",
            value: \'控股\',
            percent: \'99%\',
            money: \'990万元\'
        }
        ]
    }];

  var  option = {
        tooltip: {
            trigger: \'item\',
            formatter: \'{b}\'
        },
        series: [{
            type: \'tree\',
            name: \'股权穿透图\',
            edgeShape: \'polyline\', //链接线是折现还是曲线
            orient: \'TB\',//树形图的显示方向TB:从上往下显示
            data: data2,
            width: 1000,//树形图宽
            height: 200,//树形图高
            top: \'30%\',//树型图整体偏移
            left: \'10%\',//树型图整体偏移
            symbolSize: [150, 40],//设置自己选择区域的宽高
            symbol: \'rect\',//子级选择区域的形状默认circle(圆形),rect矩形
            roam: true,//鼠标移到区块时会显示一个灰色背景的title,移动不同区域时是否开启滑动动画
            initialTreeDepth: 10,//树图初始展开的层级(深度),默认展开几层子节点
            itemStyle: {//symbol的样式
                color: \'#fff\',
                borderColor: \'#fff\',
                offset: [-150, 50]
            },
            label: {
                normal: {//蓝色框的配置
                    position: [-70, 30],//蓝色框的定位
                    verticalAlign: \'middle\',
                    align: \'left\',//框框的对其方向可以配合position定位到自己想要的位置
                    backgroundColor: \'#0084ff\',
                    color: \'#fff\',
                    padding: [15, 132],//内填充
                    borderWidth: 2,//边框宽度
                    borderColor: \'#0070d9\',
                    fontWeight: \'bold\',
                    formatter: [
                        \'{box|{b}}\'
                    ].join(\'\n\'),
                    rich: {
                        box: {
                            height: 30,
                            color: \'#fff\',
                            padding: [0, 5],
                            align: \'center\',
                            fontWeight: \'bold\',
                            fontSize: 16,

                        }
                    }
                },
            },
            leaves: {
                label: {
                    normal: {//子级框的配置
                        position: [-20, 30],//子级框的定位
                        verticalAlign: \'middle\',
                        align: \'left\',
                        backgroundColor: \'#fff\',
                        padding: [15, 40],
                        fontSize: 12,
                        fontWeight: \'normal\',
                        width: 100,
                        borderColor: \'#ccc\',
                        borderWidth: 1,
                        formatter: function (param) {
                            console.log(param);
                            let money = \'认缴金额:\' + param.data.money;
                            let percent = param.data.percent;
                            let name = param.name.substring(0, 11) + \'\n\' + param.name.substring(11);
                            let konggu = param.value;
                            if (konggu.length === 0) {
                                return [
                                    `{percent|${percent}}`,
                                    `{name|${name}}`,
                                    `{money|${money}}`
                                ].join(\'\n\');
                            } else {
                                return [
                                    `{konggu|${konggu}}`,
                                    `{percent|${percent}}`,
                                    `{name|${name}}`,
                                    `{money|${money}}`
                                ].join(\'\n\');
                            }

                        },
                        rich: {
                            konggu: {
                                color: \'#0f8bff\',
                                padding: [-50, 10],
                                height: 18,
                                distance: 10,
                                align: \'left\',
                                verticalAlign: \'top\',
                                fontSize: 12,
                                borderWidth: 1,
                                fontWeight: \'normal\',
                            },
                            percent: {
                                height: 18,
                                color: \'#0f8bff\',
                                padding: [-50, 10],
                                align: \'right\',
                                verticalAlign: \'top\',
                                fontSize: 12,
                                borderColor: \'red\',
                                borderWidth: 0,
                                fontWeight: \'normal\'
                            },
                            name: {
                                height: 18,
                                color: \'#000\',
                                padding: [0, 5],
                                align: \'center\',
                                fontSize: 12,
                            },
                            money: {
                                height: 18,
                                color: \'DarkGray\',
                                padding: [0, 5],
                                align: \'center\',
                                fontSize: 12,
                                borderWidth: 2,
                                fontWeight: \'normal\'
                            }
                        }
                    }
                }
            },
            lineStyle: {
                color: \'#909090\',

            },
            expandAndCollapse: false,//是否开启点击父节点,展开及收缩子节点
            animationDuration: 550,
            animationDurationUpdate: 750
        },]
    };
    myChart1.setOption(option);
    myChart1.on(\'click\', function (params) {
        alert(111);
    })

 

分类:

技术点:

相关文章: