Files
LSM_OIL_SITE_zhongping/packageChart/area-time.vue
2023-04-26 14:03:20 +08:00

204 lines
5.6 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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>