From 3b03f87a02458f719e2eb4bf112a13441b427d14 Mon Sep 17 00:00:00 2001 From: ‘chensiAb’ <‘chenchenco03@163.com’> Date: Tue, 25 Mar 2025 13:54:34 +0800 Subject: [PATCH] Merge branch 'master' of ssh://dev.zhiheiot.com:29418/mob-components --- _cursor.ai/plugins.doc/echarts.doc/CECharts.doc.md | 138 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 138 insertions(+), 0 deletions(-) diff --git a/_cursor.ai/plugins.doc/echarts.doc/CECharts.doc.md b/_cursor.ai/plugins.doc/echarts.doc/CECharts.doc.md new file mode 100644 index 0000000..4b9df5b --- /dev/null +++ b/_cursor.ai/plugins.doc/echarts.doc/CECharts.doc.md @@ -0,0 +1,138 @@ +# CECharts 图表组件 + +## 功能说明 + +该组件是对百度ECharts的封装,用于在小程序环境中渲染各类图表,支持触摸交互和数据更新。支持柱状图、折线图、饼图等各种ECharts支持的图表类型,组件内部已优化tooltip显示和触摸事件处理。 + +## 引用方式 + +```js +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 的参数对象 + +## 使用示例 + +### 基础用法 + +```html +<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> +``` + +### 保存图表为图片 + +```js +// 保存图表为图片 +saveChartAsImage() { + const _this = this; + this.$refs.salesChart.canvasToTempFilePath({ + success(res) { + console.log('保存成功:', res.tempFilePath); + // 可以进一步使用 wx.saveImageToPhotosAlbum 保存到相册 + }, + fail(err) { + console.error('保存失败:', err); + } + }); +} +``` + +## 注意事项 + +- 该组件暂时仅适用于小程序环境,文件名为 `CECharts.weapp.vue` +- 在小程序端使用需要确保 canvas 的 type 属性设置为 "2d" +- 小程序对 canvas 的性能有一定限制,复杂图表可能会有性能问题 +- 组件自动会处理触摸事件,支持图表交互 +- 组件已禁用了渐进式渲染(progressive: 0)以提高兼容性 +- 组件内置了默认的 tooltip 样式和位置优化逻辑 \ No newline at end of file -- Gitblit v1.9.1