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.
220 lines
6.5 KiB
220 lines
6.5 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 '@/js_sdk/u-charts/u-charts/u-charts.js'; |
|
import { isJSON } from '@/common/checker.js'; |
|
|
|
var _self; |
|
var canvaLineA = null; |
|
export default { |
|
data() { |
|
return { |
|
cWidth: '', |
|
cHeight: '', |
|
pixelRatio: 1, |
|
textarea: '' |
|
} |
|
}, |
|
created() { |
|
_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); |
|
this.getServerData(); |
|
}, |
|
methods: { |
|
getServerData() { |
|
console.log('/') |
|
uni.request({ |
|
url: 'https://www.ucharts.cn/data.json', |
|
data: { |
|
}, |
|
success: function (res) { |
|
console.log(res.data.data) |
|
let LineA = { |
|
series: [{ |
|
name: '交易时段分布', data: [ |
|
[10000, 75], [50000, 35], [150000, 55], [170000, 35], [190000, 75], |
|
[210000, 25], [280000, 5], [450000, 95], [460000, 5], [470000, 95], |
|
[490000, 5] |
|
] |
|
}, |
|
{ |
|
name: '交易时段分布', data: [ |
|
[30000, 77], [50000, 25], [170000, 50], [200000, 40], [210000, 25], |
|
[220000, 45], [280000,55], [450000,19], [460000, 30], [470000, 88], |
|
[490000, 95] |
|
] |
|
}] |
|
}; |
|
_self.textarea = JSON.stringify(res.data.data.LineA); |
|
console.log('-----------------------') |
|
console.log('res.data.data.LineA', res.data.data.LineA) |
|
console.log('_self.textarea', _self.textarea) |
|
console.log('LineA', LineA) |
|
console.log('-----------------------') |
|
_self.showLineA("canvasLineA", LineA); |
|
}, |
|
fail: () => { |
|
_self.tips = "网络错误,小程序端请检查合法域名"; |
|
}, |
|
}); |
|
}, |
|
formatDateTime(timeStamp, returnType) { |
|
var date = new Date(); |
|
date.setTime(timeStamp * 1000); |
|
console.log('\n\n------ begin:', timeStamp, ' ------') |
|
console.log('') |
|
console.log('------ end: ', date.setTime(timeStamp * 1000), ' ------\n\n') |
|
var y = date.getFullYear(); |
|
var m = date.getMonth() + 1; |
|
m = m < 10 ? ('0' + m) : m; |
|
var d = date.getDate(); |
|
d = d < 10 ? ('0' + d) : d; |
|
var h = date.getHours(); |
|
h = h < 10 ? ('0' + h) : h; |
|
var minute = date.getMinutes(); |
|
var second = date.getSeconds(); |
|
minute = minute < 10 ? ('0' + minute) : minute; |
|
second = second < 10 ? ('0' + second) : second; |
|
if (returnType == 'str') { return h + ':' + minute; } |
|
// return [y, m, d, h, minute, second]; |
|
// return [y + '-'+ m + '-'+ d +' '+ h+ ':'+ minute + ':' + second]; |
|
}, |
|
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, |
|
format: (val) => { |
|
console.log('----', val, '-----') |
|
console.log('----', this.formatDateTime(val, 'str'), '-----') |
|
return this.formatDateTime(val, 'str') } |
|
}, |
|
yAxis: { |
|
gridType: 'dash', |
|
gridColor: '#CCCCCC', |
|
dashLength: 8, |
|
splitNumber: 5, |
|
format: (val) => { return val.toFixed(0) + '元' } |
|
}, |
|
width: _self.cWidth * _self.pixelRatio, |
|
height: _self.cHeight * _self.pixelRatio, |
|
extra: { |
|
area: { |
|
type: 'curve', |
|
addLine: true, |
|
gradient: true |
|
} |
|
} |
|
}); |
|
|
|
}, |
|
touchLineA(e) { |
|
var that = this |
|
canvaLineA.showToolTip(e, { |
|
format: function (item, category) { |
|
console.log(' item.data', item.data) |
|
return that.formatDateTime(item.data[0], 'str') +'交易金额'+ item.data[1] + '元' |
|
} |
|
}); |
|
}, |
|
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>
|
|
|