src>components 文件夹下创建Charts 文件夹
里面添加echart组件 例如barChart.vue
<template>
  <div class="Chart" ref="Chart"></div>
  
</template>
<script>
import echarts from ‘echarts‘;
let option = {
	
    tooltip: {
        trigger: ‘axis‘,
        axisPointer: {            // 坐标轴指示器,坐标轴触发有效
            type: ‘shadow‘        // 默认为直线,可选为:‘line‘ | ‘shadow‘
        }
    },
	legend: {
		show:false
    },
	grid: {
		top:‘16%‘,
        left: ‘10%‘,
        right: ‘10%‘,
        bottom: ‘20%‘,
		
    },
    xAxis: {
        type: ‘category‘,
        data: [],
		axisLine:{//X坐标轴颜色
				lineStyle:{
					color:‘#2f415b‘
				}
			},
		axisTick:{//x坐标轴刻度显示不显示
				show:true,
				//alignWithLabel:true//刻度线在正中间
			},
		axisLabel:{//X坐标轴刻度标签相关设置
				interval:0,
				textStyle:{
					fontSize:12,
					color:‘#93a8bf‘
				},
				
			},
		splitLine:{
				show:false,
			},
		
    },
    yAxis: {
        type: ‘value‘,
		axisLine:{//X坐标轴颜色
				lineStyle:{
					color:‘#2f415b‘
				}
			},
		axisTick:{//x坐标轴刻度显示不显示
				show:true,
				//alignWithLabel:true//刻度线在正中间
			},
		axisLabel:{//X坐标轴刻度标签相关设置
				interval:0,
				textStyle:{
					fontSize:12,
					color:‘#93a8bf‘
				},
				
			},
		splitLine:{
				show:true,
				lineStyle:{
					color:‘#073f66‘,
					type:‘dashed‘
				}
			},
    },
    series: [
		{
			name:‘销售量‘,
			type: ‘bar‘,
			label:{
				show:true,
				position:‘top‘
			},
			// itemStyle:{
			// 	 color: new echarts.graphic.LinearGradient(
   //                  0, 0, 0, 1,
   //                  [
   //                      {offset: 0, color: ‘#f00‘},                   //柱图渐变色
   //                      {offset: 0.5, color: ‘#80101c‘},                 //柱图渐变色
   //                      {offset: 1, color: ‘#0d1d32‘},                   //柱图渐变色
   //                  ]
   //              )
			// },
						
			barWidth:20,
			data: [],
       
		}
		
    ]
};
export default {
  name: ‘Chart‘,
  props: {
	  fullOptions: {
	    type: Object,
	    default: ()=>{ return {}; }
	  },
	  everyAnimation: {
	    type: Boolean,
	    default: true
	  },
   
    hotxAxisData:{
      type: Array,
      default: () =>  [‘1月‘, ‘2月‘, ‘3月‘, ‘4月‘, ‘5月‘, ‘6月‘]
    },
	hotseriesData:{
      type: Array,
      default: () => [0, 0, 0, 0, 0, 0]
    },
	
    
  },
 data(){
	 return{
		 chart:‘‘
	 }
 },
  mounted(){
    this.initChart();
  },
  methods: {
    initChart(){
      this.chart = echarts.init(this.$refs.Chart);
      this.chart.setOption(this.getFormatedOption());
	  
	  window.onresize = () => {
          this.chart.resize()
      }
	  
    },
    
	getFormatedOption(){
		 if(Object.keys(this.fullOptions).length && this.fullOptions[‘series‘] && this.fullOptions[‘series‘].length) return this.fullOptions;
		
		  let cloneOption = JSON.parse(JSON.stringify(option));
		  cloneOption.xAxis.data = this.hotxAxisData
		  cloneOption.series[0].data = this.hotseriesData
		  return cloneOption;
		
	},
	renderChart(){
	  if(this.everyAnimation) this.chart.clear();
	  this.chart.setOption(this.getFormatedOption());
	}
	
	
	
	
  },
  watch:{
  	
	hotxAxisData(){
      this.renderChart();
    },
	hotseriesData(){
	  this.renderChart();
	},
	
  }
 
}
</script>
<style lang="scss" scoped>
.Chart {
  height: 100%;
}
</style>
需要引用的home页面操作如下
<template>
<div>
<barChart 
					:hotxAxisData="hotxAxisData" 
					:hotseriesData="hotseriesData">
					</barChart>
</div>
</template>
import barChart from ‘@/components/Charts/barChart.vue‘
export default {
name: ‘Home‘,
components: {
			barChart,
		},
data(){
return{
  hotxAxisData: [‘1月‘, ‘2月‘, ‘3月‘, ‘4月‘, ‘5月‘, ‘6月‘],
				  hotseriesData: [40, 30, 20, 10, 8, 6],
}
}
}
原文:https://www.cnblogs.com/shez/p/13209061.html