<template> <view class="qiun-columns"> <!--#ifdef H5 --> <view class="qiun-bg-white qiun-title-bar qiun-common-mt"> <view class="qiun-title-dot-light">页面地址</view> </view> <view class="qiun-bg-white qiun-padding"> <text>pages/basic/area/time</text> </view> <!--#endif--> <view class="qiun-bg-white qiun-title-bar qiun-common-mt"> <view class="qiun-title-dot-light">单量</view> </view> <view class="qiun-charts"> <!--#ifdef MP-ALIPAY --> <canvas canvas-id="canvasLineA" id="canvasLineA" class="charts" :width="cWidth*pixelRatio" :height="cHeight*pixelRatio" :style="{'width':cWidth+'px','height':cHeight+'px'}" @touchstart="touchLineA"></canvas> <!--#endif--> <!--#ifndef MP-ALIPAY --> <canvas canvas-id="canvasLineA" id="canvasLineA" class="charts" @touchstart="touchLineA"></canvas> <!--#endif--> </view> <!--#ifdef H5 --> <view class="qiun-bg-white qiun-title-bar qiun-common-mt"> <view class="qiun-title-dot-light">标准数据格式</view> </view> <view class="qiun-bg-white qiun-padding"> <textarea class="qiun-textarea" auto-height="true" maxlength="-1" v-model="textarea" /> </view> <view class="qiun-text-tips">Tips:修改后点击更新图表</view> <button class="qiun-button" @tap="changeData()">更新图表</button> <!--#endif--> </view> </template> <script> import uCharts from './common/u-charts/u-charts.js'; import { isJSON } from './common/checker.js'; var _self; var canvaLineA = null; export default { props: { chartData: { type: Array, default(){} } }, data() { return { cWidth: '', cHeight: '', pixelRatio: 1, textarea: '' } }, created() { console.log(this.chartData) _self = this; //#ifdef MP-ALIPAY uni.getSystemInfo({ success: function (res) { if (res.pixelRatio > 1) { //正常这里给2就行,如果pixelRatio=3性能会降低一点 //_self.pixelRatio =res.pixelRatio; _self.pixelRatio = 2; } } }); //#endif this.cWidth = uni.upx2px(650); this.cHeight = uni.upx2px(500); console.log('chartData', this.chartData) }, watch: { chartData: { handler(newVal, oldVal) { console.log('深度监听', newVal, oldVal) console.log(newVal) this.chartData = newVal this.getServerData() }, deep: true } }, methods: { getServerData() { if (this.chartData) { let LineA = { series: [{ name: '交易时段分布', data: this.chartData }] } _self.textarea = JSON.stringify(LineA); console.log('-----------------------') console.log('_self.textarea', _self.textarea) console.log('LineA', LineA) console.log('-----------------------') _self.showLineA("canvasLineA", LineA); } }, formatDateTime(timeStr) { console.log('-----------------------') console.log('timeStr', timeStr) console.log('-----------------------') return (timeStr > 0 ? timeStr.toFixed(0) : 0) + ':00' }, showLineA(canvasId, chartData) { canvaLineA = new uCharts({ $this: _self, canvasId: canvasId, type: 'area', fontSize: 11, padding: [15, 20, 0, 15], legend: false, dataLabel: true, dataPointShape: true, background: '#FFFFFF', pixelRatio: _self.pixelRatio, // categories: chartData.categories, series: chartData.series, animation: true, xAxis: { type: 'grid', gridColor: '#CCCCCC', gridType: 'dash', dashLength: 8, boundaryGap: 'justify', splitNumber: 5, scrollShow:true,//新增是否显示滚动条,默认false scrollAlign:'left',//滚动条初始位置 scrollBackgroundColor:'#F7F7FF',//默认为 #EFEBEF scrollColor:'#DEE7F7',//默认为 #A6A6A6 format: (val) => { console.log('xAxis', val) // console.log('----', val, '-----') // console.log('----', this.formatDateTime(val, 'str'), '-----') return this.formatDateTime(val) } }, yAxis: { gridType: 'dash', gridColor: '#CCCCCC', dashLength: 8, splitNumber: 5, format: (val) => { console.log('yAxis', val) return val + '单' } }, width: _self.cWidth * _self.pixelRatio, height: _self.cHeight * _self.pixelRatio, extra: { area: { type: 'curve', addLine: true, gradient: true } } }); }, touchLineA(e) { console.log( 'istouchLineA ',e) var that = this canvaLineA.showToolTip(e, { format: function (item, category) { console.log(' item.data', item.data) return (item.data[0] + ':00 ') + item.data[1] + '单 ' + '交易金额' + item.data[2] + '元' } }); }, changeData() { if (isJSON(_self.textarea)) { let newdata = JSON.parse(_self.textarea); canvaLineA.updateData({ series: newdata.series, categories: newdata.categories }); } else { uni.showToast({ title: '数据格式错误', image: '../../../static/images/alert-warning.png' }) } } } } </script> <style scoped> /*样式的width和height一定要与定义的cWidth和cHeight相对应*/ .qiun-charts { width: 640upx; height: 500rpx; background-color: #ffffff; } .charts { width: 640upx; height: 500rpx; background-color: #ffffff; } </style>