vue中使用echarts的示例


Posted in Vue.js onJanuary 03, 2021

1:首先要用到echarts

2:在vue中安装这个依赖

3:引入要用的页面

import echarts from 'echarts';

4:然后初始化

<template>
 <a-col span="12" style="min-height:343px;width:100%;background:#fff" ref="getwidth" :style="'display:'+ model">
  <div class="layui-col-md6 tjgx-panel" >
     <div class="layui-card">
      <div class="layui-card-header panel-title">
    <span class="left-text" >统计更新及时率</span>
       <a class="close-link right-text" @click="onHide">
        <a-icon type="close" style="color: #b0b0b0;" />
       </a>
       <div class="right-text" style="color: #b0b0b0;">
        <span v-for="(item,index) in activeList" :key="index" 
        :class="item.is_active?'acitive':''"
        @click.stop="Onactive(item,index)"
         class="week " ref="alist">{{item.name}}</span>
        <!-- <span class="month">本月</span>
        <span class="year">本年</span> -->
       </div>
      </div>
      <div class="layui-card-body common-height">
       <echartsModal
        :Maxwidths ="widths"
        :MinHeight="MHeight"
        :echartsColor="xAxis.color"
        :legendWAndH="legendWAndH"
        :xAxisData="xAxis.data"
        :seriesData="xAxis.x.data"
        :SerNameValue="xAxis.SerNameValue"
        :echartsName="xAxis.name"
       />
       <!-- <div class="tjgx-con" id="container" style="min-height:280px;" :style="'width:'+widths+'px'" ></div> -->
      </div>
     </div>
    </div>
 </a-col>
</template>
<script>
import echartsModal from '../../viewModal/Echarts'
// import echarts from 'echarts';
export default {
 components:{
  echartsModal
 },
 data(){
 return{
  model:'block',
  widths:'',
  legendWAndH:[15,15,18],
  MHeight:'',
  xAxis:{
   data: ['广州', '深圳', '珠海', '汕头', '佛山', '韶关', '湛江', '肇庆', '江门', '茂名', '惠州', '梅州', '汕尾', '河源', '阳江', '清远', '东莞', '中山', '潮州', '揭阳', '云浮'],
   x:{
   data: [7.9, 2, 6, 5, 7, 5, 7, 80, 6, 7, 6, 86, 6, 56, 7, 6, 8, 5, 4, 7, 8],
   // data: [87.9, 58, 67, 56, 72, 54, 74, 59, 64, 75, 68, 47, 63, 89, 78, 64, 82, 56, 40, 73, 80],
   },
   name:'及时率', //图表名称
   SerNameValue:{
   position:'top',
   color:'#3398DB', //
   },
  // color:'' //图表颜色
   color:'#3398DB' //图表颜色
  },
  activeList:[
   {
    name:'本周',
    is_active:true,
   },
   {
    name:'本月',
    is_active:false,
   },
   {
    name:'本年',
    is_active:false,
   },
  ]
 }
 },
 mounted(){
 this.widths = String((this.$refs.getwidth.$el.clientWidth) - 30) ; //画布宽度
 this.MHeight =String((this.$refs.getwidth.$el.clientHeight) - 68) //画布高度
 },
 methods:{
 onHide(){
  const _this = this;
  _this.model = 'none';
  _this.$emit('isHide', _this.model,0)
 },
 Onactive(val,index){
  const _this = this
  let Alist = _this.activeList
  let Length = _this.$refs.alist.length
  let axis = _this.xAxis
  let sumber = 0;
  let arr = [];
  for( let t = 0; t < Length; t++ ){
   Alist[t].is_active = false;
  } 
  if( val.name == '本周' ){
   sumber = 1
  }else if ( val.name =='本月' ){
   sumber = 1
  }else if( val.name == '本年' ){
   sumber = 1
  }
  Alist[index].is_active = true;
   axis.x.data.map(item=>{
   item += sumber 
    arr.push(item)
   })
   axis.x.data = arr
   _this.xAxis = axis
   _this.activeList = Alist
 }
 }
}
</script>
<style scoped>
/* .week{
 padding: 0 1%;
} */
.layui-card-header {
 position: relative;
 height: 42px;
 line-height: 42px;
 padding: 0 15px;
 border-bottom: 1px solid #f6f6f6;
 color: #333;
 border-radius: 2px 2px 0 0;
 font-size: 14px;
}
.common-height {
 height: 280px;
}
.layui-card {
 margin-bottom: 15px;
 border-radius: 2px;
 background-color: #fff;
 box-shadow: 0 1px 2px 0 rgba(0,0,0,.05);
}
.layui-card-body {
 position: relative;
 padding: 10px 15px;
 line-height: 24px;
}
   .layui-col-md20 {
    width: 20%;
   }
   
   .time-city-panel {
    display: flex !important;
    justify-content: space-between;
    align-items: center;
   }
   
   .time-city-panel img {
    width: 73px !important;
    height: 61px !important;
    padding: 0 10px 10px !important;
   }
   
   .time-city-panel .one-row,
   .time-city-panel .two-row {
    padding: 0 10px;
   }
   
   .time-city-panel .one-row p:first-of-type {
    font-size: 18px;
    font-weight: bold;
    padding: 0 0 10px;
    text-align: left;
   }
   
   .time-city-panel .two-row p:first-of-type {
    padding: 0 0 10px;
    color: #96acbc;
    font-weight: bold;
    line-height: 22px;
   }
   
   .db_img {
    width: 20px;
    height: 22px;
    margin: 0 5px;
    vertical-align: middle;
   }
   
   .panel-title .left-text {
    padding-left: 10px;
    border-left: 8px solid #239fe6;
  font-size: 20px;
    display: inline-block;
    height: 30px;
    line-height: 30px;
    vertical-align: middle;
   }
   
   .panel-title .right-text {
    float: right;
    color: #239fe6;
    font-size: 14px;
    margin-left: 15px;
   }
  
   /*筒高度*/
   
   .common-height {
    height: 280px;
   }
   
   .text-overflow {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
   }
   
   .tjgx-panel .right-text span,
   .ajtj-panel .right-text span {
    display: inline-block;
    color: #b0b0b0;
   }
   
   .tjgx-panel .right-text span.acitive,
   .ajtj-panel .right-text span.acitive {
    color: #239fe6;
   }
   
   #chart,
   #ajtjChart {
    width: 100%;
    height: 90%;
   }
   
   
</style>

5:Echarts 组件

<template>
 <div>
  <!-- style="min-height:280px;" -->
  <div id="Echarts" :style="'width:'+Maxwidths+'px;min-height:'+MinHeight+'px'" ></div>
  <!-- <div id="Echarts" v-if="Isgrid == false" :style="'width:'+Maxwidths+'px;height:'+MinHeight+'px'" ></div> -->
 </div>
</template>
<script>
import echarts from 'echarts';
import { number } from 'echarts/lib/export';
export default {
 props:{
  Isgrid:{
   type:Boolean,
   default:()=> true //默认显示柱状图
  },
  ss:{
   type:Object,
   default:()=>{}
  },
  Maxwidths:{
   type:String, //整个容器的宽度
   default:''
  },
  MinHeight:{
   type:String, //最小高度
   default:''
  },
  echartsColor:{ //图像的颜色
   type:String,
   default:''
  },
  legendWAndH:{ //图例的宽高位置等
   type:Array,
   default:()=>[15,15,18]
  },
  legendColor:{
   type:String,
   default:()=>'' //图例的颜色,如果不加则默认是图形颜色
  },
  xAxisData:{ //图形X轴的数据
   type:Array,
   default:()=>[]
  },
  YAxisName:{ //图形y轴的名称设置 数组或者百分比
   type:Object,
   default:()=>{}
   // default:{name:'111',formatter: '{value}%'}
  },
  seriesData:{
   type:Array, // 显示图像的数据 占据的多少
   default:()=>[]
  },
  SerNameValue:{ //图形数据分析的占据的位置 left right top bottom 和显示的颜色
   type:Object,
   default:()=>{}
   // default:{position:top,color: '#3398DB',formatter: '{c}%'}
  },
  echartsName:{ //图形的名称 
   type:String,
   default:()=>'柱状图'
  },
  XorYatter:{
   type:Array,
   default:()=>['{value}%','{c}%'] //默认为百分比 
  },
  //雷达图的参数
  gWidth:{  //宽度默认为百分百
   type:String,
   default:()=>'100' 
  },
  gHeight:{
   type:String,
   default:()=> '90' //高度默认为90
  },
  gridValue:{  /// 雷达图的名称等等 格式[{text:11}]
   type:Array,
   default:()=>[]
  },
  gridraius:{   //圆圈大小
   type:Number,
   default:()=> 80 //默认为80 
  },
  gridTextStyle:{  //名称的默认颜色 text 
   type:String,
   default:()=>'#6bbcef'
  },
  symbolSize:{  // 圆点的大小 
   type:Number,
   default:()=> 10
  },
  SerValue:{
   type:Array,
   default:()=>[] //网格里面对应的数值
  },
  serVcolor:{
   type:String,
   default:()=> '#1bbdf8' //数值的默认颜色 SerValue的
  },
  lineStyleColor:{ 
   type:String,
   default:()=> '#1cbdf8' //连接线的颜色
  },
  itemStyleColor:{
   type:String,
   default:()=> '#1cbdf8' //连接圆点的默认颜色
  },
  BgColor:{
   type:String,
   default:()=> 'rgba(189, 230, 249, 0.5)'
  }
 },
 data(){
  return{
   option:{
    color:[], //图例颜色
    legend:{
     data:[], //图例名称
     itemWidth:0, //图例的宽度
     itemHeight:0, //图例的高度
     right:0,
     textStyle:{
      color:''
     }
    },
    xAxis:{
     data:[] //x轴数据
    },
    yAxis:{
     name:'', //名称
     axisLabel:{
      formatter:'' //是否显示百分比
     }
    },
    series:[
     {
      name:'',
      type:'bar', //类型
      data:[], //X轴显示的数据
      label:{
       normal:{
        show:true,
        position:'',
        color:'',
        formatter:''
       }
      }
     }
    ]
   },
   
   options:{
    radar:[
     {
      indicator:[], // 显示的名称的字段只能是text ps:[{text:'aaa'}]
      radius:0, //园角
      name:{
       textStyle:{
        color:'' //颜色
       }
      },
      symbolSize:0, //圆点大小
     }
    ],
    series:[
     {
      type:'radar',
      data:[{
       value:[], //对应的数据
       label:{
        normal:{
         show:true,
         color:'', //选中的时候颜色
         formatter:(params)=>{
          return params.value;  
         }
        }
       },
       //连接线颜色
       lineStyle:{
        color:'',
       },
       // 连接圆点颜色
       itemStyle:{
        color:''
       },
       // 图表背景网格的颜色
       areaStyle:{
        normal:{
         opacity:0.9,
         color:'' 
        }
       }
      }]
     }
    ]
   }
  }
 },
 created(){
  const _this = this;
  console.log(_this.Isgrid)
  console.log(this.ECharts)
  if( _this.Isgrid ){
   _this.onloads() //初始化数据
  }else{
   _this.isInitGrid()
  }
 },
 mounted(){
  const _this = this;
  if(_this.ss){
   _this.option = {}
   _this.option = _this.ss;
  }
  setTimeout(()=>{
   _this.$nextTick(()=>{
    let Echarts = echarts.init(document.getElementById('Echarts'))
     Echarts.setOption(_this.option,true)
   })
  },500)
 },
 watch:{
  seriesData(val){
   this.seriesData = val
   this.onloads(true)
  } 
 },
 methods:{
  onloads(is){
   const _this = this;
   let op = _this.option  
   op.color = [_this.echartsColor]
   op.legend.data = [_this.echartsName]
   op.legend.itemWidth =_this.legendWAndH[0]
   op.legend.itemHeight =_this.legendWAndH[1]
   op.legend.right =_this.legendWAndH[2]
   op.legend.textStyle.color =_this.legendColor == '' ? _this.echartsColor:''
   op.xAxis.data = _this.xAxisData
   op.yAxis.name = _this.echartsName
   op.yAxis.axisLabel.formatter = _this.XorYatter[0]
   op.series[0].data = _this.seriesData
   op.series[0].name = _this.echartsName
   op.series[0].label.normal.position = _this.SerNameValue.position
   op.series[0].label.normal.formatter = _this.XorYatter[1]
   op.series[0].label.normal.color = _this.SerNameValue.color == '' ? _this.echartsColor:_this.SerNameValue.color
   _this.option = op;
   if( is ){
    _this.$nextTick(()=>{
    let Echarts = echarts.init(document.getElementById('Echarts'))
     Echarts.setOption(op,true)
   })
   }

  },
  isInitGrid(){
   const _this = this;
   let g = _this.options;
   g.radar[0].indicator = _this.gridValue
   g.radar[0].radius = _this.gridraius
   g.radar[0].name.textStyle.color = _this.gridTextStyle
   g.radar[0].symbolSize = _this.symbolSize
   g.series[0].data[0].value = _this.SerValue
   g.series[0].data[0].label.normal.color = _this.serVcolor
   g.series[0].data[0].lineStyle.color = _this.lineStyleColor
   g.series[0].data[0].itemStyle.color = _this.itemStyleColor
   g.series[0].data[0].areaStyle.normal.color = _this.BgColor
  }
 }
}
</script>

6:效果图

vue中使用echarts的示例

以上就是vue中使用echarts的步骤的详细内容,更多关于vue 使用echarts的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 Vue.js
vue 插槽简介及使用示例
Nov 19 Vue.js
vue+element_ui上传文件,并传递额外参数操作
Dec 05 Vue.js
Vue中inheritAttrs的使用实例详解
Dec 31 Vue.js
vue3中轻松实现switch功能组件的全过程
Jan 07 Vue.js
Vue页面渲染中key的应用实例教程
Jan 12 Vue.js
基于vue的video播放器的实现示例
Feb 19 Vue.js
vue项目实现分页效果
Mar 24 Vue.js
vue backtop组件的实现完整代码
Apr 07 Vue.js
Vue和Flask通信的实现
May 19 Vue.js
Vue3.0写自定义指令的简单步骤记录
Jun 27 Vue.js
Vue3中的Refs和Ref详情
Nov 11 Vue.js
vue 动态生成拓扑图的示例
Jan 03 #Vue.js
Vue中强制组件重新渲染的正确方法
Jan 03 #Vue.js
vue中activated的用法
Jan 03 #Vue.js
vue实现登录功能
Dec 31 #Vue.js
vue 实现图片懒加载功能
Dec 31 #Vue.js
vue 动态创建组件的两种方法
Dec 31 #Vue.js
Vue 修改网站图标的方法
Dec 31 #Vue.js
You might like
模仿OSO的论坛(三)
2006/10/09 PHP
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
js添加table的行和列 具体实现方法
2013/07/22 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
JQuery 图片滚动轮播示例代码
2014/03/24 Javascript
Json解析的方法小结
2016/06/22 Javascript
babel基本使用详解
2017/02/17 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
Vue分页组件实例代码
2017/04/17 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
web前端开发中常见的多列布局解决方案整理(一定要看)
2017/10/15 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
2018/07/23 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
浅谈vuex中store的命名空间
2019/11/08 Javascript
Vue项目打包压缩的实现(让页面更快响应)
2020/03/10 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
使用Python编写Linux系统守护进程实例
2015/02/03 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
python的pytest框架之命令行参数详解(上)
2019/06/27 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
Python Selenium XPath根据文本内容查找元素的方法
2020/12/07 Python
Python 中 sorted 如何自定义比较逻辑
2021/02/02 Python
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
Joules官网:女士、男士和儿童服装和鞋类
2018/10/23 全球购物
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
2014年重阳节敬老活动方案
2014/09/16 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
导游词之太行山青龙峡
2020/01/14 职场文书
Nginx反向代理至go-fastdfs案例讲解
2021/08/02 Servers
Nginx反向代理学习实例教程
2021/10/24 Servers