每周总结终

Echarts绘制图谱

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
    <link rel="stylesheet" type="text/css" href="resource/layui/css/layui.css" />
    <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.0.0-rc.1/echarts.min.js"></script>

    <title>图谱</title>
    <style>
        .header-logo{font-family:BarbaraHand;font-size:40px;margin-top: 1px; color:#444647;text-align:center;position:absolute;left:900px}
        .head{
            width: 15%;
            background: #F0F7FC;
        }

        #money{
            width: 26%;
        }

    </style>
</head>
<body>
<blockquote class="layui-elem-quote" style="border-left-width: 0px; margin-bottom:-29px;">

        <div class="layui-form">
            <div class="layui-form-item">
                <div class="layui-inline">
                    <label class="layui-form-label" style="line-height:36px; margin-left: -23px;margin-top: 1px">查询条件</label>
                    <div class="layui-input-inline" style="margin-top: 8px;">
                        <select name="name"   lay-search="">
                            <option value="南京师范大学印刷厂">南京师范大学印刷厂</option>
                            <option value="南京师范大学科技实业集团公司">南京师范大学科技实业集团公司</option>
                            <option value="江苏省房地产建筑装饰工程总公司">江苏省房地产建筑装饰工程总公司</option>
                            <option value="江苏金飞达电动工具有限公司">江苏金飞达电动工具有限公司</option>
                            <option value="江苏大方经营公司">江苏大方经营公司</option>
                            <option value="江苏省环本农场">江苏省环本农场</option>
                            <option value="江苏省消防工程公司">江苏省消防工程公司</option>
                            <option value="中国有色金属进出口江苏公司">中国有色金属进出口江苏公司</option>
                            <option value="江苏水利经济实业开发公司">江苏水利经济实业开发公司</option>
                            <option value="江苏远东国际船舶代理有限公司">江苏远东国际船舶代理有限公司</option>
                            <option value="江苏苏源新兴电建实业有限公司">江苏苏源新兴电建实业有限公司</option>
                            <option value="南京邮电大学电信工程公司">南京邮电大学电信工程公司</option>
                            <option value="江苏华隆兴进出口公司">江苏华隆兴进出口公司</option>
                        </select>
                    </div>
                    <label class="layui-form-label"><input type="button" class="layui-btn layui-btn-normal" value="查询" onclick="quick()"></label>
                    <label class="layui-form-label" ><a  class="header-logo">Mr.Zhang</a></label>
                </div>
            </div>
        </div>
</blockquote>

<div class="layui-form">
    <table class="layui-table">
        <colgroup>
            <col width="150">
            <col width="150">
            <col width="200">
            <col>
        </colgroup>
        <tbody>
        <tr>
            <td class="head">法定代表人</td>
            <td colspan="3" id="person_intro">
                <div>
                    <div class="name-show">
                        帅
                    </div>
                    <div class="name">
                        <a id="per-info" href="#">张大帅</a>
                        <div class="qy">
                            任职 <b class="num">全球</b> 家企业
                        </div>
                    </div>
                    <div class="clear"></div>
                </div>
            </td>
        </tr>
        <tr>
            <td class="head">注册资本</td>
            <td id="money">1千万亿</td>
            <td class="head">成立日期</td>
            <td id="begin_date">远古时期</td>
        </tr>
        <tr>
            <td class="head">经营状态</td>
            <td id="state">世界第一强</td>
            <td class="head">统一社会信用代码</td>
            <td id="social_flag">001</td>
        </tr>
        <tr>
            <td class="head">纳税人识别号</td>
            <td id="person_flag">101</td>
            <td class="head">注册号</td>
            <td id="sign_flag">adqwerewewt</td>
        </tr>
        <tr>
            <td class="head">组织机构代码</td>
            <td id="ori_flag">45qwe12014</td>
            <td class="head">公司类型</td>
            <td id="type">国企</td>
        </tr>
        <tr>
            <td class="head">人员规模</td>
            <td id="amount">100</td>
            <td class="head">营业期限</td>
            <td id="date">保密</td>
        </tr>
        <tr>
            <td class="head">登记机关</td>
            <td id="sign_ori">神州</td>
            <td class="head">核准日期</td>
            <td id="check_date">1.1</td>
        </tr>
        <tr>
            <td class="head">英文名</td>
            <td id="en_name">DaShuai</td>
            <td class="head">曾用名</td>
            <td id="pre_name">无</td>
        </tr>
        <tr>
            <td class="head">所属地区</td>
            <td id="province">无</td>
            <td class="head">所属行业</td>
            <td id="industry">all</td>
        </tr>
        <tr>
            <td class="head">企业地址</td>
            <td colspan="3" id="q_address">all</td>
        </tr>
        <tr>
            <td class="head">经营范围</td>
            <td colspan="3" id="s_area">all</td>
        </tr>
        </tbody>
    </table>
</div>

<div id="main" style="width: 900px;height:400px;">股权结构</div>
<div id="main2" style="width: 1500px;height:800px;">投资族谱</div>
<div id="main3" style="width: 1500px;height:800px;">企业族谱</div>
<div id="main4" style="width: 900px;height:400px;">疑似关系</div>
</body>
<script src="resource/layui/layui.all.js"></script>
</html>
<script>

    function quick() {
        var name = $('select[name=name]').val();
        if (name == "") {
            alert("输入为空");
        }
        $.post(
            'Servlet'
            , {'method': 'scan', 'name': name}
            , function (o) {
                var data = JSON.parse(o);
                console.log(data[0].address);
                if (data[0].begin_time == "NaT") {
                    bg = "未知日期"
                } else {
                    bg = data[0].begin_time;
                }
                if (data[0].during == "NaT") {
                    end = "未知日期"
                } else {
                    end = data[0].during;
                }
                $("#name").text(data[0].name);
                $("#phone").text(data[0].phone);
                $("#net").text(data[0].net);
                $("#email").text(data[0].email);
                $("#address").text(data[0].address);
                $("#money").text(data[0].money);
                $("#begin_date").text(data[0].begin_date);
                $("#state").text(data[0].state);
                $("#social_flag").text(data[0].social_flag);
                $("#person_flag").text(data[0].person_flag);
                $("#sign_flag").text(data[0].sign_flag);
                $("#ori_flag").text(data[0].ori_flag);
                $("#type").text(data[0].type);
                $("#amount").text(data[0].amount);
                $("#date").text(bg + " 至 " + end);
                $("#sign_ori").text(data[0].sign_ori);
                $("#check_date").text(data[0].check_date);
                $("#en_name").text(data[0].en_name);
                $("#pre_name").text(data[0].pre_name);
                $("#province").text(data[0].province);
                $("#industry").text(data[0].industry);
                $("#q_address").text(data[0].address);
                $("#s_area").text(data[0].s_area);
                $(".name-show").text(data[0].head_person[0]);
                $("#per-info").text(data[0].head_person);
            }
        )

        //获取数据
        $.getJSON("resource/json/"+name+".json",function (data) {
            //处理股权结构数据
            var pieData=[];
            var GQ=data.gqjg;
            console.log(GQ);
            for(i=0;i<GQ.data.length;i++){
                pieData.push({
                    name:GQ.data[i].name,
                    value:GQ.data[i].money
                })
            }
            GQJG(pieData);
            //投资图谱数据
            TZZP(data);
            QYTP(data);
            YSGX(data.ysgx);
        });
    }

    function GQJG(GQdata) {
        //股权结构
        var myChart = echarts.init(document.getElementById('main'));
        // 指定图表的配置项和数据

        option = {
            title: {
                text: '股权结构',
                left: 'center'
            },
            tooltip: {
                trigger: 'item',
                formatter: '{a} <br/>{b} : {c} ({d}%)'
            },
            legend: {
                left: 'center',
                top: 'bottom',
                data: ['rose1', 'rose2', 'rose3', 'rose4', 'rose5', 'rose6', 'rose7', 'rose8']
            },
            toolbox: {
                show: true,
                feature: {
                    mark: {show: true},
                    dataView: {show: true, readOnly: false},
                    magicType: {
                        show: true,
                        type: ['pie', 'funnel']
                    },
                    restore: {show: true},
                    saveAsImage: {show: true}
                }
            },
            series: [
                {
                    name: '面积模式',
                    type: 'pie',
                    radius: [30, 110],
                    center: ['75%', '50%'],
                    roseType: 'area',
                    data: GQdata
                }
            ]
        };
        myChart.setOption(option);
    }

    function TZZP(TZdata) {

        var treData1=[];
        var treData2=[];
        var TZ=TZdata.tzzp;
        for(i=0;i<TZ.dwtz.length;i++){
            treData1.push({
                name: TZ.dwtz[i].company+":"+TZ.dwtz[i].percent,
            });
        }
        for(j=0;j<TZ.gd.length;j++){
            treData2.push({
                name: TZ.gd[j].name+":"+TZ.gd[j].percent,
            });
        }
        var myChart2 = echarts.init(document.getElementById('main2'));
        option2 = {
            tooltip: {
                trigger: 'item',
                triggerOn: 'mousemove'
            },
            series:
                {
                    type: 'tree',
                    data:[
                        {
                            name:TZdata.name,
                            children:[{
                                name:'对外投资',
                                children:treData1
                            },{
                                name:'股东',
                                children:treData2
                            }
                    ],
                    left: '2%',
                    right: '2%',
                    top: '20%',
                    bottom: '8%',
                    symbol: 'emptyCircle',
                    orient: 'BT',
                    expandAndCollapse: true,
                    label: {
                        position: 'bottom',
                        rotate: 90,
                        verticalAlign: 'middle',
                        align: 'right'
                    },
                    leaves: {
                        label: {
                            position: 'top',
                            rotate: 90,
                            verticalAlign: 'middle',
                            align: 'left'
                        }
                    },
                    animationDurationUpdate: 750
                }
            ]
        }
        }
        myChart2.setOption(option2);
    }

    function QYTP(QYdata){
        var treData3=[];
        var treData4=[];
        var treData5=[];
        var QY=QYdata.qyzp;
        for(i=0;i<QY.dwtz.length;i++){
            treData3.push({
                name: QY.dwtz[i].name,
            });
        }
        for(j=0;j<QY.gd.length;j++){
            treData4.push({
                name: QY.gd[j].name,
            });
        }
        for(j=0;j<QY.gg.length;j++){
            treData5.push({
                name: QY.gg[j].name,
            });
        }
        var myChart3 = echarts.init(document.getElementById('main3'));
        option3 = {
            tooltip: {
                trigger: 'item',
                triggerOn: 'mousemove'
            },
            series:
                {
                    type: 'tree',
                    data:[
                        {
                            name:QYdata.name,
                            children:[{
                                name:'对外投资',
                                children:treData3
                            },{
                                name:'股东',
                                children:treData4
                            },{
                                name:'高管',
                                children:treData5
                            }
                            ],
                            left: '2%',
                            right: '2%',
                            top: '20%',
                            bottom: '8%',
                            symbol: 'emptyCircle',
                            orient: 'BT',
                            expandAndCollapse: true,
                            label: {
                                position: 'bottom',
                                rotate: 90,
                                verticalAlign: 'middle',
                                align: 'right'
                            },
                            leaves: {
                                label: {
                                    position: 'top',
                                    rotate: 90,
                                    verticalAlign: 'middle',
                                    align: 'left'
                                }
                            },
                            animationDurationUpdate: 750
                        }
                    ]
                }
        }
        myChart3.setOption(option3);

    }

    function YSGX(data){
        var myChart4 = echarts.init(document.getElementById('main4'));
        var sourceCompany=$('select[name=name]').val();
        var ysData=[
            {
                name: sourceCompany,
                symbolSize: 60,
                category: "源公司",
                des:"-"
            }
        ];
        var ysLinks=[];
        var categories=[
            {
                name:"源公司"
            },
            {
                name: "投资公司"
            },
            {
                name:"人员"
            }
        ];
        for(var i=0;i<data.length;i++){
            if(!isHasNode(ysData,data[i].from)){
                ysData.push({
                    name: data[i].from,
                    symbolSize: 40,
                    category: "人员",
                    des:"任职"+(parseInt(data[i].num)+1)+"家公司"
                })
            }
            if(!isHasNode(ysData,data[i].to)){
                ysData.push({
                    name: data[i].to,
                    symbolSize: 40,
                    category: "投资公司",
                    des:"-"
                });
                ysLinks.push({
                    source: data[i].frdb,
                    target: data[i].to,
                    des:"法人代表",
                    name:"关系",
                    label: {
                        normal: {
                            show: true,
                            formatter:"法人代表"
                        }
                    }
                });
            }
            ysLinks.push({
                source: data[i].from,
                target: data[i].to,
                des:data[i].relation,
                name:"关系",
                label: {
                    normal: {
                        show: true,
                        formatter:data[i].relation
                    }
                }
            });

        }
        option4 = {
            title: {
                top: 'bottom',
                left: 'right'
            },
            tooltip: {
                show: true,
                //对应json下nodes的des(详细描述)
                formatter: function(rela) {
                    return rela.data.name + ":" + rela.data.des;
                }
            },
            legend: [{
                // selectedMode: 'single',
                data: categories.map(function (a) {
                    return a.name;
                })
            }],
            animation: true,
            series : [
                {
                    name: '疑似关系',
                    type: 'graph',
                    layout: 'force',
                    categories: categories,
                    roam: true,
                    draggable: true,
                    label: {
                        position: 'right'
                    },
                    force: {
                        repulsion: 800
                    }
                }
            ]
        };
        option4.series[0].data=ysData;
        option4.series[0].links=ysLinks;
        option4.series[0].categories=categories;
        option4.legend[0].data=categories.map(function(a) {
            return a.name;
        });
        myChart4.setOption(option4);
    }

    function isHasNode(data,name) {
        var flag=false;
        for(i=0;i<data.length;i++){
            if(data[i].name===name){
                flag=true;
                break;
            }
        }
        return flag;
    }

    function isPerson(p) {
        return p === 'p';
    }
</script>

通过对数据集处理,完成简单的关系判断

平均学习2小时

代码量800行

posted @ 2020-12-28 21:22  爱笑的加油怪  阅读(50)  评论(0编辑  收藏  举报