该组件是对百度ECharts的封装,用于在小程序环境中渲染各类图表,支持触摸交互和数据更新。支持柱状图、折线图、饼图等各种ECharts支持的图表类型,组件内部已优化tooltip显示和触摸事件处理。
import { CECharts } from '@components/plugins/echarts';
canvasId
(String,默认值:随机生成):画布ID,用于标识图表实例disableTouch
(Boolean,默认值:false):是否禁用触摸交互onReady
(Function,可选):图表准备就绪的回调函数chart
(Object) ECharts实例对象,可通过此对象设置图表配置和数据init
:初始化图表方法callback
(Function,必填):初始化完成的回调函数,参数为 (canvas, width, height, dpr)
canvasToTempFilePath
:将图表转为临时文件路径opt
(Object,必填):微信小程序 canvasToTempFilePath 的参数对象<template>
<view class="page">
<view class="chart-container">
<CECharts
ref="salesChart"
:onReady="handleSalesChartReady"
/>
</view>
</view>
</template>
<script>
import { CECharts } from '@components/plugins/echarts';
export default {
components: {
CECharts
},
data() {
return {
salesData: []
}
},
methods: {
// 图表准备就绪回调
handleSalesChartReady(chart) {
// 保存图表实例
this.chart = chart;
// 设置图表配置
chart.setOption({
title: {
text: '月度销售统计',
left: 'center'
},
tooltip: {
trigger: 'axis'
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
type: 'category',
data: ['1月', '2月', '3月', '4月', '5月', '6月']
},
yAxis: {
type: 'value'
},
series: [{
name: '销量',
type: 'bar',
data: [10, 52, 200, 334, 390, 330]
}]
});
},
// 更新图表数据
updateChartData(newData) {
if (!this.chart) return;
this.chart.setOption({
series: [{
data: newData
}]
});
}
},
mounted() {
// 获取数据
setTimeout(() => {
const newData = [50, 120, 180, 80, 70, 110];
this.updateChartData(newData);
}, 2000);
}
}
</script>
// 保存图表为图片
saveChartAsImage() {
const _this = this;
this.$refs.salesChart.canvasToTempFilePath({
success(res) {
console.log('保存成功:', res.tempFilePath);
// 可以进一步使用 wx.saveImageToPhotosAlbum 保存到相册
},
fail(err) {
console.error('保存失败:', err);
}
});
}
CECharts.weapp.vue