小鹿骑行

This commit is contained in:
3321822538@qq.com 2025-04-23 17:50:42 +08:00
parent c06f62d1eb
commit 0eaacca95a
12 changed files with 326 additions and 162 deletions

View File

@ -115,11 +115,11 @@
<view class=""> <view class="">
<view class=""> <view class="">
起步价格{{'¥' + item.startRule.startingPrice}}{{item.startRule.startingTime}} <text 起步价格{{'¥' + item.startRule.startingPrice}}{{item.startRule.startingTime}} <text
v-if="item.rentalUnit == 'hours'">小时</text><text v-else>分钟</text> v-if="item.rentalUnit == 'hours'">小时</text><text v-if="item.rentalUnit == 'minutes'">分钟</text><text v-if="item.rentalUnit == 'day'"></text>
</view> </view>
<view class=""> <view class="">
超出价格{{'¥' + item.startRule.timeoutPrice}}{{item.startRule.timeoutTime}} <text 超出价格{{'¥' + item.startRule.timeoutPrice}}{{item.startRule.timeoutTime}} <text
v-if="item.rentalUnit == 'hours'">小时</text><text v-else>分钟</text> v-if="item.rentalUnit == 'hours'">小时</text><text v-if="item.rentalUnit == 'minutes'">分钟</text><text v-if="item.rentalUnit == 'day'"></text>
</view> </view>
</view> </view>
</view> </view>
@ -693,42 +693,12 @@
this.bikeobj = res.data this.bikeobj = res.data
console.log(res.data,'020202'); console.log(res.data,'020202');
this.$u.put(`/app/user/bindArea?areaId=${res.data.areaId}`).then(resp =>{}) this.$u.put(`/app/user/bindArea?areaId=${res.data.areaId}`).then(resp =>{})
// if (res.data.onlineStatus == 0) {
// wx.openBluetoothAdapter({
// success: function(res) {
// console.log('')
// xBlufi.initXBlufi(1)
// xBlufi.notifyStartDiscoverBle({
// 'isStart': true
// })
// xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent)
// },
// fail: function(err) {
// console.error('', err)
// }
// })
// }
} }
}) })
} else { } else {
this.$u.get(`/app/device/availableDetail?sn=${this.chesn}`).then((res) => { this.$u.get(`/app/device/availableDetail?sn=${this.chesn}`).then((res) => {
if (res.code == 200) { if (res.code == 200) {
this.bikeobj = res.data this.bikeobj = res.data
// if (res.data.onlineStatus == 0) {
// wx.openBluetoothAdapter({
// success: function(res) {
// console.log('')
// xBlufi.initXBlufi(1)
// xBlufi.notifyStartDiscoverBle({
// 'isStart': true
// })
// xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent)
// },
// fail: function(err) {
// console.error('', err)
// }
// })
// }
} }
}) })
} }
@ -918,7 +888,7 @@
.mingxitc { .mingxitc {
position: fixed; position: fixed;
left: 0; left: 0;
bottom: 180rpx; bottom: 150rpx;
width: 750rpx; width: 750rpx;
max-height: 912rpx; max-height: 912rpx;
overflow: scroll; overflow: scroll;
@ -975,7 +945,7 @@
.zhifu { .zhifu {
width: 750rpx; width: 750rpx;
height: 238rpx; height: 240rpx;
background: #FFFFFF; background: #FFFFFF;
box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0, 0, 0, 0.3); box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0, 0, 0, 0.3);
border-radius: 0rpx 0rpx 0rpx 0rpx; border-radius: 0rpx 0rpx 0rpx 0rpx;

View File

@ -172,7 +172,10 @@
name: '按小时', name: '按小时',
disabled: false disabled: false
}, },
{
name: '按天',
disabled: false
},
], ],
startingPrice: "", startingPrice: "",
startingTime: '', startingTime: '',
@ -264,8 +267,10 @@
radioGroupChange(e) { radioGroupChange(e) {
if (e == '按分钟') { if (e == '按分钟') {
this.data.rentalUnit = 'minutes' this.data.rentalUnit = 'minutes'
} else { } else if(e == '按小时'){
this.data.rentalUnit = 'hours' this.data.rentalUnit = 'hours'
}else {
this.data.rentalUnit = 'day'
} }
}, },
sub() { sub() {
@ -391,7 +396,7 @@
.u-radio-group { .u-radio-group {
display: flex; display: flex;
gap: 40rpx; // gap: 40rpx;
.u-radio { .u-radio {
font-size: 28rpx; font-size: 28rpx;

View File

@ -62,6 +62,28 @@
开启短信通知短信费用0.1/从余额中扣除 开启短信通知短信费用0.1/从余额中扣除
</view> </view>
</view> </view>
<view class="card_li">
<view class="tops">
<view class="card_left">
寻车范围
</view>
<view class="card_right">
<u-switch v-model="form.requiredRingRadius"></u-switch>
</view>
</view>
<view class="tops" style="margin-top: 20rpx;" v-if="form.requiredRingRadius == true">
<view class="card_left">
允许寻车范围
</view>
<view class="card_right">
<input type="number" v-model="form.ringRadius" placeholder=" " class="input"
placeholder-style="color:#C7CDD3" style="width: 100rpx;">
</view>
</view>
<view class="tips" style="margin-top: 10rpx;">
开启后用户需在车辆指定范围才允许响铃寻车(防止恶意响铃)
</view>
</view>
<view class="card_li"> <view class="card_li">
<view class="tops"> <view class="tops">
<view class="card_left"> <view class="card_left">

View File

@ -17,14 +17,9 @@
<view class="new_infocard"> <view class="new_infocard">
<view class="topsn"> <view class="topsn">
<view class="lt"> <view class="lt">
SN{{deviceInfos.sn}} 车牌号{{deviceInfos.vehicleNum == null ? '--' : deviceInfos.vehicleNum}}
<view class="lypic" style="background-color: #28c445;" v-if="ver_dataflag == 3 && deviceInfos.onlineStatus == 0">
<image src="https://api.ccttiot.com/smartmeter/img/static/uqUiYiMtGTjkPNgmCjvP" mode=""></image>
</view>
<view class="lypic" v-if="ver_dataflag == 1 && deviceInfos.onlineStatus == 0">
<image src="https://api.ccttiot.com/smartmeter/img/static/uqUiYiMtGTjkPNgmCjvP" mode=""></image>
</view>
</view> </view>
<view class="rt"> <view class="rt">
<view class="stutas"> <view class="stutas">
<span style="background-color: #979797;" v-if="deviceInfos.status == 0">仓库中</span> <span style="background-color: #979797;" v-if="deviceInfos.status == 0">仓库中</span>
@ -44,11 +39,45 @@
</view> </view>
</view> </view>
</view> </view>
<view class="" style="display: flex;justify-content: space-between;">
<view class="cent">
<view class="lypic" v-if="ver_dataflag == 3 && deviceInfos.onlineStatus == 0">
<image src="https://api.ccttiot.com/smartmeter/img/static/uLw46jus4X9fposAvVD7" mode=""></image> 已连接
</view>
<view class="lypic" v-if="ver_dataflag == 1 && deviceInfos.onlineStatus == 0">
<image src="https://api.ccttiot.com/smartmeter/img/static/uCdHjNaNfD9aikVg9Cuk" mode=""></image> 未连接
</view>
<view class="lypic" v-if="deviceInfos.music == 0">
<image src="https://api.ccttiot.com/smartmeter/img/static/uDORYeTuc2EQ1lSI2dbe" mode=""></image> 静音
</view>
<view class="lypic" v-if="deviceInfos.music == 1">
<image src="https://api.ccttiot.com/smartmeter/img/static/u8ii1aiUgREfYyMVIjpO" mode=""></image> 语音
</view>
<view class="lypic" v-if="deviceInfos.music == 2">
<image src="https://api.ccttiot.com/smartmeter/img/static/uP7BOVsjvWaGItgHtoKV" mode=""></image> 彩铃
</view>
</view>
</view>
<view class="bikesn">
<view class="">
SN{{deviceInfos.sn == null ? '--' : deviceInfos.sn}}
</view>
<view class="">
MAC{{deviceInfos.mac == null ? '--' : deviceInfos.mac}}
</view>
<view class="">
车型{{deviceInfos.modelName == null ? '--' : deviceInfos.modelName}}
</view>
</view>
<view class="bikexx"> <view class="bikexx">
<view class="dianliang"> <view class="dianliang">
<image src="https://api.ccttiot.com/smartmeter/img/static/ucFiREWFvUepgFX0LR1h" mode=""></image> <image v-if="deviceInfos.remainingPower >= 0 && deviceInfos.remainingPower < 20 " src="https://api.ccttiot.com/smartmeter/img/static/u8M9KmIfHXpmeifTwCzj" mode=""></image>
<image v-if="deviceInfos.remainingPower >= 20 && deviceInfos.remainingPower < 50 " src="https://api.ccttiot.com/smartmeter/img/static/u2gp2pE9kPGwaJ4MKUxE" mode=""></image>
<image v-if="deviceInfos.remainingPower >= 50 && deviceInfos.remainingPower < 80 " src="https://api.ccttiot.com/smartmeter/img/static/umm5Ruc5vhNSjeacslwX" mode=""></image>
<image v-if="deviceInfos.remainingPower >= 80 && deviceInfos.remainingPower <= 100 " src="https://api.ccttiot.com/smartmeter/img/static/uo75cOfYZiQoxZQAI3FH" mode=""></image>
<view class="dl"> <view class="dl">
电量<span>{{deviceInfos.remainingPower == null ? '--' : deviceInfos.remainingPower}}%</span> 电量<span>{{deviceInfos.remainingPower == null ? '--' : deviceInfos.remainingPower.toFixed(2)}}%</span>
</view> </view>
<view class="dy"> <view class="dy">
电压<span>{{deviceInfos.voltage == null ? '--' : deviceInfos.voltage.toFixed(2)}}V</span> 电压<span>{{deviceInfos.voltage == null ? '--' : deviceInfos.voltage.toFixed(2)}}V</span>
@ -58,15 +87,15 @@
<view class=""> <view class="">
<image src="https://api.ccttiot.com/smartmeter/img/static/uBueutMzheLZWktEFWVR" mode=""></image> 续航 {{deviceInfos.remainEndurance == null ? '--' : deviceInfos.remainEndurance}}km <image src="https://api.ccttiot.com/smartmeter/img/static/uBueutMzheLZWktEFWVR" mode=""></image> 续航 {{deviceInfos.remainEndurance == null ? '--' : deviceInfos.remainEndurance}}km
</view> </view>
<view class="" style="margin-top: 20rpx;"> <!-- <view class="" style="margin-top: 20rpx;">
<image src="https://api.ccttiot.com/smartmeter/img/static/ur7Q7YC9AOkkTpvaLEUU" mode=""></image> 车型 {{deviceInfos.modelName}} <image src="https://api.ccttiot.com/smartmeter/img/static/ur7Q7YC9AOkkTpvaLEUU" mode=""></image> 车型 {{deviceInfos.modelName}}
</view> </view> -->
</view> </view>
<view class="ewm"> <view class="ewm">
<view class="" @click="generateQrcode()"> <!-- <view class="" @click="generateQrcode()">
<image src="https://api.ccttiot.com/smartmeter/img/static/uiCssXpb4SpuFAQYOp2A" mode=""></image> 二维码 <image src="https://api.ccttiot.com/smartmeter/img/static/uiCssXpb4SpuFAQYOp2A" mode=""></image> 二维码
</view> </view> -->
<view class="" style="margin-top: 14rpx;" @click="toTrack"> <view class="" @click="toTrack">
<image src="https://api.ccttiot.com/smartmeter/img/static/uJtMZ16iR2q8agQ4iLm3" mode=""></image> 轨迹 <image src="https://api.ccttiot.com/smartmeter/img/static/uJtMZ16iR2q8agQ4iLm3" mode=""></image> 轨迹
</view> </view>
<view class="" style="margin-top: 14rpx;" @click="btndaohang"> <view class="" style="margin-top: 14rpx;" @click="btndaohang">
@ -141,11 +170,17 @@
</view> </view>
修改车型 修改车型
</view> </view>
<view class="dangeanniu" @click="yunyingflag = true">
<view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/uZuY3hgJBtCwnSnWTIC3" mode=""></image>
</view>
划拨
</view>
<view class="dangeanniu" v-if="Number(deviceInfos.softwareVersion) > 6000" @click="btnjingyin"> <view class="dangeanniu" v-if="Number(deviceInfos.softwareVersion) > 6000" @click="btnjingyin">
<view class="pic"> <view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/uUJGVRpPIRC34vF7240K" mode=""></image> <image src="https://api.ccttiot.com/smartmeter/img/static/uUJGVRpPIRC34vF7240K" mode=""></image>
</view> </view>
{{jytxt}} 声音
</view> </view>
<view class="dangeanniu" @click="btn(10)"> <view class="dangeanniu" @click="btn(10)">
<view class="pic"> <view class="pic">
@ -153,6 +188,12 @@
</view> </view>
定位更新 定位更新
</view> </view>
<view class="dangeanniu" @click="generateQrcode()">
<view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/uQdKTkDuXlwaZT5WFL2l" mode=""></image>
</view>
二维码
</view>
<!-- 蓝牙控制 --> <!-- 蓝牙控制 -->
<view class="dangeanniu" @click="lanya(1)" v-if="ver_dataflag == 3 && deviceInfos.onlineStatus == 0"> <view class="dangeanniu" @click="lanya(1)" v-if="ver_dataflag == 3 && deviceInfos.onlineStatus == 0">
<view class="pic"> <view class="pic">
@ -179,41 +220,26 @@
蓝牙响铃 蓝牙响铃
</view> </view>
</view> </view>
<view class="bikejcxx">
<view class="wai">
<view class="lt">
MAC<span>{{deviceInfos.mac}}</span>
</view>
<view class="lt">
网络状态<span v-if="deviceInfos.onlineStatus==0">离线</span><span v-if="deviceInfos.onlineStatus==1">在线</span>
</view>
</view>
<view class="wai">
<view class="lt">
车牌号<span>{{deviceInfos.vehicleNum == null ? '--' : deviceInfos.vehicleNum}}</span>
</view>
<view class="lt">
续航里程<span>{{deviceInfos.remainEndurance == null ? '--' : deviceInfos.remainEndurance}}km</span>
</view>
</view>
<view class="wai">
<view class="lt">
运营区域<span>{{deviceInfos.areaName}}</span>
</view>
<view class="lt">
4G信号/GPS<span>{{deviceInfos.signalStrength == null ? '--' : deviceInfos.signalStrength}}/{{deviceInfos.satellites == null ? '--' : deviceInfos.satellites}}</span>
</view>
</view>
</view>
<view class="zuche"> <view class="zuche">
<view class="one">
最近租车人<image src="https://api.ccttiot.com/smartmeter/img/static/uCa86z0tr5WHiymtRJYt" mode=""></image> <span @click="btntel">{{deviceInfos.lastUserPhone == null ? '--' : deviceInfos.lastUserPhone}}</span>
</view>
<!-- <view class="">
最后定位坐标<span>{{deviceInfos.latitude}},{{deviceInfos.longitude}}</span>
</view> -->
<view class=""> <view class="">
最后定位时间<span>{{deviceInfos.lastTime == null ? '--' : deviceInfos.lastTime}}</span> 运营区域<span>{{deviceInfos.areaName == null ? '--' : deviceInfos.areaName}}</span>
</view>
<view class="one">
最后租车客户 <span @click="btntel" style="color: #4C97E7;"><image src="https://api.ccttiot.com/smartmeter/img/static/uCa86z0tr5WHiymtRJYt" mode=""></image>{{deviceInfos.lastUserPhone == null ? '--' : deviceInfos.lastUserPhone}}</span>
</view>
<view class="one" style="display: flex;justify-content: space-between;align-items: center;">
最后定位时间
<view class="one" style="margin-bottom: 0;">
<image src="https://api.ccttiot.com/smartmeter/img/static/uesvOKQAO4eIFWSTIuQD" mode=""></image> {{deviceInfos.satellites == null ? '--' : deviceInfos.satellites}}
</view>
<span>{{deviceInfos.lastLocationTime == null ? '--' : deviceInfos.lastLocationTime}}</span>
</view>
<view class="one" style="display: flex;justify-content: space-between;align-items: center;">
最后在线时间
<view class="one" style="margin-bottom: 0;">
<image src="https://api.ccttiot.com/smartmeter/img/static/u5ouYhbxDvAVM6pImusK" mode=""></image> {{deviceInfos.signalStrength == null ? '--' : deviceInfos.signalStrength}}
</view>
<span>{{deviceInfos.lastOnlineTime == null ? '--' : deviceInfos.lastOnlineTime}}</span>
</view> </view>
</view> </view>
</view> </view>
@ -275,7 +301,7 @@
</view> </view>
</view> </view>
<u-select v-model="showModelList" :list="ModelList" title='修改车型' @confirm="confirm"></u-select> <u-select v-model="showModelList" :list="ModelList" title='修改车型' @confirm="confirm"></u-select>
<u-select v-model="yunyingflag" :list="yunyingList" title='修改运营区' @confirm="yunyingconfirm"></u-select>
<u-select v-model="shengyin" :list="shengyinlist" title='修改声音' @confirm="shengyinaniu"></u-select> <u-select v-model="shengyin" :list="shengyinlist" title='修改声音' @confirm="shengyinaniu"></u-select>
</view> </view>
</template> </template>
@ -289,6 +315,7 @@
return { return {
shengyin:false, shengyin:false,
shengyinlist:[{label:'静音',value:0},{label:'语音',value:1},{label:'彩铃',value:2}], shengyinlist:[{label:'静音',value:0},{label:'语音',value:1},{label:'彩铃',value:2}],
devicesList: [], devicesList: [],
searching: false, searching: false,
texts: '正在扫描蓝牙设备...', texts: '正在扫描蓝牙设备...',
@ -350,6 +377,8 @@
deptId: null, deptId: null,
showModelList: false, showModelList: false,
ModelList: [], ModelList: [],
yunyingflag: false,
yunyingList: [],
jytxt: '', jytxt: '',
ver_dataflag: 1, ver_dataflag: 1,
@ -366,6 +395,7 @@
this.deptId = uni.getStorageSync('deptId'); this.deptId = uni.getStorageSync('deptId');
}, },
onShow() { onShow() {
this.getyunying()
xBlufi.notifyStartDiscoverBle({ xBlufi.notifyStartDiscoverBle({
'isStart': true 'isStart': true
}) })
@ -383,6 +413,17 @@
} }
}, },
methods: { methods: {
//
getyunying(){
this.$u.get(`/bst/area/list?pageNum=1&pageSize=999`).then(res =>{
if(res.code == 200){
this.yunyingList = res.rows.map(item => ({
value: item.id,
label: item.name
}))
}
})
},
// //
btntel(){ btntel(){
uni.makePhoneCall({ uni.makePhoneCall({
@ -397,9 +438,10 @@
}, },
// //
shengyinaniu(e){ shengyinaniu(e){
this.$u.put(`/bst/device/iot/music?sn=${this.sn}&music=${e[0].value}`).then(res => { this.$u.put(`/bst/device/iot/music?id=${this.sn}&music=${e[0].value}`).then(res => {
if (res.code == 200) { if (res.code == 200) {
this.jytxt = e[0].label this.jytxt = e[0].label
this.deviceInfos.music = e[0].value
uni.showToast({ uni.showToast({
title: '操作成功', title: '操作成功',
icon: 'success', icon: 'success',
@ -526,6 +568,32 @@
console.log('diaoyongle') console.log('diaoyongle')
this.showModelList = true this.showModelList = true
}, },
//
yunyingconfirm(e){
let areaId = e[0].value
let data = {
ids: [this.sn],
areaId: areaId
}
this.$u.put('/bst/device/transfer', data).then((res) => {
if (res.code == 200) {
this.showModelList = false
this.deviceInfo()
uni.showToast({
title: '修改成功',
icon: 'none',
duration: 2000
})
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
}
})
},
//
confirm(e) { confirm(e) {
let modelId = e[0].value let modelId = e[0].value
let data = { let data = {
@ -1308,13 +1376,15 @@
} }
span{ span{
font-size: 28rpx; font-size: 28rpx;
color: #4C97E7; color: #3D3D3D;
} }
} }
view{ view{
font-size: 28rpx; font-size: 28rpx;
color: #808080; color: #808080;
margin-bottom: 26rpx; margin-bottom: 26rpx;
display: flex;
justify-content: space-between;
span{ span{
color: #3D3D3D; color: #3D3D3D;
} }
@ -1355,9 +1425,9 @@
margin: auto; margin: auto;
margin-bottom: 14rpx; margin-bottom: 14rpx;
image{ image{
width: 32rpx; width: 42rpx;
height: 32rpx; height: 42rpx;
margin-top: 28rpx; margin-top: 24rpx;
} }
} }
} }
@ -1386,22 +1456,48 @@
.xuhang{ .xuhang{
view{ view{
width: 284rpx; width: 284rpx;
height: 70rpx; height: 102rpx;
background: #F1F1F1; background: #F1F1F1;
border-radius: 8rpx 8rpx 8rpx 8rpx; border-radius: 8rpx 8rpx 8rpx 8rpx;
display: flex; display: flex;
align-items: center; align-items: center;
font-size: 24rpx; font-size: 30rpx;
color: #3D3D3D; color: #3D3D3D;
padding-left: 18rpx; padding-left: 18rpx;
box-sizing: border-box; box-sizing: border-box;
image{ image{
width: 32rpx; width: 56rpx;
height: 32rpx; height: 56rpx;
margin-right: 14rpx; margin-right: 14rpx;
} }
} }
} }
.bikesn{
font-size: 24rpx;
color: #7C7C7C;
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 1rpx solid #D8D8D8;
padding-bottom: 26rpx;
margin-top: 20rpx;
}
.cent{
display: flex;
.lypic{
display: flex;
align-items: center;
font-size: 24rpx;
color: #3D3D3D;
margin-right: 22rpx;
image{
width: 36rpx;
height: 36rpx;
margin-right: 8rpx;
}
}
}
.bikexx{ .bikexx{
margin-top: 26rpx; margin-top: 26rpx;
display: flex; display: flex;
@ -1411,11 +1507,17 @@
box-sizing: border-box; box-sizing: border-box;
.dianliang{ .dianliang{
position: relative; position: relative;
background: linear-gradient(to right, #c0dfff, #fff);
border-radius: 10rpx;
.dl{ .dl{
margin-top: 66rpx; margin-top: 10rpx;
padding-left: 52rpx;
box-sizing: border-box;
} }
.dy{ .dy{
margin-top: 2rpx; margin-top: 2rpx;
padding-left: 52rpx;
box-sizing: border-box;
} }
view{ view{
padding-left: 14rpx; padding-left: 14rpx;
@ -1428,38 +1530,26 @@
} }
image{ image{
position: absolute; position: absolute;
width: 222rpx; width: 22rpx;
height: 160rpx; height: 48rpx;
z-index: -1; left: 20rpx;
top: 30rpx;
} }
} }
} }
.topsn{ .topsn{
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
border-bottom: 1rpx solid #D8D8D8;
padding-bottom: 26rpx; padding-bottom: 26rpx;
box-sizing: border-box; box-sizing: border-box;
.lt{ .lt{
font-weight: 600; font-weight: 600;
font-size: 32rpx; font-size: 30rpx;
color: #3D3D3D; color: #3D3D3D;
display: flex; display: flex;
align-items: center; align-items: center;
.lypic{
background-color: #ccc;
width: 50rpx;
height: 50rpx;
margin-left: 10rpx;
text-align: center;
padding-top: 8rpx;
border-radius: 6rpx;
box-sizing: border-box;
image{
width: 32rpx;
height: 32rpx;
}
}
} }
.rt{ .rt{
display: flex; display: flex;

View File

@ -74,11 +74,11 @@
时间范围 时间范围
</view> </view>
<view class="inptime"> <view class="inptime">
<view class="" @click="oneshow = true"> <view class="" @click="showTimePicker('start')">
{{kstime}} {{kstime}}
</view> </view>
-- --
<view class="" @click="twoshow = true"> <view class="" @click="showTimePicker('end')">
{{jstime}} {{jstime}}
</view> </view>
</view> </view>
@ -523,6 +523,13 @@
// tab // tab
btntab(num){ btntab(num){
this.index = num this.index = num
},
showTimePicker(type) {
if(type === 'start') {
this.oneshow = true
} else {
this.twoshow = true
}
} }
} }
} }

View File

@ -110,7 +110,8 @@
let data = { let data = {
orderId:this.orderId, orderId:this.orderId,
lon:this.lon, lon:this.lon,
lat:this.lat lat:this.lat,
checkLocation:true
} }
this.$u.post(`/app/order/calcFee`,data).then(res =>{ this.$u.post(`/app/order/calcFee`,data).then(res =>{
if(res.code == 200){ if(res.code == 200){

View File

@ -271,7 +271,8 @@ export default {
// //
getfeiyong(){ getfeiyong(){
let data = { let data = {
orderId:this.orderid orderId:this.orderid,
checkLocation:true
} }
this.$u.post(`/app/order/calcFee`,data).then(res =>{ this.$u.post(`/app/order/calcFee`,data).then(res =>{
if(res.code == 200){ if(res.code == 200){

View File

@ -1,7 +1,6 @@
<template> <template>
<view class="page"> <view class="page">
<u-navbar title="订单详情" :border-bottom="false" :background="bgc" title-color='#000' title-size='36' height='45' back-icon-color='#000'></u-navbar> <u-navbar title="订单详情" :border-bottom="false" :background="bgc" title-color='#000' title-size='36' height='45' back-icon-color='#000'></u-navbar>
<view class="jiaoyi"> <view class="jiaoyi">
<view class="pic"> <view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/uiXte3LpSV30jyvTUR2R" mode=""></image> <image src="https://api.ccttiot.com/smartmeter/img/static/uiXte3LpSV30jyvTUR2R" mode=""></image>
@ -102,6 +101,14 @@
</view> </view>
</view> </view>
<view class="xuxian" style="border: 0;"> <view class="xuxian" style="border: 0;">
<view class="one" v-if="info.status == 'PROCESSING'">
<view class="qian">
预估金额
</view>
<view class="shen">
<span style="color: #E7612E;font-size: 40rpx;">{{yugumoney}}</span>
</view>
</view>
<view class="one"> <view class="one">
<view class="qian"> <view class="qian">
实付金额 实付金额
@ -129,9 +136,12 @@
<view class="qian"> <view class="qian">
骑行距离 骑行距离
</view> </view>
<view class="shen"> <view class="shen" v-if="info.status != 'PROCESSING'">
{{info.distance > 1000 ? (info.distance / 1000).toFixed(2) + 'km' : info.distance.toFixed(2) + 'm'}} {{info.distance > 1000 ? (info.distance / 1000).toFixed(2) + 'km' : info.distance.toFixed(2) + 'm'}}
</view> </view>
<view class="shen" v-else>
订单结束后展示
</view>
</view> </view>
<view class="one"> <view class="one">
<view class="qian"> <view class="qian">
@ -203,13 +213,27 @@
rideDuration: '' ,// rideDuration: '' ,//
kefulist:[], kefulist:[],
kefuflag:false, kefuflag:false,
yugumoney:''
} }
}, },
onLoad(e) { onLoad(e) {
this.id = e.id this.id = e.id
this.orderInfo() this.orderInfo()
this.getyugu()
}, },
methods: { methods: {
//
getyugu() {
let data = {
orderId:this.id,
checkLocation:false
}
this.$u.post(`/app/order/calcFee`,data).then((res) => {
if (res.code == 200) {
this.yugumoney = res.data.ridingFee
}
})
},
// //
orderInfo() { orderInfo() {
this.$u.get("/app/order/mineDetail?id=" + this.id).then((res) => { this.$u.get("/app/order/mineDetail?id=" + this.id).then((res) => {
@ -221,22 +245,33 @@
}, },
// //
calculateRideDuration() { calculateRideDuration() {
const createTime = new Date(this.info.startTime) if(this.info.startTime != null){
let returnTime = '' const createTime = new Date(this.info.startTime)
if(this.info.endTime == null){ let returnTime = ''
returnTime = new Date() if(this.info.status === 'PROCESSING'){
}else{ //
returnTime = new Date(this.info.endTime) returnTime = new Date()
} const duration = (returnTime - createTime) / 1000 //
console.log(returnTime,'0202020'); const hours = Math.floor(duration / 3600)
const duration = (returnTime - createTime) / 1000// const minutes = Math.floor((duration % 3600) / 60)
const hours = Math.floor(duration / 3600) if (hours > 0) {
const minutes = Math.floor((duration % 3600) / 60) this.rideDuration = `${hours}小时${minutes}`
const seconds = Math.floor(duration % 60) } else {
if (hours > 0) { this.rideDuration = `${minutes}`
this.rideDuration = `${hours}小时${minutes}${seconds}` }
} else { } else if(this.info.endTime != null){
this.rideDuration = `${minutes}${seconds}` //
returnTime = new Date(this.info.endTime)
const duration = (returnTime - createTime) / 1000 //
const hours = Math.floor(duration / 3600)
const minutes = Math.floor((duration % 3600) / 60)
const seconds = Math.floor(duration % 60)
if (hours > 0) {
this.rideDuration = `${hours}小时${minutes}${seconds}`
} else {
this.rideDuration = `${minutes}${seconds}`
}
}
} }
}, },
// //

View File

@ -228,15 +228,15 @@
} }
}, },
selectItem(item) { selectItem(item) {
this.confirm(item); this.confirm(item)
this.show = false; this.show = false
this.searchKey = ''; // this.searchKey = '' //
this.displayList = this.list; // this.displayList = this.list //
}, },
// //
confirm(e) { confirm(e) {
console.log(e,e[0].value); console.log(e,e[0].value)
uni.setStorageSync('adminAreaid', e[0].value); uni.setStorageSync('adminAreaid', e[0].value)
uni.navigateTo({ uni.navigateTo({
url: `/page_shanghu/guanli/admin_worke?id=${e[0].value}` url: `/page_shanghu/guanli/admin_worke?id=${e[0].value}`
}) })
@ -245,6 +245,7 @@
getareaList() { getareaList() {
this.$u.get("/getInfo").then(res =>{ this.$u.get("/getInfo").then(res =>{
if(res.code == 200){ if(res.code == 200){
this.logoflag = false
this.user = res.user this.user = res.user
this.adminflag = res.user.admin this.adminflag = res.user.admin
if(res.roles != null || res.roles.length > 0){ if(res.roles != null || res.roles.length > 0){

View File

@ -93,10 +93,16 @@
<view class=""> <view class="">
<text>开始时间</text> {{item.startTime == null ? '--' : item.startTime}} <text>开始时间</text> {{item.startTime == null ? '--' : item.startTime}}
</view> </view>
<view class=""> <view class="" v-if="item.status == 'PROCESSING'">
<text>已骑行</text> {{computeTimeDiff(item.startTime)}}
</view>
<view class="" v-if="item.status != 'PROCESSING'">
<text>时长</text> {{computedList(item.duration)}} <text>时长</text> {{computedList(item.duration)}}
</view> </view>
<view class=""> <view class="" v-if="item.status == 'PROCESSING'">
<text>距离</text> 订单结束后展示
</view>
<view class="" v-if="item.status != 'PROCESSING'">
<text>距离</text> {{item.distance > 1000 ? (item.distance / 1000).toFixed(2) + 'km' : item.distance.toFixed(2) + 'm'}} <text>距离</text> {{item.distance > 1000 ? (item.distance / 1000).toFixed(2) + 'km' : item.distance.toFixed(2) + 'm'}}
</view> </view>
<view class="" v-if="item.status == 'WAIT_VERIFY'"> <view class="" v-if="item.status == 'WAIT_VERIFY'">
@ -174,6 +180,22 @@
if (showSeconds) parts.push(`${s}`) if (showSeconds) parts.push(`${s}`)
return parts.join("") || "0钟" return parts.join("") || "0钟"
}, },
//
computeTimeDiff(startTime) {
if (!startTime) return '--';
const start = new Date(startTime);
const now = new Date();
const diff = Math.floor((now - start) / 1000); //
const hours = Math.floor(diff / 3600);
const minutes = Math.floor((diff % 3600) / 60);
let result = '';
if (hours > 0) result += `${hours}`;
if (minutes > 0 || hours > 0) result += `${minutes}`;
return result || '0分';
},
// //
getlist(){ getlist(){
this.$u.get(`/app/order/mineList?pageNum=${this.pageNum}&pageSize=10&suitType=${this.activeindex}&status=${this.status}&isAsc=desc&orderByColumn=createTime`).then((res) => { this.$u.get(`/app/order/mineList?pageNum=${this.pageNum}&pageSize=10&suitType=${this.activeindex}&status=${this.status}&isAsc=desc&orderByColumn=createTime`).then((res) => {
@ -210,6 +232,7 @@
url:'/page_fenbao/orderxq' url:'/page_fenbao/orderxq'
}) })
}, },
// //
handqixing() { handqixing() {
if(this.total > this.qixinglist.length){ if(this.total > this.qixinglist.length){

View File

@ -489,9 +489,7 @@
}, },
// //
btnfm() { btnfm() {
// xBlufi.notifySendCustomData({
// customData: "11play1@"
// })
this.$u.put(`/app/device/iot/ring?id=${this.deivceobj.deviceId}`).then((res) => { this.$u.put(`/app/device/iot/ring?id=${this.deivceobj.deviceId}`).then((res) => {
if (res.code == 200) { if (res.code == 200) {
uni.showToast({ uni.showToast({
@ -572,7 +570,8 @@
let data = { let data = {
orderId: this.deivceobj.orderId, orderId: this.deivceobj.orderId,
lon: this.lat, lon: this.lat,
lat: this.lon lat: this.lon,
checkLocation:true
} }
this.$u.post(`/app/order/calcFee`, data).then(res => { this.$u.post(`/app/order/calcFee`, data).then(res => {
if (res.code == 200) { if (res.code == 200) {
@ -1142,9 +1141,6 @@
font-weight: 600; font-weight: 600;
font-size: 28rpx; font-size: 28rpx;
color: #437fec; color: #437fec;
// border-bottom: 1px solid #437fec;
// padding-bottom: 4rpx;
// box-sizing: border-box;
} }
.ck { .ck {

View File

@ -274,13 +274,26 @@
count: 0, count: 0,
timer: null, timer: null,
user:{} user:{},
xllat:'',
xllng:''
} }
}, },
onLoad() { onLoad() {
}, },
onShow() { onShow() {
uni.getLocation({
type: 'wgs84',
success: (res) => {
console.log(res,'1212121');
this.xllat = res.latitude
this.xllng = res.longitude
},
fail: (err) => {
console.error('获取位置失败:', err)
}
})
this.getAone() this.getAone()
this.covers = [] this.covers = []
this.sockedata = '' this.sockedata = ''
@ -494,7 +507,8 @@
let data = { let data = {
orderId: this.orderobj.orderId, orderId: this.orderobj.orderId,
lon: this.latsc, lon: this.latsc,
lat: this.lonsc lat: this.lonsc,
checkLocation:true
} }
this.$u.post(`/app/order/calcFee`, data).then(res => { this.$u.post(`/app/order/calcFee`, data).then(res => {
if (res.code == 200) { if (res.code == 200) {
@ -627,7 +641,7 @@
} }
}) })
} else if (res.cancel) { } else if (res.cancel) {
console.log('取消'); // console.log('取消')
} }
} }
}) })
@ -669,7 +683,7 @@
} }
}) })
} else if (res.cancel) { } else if (res.cancel) {
console.log('取消'); // console.log('取消')
} }
} }
}) })
@ -700,7 +714,7 @@
this.orderAreaId = '' this.orderAreaId = ''
this.orderflag = false this.orderflag = false
this.newMarkers = '' this.newMarkers = ''
console.log(this.covers); console.log(this.covers)
} }
} }
}) })
@ -783,7 +797,7 @@
}, },
// //
btnxlxc() { btnxlxc() {
this.$u.put(`/app/device/iot/ring?id=${this.cheobj.id}`).then((res) => { this.$u.put(`/app/device/iot/ring?id=${this.cheobj.id}&lat=${this.xllat}&lon=${this.xllng}`).then((res) => {
if (res.code == 200) { if (res.code == 200) {
uni.showToast({ uni.showToast({
title: '操作成功', title: '操作成功',
@ -906,7 +920,6 @@
this.iconPath = 'https://api.ccttiot.com/smartmeter/img/static/upX2lLilhrRi4tttdHlo' this.iconPath = 'https://api.ccttiot.com/smartmeter/img/static/upX2lLilhrRi4tttdHlo'
} else if (this.rtindex == 2) { } else if (this.rtindex == 2) {
this.iconPath = 'https://api.ccttiot.com/smartmeter/img/static/uX0FBv86yDIR5tIqjoe2' this.iconPath = 'https://api.ccttiot.com/smartmeter/img/static/uX0FBv86yDIR5tIqjoe2'
// this.iconPath = 'https://api.ccttiot.com/smartmeter/img/static/uX0FBv86yDIR5tIqjoe2'
this.$u.get(`/app/device/listNearBy?radius=10000&center=${this.jingweidu}&areaId=${this.user.areaId == undefined ? null : this.user.areaId}`).then((res) => { this.$u.get(`/app/device/listNearBy?radius=10000&center=${this.jingweidu}&areaId=${this.user.areaId == undefined ? null : this.user.areaId}`).then((res) => {
if (res.code == 200) { if (res.code == 200) {
this.covers = [] this.covers = []
@ -931,7 +944,7 @@
height: 40, height: 40,
iconPath: this.iconPath, iconPath: this.iconPath,
callout: { callout: {
content: '' + item.vehicleNum, // content: item.vehicleNum == null ? item.sn : '' + item.vehicleNum, //
color: '#0D75E5', // color: '#0D75E5', //
fontSize: 10, // fontSize: 10, //
borderRadius: 10, // borderRadius: 10, //