464 lines
11 KiB
Vue
464 lines
11 KiB
Vue
<template>
|
||
<view class="page">
|
||
<u-navbar is-back="false" title="历史走势" :border-bottom="false" :background="bgc" title-color='#000'
|
||
title-size='36' :title-bold='true' height='45' id="navbar">
|
||
</u-navbar>
|
||
|
||
|
||
<view class="echarts_box">
|
||
<view class="echarts_top">
|
||
<view class="top_left">
|
||
重量
|
||
<image style="width: 28rpx;height: 33rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uk7CvwzeU0ukxvS9cBtD" mode=""></image>
|
||
</view>
|
||
<view class="top_cont">
|
||
最近30日
|
||
</view>
|
||
<view class="top_right">
|
||
<view style="width: 1rpx;">
|
||
|
||
</view>
|
||
<view class="txt">
|
||
<!-- 历史走势<view class="iconfont icon-xiangyou1"></view> -->
|
||
</view>
|
||
|
||
</view>
|
||
</view>
|
||
<view class="echarts">
|
||
<uni-ec-canvas class="uni-ec-canvas" id="uni-ec-canvas" ref="canvas3" canvas-id="uni-ec-canvas"
|
||
:ec="ec">
|
||
</uni-ec-canvas>
|
||
</view>
|
||
</view>
|
||
<view class="echarts_box">
|
||
<view class="echarts_top">
|
||
<view class="top_left">
|
||
进出量
|
||
<image style="width: 33rpx;height: 33rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uhsU6Y1K35jxA4aRauzy" mode=""></image>
|
||
</view>
|
||
<view class="top_cont">
|
||
最近30日
|
||
</view>
|
||
<view class="top_right">
|
||
<view style="width: 1rpx;">
|
||
|
||
</view>
|
||
<view class="txt">
|
||
<!-- 历史走势<view class="iconfont icon-xiangyou1"></view> -->
|
||
</view>
|
||
|
||
</view>
|
||
</view>
|
||
<view class="echarts">
|
||
<uni-ec-canvas class="uni-ec-canvas" id="uni-ec-canvas" ref="canvas4" canvas-id="uni-ec-canvas"
|
||
:ec="ec">
|
||
</uni-ec-canvas>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import uniEcCanvas from '@/components/uni-ec-canvas/uni-ec-canvas.vue'
|
||
import * as echarts from '@/components/uni-ec-canvas/echarts'
|
||
let chart = null
|
||
export default {
|
||
components: {
|
||
uniEcCanvas
|
||
},
|
||
data() {
|
||
return {
|
||
bgc: {
|
||
backgroundColor: " #F4FAF8",
|
||
},
|
||
ec: {
|
||
lazyLoad: true
|
||
},
|
||
chartday: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
|
||
chartData: [120, 200, 150, 80, 70, 110, 130],
|
||
chartData1: [],
|
||
chartData2: [],
|
||
chartData3: [],
|
||
chartData4: [],
|
||
chartData5: [],
|
||
chartData6: [],
|
||
chartData7: [],
|
||
chartData8: [],
|
||
yeartime: {
|
||
year: '',
|
||
month: '',
|
||
day: ''
|
||
},
|
||
yeartimes: {
|
||
year: '',
|
||
month: '',
|
||
day: ''
|
||
},
|
||
num:'',
|
||
beehiveId:'',
|
||
modelTags:[],
|
||
|
||
height:false,
|
||
io:false,
|
||
xnwd:false,
|
||
xnsd:false,
|
||
sypl:false,
|
||
eyht:false,
|
||
}
|
||
},
|
||
onLoad(option) {
|
||
this.beehiveId = option.beehiveId
|
||
},
|
||
onShow() {
|
||
setTimeout(() => {
|
||
this.$refs.canvas3.init(this.initChart3)
|
||
this.$refs.canvas4.init(this.initChart4)
|
||
}, 1000)
|
||
let now = new Date();
|
||
let previousDay = new Date(now)
|
||
this.yeartime.year = now.getFullYear()
|
||
this.yeartime.month = String(previousDay.getMonth() + 1).padStart(2, '0')
|
||
this.yeartime.day = String(now.getDate()).padStart(2, '0')
|
||
|
||
|
||
previousDay.setDate(now.getDate() - 30)
|
||
this.yeartimes.year = previousDay.getFullYear()
|
||
this.yeartimes.month = String(previousDay.getMonth() + 1).padStart(2, '0')
|
||
this.yeartimes.day = String(previousDay.getDate()).padStart(2, '0')
|
||
|
||
this.getchartData3()
|
||
this.getchartData4()
|
||
|
||
},
|
||
methods: {
|
||
|
||
// 重量图表
|
||
getchartData3() {
|
||
let time = this.yeartime.year + '-' + this.yeartime.month + '-' + this.yeartime.day
|
||
let times = this.yeartimes.year + '-' + this.yeartimes.month + '-' + this.yeartimes.day
|
||
this.$u.get(`/farmer/report/weightDay?dateRange=${times},${time}&apiaryId=${this.beehiveId}`).then(
|
||
res => {
|
||
if (res.code == 200) {
|
||
this.chartData3 = res.data.map(item => item.value)
|
||
}
|
||
})
|
||
},
|
||
// 进出量图表
|
||
getchartData4() {
|
||
let time = this.yeartime.year + '-' + this.yeartime.month + '-' + this.yeartime.day
|
||
let times = this.yeartimes.year + '-' + this.yeartimes.month + '-' + this.yeartimes.day
|
||
this.$u.get(`/farmer/report/ioCount?dateRange=${times},${time}&apiaryId=${this.beehiveId}`).then(res => {
|
||
if (res.code == 200) {
|
||
this.chartData4 = res.data.map(item => item.value)
|
||
}
|
||
})
|
||
},
|
||
|
||
//重量
|
||
initChart3(canvas, width, height, canvasDpr) {
|
||
let that = this
|
||
|
||
const option = {
|
||
grid: {
|
||
left: '4%',
|
||
right: '4%',
|
||
bottom: '3%',
|
||
top: '4%',
|
||
containLabel: true
|
||
},
|
||
xAxis: {
|
||
show: true,
|
||
type: 'category',
|
||
boundaryGap: false,
|
||
axisLine: {
|
||
show: false // 隐藏X轴线
|
||
},
|
||
axisTick: {
|
||
show: false // 隐藏X轴刻度
|
||
},
|
||
axisLabel: {
|
||
show: false // 隐藏X轴标签
|
||
},
|
||
axisLabel: {
|
||
show: true,
|
||
color: '#ccc',
|
||
fontSize: 11,
|
||
rotate: 0,
|
||
},
|
||
splitLine: {
|
||
show: false,
|
||
},
|
||
// data: that.chartday,
|
||
},
|
||
yAxis: {
|
||
show: true,
|
||
axisLine: {
|
||
show: false,
|
||
},
|
||
axisTick: {
|
||
show: false,
|
||
},
|
||
axisLabel: {
|
||
show: true,
|
||
color: '#ccc',
|
||
fontSize: 11,
|
||
formatter: function(value) {
|
||
// 保留两位小数,没有小数时显示00
|
||
return (value / 1000).toFixed(1) + 'Kg'
|
||
},
|
||
},
|
||
splitLine: {
|
||
show: true, // 显示X轴网格线
|
||
lineStyle: {
|
||
type: 'dashed', // 设置网格线为虚线
|
||
color: '#ccc', // 可以设置虚线的颜色
|
||
width: 1 // 可以设置虚线的宽度
|
||
}
|
||
}
|
||
},
|
||
visualMap: {
|
||
type: 'piecewise',
|
||
show: false,
|
||
dimension: 0,
|
||
seriesIndex: 0,
|
||
pieces: [{
|
||
gt: 1,
|
||
lt: 3,
|
||
color: 'RGBA(255, 241, 201, 1)',
|
||
},
|
||
{
|
||
gt: 5,
|
||
lt: 7,
|
||
color: 'RGBA(255, 241, 201, 1)',
|
||
},
|
||
],
|
||
},
|
||
series: [{
|
||
type: 'line',
|
||
smooth: 0.6,
|
||
symbol: 'none',
|
||
lineStyle: {
|
||
color: '#FFE28C',
|
||
width: 4,
|
||
},
|
||
areaStyle: {
|
||
normal: {
|
||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
||
offset: 0,
|
||
color: '#FFF1C9'
|
||
}, ]),
|
||
},
|
||
},
|
||
data: that.chartData3,
|
||
}],
|
||
};
|
||
chart = echarts.init(canvas, null, {
|
||
width: width,
|
||
height: height,
|
||
devicePixelRatio: canvasDpr
|
||
})
|
||
|
||
option.series[0].data = that.chartData3
|
||
canvas.setChart(chart)
|
||
chart.setOption(option)
|
||
return chart
|
||
},
|
||
// 进出量
|
||
initChart4(canvas, width, height, canvasDpr) {
|
||
let that = this
|
||
|
||
const option = {
|
||
grid: {
|
||
left: '4%',
|
||
right: '4%',
|
||
bottom: '3%',
|
||
top: '4%',
|
||
containLabel: true
|
||
},
|
||
xAxis: {
|
||
show: true,
|
||
type: 'category',
|
||
boundaryGap: false,
|
||
axisLine: {
|
||
show: false // 隐藏X轴线
|
||
},
|
||
axisTick: {
|
||
show: false // 隐藏X轴刻度
|
||
},
|
||
axisLabel: {
|
||
show: false // 隐藏X轴标签
|
||
},
|
||
axisLabel: {
|
||
show: true,
|
||
color: '#ccc',
|
||
fontSize: 11,
|
||
rotate: 0,
|
||
},
|
||
splitLine: {
|
||
show: false,
|
||
},
|
||
// data: that.chartday,
|
||
},
|
||
yAxis: {
|
||
show: true,
|
||
axisLine: {
|
||
show: false,
|
||
},
|
||
axisTick: {
|
||
show: false,
|
||
},
|
||
axisLabel: {
|
||
show: true,
|
||
color: '#ccc',
|
||
fontSize: 11,
|
||
formatter: function(value) {
|
||
// 保留两位小数,没有小数时显示00
|
||
return Math.ceil(value) + '只'
|
||
},
|
||
},
|
||
splitLine: {
|
||
show: true, // 显示X轴网格线
|
||
lineStyle: {
|
||
type: 'dashed', // 设置网格线为虚线
|
||
color: '#ccc', // 可以设置虚线的颜色
|
||
width: 1 // 可以设置虚线的宽度
|
||
}
|
||
}
|
||
},
|
||
visualMap: {
|
||
type: 'piecewise',
|
||
show: false,
|
||
dimension: 0,
|
||
seriesIndex: 0,
|
||
pieces: [{
|
||
gt: 1,
|
||
lt: 3,
|
||
color: 'RGBA(255, 241, 201, 1)',
|
||
},
|
||
{
|
||
gt: 5,
|
||
lt: 7,
|
||
color: 'RGBA(255, 241, 201, 1)',
|
||
},
|
||
],
|
||
},
|
||
series: [{
|
||
type: 'line',
|
||
smooth: 0.6,
|
||
symbol: 'none',
|
||
lineStyle: {
|
||
color: '#FFE28C',
|
||
width: 4,
|
||
},
|
||
areaStyle: {
|
||
normal: {
|
||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
||
offset: 0,
|
||
color: '#FFF1C9'
|
||
}, ]),
|
||
},
|
||
},
|
||
data: that.chartData4,
|
||
}],
|
||
};
|
||
chart = echarts.init(canvas, null, {
|
||
width: width,
|
||
height: height,
|
||
devicePixelRatio: canvasDpr
|
||
})
|
||
|
||
option.series[0].data = that.chartData4
|
||
canvas.setChart(chart)
|
||
chart.setOption(option)
|
||
return chart
|
||
},
|
||
|
||
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss">
|
||
page {
|
||
background-color: #FAFDFD;
|
||
}
|
||
.input-placeholder{
|
||
color: red;
|
||
}
|
||
.page {
|
||
// position: relative;
|
||
width: 750rpx;
|
||
// padding-bottom: 200rpx;
|
||
padding: 38rpx;
|
||
box-sizing: border-box;
|
||
.echarts_box {
|
||
margin-top: 26rpx;
|
||
padding: 18rpx 36rpx;
|
||
width: 674rpx;
|
||
|
||
background: #FFFFFF;
|
||
box-shadow: 0rpx 0rpx 8rpx 0rpx rgba(0, 0, 0, 0.15);
|
||
border-radius: 28rpx 28rpx 28rpx 28rpx;
|
||
|
||
.echarts {
|
||
|
||
margin-top: 24rpx;
|
||
// width: 100%;
|
||
// height: 80%;
|
||
width: 100%;
|
||
height: 330rpx;
|
||
}
|
||
|
||
.echarts_top {
|
||
display: flex;
|
||
align-items: center;
|
||
|
||
// justify-content: space-between;
|
||
.top_left {
|
||
width: 38.33%;
|
||
display: flex;
|
||
align-items: center;
|
||
font-weight: 500;
|
||
font-size: 36rpx;
|
||
color: #3D3D3D;
|
||
padding-left: 24rpx;
|
||
image {
|
||
margin-left: 10rpx;
|
||
width: 25.03rpx;
|
||
height: 34rpx;
|
||
}
|
||
}
|
||
|
||
.top_cont {
|
||
width: 33.33%;
|
||
text-align: center;
|
||
font-weight: 600;
|
||
font-size: 36rpx;
|
||
color: #3D3D3D;
|
||
}
|
||
|
||
.top_right {
|
||
width: 33.33%;
|
||
display: flex;
|
||
align-items: center;
|
||
|
||
.txt {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-wrap: nowrap;
|
||
margin-left: auto;
|
||
font-weight: 400;
|
||
font-size: 32rpx;
|
||
color: #4D4D4D;
|
||
|
||
.icon-xiangyou1 {
|
||
margin-top: 4rpx;
|
||
margin-left: 8rpx;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
</style> |