vue组件之echarts报表

摘要:
vue组件的技术报告将技术报告封装到组件中,并显示一个图表--Piedata是传入数据--˃data:function(){return{Piedata:{htmldiv:‘mycharts2’,text:‘站点的用户访问源’,subtext:‘纯属虚构’,name:‘访问源”,data:[{value:335,name:“直接访问”},{value:301,name:'电子邮件营销'},{value:234,name:'Alliance advertising'},{value:135,name:'视频广告'},{value:1548,name:“Search engine”}]{value:0}子组件:MPIE。vuevarecharts=requireexportdefault{name:‘MPie‘,data(){return{}},mounted(){varlegendData=[];for{legendData.push}varoption={title:{text:this.datas.text,textStyle:{color:‘#333‘},subtext:this.data。subtext,subtextStyle:{color:“#aaa”},x:“center”};工具提示:{trigger:“item”,格式:“{a}{b}:{c}”}”,合法:{object:“vertical”,bottom:“bottom”,data:legendData},series:[{name:“access source”,type:“pie”,radius:“55%”,center:[‘50%’,‘60%’],data:this.data.data,itemStyle:{强调:{shadowBlur:10,shadowOffsetX:0,shadowColor:“rgba”}}}}]};varmyChart=技术图表。初始化;myChart。setOption;window.onzize=echarts.getInstanceByDom。resize();},方法:{},props:{data:{}}}</script><!--仅将“scoped”attributepolitimitCS添加到此组件--˃ViewCode2.直方图父组件:˂!

vue组件之echarts报表

将echarts报表封装成组件,动态传入数据,显示图表。

1.饼状图

vue组件之echarts报表第1张

父组件:

<MPie :datas="piedata"></MPie>   <!--piedata为传入的数据-->
data:function(){
  return {
piedata:{
  htmldiv:'mycharts2',
  text: '某站点用户访问来源',
  subtext: '纯属虚构',
  name: '访问来源',
  data:[
    {value:335, name:'直接访问'},
    {value:310, name:'邮件营销'},
    {value:234, name:'联盟广告'},
    {value:135, name:'视频广告'},
    {value:1548, name:'搜索引擎'}
      ]
    }
  }
}

子组件:MPie.vue

vue组件之echarts报表第2张vue组件之echarts报表第3张
<template>
  <div id="MPie">
    <div :id="datas.htmldiv" style="height:100%;100%;min-height: 250px;"></div>
  </div>
</template>

<script>
  var echarts = require('echarts')
export default {
  name: 'MPie',
  data () {
    return {
    }
  },
  mounted(){
    var legendData=[];
    for(var i in this.datas.data){
      legendData.push(this.datas.data[i])
    }
    var option = {
      title : {
        text: this.datas.text,
        textStyle:{color:'#333'},
        subtext: this.datas.subtext,
        subtextStyle:{color:'#aaa'},
        x:'center'
      },
      tooltip : {
        trigger: 'item',
        formatter: "{a} <br/>{b} : {c} ({d}%)"
      },
      legend: {
        orient: 'vertical',
        bottom: 'bottom',
        data: legendData
      },
      series : [
        {
          name: '访问来源',
          type: 'pie',
          radius : '55%',
          center: ['50%', '60%'],
          data:this.datas.data,
          itemStyle: {
            emphasis: {
              shadowBlur: 10,
              shadowOffsetX: 0,
              shadowColor: 'rgba(0, 0, 0, 0.5)'
            }
          }
        }
      ]
    };
    var myChart = echarts.init(document.getElementById(this.datas.htmldiv));
    myChart.setOption(option);
    window.onresize = echarts.getInstanceByDom(document.getElementById(this.datas.htmldiv)).resize();
  },
  methods: {

  },
  props: {
    datas: {}
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>

</style>
View Code

2.柱状图

vue组件之echarts报表第4张

父组件:

<MBar :datas="bardata"></MBar><!--piedata为传入的数据-->
bardata:{
htmldiv:'mycharts1',
text: '某站点用户访问来源',
subtext: '纯属虚构',
xAxisData: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
data:[120, 200, 150, 80, 70, 110, 130]
}

子组件:MBar.vue

vue组件之echarts报表第5张vue组件之echarts报表第6张
<template>
  <div id="MBar" style="">
    <div :id="datas.htmldiv" style="height:100%;100%;min-height: 250px;"></div>
  </div>
</template>

<script>
  var echarts = require('echarts')
export default {
  name: 'MBar',
  data () {
    return {
    }
  },
  mounted(){
    var option = {
      title : {
        text: this.datas.text,
        textStyle:{color:'#333'},
        subtext: this.datas.subtext,
        subtextStyle:{color:'#aaa'},
        x:'center'
      },
      xAxis: {
        type: 'category',
        data: this.datas.xAxisData,
        axisLine:{
          lineStyle:{
            color:'#000',
          }
        }
      },
      yAxis: {
        type: 'value',
        axisLine:{
          lineStyle:{
            color:'#000',
          }
        }
      },
      grid:{
        bottom:20,
        left:40,
        right:20,
        top:50
      },
      series: [{
        data: this.datas.data,
        type: 'bar'
      }]
    };
    var myChart = echarts.init(document.getElementById(this.datas.htmldiv));
    myChart.setOption(option);
    window.onresize = echarts.getInstanceByDom(document.getElementById(this.datas.htmldiv)).resize();
  },
  methods: {

  },
  props: {
    datas: {}
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>

</style>
View Code

免责声明:文章转载自《vue组件之echarts报表》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇OKR周报的妙用monkey日志管理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue中ref的使用(this.$refs获取为undefined)

如果你获取到的总是空的,你注意一下: 1、你在哪里调用,和你调用的对象 试试在mounted()里面调用有效果没有 调用的对象是本来就存在的,还是需要数据渲染之后才会出现的,同理,在mounted()里面调用看看 2、调用对象是不是数组列表 我一开始设置ref在v-for列表上,直接获取this.$refs.name.style,永远是空的, 后来才发现,...

vscode如何配置ts的lint,如何配置才能让eslint和prettier不冲突一键格式化代码(vue开发使用)

最近在使用ts,发觉tslint在vscode上使用很不方便,不如eslint一键格式化高效,就想着能不能配置下vscode让其像写js一样爽 这篇文章主要解决2个问题,第一个是如何让vscode使用ts的lint,第二个是如何配置才能让eslint和prettier这2个代码格式化的vscode插件不互相冲突 vscode使用ts的lint 首先ts的l...

在原生 html 中使用 vue,在浏览器中直接运行 .vue 文件,在 vue 中使用 leaflet

vue3-in-html 在html中使用vue3,不依赖nodejs和webpack,不依赖脚手架 demo源码 https://gitee.com/s0611163/vue3-in-html 功能 编写了几个简单的组件,使用了element-plus和vuex 在vue3组件中使用leaflet实现电子地图 特色 原生 html 开发,不依赖 n...

vue 三个环境域名 与 访问url域名不一致 配置,要是一样完全可以 取url地址

# just a flagENV = 'development' # base apiVUE_APP_BASE_API = 'http://dev.api.watermarker-v1.moviebook.cn'       # just a flagENV = 'production'# base apiVUE_APP_BASE_API...

Vue之登录基础交互

1.把VueCLI装起来 https://cli.vuejs.org/zh/ 2.vue create hello-world 执行后,很自然就创建了一个实例项目。npm run dev后 打开如下界面: 3.安装elementUI组件:npm i element-ui -S (https://element.eleme.cn/#/zh-CN/compo...

vue2使用echarts markLine中的symbol引入png图片路径问题解决过程

在刚刚的开发中有个需求,需求是这样的:需要一条markLine标记线,标记线的顶端形状为实心箭头,且颜色和markLine标记线颜色不一致,这个箭头的方向会有一个接口返回的参数控制箭头在markLine标记线的首端还是末端, 如下图所示: 刚开始用的是echarts提供的默认配置(ECharts 提供的标记类型包括 'circle', 'rect', '...