星油积分商城
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.

177 lines
5.8 KiB

9 months ago
<template>
<view style="width: 100vw;height: 100vh;overflow: hidden;">
<view v-if="pageData" class="charging_body">
<view class="charging_container">
<view @click="reload" class="reload">
<uni-icons type="reload" size="25" color="#bbbbbb"></uni-icons>
</view>
<view style="margin-top: 0;" class="charging_title flex">
<text style="color: #bbbbbb;">订单编号</text>
<text class="oneflex flex jw">
<text> {{pageData.id}} </text>
</text>
</view>
<view class="charging_title flex">
<text style="color: #bbbbbb;">电桩编号</text>
<text class="oneflex flex jw">
<text> {{pageData.connectorId}} </text>
</text>
</view>
<view class="charging_dashboard">
<qiun-data-charts type="arcbar" :opts="opts" :chartData="chartData" />
</view>
<view class="charging_information flex">
<view class="oneflex flex jc ac column charging_information_item">
<view class="charging_information_item_label">预支付总金额</view>
<view class="charging_information_item_value">{{ tool.getnum(pageData.payMoneyPre,3) }}</view>
</view>
<view class="segmentation"></view>
<view class="oneflex flex jc ac column charging_information_item">
<view class="charging_information_item_label">预支付可用金额</view>
<view class="charging_information_item_value">{{tool.getnum(pageData.payMoneyPreAvailable,3)}}</view>
</view>
<view class="segmentation"></view>
<view class="oneflex flex jc ac column charging_information_item">
<view class="charging_information_item_label">预支付阀值</view>
<view class="charging_information_item_value">{{ tool.getnum(pageData.payMoneyPreFreeze,3) }}</view>
</view>
</view>
<view class="charging_cars flex jw">
<view class="charging_cars_item">
<view class="charging_cars_item_top">
累计充电时长
<image src="../../../static/sj.png"></image>
</view>
<view class="charging_cars_item_footer">{{ calcTime(pageData.endTime,pageData.startTime)}}</view>
</view>
<view class="charging_cars_item">
<view class="charging_cars_item_top">
累计充电量
<image src="../../../static/je1.png"></image>
</view>
<view class="charging_cars_item_footer">{{ tool.getnum(pageData.totalPower) }}</view>
</view>
</view>
<view class="charging_footer">
<view style="width: 100%;text-align: center; color: #00000073;font-size: 24rpx;margin-bottom: 20rpx;">
采样更新时间{{pageData.endTime}}
</view>
<view @click="stop" class="charging_footer_button flex ac jc">
{{pageData.orderStatus==2? '结束充电' : '结束中'}}
</view>
</view>
</view>
</view>
<skeleton v-else></skeleton>
</view>
</template>
<script>
import skeleton from './skeleton.vue'
import order from '@/api/order.js'
import qiunDataCharts from "../../components/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue"
import chargingAnimation from "../../components/chargingAnimation/chargingAnimation.vue"
export default {
components: {
qiunDataCharts,
chargingAnimation,
skeleton
},
data() {
return {
timer:null,
time:'',
pageData:null,
chartData: {
series: [{
name: "充电状态",
color: "rgba(92, 130, 250, 1)",
data: 0
}]
},
//您可以通过修改 config-ucharts.js 文件中下标为 ['arcbar'] 的节点来配置全局默认参数,如都是默认参数,此处可以不传 opts 。实际应用过程中 opts 只需传入与全局默认参数中不一致的【某一个属性】即可实现同类型的图表显示不同的样式,达到页面简洁的需求。
opts: {
padding: undefined,
title: {
name: "0%",
fontSize: 35,
color: "#476FFA"
},
subtitle: {
name: "充电中",
fontSize: 15,
color: "#476FFA"
},
extra: {
arcbar: {
type: "circle",
width: 20,
backgroundColor: "#E9E9E9",
customColor: ['#1890FF'],
startAngle: 1.5,
endAngle: 0.25,
gap: 2
}
}
}
};
},
onUnload() {
uni.$emit('orderUpdate');
//
let routes = getCurrentPages();
if(routes[routes.length-2]['route']=='ChargingStation/pages/placeOrder/result/index'){
uni.reLaunch({
url: '/pages/index/index'
})
}
//
clearInterval(this.timer)
},
onReady() {},
onLoad(e) {
if(e.id){
this.getDetails(e.id);
this.timer = setInterval(()=>{
this.reload()
},30000)
}
},
methods: {
reload(){
this.getDetails(this.pageData.id)
},
calcTime(formerly,now){
var startTime = new Date(now); // 开始时间
var endTime = new Date(formerly); // 结束时间
var diff = endTime.getTime() - startTime.getTime(); // 获取差值时间(以毫秒为单位)
var seconds = Math.floor(diff / 1000); // 换算出相差的秒数
var minutes = Math.floor(seconds / 60); // 换算出相差的分钟数
var hours = Math.floor(minutes / 60); // 换算出相差的小时数
var days = Math.floor(hours / 24); // 换算出相差的天数
return hours % 24 + " 小时 " + minutes % 60 + " 分钟 "
},
getDetails(id){
order.xchargeOrderInfo(id).then(res=>{
this.pageData = res.data;
this.chartData.series[0]['data'] = res.data.soc? Number(res.data.soc) / 100 : 0;
this.opts.title.name = res.data.soc? `${Number(res.data.soc)}%` : '0%';
this.opts.subtitle.name = res.data.orderStatus==2? `充电中` : '正在停止';
})
},
stop(){
if(this.pageData.orderStatus!==2) return ;
order.stopOrder({id:this.pageData.id}).then(res=>{
if(res.code==20000){
uni.navigateBack()
}
})
}
}
};
</script>
<style scoped lang="scss">
@import 'index.scss';
</style>