You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
203 lines
5.6 KiB
203 lines
5.6 KiB
<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>
|
|
|