echart+vue写个关系图

echart+vue写个关系图

<template>
  <div class="abc" :style="{height:'350px',width:'1050px'}" />
</template>

<script>
import echarts from "echarts";
require("echarts/theme/macarons");

export default {
  data() {
    return {
      chart: null,
      treeData:{
        text1:'AM巴西子网系统部',text2:'',text3:'',text4:'',zb:5,
        children:[
          {text1:'副部长-解决方案',text2:'待评估/17C',text3:'宗勇',text4:'刚报到',zb:3},
          {text1:'系统部部长',text2:'21/20C',text3:'卿长春',text4:'2019/3/29',zb:11,
            children:[
              {text1:'副部长-销售/SDT',text2:'20/2OC',text3:'Marcio Costa',text4:'2019/3/29',zb:11},
              {text1:'AM(s)',text2:'/',text3:'5人',text4:'3+',zb:-3,
                children:[
                  {text1:'AM',text2:'17/18',text3:'Marcio Costa',text4:'2018/3/29',zb:-3},
                  {text1:'AM',text2:'17/18',text3:'Marcio Costa',text4:'2018/3/29',zb:-3},
                  {text1:'AM',text2:'17/18',text3:'Marcio Costa',text4:'2018/3/29',zb:-3},
                  {text1:'AM',text2:'17/18',text3:'Marcio Costa',text4:'2018/1/29',zb:13},
                ]
              },
              {text1:'SM',text2:'17/17A',text3:'杨胜海',text4:'2019/05/13',zb:3},
              {text1:'FM',text2:'18/18A',text3:'Wagner ',text4:'2019/06/10',zb:5},
              {text1:'NPO',text2:'?/?',text3:'XX',text4:' ',zb:13},
              {text1:'系统部CFO',text2:'?/?',text3:'常妙臻 ',text4:' ',zb:31}
            ]
          },
          {text1:'副部长-交付管理',text2:'19/18A',text3:'Vinicius',text4:'2019/07/15',zb:3,}
        ]
      }
    };
  },
  watch: {
    treeData: {
      deep: true,
      handler(val) {
        this.setOptions(val);
      }
    }
  },
  mounted() {
    this.initChart();
  },
  beforeDestroy() {
    if (!this.chart) {
      return;
    }
    this.chart.dispose();
    this.chart = null;
    // const sidebarElm = document.getElementsByClassName("sidebar-container")[0];
    // sidebarElm.removeEventListener("transitionend", this.sidebarResizeHandler);
  },
  methods: {
    chartLabel(zb){
      let color = ''
      if(zb>0&&zb<10) color = "#ffc000"
      if(zb<0) color = "#c7000b"
      if(zb>10) color = "#92d050"
      let obj = {
            label: {
              formatter:['{a|%text1%}','{b|%text2%}','{c|%text3%}','{d|%text4%}'].join('\n'),
              color: '#333',
              fontSize: 12,
              fontFamily: 'Arial',
              verticalAlign:'middle',
              backgroundColor:'transparent',
              rich: {
                a: {
                    backgroundColor:'#b9cde5',
                    width:120,
                    height:18,
                    fontSize: 12,
                    color: '#fff',
                    borderWidth: 1,
                    borderColor:'#385d8a',
                    align:'center'
                },
                b: {
                    backgroundColor:'#fff',
                    width:120,
                    height:18,
                    fontSize: 12,
                    color: '#505050',
                    borderWidth: 1,
                    borderColor:'#385d8a',
                    align:'center'
                },
                c: {
                    backgroundColor:'#fff',
                    width:120,
                    height:18,
                    fontSize: 12,
                    color: '#505050',
                    borderWidth:1,
                    borderColor:'#385d8a',
                    align:'center'
                },
                d:{
                    backgroundColor:color,
                    width:120,
                    height:18,
                    fontSize: 12,
                    color: '#fff',
                    borderWidth: 1,
                    borderColor:'#385d8a',
                    align:'center'
                }
              }
              
            }
          }

          return obj
    },
    initChart() {
      let data = this.treeData
      for(let i =0;i<data.length;i++){
        console.log(data)
      }
      this.chart = echarts.init(this.$el, "macarons");
      this.setOptions(this.treeData);
    },
      // 替换label.formatter里的数据
    format(s,c){
      return s.replace(/%(\w+)%/g, function(m, p) { return c[p]; })
    },
    // 地柜替换数据
    dataBack(data){
      let obj = {}
      // 例子,可以改
      obj.text1 = data.text1
      obj.text2 = data.text2
      obj.text3 = data.text3
      obj.text4 = data.text4
      let label = this.chartLabel(data.zb).label
      let str = this.format(label.formatter,obj)
      label.formatter = str
      data.label = label

      if(data.children&&data.children.length>0){
        data.children.map((obj)=>{
          this.dataBack(obj)
        })
      }

    },
    setOptions(data) {
      this.dataBack(data)
      console.log(data)
      // 第一层就放一个
      data.label.formatter = this.format('{a|%text1%}',{text1:data.text1}) 
      this.chart.setOption({
        // toolbox: {
        //   show : true,
        //   feature : {
        //     mark : {show: true},
        //     dataView : {show: true, readOnly: false},
        //     restore : {show: true},
        //     saveAsImage : {show: true}
        //   }
        // },
        series: [
          {
            width:1000,
            height:240,
            name: "统一授信视图",
            type: "tree",
            orient: "TB", //竖向或水平   TB代表竖向  LR代表水平
            top: '20%',
            left:'2%',
            bottom:'5%',
            initialTreeDepth: 10,  //树图初始展开的层级(深度)
            expandAndCollapse: true,   //点击节点时不收起子节点,default: true
            symbolSize: [118, 50],
            roam:true,
            symbol:'rect',
            edgeForkPosition:'50%',
            edgeShape:'polyline',
            itemStyle: {
              color: 'transparent',
              borderWidth: 0,
            },
            lineStyle: {
              color: '#D5D5D5',
              width: 1,
              curveness: 1,//线弯曲度
            },
            data: [data]
          }
        ]
      });
    },
    sidebarResizeHandler(e) {
      if (e.propertyName === "width") {
        this.__resizeHandler();
      }
    }
  }
};
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vue3+Echarts+Java数据报表统计管理系统源码是一个基于Vue3和Echarts的前端框架以及Java后端开发的一套数据报表统计管理系统的源代码。 该系统的主要功能包括数据可视化、数据报表生成与展示、数据统计与分析等。通过使用Vue3作为前端框架,可以实现页面的快速渲染和交互效果的优化。而Echarts作为数据可视化的工具,可以将数据以表的形式展示出来,提供更直观、易懂的数据分析结果。 在后端方面,系统使用Java作为编程语言进行开发。Java是一种通用的、面向对象的编程语言,具有跨平台性和稳定性,非常适合用于开发后端服务。通过Java,可以实现数据的存储、查询和处理,并将处理结果返回给前端进行展示。 系统的源码将涵盖前后端的代码,其中前端部分将包括Vue3的组件和路由配置,以及与后端进行通信的功能代码。后端部分将包括用Java编写的接口和数据处理逻辑代码,以及与数据库进行交互的代码。 总之,Vue3+Echarts+Java数据报表统计管理系统源码将提供一个完整的数据报表统计管理系统的开发框架,可以帮助开发者快速搭建和定制自己的数据可视化和统计分析系统。 ### 回答2: Vue3 echart java数据报表统计管理系统源码是一个基于Vue3和Java开发的一个数据报表统计管理系统。该系统主要用于对数据进行统计分析和报表生成。 系统使用了Vue3作为前端框架,提供了丰富的UI组件和数据绑定功能,可以方便地开发出用户友好的界面。同时,系统还使用了echart作为数据可视化工具,可以将统计结果以表的形式直观地呈现给用户。 在后端开发方面,系统使用了Java作为主要开发语言,使用了Spring Boot框架进行开发。Spring Boot提供了丰富的功能和组件,使得开发人员可以更加高效地进行开发。系统还使用了MyBatis作为持久层框架,可以方便地与数据库进行交互。 系统的主要功能包括数据的录入,数据的处理和报表的生成。用户可以在系统中录入需要进行统计的数据,然后系统会对数据进行处理,并生成相应的报表。报表可以以各种表的形式展示出来,如柱状、饼状、折线等,用户可以根据需要选择合适的表进行查看。 此外,系统还提供了一些辅助功能,如数据导出和导入、权限管理、用户管理等。用户可以根据需要对系统进行相应的设置和管理。 总之,Vue3 echart java数据报表统计管理系统源码是一个功能丰富、界面友好的数据报表统计管理系统,可以帮助用户轻松地进行数据统计分析和报表生成。 ### 回答3: vue3 echart java数据报表统计管理系统源码是一个基于Vue3和Echart的数据报表统计管理系统的源代码。 该系统的开发语言为Java,采用了Vue3作为前端框架,并通过Echart实现数据可视化和报表功能。它具有以下特点和功能: 1. 界面美观:使用Vue3作为前端框架,可以提供丰富的UI组件和交互效果,使系统具有良好的用户体验和界面美观。 2. 数据可视化:利用Echart作为数据可视化工具,可以将数据以表的形式直观地展示出来,帮助用户更好地理解数据和分析统计结果。 3. 数据报表:系统提供了丰富的报表功能,可以根据用户的需求生成各种类型的报表,包括柱状、折线、饼等,帮助用户更好地进行数据分析和决策。 4. 数据统计:系统可以对输入的数据进行统计分析,包括求和、平均值、最大值、最小值等统计指标的计算,帮助用户深入了解数据的特征和趋势。 5. 权限管理:系统具备权限管理功能,可以根据用户的角色和权限对系统的访问进行限制,保证数据的安全性和机密性。 6. 操作便捷:系统提供了用户友好的操作界面和交互方式,方便用户对数据进行查询、筛选、导出等操作,提高工作效率。 总之,该系统源码结合了Vue3、Echart和Java的优势,提供了一个功能完善、界面美观的数据报表统计管理系统,可广泛应用于各种数据分析和决策场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值