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
177 lines
5.8 KiB
<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> |