smartswrtch-app/page_fenbao/hehuoren/shouye.vue

551 lines
13 KiB
Vue
Raw Normal View History

2024-11-26 18:02:13 +08:00
<template>
2024-11-28 18:04:09 +08:00
<view class="page" >
<u-navbar :custom-back="btns" title="合伙人首页" :border-bottom="false" :background="bgc" title-color='#fff' back-icon-color="#fff"
2024-11-26 18:02:13 +08:00
title-size='36' height='50'></u-navbar>
2024-12-03 14:40:32 +08:00
<view style="padding-top: 30rpx;">
2024-11-28 18:04:09 +08:00
<view class="card">
<view class="xzsj">
<u-picker mode="time" v-model="show" :params="params" @confirm="confirm"></u-picker>
2024-11-26 18:02:13 +08:00
</view>
2024-12-03 14:40:32 +08:00
<view class="month" style="display: flex;">
<text @click="btnshow(1)">{{yeartime.year + '' + yeartime.month + '' + yeartime.day + ''}} </text>
<view class="" style="margin: 0 10rpx;">
-
</view>
<view @click="btnshow(2)">{{yeartimes.year + '' + yeartimes.month + '' + yeartimes.day + ''}} <u-icon style="margin-left: 10rpx;margin-top: 6rpx;"name="arrow-down-fill"></u-icon></view>
2024-11-26 18:02:13 +08:00
</view>
2024-11-28 18:04:09 +08:00
<view class="tit">
2024-12-03 14:40:32 +08:00
当前时间段收入{{recharge.toFixed(2)}} 累计收入{{totalRecharge.toFixed(2)}}
2024-11-26 18:02:13 +08:00
</view>
2024-11-28 18:04:09 +08:00
<view class="echarts" >
<uni-ec-canvas class="uni-ec-canvas" id="uni-ec-canvas" ref="canvas" canvas-id="uni-ec-canvas" :ec="ec"></uni-ec-canvas>
2024-11-26 18:02:13 +08:00
</view>
</view>
2024-11-28 18:04:09 +08:00
<view class="list" style="padding-bottom: 240rpx;">
<view class="card_list" v-for="(item,index) in timelists" :key="index">
<view class="left">
2024-12-03 14:40:32 +08:00
<!-- // {{yeartime.year + '年' + yeartime.month + '月' + item.createDay + '日'}} -->
{{item.key}}
2024-11-26 18:02:13 +08:00
</view>
2024-11-28 18:04:09 +08:00
<view class="right">
2024-12-03 14:40:32 +08:00
{{item.value}}
2024-11-26 18:02:13 +08:00
</view>
</view>
2024-11-28 18:04:09 +08:00
</view>
</view>
<view v-if="userType=='00'">
<view class="title">
统计
</view>
<view class="card">
<view class="xzsj">
<u-picker mode="time" v-model="show" :params="params" @confirm="confirm"></u-picker>
</view>
<view class="month" @click="show = true">
2024-12-03 14:40:32 +08:00
{{yeartime.year + '年' + yeartime.month + '月' + yeartime.day + '日'}}
2024-11-28 18:04:09 +08:00
</view>
<view class="tit">
本月用电量
</view>
<div class="txt">
{{quantity}}
</div>
<view class="echarts" v-if="loging">
2024-11-26 18:02:13 +08:00
</view>
</view>
2024-12-03 14:40:32 +08:00
</view>
<view class="name">
2024-11-28 18:04:09 +08:00
更多功能
2024-12-03 14:40:32 +08:00
</view>
2024-11-28 18:04:09 +08:00
<view class="gongneng">
<image @click="btndingdan" src="https://api.ccttiot.com/smartmeter/img/static/uabiTqXSZVFrY5ck0MoK" mode=""></image>
<image @click="btnshebie" src="https://api.ccttiot.com/smartmeter/img/static/u5SKuZPtnuFJPdQOYe4u" mode=""></image>
<image @click="btndianpu" src="https://api.ccttiot.com/smartmeter/img/static/ubVQt7h69i4GKsvRK64V" mode=""></image>
<image @click="btngeren" src="https://api.ccttiot.com/smartmeter/img/static/uUnZuUCeUajUb5gD23O4" mode=""></image>
</view>
2024-11-26 18:02:13 +08:00
</view>
</template>
<script>
2024-11-28 18:04:09 +08:00
import uniEcCanvas from '@/components/uni-ec-canvas/uni-ec-canvas.vue'
import * as echarts from '@/components/uni-ec-canvas/echarts'
let chart = null
2024-11-26 18:02:13 +08:00
export default {
2024-11-28 18:04:09 +08:00
components: {
uniEcCanvas
},
2024-11-26 18:02:13 +08:00
data() {
return {
2024-11-28 18:04:09 +08:00
ec: {
lazyLoad: true
},
params: {
year: true,
month: true,
2024-12-03 14:40:32 +08:00
day: true,
2024-11-28 18:04:09 +08:00
hour: false,
minute: false,
second: false
},
recharge: 0,
2024-11-26 18:02:13 +08:00
bgc: {
2024-11-28 18:04:09 +08:00
backgroundColor: "#8883f0",
},
show: false,
yeartime: {
year: '',
2024-12-03 14:40:32 +08:00
month: '',
day:''
},
yeartimes: {
year: '',
month: '',
day:''
2024-11-26 18:02:13 +08:00
},
2024-11-28 18:04:09 +08:00
timelist: '',
quantity: 0, //电量
chartData: [],
chartday: [],
loging: true,
deviceId: '',
userType: '',
totalRecharge: 0,
dateday:'',
timelists:'',
monthdui:'',
employId:'',
2024-12-03 14:40:32 +08:00
sceneValue:'',
kstime:'',
jstime:'',
num:''
2024-11-26 18:02:13 +08:00
}
},
// 分享到好友(会话)
2024-11-28 18:04:09 +08:00
onShareAppMessage: function () {
return {
title: '创想物联',
path: '/pages/shouye/index'
}
},
// 分享到朋友圈
onShareTimeline: function () {
return {
title: '创想物联',
query: '',
path: '/pages/shouye/index'
}
},
onLoad(option) {
if(option.q){
function getQueryParam(url, paramName) {
let regex = new RegExp(`[?&]${paramName}=([^&]*)`);
let results = regex.exec(url);
return results ? decodeURIComponent(results[1].replace(/\+/g, ' ')) : null
}
this.sceneValue = option.q
let decodedValue = decodeURIComponent(this.sceneValue);
let id = getQueryParam(decodedValue, 'i')
this.employId = id
let that = this
uni.showModal({
title: '温馨提示',
content: '您确定要成为合伙人吗?',
showCancel: true,
success: function(res) {
if (res.confirm) {
that.$u.put(`/app/storeStaff/bindUser?employId=${that.employId}`).then(res => {
if (res.code == 200) {
uni.showToast({
title:'绑定成功',
icon: 'success',
duration: 2000
})
}else if(res.code == 401){
uni.reLaunch({
url:'/pages/login/login'
})
}else{
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
}
})
} else if (res.cancel) {
uni.reLaunch({
url:'/pages/shouye/index'
})
}
}
})
2024-11-26 18:02:13 +08:00
}
},
2024-11-28 18:04:09 +08:00
onShow() {
this.timelist = []
setTimeout(() => {
console.log(this.$refs)
this.$refs.canvas.init(this.initChart)
}, 500)
this.recharge = 0
const now = new Date();
2024-12-03 14:40:32 +08:00
this.yeartime = {
year: now.getFullYear(),
month: now.getMonth() + 1, // 月份从0开始所以需要+1
day: 1 // 设置为月份的第一天
}
this.kstime = this.yeartime.year + '-' + this.yeartime.month + '-' + (this.yeartime.day < 10 ? '0' + this.yeartime.day : this.yeartime.day)
this.yeartimes.year = now.getFullYear()
this.yeartimes.month = now.getMonth() + 1
this.yeartimes.day = now.getDate()
this.jstime = this.yeartimes.year + '-' + this.yeartimes.month + '-' + (this.yeartimes.day < 10 ? '0' + this.yeartimes.day : this.yeartimes.day)
2024-11-28 18:04:09 +08:00
this.gettime()
2024-11-26 18:02:13 +08:00
},
methods: {
2024-12-03 14:40:32 +08:00
// 选择时间
btnshow(num){
this.show = true
this.num = num
},
2024-11-28 18:04:09 +08:00
// 点击跳转到管理店铺
btndianpu(){
uni.navigateTo({
url:'/page_fenbao/statulist/myshop/index?types=' + 11
})
},
// 点击返回首页
btns(){
uni.reLaunch({
url:'/pages/shouye/index'
})
},
// 点击跳转到个人中心
btngeren(){
uni.navigateTo({
url:'/page_fenbao/hehuoren/geren'
})
},
// 点击跳转到订单管理
btndingdan(){
uni.navigateTo({
url:'/page_user/switchs?type=' + 11
})
},
// 点击跳转到设备列表
btnshebie(){
uni.navigateTo({
url:'/page_fenbao/hehuoren/shebeilist'
})
},
// 点击获取时间
confirm(e) {
2024-12-03 14:40:32 +08:00
console.log(e);
2024-11-28 18:04:09 +08:00
this.recharge = 0
2024-12-03 14:40:32 +08:00
if(this.num == 1){
this.yeartime = e
this.kstime = this.yeartime.year + '-' + this.yeartime.month + '-' + this.yeartime.day
}else{
this.yeartimes = e
this.jstime = this.yeartimes.year + '-' + this.yeartimes.month + '-' + this.yeartimes.day
}
2024-11-28 18:04:09 +08:00
this.gettime()
setTimeout(() => {
console.log(this.$refs)
this.$refs.canvas.init(this.initChart)
}, 500)
},
// 进行获取用电量请求
gettime() {
2024-12-03 14:40:32 +08:00
// let data = {
// year: this.yeartime.year,
// month: this.yeartime.month,
// groupBy: 'create_date'
// }
2024-11-28 18:04:09 +08:00
this.loging = false
2024-12-03 14:40:32 +08:00
this.$u.get(`/app/dashboard/bonusDailyAmount?payDateStart=${this.kstime}&payDateEnd=${this.jstime}`).then((res) => {
2024-11-28 18:04:09 +08:00
if (res.code == 200) {
this.timelist = res.data
2024-12-03 14:40:32 +08:00
// if(this.monthdui != this.yeartime.month){
// this.timelists = this.timelist
// this.totalRecharge = res.totalRecharge
this.chartData = this.timelist.map(item => item.value);
this.chartday = this.timelist.map(item => item.key.slice(-2) + '日');
// }else{
// this.timelists = this.timelist.slice(0,this.dateday)
// this.timelists.reverse()
// this.totalRecharge = res.totalRecharge
// this.chartData = this.timelist.slice(0, this.dateday).map(item => item.recharge)
// this.chartday = this.timelist.slice(0, this.dateday).map(item => item.createDay + '日');
// }
this.timelists = this.timelist
this.totalRecharge = res.total
2024-11-28 18:04:09 +08:00
this.loging = true
for (let i = 0; i < this.timelist.length; i++) {
2024-12-03 14:40:32 +08:00
this.recharge += this.timelist[i].value
2024-11-28 18:04:09 +08:00
}
return this.recharge
this.$refs.canvas.init(this.initChart)
2024-12-03 14:40:32 +08:00
}else{
uni.showToast({
title:res.msg,
icon: 'none',
duration:2000
})
2024-11-28 18:04:09 +08:00
}
})
},
2024-11-26 18:02:13 +08:00
2024-11-28 18:04:09 +08:00
gettimes() {
let data = {
deviceId: this.deviceId,
year: this.yeartime.year,
month: this.yeartime.month,
groupBy: 'create_date'
}
this.loging = false
this.$u.get('/app/device/electric/count', data).then((res) => {
if (res.code == 200) {
this.timelist = res.data
this.chartData = this.timelist.map(item => item.usedElectriQuantity);
this.chartday = this.timelist.map(item => item.createDay + '日');
this.loging = true
}
})
},
generateWaveData(length) {
const data = []
for (let i = 0; i < length; i++) {
const y = Math.sin((i / (length - 1)) * Math.PI * 2) // 正弦函数生成波浪形状的y值
data.push((y + 1) * 50) // 映射到0-100的范围
}
return data
},
initChart(canvas, width, height, canvasDpr) {
let that = this
console.log(canvas, width, height, canvasDpr)
const option = {
grid: {
left: 60,
right: 10,
top: 10,
bottom: 30,
},
xAxis: {
type: 'category',
boundaryGap: false,
axisLine: {
show: false,
},
axisTick: {
show: false,
},
axisLabel: {
show: true,
color: '#fff',
fontSize: 11,
rotate: 0,
},
splitLine: {
show: false,
},
data: that.chartday,
},
yAxis: {
show: true,
axisLine: {
show: false,
},
axisTick: {
show: false,
},
axisLabel: {
show: true,
color: '#fff',
fontSize: 11,
formatter: function(value) {
// 保留两位小数没有小数时显示00
return value + '元'
},
},
splitLine: {
show: false,
},
},
series: [{
type: 'line',
smooth: 0.6,
symbol: 'none',
lineStyle: {
color: '#E0DBFF',
width: 4,
},
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#B4B0F7'
}, ]),
},
},
data: that.chartData,
}],
};
chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: canvasDpr
})
option.series[0].data = that.chartData
canvas.setChart(chart)
chart.setOption(option)
return chart
},
}
2024-11-26 18:02:13 +08:00
}
</script>
<style lang="scss">
2024-11-28 18:04:09 +08:00
/deep/ .u-title{
padding-bottom: 20rpx;
}
/deep/ .u-icon__icon{
padding-bottom: 20rpx;
2024-11-26 18:02:13 +08:00
}
2024-11-28 18:04:09 +08:00
.uni-ec-canvas {
width: 100%;
height: 320rpx;
display: block;
margin-top: 30rpx;
}
.btnxz {
padding: 0 20rpx;
box-sizing: border-box;
font-size: 28rpx;
font-family: Source Han Sans, Source Han Sans;
font-weight: 400;
color: #FFFFFF;
}
2024-11-26 18:02:13 +08:00
page {
background-color: #F7FAFE;
2024-11-28 18:04:09 +08:00
}
.page {
padding: 0 59rpx;
.name{
font-size: 36rpx;
color: #3D3D3D;
margin-top: 20rpx;
}
.gongneng{
2024-12-03 14:40:32 +08:00
margin-top: 40rpx;
2024-11-28 18:04:09 +08:00
width: 632rpx;
height: 150rpx;
2024-11-26 18:02:13 +08:00
background: #FFFFFF;
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42,130,228,0.1);
border-radius: 24rpx 24rpx 24rpx 24rpx;
2024-11-28 18:04:09 +08:00
display: flex;
justify-content: space-between;
padding: 26rpx 50rpx;
2024-11-26 18:02:13 +08:00
box-sizing: border-box;
2024-11-28 18:04:09 +08:00
image{
width: 96rpx;
height: 102rpx;
2024-11-26 18:02:13 +08:00
}
2024-11-28 18:04:09 +08:00
}
.title {
margin-top: 120rpx;
font-size: 48rpx;
font-weight: 400;
letter-spacing: 0rpx;
color: rgba(38, 43, 55, 1);
}
.card {
padding-top: 32rpx;
margin-top: 10rpx;
width: 632rpx;
height: 540rpx;
background: #8883F0;
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
opacity: 1;
border-radius: 40rpx;
.month {
margin-left: 22rpx;
font-size: 28rpx;
font-family: Source Han Sans, Source Han Sans;
font-weight: 400;
color: #FFFFFF;
}
.tit {
margin-top: 18rpx;
margin-left: 22rpx;
font-size: 20rpx;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #FFFFFF;
2024-11-26 18:02:13 +08:00
}
2024-11-28 18:04:09 +08:00
.txt {
margin-top: 2rpx;
margin-left: 22rpx;
2024-11-26 18:02:13 +08:00
font-size: 36rpx;
2024-11-28 18:04:09 +08:00
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 700;
color: #FFFFFF;
}
.echarts {
margin-left: 22rpx;
margin-top: 60rpx;
width: 588rpx;
height: 320rpx;
2024-11-26 18:02:13 +08:00
}
2024-11-28 18:04:09 +08:00
}
.list {
margin-top: 16rpx;
height: 530rpx;
overflow: auto;
.card_list {
width: 632rpx;
height: 88rpx;
background: #FFFFFF;
opacity: 1;
border-radius: 30rpx;
2024-11-26 18:02:13 +08:00
display: flex;
2024-11-28 18:04:09 +08:00
flex-wrap: nowrap;
2024-11-26 18:02:13 +08:00
justify-content: space-between;
2024-11-28 18:04:09 +08:00
margin-top: 16rpx;
2024-11-26 18:02:13 +08:00
align-items: center;
2024-11-28 18:04:09 +08:00
.left {
margin-left: 52rpx;
2024-11-26 18:02:13 +08:00
font-size: 28rpx;
2024-11-28 18:04:09 +08:00
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #808080;
}
.right {
margin-right: 20rpx;
font-size: 28rpx;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #808080;
2024-11-26 18:02:13 +08:00
}
}
}
}
</style>