新电动车

This commit is contained in:
吴鹏 2025-04-11 18:23:16 +08:00
parent 524d1ec193
commit 2a9de15785
25 changed files with 2199 additions and 1161 deletions

View File

@ -1,7 +1,7 @@
const install = (Vue, vm) => {
uni.setStorageSync('deptId', 100);
Vue.prototype.$u.http.setConfig({
// baseUrl: 'http://192.168.2.35:4101', //键辉本地
// baseUrl: 'http://192.168.2.46:4101', //键辉本地
// baseUrl: 'http://192.168.0.102:4101', //景森本地
baseUrl: 'https://ele.ccttiot.com/prod-api', //线上
loadingText: '努力加载中~',

View File

@ -23,8 +23,8 @@
<!-- 地图 -->
</div>
<div @tap.stop="changeTabbar(2)">
<image style="width: 102rpx;height: 102rpx;position: fixed;left: 50%;transform: translateX(-50%);bottom:130rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uL8iMlSwXNfldMjGZK7n" mode="" v-show="indexs!=2"></image>
<image style="width: 102rpx;height: 102rpx;position: fixed;left: 50%;transform: translateX(-50%);bottom:130rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uL8iMlSwXNfldMjGZK7n" mode="" v-show="indexs==2"></image>
<image style="width: 102rpx;height: 102rpx;position: fixed;left: 50%;transform: translateX(-50%);bottom:98rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uPWK1kW1mCc2CPVyO7JM" mode="" v-show="indexs!=2"></image>
<image style="width: 102rpx;height: 102rpx;position: fixed;left: 50%;transform: translateX(-50%);bottom:98rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uPWK1kW1mCc2CPVyO7JM" mode="" v-show="indexs==2"></image>
<div class="txt" style="margin-top: 60rpx;color: #979797;font-size: 26rpx;color: #808080;">扫码用车</div>
</div>
<div class="tab" @tap.stop="changeTabbar(3)">
@ -158,9 +158,21 @@
this.sn = getQueryParam(decodedValue, 's')
this.$u.get(`/app/device/availableDetail?sn=${this.sn}`).then((res) => {
if (res.code == 200) {
this.modelId = res.data.modelId
uni.navigateTo({
url:'/page_fenbao/storedlist/trueorder?modelId=' + this.modelId + '&sn=' + this.sn
if(res.data){
this.modelId = res.data.modelId
uni.navigateTo({
url:'/page_fenbao/storedlist/trueorder?modelId=' + this.modelId + '&sn=' + this.sn
})
}else{
uni.showToast({
title: '当前车辆不可用',
icon: 'none'
})
}
}else{
uni.showToast({
title: res.msg,
icon: 'none'
})
}
})

View File

@ -44,7 +44,7 @@
})
}else{
uni.showToast({
title:'车辆不可用',
title:'当前车辆不可用',
icon: 'none',
duration:2000
})

View File

@ -20,9 +20,7 @@
handleGetMessage:function(e){
console.log(e)
if(e.detail.data[0].result == 'success'){
uni.redirectTo({
url:'/page_fenbao/renlianzhongzhuan'
})
uni.navigateBack()
}
},

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,7 @@
账户总余额
</view>
<view class="num">
{{userInfo.balance == null ? '0.00' : userInfo.balance.toFixed(2)}}
{{userInfo.balance == null ? '0.00' : userInfo.balance.toFixed(2)}}
</view>
</view>
<view class="li_box">
@ -17,7 +17,7 @@
待结算金额
</view>
<view class="num">
{{userInfo.settlementAmount == null ? '0.00' : userInfo.settlementAmount}}
{{waitDivideAmount == null ? '0.00' : waitDivideAmount.toFixed(2)}}
</view>
</view>
</view>
@ -161,7 +161,8 @@
listflag: true,
channelId:'',
objobj:{},
total:0
total:0,
waitDivideAmount:''
}
},
onLoad(e) {
@ -208,6 +209,7 @@
this.$u.get(`/getInfo`).then((res) => {
if (res.code == 200) {
this.userInfo = res.user
this.waitDivideAmount = res.stat.bonus.waitDivideAmount
}
})
},

View File

@ -10,7 +10,7 @@
<view class="info">
<view class="lis">
<view class="info_li">
说明<span>{{item.instructions}}</span>
说明<span>{{item.instructions == null ? '--' : item.instructions}}</span>
</view>
<view>
<view v-if="item.ridingRule==1">

View File

@ -71,6 +71,7 @@
};
},
onShow() {
this.pageNum = 1
this.getlist();
},
onReachBottom() {
@ -93,7 +94,7 @@
id:item.id,
handle:num
}
this.$u.put('/app/fault', data).then((res) => {
this.$u.put('/bst/fault/handle', data).then((res) => {
if (res.code === 200) {
uni.showToast({
title: '操作成功',
@ -159,12 +160,10 @@
clearTimeout(timerId1);
timerId1 = setTimeout(() => {
//
this.pageNum = 1;
this.list = []; //
this.getlist();
}, 500);
this.pageNum = 1
this.list = [] //
this.getlist()
}, 500)
},
todetail() {
@ -238,8 +237,6 @@
.tips {
margin-top: 24rpx;
width: 100%;
// display: flex;
// justify-content: center;
text-align: center;
font-weight: 400;
font-size: 28rpx;
@ -283,7 +280,7 @@
margin-top: 10rpx;
background: #D8D8D8;
width: 256rpx;
height: 134rpx;
height: 256rpx;
}
}

View File

@ -198,6 +198,9 @@ export default {
{
value: '8',
label: '下线'
},{
value: '9',
label: '强制锁车'
}],
tit: '全部',
typeidx: '',
@ -409,6 +412,8 @@ export default {
return '#986cf0' //
} else if (item.status == 7) {
return '#343a40' //
}else if (item.status == 9) {
return '#ff7429' //
}
},
getStatusColors(item) {
@ -459,6 +464,8 @@ export default {
return '未绑定'
} else if (item.status == 8) {
return '禁用中'
} else if (item.status == 9) {
return '强制锁车'
}
},
statuss(item) {

View File

@ -290,7 +290,7 @@
let data = {}
if (this.typeidx == 1) {
data = {
phonenumber: this.searchKeyword,
userPhone: this.searchKeyword,
status: this.zhuangtai,
createDateRange:this.firsTime == '' ? '' : this.lasTime == '' ? '' : this.firsTime + ',' + this.lasTime,
areaId: this.areaId,
@ -299,7 +299,7 @@
};
} else if (this.typeidx == 2) { // this.typeidx == 2
data = {
vehicleNum: this.searchKeyword,
deviceVehicleNum: this.searchKeyword,
type: '1',
status:this.zhuangtai,
createDateRange:this.firsTime == '' ? '' : this.lasTime == '' ? '' : this.firsTime + ',' + this.lasTime,

View File

@ -307,7 +307,7 @@ export default {
points: points,
fillColor: colors[num].fill,
strokeColor: colors[num].stroke,
strokeWidth: 2,
strokeWidth: 1,
zIndex: 1
}
}).filter(Boolean)
@ -355,7 +355,7 @@ export default {
points: points,
fillColor: "#55888840",
strokeColor: "#22FF00",
strokeWidth: 2,
strokeWidth: 1,
zIndex: 1
}
},
@ -384,7 +384,7 @@ export default {
// 线
this.currentPolyline = [{
points: this.trackPoints.slice(0, index + 1),
width: 8,
width: 4,
arrowLine: true,
color: '#00AF99'
}]

View File

@ -1,6 +1,6 @@
<template>
<view class="page">
<u-navbar title="设备详情" :border-bottom="false" :background="bgc" title-color='#2E4975' title-size='36'
<u-navbar title="车辆详情" :border-bottom="false" :background="bgc" title-color='#2E4975' title-size='36'
height='45'></u-navbar>
<map class="map" id="map" ref="map" :scale="zoomSize" :latitude="latitude" :longitude="longitude"
:show-location="true" :markers="markers" :polygons="polyline">
@ -8,191 +8,193 @@
<cover-image class="img" src="https://lxnapi.ccttiot.com/bike/img/static/uRiYQZQEb3l2LsltEsyW"
mode=""></cover-image>
</cover-view>
<cover-view class="track" @click="toTrack">
<!-- <cover-view class="track" @click="toTrack">
<cover-image class="img" src="https://lxnapi.ccttiot.com/bike/img/static/ufaAAtlirJYs1QwJF25P"
mode=""></cover-image>
</cover-view>
</cover-view> -->
</map>
<view class="info_card">
<view class="info_tit">
设备信息
</view>
<view class="lines"></view>
<view class="cont">
<view class="info_li">
<view class="half_infoli">
SN<span>{{deviceInfos.sn}}</span>
<view class="new_infocard">
<view class="topsn">
<view class="lt">
SN{{deviceInfos.sn}}
</view>
<view class="rt">
<view class="stutas">
<span style="background-color: #979797;" v-if="deviceInfos.status == 0">仓库中</span>
<span style="background-color: #4c97e7;" v-if="deviceInfos.status == 1">待租</span>
<span style="background-color: #28c445;" v-if="deviceInfos.status == 2">预约中</span>
<span style="background-color: #ffc757;" v-if="deviceInfos.status == 3">骑行中</span>
<span style="background-color: #ff7429;" v-if="deviceInfos.status == 4">临时锁车中</span>
<span style="background-color: #986cf0;" v-if="deviceInfos.status == 6">调度中</span>
<span style="background-color: #343a40;" v-if="deviceInfos.status == 8">下线</span>
<span style="background-color: #ff7429;" v-if="deviceInfos.status == 9">强制锁车</span>
</view>
<view class="half_infoli">
<view class="issuo" v-if="deviceInfos.lockStatus == 0">
锁已关
</view>
<view class="issuo" style="background-color: #4C97E7;color: #fff;" v-if="deviceInfos.lockStatus == 1">
锁已开
</view>
</view>
</view>
<view class="bikexx">
<view class="dianliang">
<image src="https://api.ccttiot.com/smartmeter/img/static/ucFiREWFvUepgFX0LR1h" mode=""></image>
<view class="dl">
电量<span>{{deviceInfos.remainingPower == null ? '--' : deviceInfos.remainingPower}}%</span>
</view>
<view class="dy">
电压<span>{{deviceInfos.voltage == null ? '--' : deviceInfos.voltage.toFixed(2)}}V</span>
</view>
</view>
<view class="xuhang">
<view class="">
<image src="https://api.ccttiot.com/smartmeter/img/static/uBueutMzheLZWktEFWVR" mode=""></image> 续航 {{deviceInfos.remainEndurance == null ? '--' : deviceInfos.remainEndurance}}km
</view>
<view class="" style="margin-top: 20rpx;">
<image src="https://api.ccttiot.com/smartmeter/img/static/ur7Q7YC9AOkkTpvaLEUU" mode=""></image> 车型 {{deviceInfos.modelName}}
</view>
</view>
<view class="ewm">
<view class="" @click="generateQrcode()">
<image src="https://api.ccttiot.com/smartmeter/img/static/uiCssXpb4SpuFAQYOp2A" mode=""></image> 二维码
</view>
<view class="" style="margin-top: 14rpx;" @click="toTrack">
<image src="https://api.ccttiot.com/smartmeter/img/static/uJtMZ16iR2q8agQ4iLm3" mode=""></image> 轨迹
</view>
<view class="" style="margin-top: 14rpx;" @click="btndaohang">
<image src="https://api.ccttiot.com/smartmeter/img/static/u3De0EsfW6ZctTFCH9p7" mode=""></image> 导航
</view>
</view>
</view>
<view class="caozuoanniu">
<view class="dangeanniu" @click="checkbtn(0)">
<view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/uuHHQU2Yg2sReTadF51Y" mode=""></image>
</view>
开锁
</view>
<!-- <view class="btn" @click="lanya(1)">
蓝牙开锁
</view>
<view class="btn" @click="lanya(2)">
蓝牙关锁
</view>
<view class="btn" @click="lanya(3)">
蓝牙响铃
</view> -->
<view class="dangeanniu" @click="checkbtn(1)">
<view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/uKear247uKM7Axwgh3Jc" mode=""></image>
</view>
关锁
</view>
<view class="dangeanniu" @click="btn(4)">
<view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/uE7zUe5bXdtGGyWA9WGG" mode=""></image>
</view>
响铃寻车
</view>
<view class="dangeanniu" v-if="this.deviceInfos.hardwareVersion && this.deviceInfos.hardwareVersion.toLowerCase().includes('x')" @click="btn(9)">
<view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/ujhsaJeL6KVrYgFSEKkj" mode=""></image>
</view>
坐垫锁
</view>
<view class="dangeanniu" @click="btn(8)">
<view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/uWnOOwRQYpZxB14stYl8" mode=""></image>
</view>
重启
</view>
<view class="dangeanniu" @click="btn(2)" v-if="deviceInfos.status!=8">
<view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/u1PlutiYn3alAcF2VuTH" mode=""></image>
</view>
禁用
</view>
<view class="dangeanniu" @click="btn(3)" v-if="deviceInfos.status==8">
<view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/u1PlutiYn3alAcF2VuTH" mode=""></image>
</view>
解禁
</view>
<view class="dangeanniu" @click="btn(5)" v-if="deviceInfos.status!=0">
<view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/uJvI9lLyEkA2QdSr74LX" mode=""></image>
</view>
回仓
</view>
<view class="dangeanniu" @click="btn(6)" v-if="deviceInfos.status==0">
<view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/uJvI9lLyEkA2QdSr74LX" mode=""></image>
</view>
出仓
</view>
<view class="dangeanniu" @click="btn(7)">
<view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/u277Tj0k5M7I8EO4V3ki" mode=""></image>
</view>
车牌修改
</view>
<view class="dangeanniu" @click="changeShwoList">
<view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/ua7Xl6Eew8AvjeKJFKXI" mode=""></image>
</view>
修改车型
</view>
<view class="dangeanniu" v-if="this.deviceInfos.hardwareVersion && this.deviceInfos.hardwareVersion.toLowerCase().includes('x')" @click="btnjingyin">
<view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/uUJGVRpPIRC34vF7240K" mode=""></image>
</view>
静音:{{jytxt}}
</view>
<view class="dangeanniu" @click="btn(10)">
<view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/uuuFxDo4XNzXJDTOQIeZ" mode=""></image>
</view>
定位更新
</view>
</view>
<view class="bikejcxx">
<view class="wai">
<view class="lt">
MAC<span>{{deviceInfos.mac}}</span>
</view>
</view>
<view class="info_li">
<view class="half_infoli">
车牌号<span v-if="deviceInfos.vehicleNum">{{deviceInfos.vehicleNum}}</span>
<span v-else>--</span>
</view>
<view class="half_infoli">
车辆型号
<span v-if="deviceInfos.modelName">{{deviceInfos.modelName}}</span>
<span v-else>--</span>
<view class="lt">
网络状态<span v-if="deviceInfos.onlineStatus==0">离线</span><span v-if="deviceInfos.onlineStatus==1">在线</span>
</view>
</view>
<view class="info_li">
运营区域
<span v-if="deviceInfos.areaName">{{deviceInfos.areaName}}</span>
<span v-else>--</span>
</view>
</view>
<view class="lines"></view>
<view class="cont">
<view class="info_li">
<view class="half_infoli">
车辆状态<span v-if="deviceInfos.status == 0">仓库中</span>
<span v-if="deviceInfos.status == 1">待租</span>
<span v-if="deviceInfos.status == 2">预约中</span>
<span v-if="deviceInfos.status == 3">骑行中</span>
<span v-if="deviceInfos.status == 4">临时锁车中</span>
<span v-if="deviceInfos.status == 6">调度中</span>
<span v-if="deviceInfos.status == 8">下线</span>
<view class="wai">
<view class="lt">
车牌号<span>{{deviceInfos.vehicleNum}}</span>
</view>
<view class="half_infoli" v-if="deviceInfos.onlineStatus==0">
网络状态<span>离线</span>
</view>
<view class="half_infoli" v-if="deviceInfos.onlineStatus==1">
网络状态<span>在线</span>
<view class="lt">
续航里程<span>{{deviceInfos.remainEndurance == null ? '--' : deviceInfos.remainEndurance}}km</span>
</view>
</view>
<view class="info_li">
<view class="half_infoli">
电池电量
<span>{{deviceInfos.remainingPower == null ? '--' : deviceInfos.remainingPower}}%</span>
<view class="wai">
<view class="lt">
运营区域<span>{{deviceInfos.areaName}}</span>
</view>
<view class="half_infoli">
续航里程
<span>{{deviceInfos.remainEndurance == null ? '--' : deviceInfos.remainEndurance}} KM</span>
</view>
</view>
<view class="info_li">
<view class="half_infoli">
电池电压
<span>{{deviceInfos.voltage == null ? '--' : deviceInfos.voltage}}V</span>
</view>
<view class="half_infoli">
4G信号
<span>{{deviceInfos.satellites == null ? '--' : deviceInfos.satellites}}</span>
<view class="lt">
4G信号/GPS<span>{{deviceInfos.signalStrength == null ? '--' : deviceInfos.signalStrength}}/{{deviceInfos.satellites == null ? '--' : deviceInfos.satellites}}</span>
</view>
</view>
</view>
<view class="lines"></view>
<view class="cont">
<view class="info_li">
最后定位坐标
<span v-if="deviceInfos.latitude">{{deviceInfos.latitude}},{{deviceInfos.longitude}}</span>
<span v-else>--</span>
<view class="zuche">
<view class="one">
最近租车人<image src="https://api.ccttiot.com/smartmeter/img/static/uCa86z0tr5WHiymtRJYt" mode=""></image> <span>--</span>
</view>
<view class="info_li" style="flex-wrap: wrap;display: inline-block;">
最后定位地址
<span v-if="deviceInfos.location">{{deviceInfos.location}}</span>
<span v-else>--</span>
<view class="">
最后定位坐标<span>{{deviceInfos.latitude}},{{deviceInfos.longitude}}</span>
</view>
<view class="info_li">
最后定位时间
<span v-if="deviceInfos.lastTime">{{deviceInfos.lastTime}}</span>
<span v-else>--</span>
<view class="">
最后定位时间<span>{{deviceInfos.lastTime}}</span>
</view>
</view>
</view>
<!-- <view class="info_card" style="margin-top: 20rpx;" v-if="deviceInfos.etOrders[0]&&deviceInfos.sn">
<view class="info_tit">
最后订单信息
</view>
<view class="lines"></view>
<view class="cont">
<view class="info_li">
最后用户姓名
<span v-if="deviceInfos.etOrders[0].realName &&deviceInfos.sn">{{deviceInfos.etOrders[0].realName}}</span>
<span v-else>--</span>
</view>
<view class="info_li">
最后用户电话
<span v-if="deviceInfos.etOrders[0].phonenumber &&deviceInfos.sn">{{deviceInfos.etOrders[0].phonenumber}}</span>
<span v-else>--</span>
</view>
<view class="info_li" style="flex-wrap: wrap;display: inline-block;">
最后订单编号
<span v-if="deviceInfos.etOrders[0].orderNo &&deviceInfos.sn">{{deviceInfos.etOrders[0].orderNo}}</span>
<span v-else>--</span>
</view>
<view class="info_li">
订单开始时间
<span v-if="deviceInfos.etOrders[0].createTime&&deviceInfos.sn">{{deviceInfos.etOrders[0].createTime}}</span>
<span v-else>--</span>
</view>
<view class="info_li">
<view class="info_li" v-if="deviceInfos.sn">
订单状态<span>{{statuss()}}</span>
</view>
</view>
</view>
</view> -->
<view class="bot_btn">
<view class="btn" @click="checkbtn(0)">
开锁
</view>
<view class="btn" @click="checkbtn(1)">
关锁
</view>
<view class="btn" @click="btn(4)">
响铃寻车
</view>
<!-- <view class="btn" @click="lanya(1)">
蓝牙开锁
</view>
<view class="btn" @click="lanya(2)">
蓝牙关锁
</view>
<view class="btn" @click="lanya(3)">
蓝牙响铃
</view> -->
<view class="btn" @click="btn(8)">
设备重启
</view>
<view class="btn" @click="btn(2)" v-if="deviceInfos.status!=8">
车辆禁用
</view>
<view class="btn" @click="btn(3)" v-if="deviceInfos.status==8">
车辆解禁
</view>
<view class="btn" @click="btn(5)" v-if="deviceInfos.status!=0">
车辆回仓
</view>
<view class="btn" @click="btn(6)" v-if="deviceInfos.status==0">
车辆出仓
</view>
<view class="btn" @click="btn(7)">
车牌修改
</view>
<view class="btn"
v-if="this.deviceInfos.hardwareVersion && this.deviceInfos.hardwareVersion.toLowerCase().includes('x')"
@click="btn(9)">
坐垫锁
</view>
<view class="btn" @click="btn(10)">
定位更新
</view>
<view class="btn" @click="changeShwoList">
修改车型
</view>
<view class="btn" @click="generateQrcode()">
设备二维码
</view>
<view class="btn"
v-if="this.deviceInfos.hardwareVersion && this.deviceInfos.hardwareVersion.toLowerCase().includes('x')"
@click="btnjingyin">
静音{{jytxt}}
</view>
</view>
<u-mask :show="false" @click="show = false" :z-index='100' />
<u-mask :show="maskloading" :z-index='100' duration='0' />
<view class="maskloadpage" v-if="maskloading">
@ -394,6 +396,16 @@
}
},
methods: {
//
btndaohang(){
uni.openLocation({
latitude: this.deviceInfos.latitude, //-/
longitude: this.deviceInfos.longitude, //-/
name: '', //
address:'' //
})
},
//
lanya(num) {
if (num == 1) {
xBlufi.notifySendCustomData({
@ -990,7 +1002,7 @@
display: 'ALWAYS', //
}
})
} else if (this.deviceInfos.status == 4) {
} else if (this.deviceInfos.status == 4 || this.deviceInfos.status == 9) {
this.markers.push({
id: parseFloat(this.deviceInfos.sn),
latitude: this.deviceInfos.latitude,
@ -1272,6 +1284,198 @@
.page {
padding-bottom: 400rpx;
width: 750rpx;
.new_infocard{
width: 750rpx;
max-height: 1384rpx;
overflow: scroll;
background: #FFFFFF;
border-radius: 30rpx;
padding: 30rpx;
box-sizing: border-box;
position: absolute;
z-index: 99;
top: 900rpx;
.zuche{
margin-top: 26rpx;
.one{
display: flex;
align-items: center;
image{
width: 32rpx;
height: 32rpx;
margin-right: 4rpx;
}
span{
font-size: 28rpx;
color: #4C97E7;
}
}
view{
font-size: 28rpx;
color: #808080;
margin-bottom: 26rpx;
span{
color: #3D3D3D;
}
}
}
.bikejcxx{
margin-top: 26rpx;
border-bottom: 1rpx solid #D8D8D8;
.wai{
display: flex;
justify-content: space-between;
margin-bottom: 26rpx;
.lt{
width: 46%;
text-align: left;
font-size: 28rpx;
color: #808080;
span{
color: #3D3D3D;
}
}
}
}
.caozuoanniu{
display: flex;
flex-wrap: wrap;
margin-top: 26rpx;
border-bottom: 1rpx solid #D8D8D8;
.dangeanniu{
width: 20%;
text-align: center;
margin-bottom: 28rpx;
.pic{
width: 88rpx;
height: 88rpx;
background: #F1F1F1;
border-radius: 6rpx 6rpx 6rpx 6rpx;
margin: auto;
margin-bottom: 14rpx;
image{
width: 32rpx;
height: 32rpx;
margin-top: 28rpx;
}
}
}
}
.ewm{
view{
width: 140rpx;
height: 44rpx;
background: #4C97E7;
border-radius: 6rpx 6rpx 6rpx 6rpx;
font-size: 24rpx;
color: #FFFFFF;
display: flex;
align-items: center;
padding: 0 8rpx;
padding-left: 18rpx !important;
text-align: center;
box-sizing: border-box;
image{
width: 26rpx;
height: 26rpx;
margin-right: 10rpx;
}
}
}
.xuhang{
view{
width: 284rpx;
height: 70rpx;
background: #F1F1F1;
border-radius: 8rpx 8rpx 8rpx 8rpx;
display: flex;
align-items: center;
font-size: 24rpx;
color: #3D3D3D;
padding-left: 18rpx;
box-sizing: border-box;
image{
width: 32rpx;
height: 32rpx;
margin-right: 14rpx;
}
}
}
.bikexx{
margin-top: 26rpx;
display: flex;
justify-content: space-between;
border-bottom: 1rpx solid #D8D8D8;
padding-bottom: 26rpx;
box-sizing: border-box;
.dianliang{
position: relative;
.dl{
margin-top: 66rpx;
}
.dy{
margin-top: 2rpx;
}
view{
padding-left: 14rpx;
box-sizing: border-box;
font-size: 24rpx;
color: #3D3D3D;
span{
font-size: 32rpx;
}
}
image{
position: absolute;
width: 222rpx;
height: 160rpx;
z-index: -1;
}
}
}
.topsn{
display: flex;
justify-content: space-between;
border-bottom: 1rpx solid #D8D8D8;
padding-bottom: 26rpx;
box-sizing: border-box;
.lt{
font-weight: 600;
font-size: 32rpx;
color: #3D3D3D;
}
.rt{
display: flex;
.issuo{
width: 104rpx;
height: 42rpx;
background: #F1F1F1;
border-radius: 6rpx 6rpx 6rpx 6rpx;
text-align: center;
line-height: 42rpx;
margin-left: 28rpx;
font-size: 24rpx;
color: #3D3D3D;
}
.stutas{
span{
display: inline-block;
width: 104rpx;
height: 42rpx;
// background: #DBFDD6;
border-radius: 6rpx 6rpx 6rpx 6rpx;
text-align: center;
line-height: 42rpx;
margin-left: 28rpx;
font-size: 24rpx;
color: #fff;
}
}
}
}
}
.tip_box {
position: fixed;
@ -1385,101 +1589,6 @@
}
}
.info_card {
background: #FFFFFF;
margin: 20rpx;
border-radius: 16rpx;
box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.05);
overflow: hidden;
.info_tit {
display: flex;
flex-wrap: nowrap;
padding: 28rpx 32rpx;
font-weight: 600;
font-size: 32rpx;
color: #2C3E50; //
.money {
margin-left: auto;
font-weight: 500;
font-size: 32rpx;
color: #3498DB; //
}
}
.lines {
width: 100%;
border-bottom: 1rpx solid #EEF2F6; // 线
}
.cont {
padding: 32rpx;
.info_li {
width: 100%;
display: flex;
flex-wrap: nowrap;
font-weight: 400;
font-size: 28rpx;
color: #94A3B8; //
margin-bottom: 16rpx; //
span {
color: #334155; //
margin-left: 8rpx;
}
.half_infoli {
display: flex;
flex-wrap: nowrap;
width: 50%;
font-weight: 400;
font-size: 28rpx;
color: #94A3B8;
span {
color: #334155;
margin-left: 8rpx;
}
}
}
}
}
.bot_btn {
position: fixed;
bottom: 0;
display: flex;
flex-wrap: wrap;
padding: 24rpx;
width: 750rpx;
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(10rpx);
box-shadow: 0 -4rpx 16rpx rgba(0, 0, 0, 0.05);
.btn {
margin: 8rpx;
display: flex;
align-items: center;
justify-content: center;
width: 160rpx;
height: 72rpx;
background: #F1F5F9; //
border-radius: 12rpx;
border: 1rpx solid #E2E8F0;
font-weight: 500;
font-size: 28rpx;
color: #475569;
transition: all 0.3s ease;
&:active {
transform: scale(0.98);
background: #E2E8F0;
}
}
}
.map {
position: relative;
width: 750rpx;

View File

@ -110,7 +110,7 @@
记录{{index + 1}}
</view>
<view class="two">
{{item.startTime}}
{{item.startTime == null ? '--' : item.startTime}}
</view>
</view>
<view class="bianhao">
@ -125,9 +125,10 @@
</view>
</view>
<view class="imgs">
<view class="" v-for="(img, imgidx) in item.pictures" :key="imgidx">
<image :src="img" mode="aspectFill" @click="preview(img, item)"></image>
</view>
<!-- <view class="" v-for="(img, imgidx) in item.pictures" :key="imgidx"> -->
<!-- <image :src="img" mode="aspectFill" @click="preview(img, item)"></image> -->
<video v-if="item.finishPicture != null" :src="item.finishPicture"></video>
<!-- </view> -->
</view>
</view>
<view class="btn_cont" v-if="orderxqobj.status == 'WAIT_VERIFY'">

View File

@ -20,10 +20,10 @@
账户余额
</view>
<view class="price">
{{infoobj.balance == null ? '--' : '¥' + qbobj.user.balance}}
{{infoobj.balance == null ? '¥0.00' : '¥' + infoobj.balance.toFixed(2)}}
</view>
<view class="ljtx">
累积提现3456.23
累积提现{{successAmount == null ? '¥0.00' : '¥' + successAmount.toFixed(2)}}
</view>
</view>
<view class="rt">
@ -46,7 +46,7 @@
</view>
<view class="li">
<view class="top">
{{(Number(qbobj.bonus.amount) - Number(qbobj.bonusRefund.amount)).toFixed(2) == null ? '--' : '¥' + (Number(qbobj.bonus.amount) - Number(qbobj.bonusRefund.amount)).toFixed(2)}}
{{(Number(qbobj.bonus.amount) - Number(qbobj.bonusRefund.amount)).toFixed(2) == null ? '¥0.00' : '¥' + (Number(qbobj.bonus.amount) - Number(qbobj.bonusRefund.amount)).toFixed(2)}}
</view>
<view class="bot">
累计分成
@ -54,7 +54,7 @@
</view>
<view class="li">
<view class="top">
{{(Number(qbobj.order.payAmount) - Number(qbobj.orderRefund.amount)).toFixed(2) == null ? '--' : '¥' + (Number(qbobj.order.payAmount) - Number(qbobj.orderRefund.amount)).toFixed(2)}}
{{(Number(qbobj.order.payAmount) - Number(qbobj.orderRefund.amount)).toFixed(2) == null ? '¥0.00' : '¥' + (Number(qbobj.order.payAmount) - Number(qbobj.orderRefund.amount)).toFixed(2)}}
</view>
<view class="bot">
订单金额
@ -62,7 +62,7 @@
</view>
<view class="li">
<view class="top">
{{qbobj.order.count == null ? '--' : qbobj.order.count + '笔'}}
{{qbobj.order.count == null ? '0' : qbobj.order.count + '笔'}}
</view>
<view class="bot">
订单数量
@ -107,7 +107,7 @@
<image src="https://api.ccttiot.com/smartmeter/img/static/uUjJxrOO6zHPzjT0Srl4" mode=""></image>
<view class="top">
<view class="topwz">
{{yunyingobj.order.count == null ? '--' : yunyingobj.order.count + '笔'}}
{{yunyingobj.order.count == null ? '0' : yunyingobj.order.count + '笔'}}
</view>
<view class="botwz">
订单数量
@ -115,7 +115,7 @@
</view>
<view class="top">
<view class="topwz">
{{yunyingobj.order.payAmount == null ? '--' : '¥' + yunyingobj.order.payAmount.toFixed(2)}}
{{yunyingobj.order.payAmount == null ? '¥0.00' : '¥' + yunyingobj.order.payAmount.toFixed(2)}}
</view>
<view class="botwz">
订单金额
@ -134,7 +134,7 @@
<image src="https://api.ccttiot.com/smartmeter/img/static/uCWFSrIsbEaQdKHWZv7U" mode=""></image>
<view class="top">
<view class="topwz">
{{yunyingobj.bonus.count == null ? '--' : yunyingobj.bonus.count + '笔'}}
{{yunyingobj.bonus.count == null ? '0' : yunyingobj.bonus.count + '笔'}}
</view>
<view class="botwz">
分成数量
@ -142,7 +142,7 @@
</view>
<view class="top">
<view class="topwz">
{{(Number(yunyingobj.bonus.amount) - Number(yunyingobj.bonusRefund.amount)).toFixed(2) == null ? '--' : '¥' + (Number(yunyingobj.bonus.amount) - Number(yunyingobj.bonusRefund.amount)).toFixed(2)}}
{{(Number(yunyingobj.bonus.amount) - Number(yunyingobj.bonusRefund.amount)).toFixed(2) == null ? '¥0.00' : '¥' + (Number(yunyingobj.bonus.amount) - Number(yunyingobj.bonusRefund.amount)).toFixed(2)}}
</view>
<view class="botwz">
分成金额
@ -387,6 +387,7 @@
backgroundColor: "#fff",
},
index:0,
successAmount:'',
riqiindex:0,
oneparams: {
year: true,
@ -417,10 +418,8 @@
},
onShow() {
this.getqb()
this.getinfo()
this.getCurrentDate(this.riqiindex)
this.gettongji()
},
methods: {
//
@ -428,13 +427,16 @@
this.$u.get(`/getInfo`).then(res => {
if (res.code == 200) {
this.infoobj = res.user
this.successAmount = res.stat.withdraw.successAmount
this.gettongji()
this.getqb()
}
})
},
//
getqb() {
let StatKeys = 'order_user_count,order_count,order_pay_amount,order_refund_amount,bonus_count,bonus_amount,bonus_refund_amount,bonus_refund_amount,user_balance'
this.$u.get(`/dashboard/stat?keys=${StatKeys}&dateRange=`).then(res => {
this.$u.get(`/dashboard/stat?keys=${StatKeys}&dateRange=&bonusUserId=${this.infoobj.userId}`).then(res => {
if (res.code == 200) {
this.qbobj = res.data
}
@ -443,7 +445,7 @@
//
gettongji() {
let StatKeys = 'order_user_count,order_count,order_pay_amount,order_refund_amount,bonus_count,bonus_amount,bonus_refund_amount,bonus_refund_amount,user_balance'
this.$u.get(`/dashboard/stat?keys=${StatKeys}&dateRange=${this.kstime + ',' + this.jstime}`).then(res => {
this.$u.get(`/dashboard/stat?keys=${StatKeys}&dateRange=${this.kstime + ',' + this.jstime}&bonusUserId=${this.infoobj.userId}`).then(res => {
if (res.code == 200) {
this.yunyingobj = res.data
}

View File

@ -28,17 +28,18 @@
</view>
<view class="cardbox">
<view class="tip">
请对故障部位拍照
请对故障部位拍照
</view>
<view class="icon">
<view class="imgbox" v-for="(item,index) in imglist " :key="index">
<image :src="item" mode=""></image>
<image :src="item" mode="aspectFill"></image>
</view>
<view class="imgbox" @click="btn">
<image src="https://api.ccttiot.com/smartmeter/img/static/uY8CPw9YE6JxPzcHUaqf" mode="aspectFill"></image>
<image src="https://api.ccttiot.com/smartmeter/img/static/uY8CPw9YE6JxPzcHUaqf" mode="aspectFill">
</image>
</view>
</view>
</view>
<view class="btn" @click="sub()">
@ -57,15 +58,16 @@
bgc: {
backgroundColor: "#fff",
},
cbgz: ['车头','车灯'],
csgz: ['车座','车把','轮胎'],
cbgz: ['车头', '车灯'],
csgz: ['车座', '车把', '轮胎'],
tsgz: ['其他'],
textValue: '',
currentCount: 0,
imglist: [],
token: '',
sn:'',
upurl:''
sn: '',
upurl: '',
btnflag: true
}
},
onShow() {
@ -102,47 +104,52 @@
},
methods: {
//
btnzgjl(){
btnzgjl() {
uni.navigateTo({
url:'/page_user/guzhang/guzhanglv'
url: '/page_user/guzhang/guzhanglv'
})
},
sub(){
let data = {
faultDetail:this.textValue,
vehicleCode:this.sn,
faultSite:'',
picture:this.imglist.join(',')
}
console.log(data,'dadadad');
this.$u.post("/app/fault",data).then((res) => {
sub() {
if (this.btnflag == true) {
this.btnflag = false
let data = {
faultDetail: this.textValue,
vehicleCode: this.sn,
faultSite: '',
picture: this.imglist.join(',')
}
console.log(data, 'dadadad');
this.$u.post("/app/fault", data).then((res) => {
if (res.code == 200) {
uni.showToast({
title: '提交成功',
icon: 'success',
duration: 1000
})
setTimeout(()=>{
uni.navigateBack({
delta: 1,
})
},1100)
}else if(res.code == 401){
setTimeout(() => {
this.btnflag = true
uni.navigateBack({
delta: 1,
})
}, 1100)
} else if (res.code == 401) {
this.btnflag = true
uni.showModal({
title: '提示',
content: '您当前未登录,是否前去登录?',
showCancel: true,
success: function (res) {
success: function(res) {
if (res.confirm) {
uni.reLaunch({
url:'/pages/login/login'
url: '/pages/login/login'
})
} else if (res.cancel) {
}
}
})
} else{
} else {
this.btnflag = true
uni.showToast({
title: res.msg,
icon: 'none',
@ -150,22 +157,32 @@
})
}
})
}
},
getQiniuToken() {
this.$u.get("/common/qiniuToken").then((res) => {
if (res.code == 200) {
this.token=res.data
console.log(res,'resres')
this.token = res.data
console.log(res, 'resres')
}
})
},
getlist(){
getlist() {
// checked
this.$u.get("/appVerify/fault/allList?dictType=et_fault_type").then((res) => {
if (res.code == 200) {
this.cbgz = res.data.headstock.map(item => ({...item, checked: false}))
this.csgz = res.data.body.map(item => ({...item, checked: false}))
this.tsgz = res.data.special.map(item => ({...item, checked: false}))
this.cbgz = res.data.headstock.map(item => ({
...item,
checked: false
}))
this.csgz = res.data.body.map(item => ({
...item,
checked: false
}))
this.tsgz = res.data.special.map(item => ({
...item,
checked: false
}))
} else {
uni.showToast({
title: '未登录,请登录后尝试',
@ -179,10 +196,10 @@
this.cbgz[index].checked = !this.cbgz[index].checked
this.$forceUpdate()
},
csCheckbox(index){
csCheckbox(index) {
this.csgz[index].checked = !this.csgz[index].checked
},
tsCheckbox(index){
tsCheckbox(index) {
this.tsgz[index].checked = !this.tsgz[index].checked
},
hidePlaceholder() {
@ -201,13 +218,13 @@
let sn = null;
let queryParams = res.result.split('?')[1]
if (queryParams) {
let params = queryParams.split('&')
params.forEach(param => {
let [key, value] = param.split('=')
if (key === 's') {
sn = value
}
})
let params = queryParams.split('&')
params.forEach(param => {
let [key, value] = param.split('=')
if (key === 's') {
sn = value
}
})
}
this.sn = sn
},
@ -237,10 +254,10 @@
key: 'smartmeter/img/' + math
},
success: function(res) {
console.log(res,'resres');
console.log(res, 'resres');
let str = JSON.parse(res.data)
console.log(str.key)
_this.userImgs = 'https://api.ccttiot.com/'+ str.key
_this.userImgs = 'https://api.ccttiot.com/' + str.key
console.log(_this.userImgs)
_this.imglist.push(_this.userImgs)
}
@ -270,7 +287,8 @@
.page {
width: 750rpx;
padding-bottom: 200rpx;
.sbjl{
.sbjl {
width: 750rpx;
margin-top: 20rpx;
justify-content: center;
@ -278,12 +296,14 @@
align-items: center;
font-size: 28rpx;
color: #3D3D3D;
image{
image {
width: 40rpx;
height: 40rpx;
}
}
.btn{
.btn {
position: fixed;
left: 34rpx;
bottom: 80rpx;
@ -299,6 +319,7 @@
font-size: 40rpx;
color: #FFFFFF;
}
.cardbox {
margin: 30rpx auto;
width: 680rpx;
@ -306,6 +327,7 @@
background: #FFFFFF;
box-shadow: 0rpx 10rpx 64rpx 0rpx rgba(0, 0, 0, 0.08);
border-radius: 20rpx 20rpx 20rpx 20rpx;
.tip {
display: flex;
flex-wrap: nowrap;
@ -313,6 +335,7 @@
font-size: 32rpx;
color: #3D3D3D;
line-height: 44rpx;
.ipnt {
margin-top: 10rpx;
margin-right: 12rpx;
@ -320,6 +343,7 @@
font-size: 48rpx;
}
}
.iptbox {
display: flex;
align-items: center;
@ -328,10 +352,12 @@
height: 80rpx;
border-radius: 20rpx 20rpx 20rpx 20rpx;
border: 2rpx solid #979797;
.ips {
margin-left: 30rpx;
width: 80%;
}
.iptbtn {
display: flex;
align-items: center;
@ -340,25 +366,30 @@
height: 80rpx;
background: #4C97E7;
border-radius: 20rpx 20rpx 20rpx 20rpx;
image {
width: 37rpx;
height: 37rpx;
}
}
}
.txt {
margin-top: 18rpx;
font-weight: 400;
font-size: 28rpx;
color: #3D3D3D;
}
.icon {
display: flex;
flex-wrap: wrap;
align-items: center;
margin-top: 40rpx;
.imgbox {
width: 33%;
image {
width: 142rpx;
height: 142rpx;
@ -366,13 +397,14 @@
}
}
}
.checkbox {
display: flex;
flex-wrap: wrap;
.check_li {
position: relative;
margin-right: 10rpx;
margin-right: 10rpx;
margin-top: 18rpx;
display: flex;
align-items: center;
@ -381,7 +413,8 @@
height: 65rpx;
border-radius: 20rpx 20rpx 20rpx 20rpx;
border: 2rpx solid #C7C7C7;
image{
image {
position: absolute;
right: 0;
bottom: 0;
@ -389,15 +422,18 @@
height: 20rpx;
}
}
.check_li:nth-child(4n) {
margin-right: 0;
margin-right: 0;
}
.act1 {
width: 142rpx;
height: 65rpx;
border: 2rpx solid #1E807A;
border: 2rpx solid #1E807A;
}
}
.input-container {
position: relative;
width: 612rpx;
@ -411,7 +447,7 @@
box-sizing: border-box;
border: 2rpx solid #C7C7C7;
}
.placeholder {
position: absolute;
top: 18rpx;
@ -421,6 +457,7 @@
pointer-events: none;
/* 确保点击事件可以穿透到textarea上 */
}
.custom-textarea {
width: 100%;
height: 100%;
@ -431,7 +468,7 @@
box-sizing: border-box;
border: 1px solid #ccc;
}
.word-count {
position: absolute;
right: 10px;

View File

@ -1,6 +1,6 @@
<template>
<view class="page">
<u-navbar title="拍照还车" :border-bottom="false" :background="bgc" title-color='#fff' title-size='36' height='45'
<u-navbar title="还车" :border-bottom="false" :background="bgc" title-color='#fff' title-size='36' height='45'
back-icon-color='#fff'></u-navbar>
<view class="tip_box">
请将车辆正确停放指定停车点后环绕车拍摄视 押金将在审核通过后退还账户
@ -10,23 +10,39 @@
我们将在12小时内完成审核
</view>
<view class="vadio_png1">
<image class="backimg" src="https://lxnapi.ccttiot.com/bike/img/static/uEP0UPJw6a1WuxA7ZlMo" mode="" v-if="videoUrl==''"></image>
<image @click="recordVideo" class="tip_img" src="https://lxnapi.ccttiot.com/bike/img/static/uXFG7Vee8MWx5y7pha2U" mode="" v-if="videoUrl==''"></image>
<image @click="recordVideo" class="backimg" src="https://api.ccttiot.com/smartmeter/img/static/uTwV4aH6HbxqmM1ssvTs" mode="" v-if="videoUrl==''"></image>
<video class="vad" :src="videoUrl" controls="controls" style="width: 100%;" v-if="videoUrl!=''"></video>
<!-- <view class="glass" v-if="videoUrl!=''"></view>
<image class="tip_img" src="https://lxnapi.ccttiot.com/bike/img/static/uXFG7Vee8MWx5y7pha2U" mode="" v-if="videoUrl!=''"></image> -->
</view>
<view class="tip_txt" style="font-weight: 500;font-size: 32rpx;color: #3D3D3D;">
<view class="tip_txt" style="font-weight: 500;font-size: 32rpx;color: #3D3D3D;margin-top: 30rpx;">
保持车辆录像的完整清晰,不要随意拍摄确保视频中车辆出境并且出现车牌号
</view>
<view class="vadio_png">
<image src="https://lxnapi.ccttiot.com/bike/img/static/uVuGMvfe3xlz3x8WSmcC" mode=""></image>
<image src="https://api.ccttiot.com/smartmeter/img/static/unL4myQWRXAKWCmKof4j" mode=""></image>
</view>
<view class="btn" @click="sub" :class='videoUrl!="" ? "act1": ""'>
还车
</view>
</view>
<!-- 扫码用车未在停车点内还车弹窗 -->
<view class="tingchetc" v-if="fjflag">
<view class="topname">
<image src="https://api.ccttiot.com/smartmeter/img/static/uDfEXjApmdS6ByM88pv3" mode=""></image> {{fajinobj.manageFee > 0 ? '不在运营区' : fajinobj.dispatchFee > 0 ? '不在停车点' : ''}}
</view>
<view class="shuom">
需支付<text>{{fajinobj.manageFee > 0 ? fajinobj.manageFee : fajinobj.dispatchFee > 0 ? fajinobj.dispatchFee : ''}}</text>你可查看<text @click="btntcd">最近停车点</text>
</view>
<image src="https://api.ccttiot.com/smartmeter/img/static/uzRrRFiToK3bb3IurIHU" class="tcimg" mode=""></image>
<view class="btnan">
<view class="fj" @click="btnfajin">
缴纳罚金还车
</view>
<view class="qx" @click="fjflag = false">
继续骑行
</view>
</view>
</view>
<view class="mask" v-if="fjflag"></view>
</view>
</template>
@ -43,18 +59,32 @@
upurl:'',
orderinfo:{},
userId:'',
videoUrl:''
videoUrl:'',
fjflag:false,
fajinobj:{},
orderAreaId:''
}
},
onLoad(e) {
this.orderId = e.orderid
this.orderAreaId = e.orderAreaId
},
onShow() {
this.getQiniuToken()
// this.getuserInfo()
},
methods: {
//
btnfajin(){
this.fjflag = false
this.gethc()
},
//
btntcd(){
uni.navigateTo({
url:'/pages/myorder/returned/tingche?areaId=' + this.orderAreaId
})
},
sub(){
uni.getLocation({
type: 'wgs84',
@ -70,7 +100,27 @@
}
})
},
//
getfeiyong(){
let data = {
orderId:this.orderId,
lon:this.lat,
lat:this.lon
}
this.$u.post(`/app/order/calcFee`,data).then(res =>{
if(res.code == 200){
this.fajinobj = res.data
if(res.data.manageFee > 0 || res.data.dispatchFee > 0){
this.fjflag = true
// this.gethc()
}else{
// this.fjflag = true
this.gethc()
}
}
})
},
gethc(){
let data = {
orderId:this.orderId,
picture:this.videoUrl,
@ -209,7 +259,81 @@
page {
background-color: #F7FAFE;
}
.mask{
width: 100%;
height: 100vh;
position: fixed;
top: 0;
left: 0;
background-color: rgba(0, 0, 0, .3);
z-index: 9;
}
.tingchetc{
width: 624rpx;
height: 610rpx;
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
position: fixed;
left: 50%;
transform: translateX(-50%);
top: 572rpx;
z-index: 10;
padding: 28rpx 36rpx;
box-sizing: border-box;
.btnan{
display: flex;
justify-content: space-between;
margin-top: 40rpx;
.fj{
width: 252rpx;
height: 72rpx;
border-radius: 45rpx 45rpx 45rpx 45rpx;
border: 2rpx solid #808080;
font-weight: 600;
font-size: 32rpx;
color: #808080;
text-align: center;
line-height: 72rpx;
}
.qx{
width: 252rpx;
height: 72rpx;
background: #4C97E7;
border-radius: 45rpx 45rpx 45rpx 45rpx;
text-align: center;
line-height: 72rpx;
box-sizing: border-box;
font-weight: 600;
font-size: 32rpx;
color: #FFFFFF;
}
}
.tcimg{
width: 552rpx;
height: 300rpx;
margin-top: 28rpx;
}
.shuom{
font-size: 26rpx;
color: #3D3D3D;
margin-top: 18rpx;
text{
color: #4C97E7;
}
}
.topname{
font-weight: 600;
font-size: 36rpx;
color: #3D3D3D;
display: flex;
align-items: center;
image{
width: 48rpx;
height: 48rpx;
margin-right: 14rpx;
}
}
}
.page {
// width: 750rpx;
width: 750rpx;

View File

@ -85,15 +85,22 @@
<view class="cont_box" v-show="checkIdx == 2 || orderobj.orderAreaReturnVerify == true">
<view class="tit">
<image src="https://lxnapi.ccttiot.com/bike/img/static/uByIrgaV23PDGZWReKHW" mode=""></image>
请对车辆部位拍
请对车辆部位拍摄视频
</view>
<view class="icon">
<!-- <view class="icon">
<view class="imgbox" v-for="(item, index) in imglist " :key="index">
<image :src="item" mode=""></image>
</view>
<view class="imgbox" @click="btn">
<image src="https://api.ccttiot.com/smartmeter/img/static/uY8CPw9YE6JxPzcHUaqf" mode=""></image>
</view>
</view> -->
<view class="vadio_png1">
<image @click="recordVideo" class="backimg" src="https://api.ccttiot.com/smartmeter/img/static/uTwV4aH6HbxqmM1ssvTs" mode="" v-if="videoUrl==''"></image>
<video class="vad" :src="videoUrl" controls="controls" style="width: 100%;" v-if="videoUrl!=''"></video>
</view>
<view class="tip_txt" style="font-weight: 500;font-size: 32rpx;color: #3D3D3D;margin-top: 30rpx;">
保持车辆录像的完整清晰,不要随意拍摄确保视频中车辆出境并且出现车牌号
</view>
</view>
@ -124,7 +131,9 @@ export default {
feiyong:'',
timeRemaining: "",
latitude:'',
longitude:''
longitude:'',
videoPath:'',
}
},
onLoad(e) {
@ -151,6 +160,48 @@ export default {
},
methods: {
recordVideo() {
// API
uni.chooseVideo({
sourceType: ['camera'], // 使
camera: 'back', // 使frontback
maxDuration: 15, //
success: (res) => {
//
this.videoPath = res.tempFilePath;
console.log(res.tempFilePath);
this.upload()
},
fail: (err) => {
console.log('录像失败:', err);
}
});
},
upload(){
uni.showLoading({
title:'上传中'
})
let _this=this
let math='static/'+_this.$u.guid(20)
wx.uploadFile({
url: 'https://up-z2.qiniup.com',
name: 'file',
filePath: this.videoPath,
formData: {
token: _this.token, //token
key:'bike/video/'+math
},
success: function(res) {
uni.hideLoading()
console.log(res,'resres');
let str = JSON.parse(res.data)
console.log(str.key)
_this.videoUrl = 'https://api.ccttiot.com/' + str.key
// console.log(_this.userImgs)
// _this.imglist.push(_this.userImgs)
}
});
},
//
subs(){
uni.showLoading({
@ -163,15 +214,15 @@ export default {
}else{
reason = 'DEVICE_FAULT'
}
if(this.imglist.length > 0){
faultPicture = this.imglist.join(',')
}
// if(this.imglist.length > 0){
// faultPicture = this.imglist.join(',')
// }
let data = {
orderId:this.orderid,
deviceSn:this.bikesn,
reason:reason,
faultDetail:this.textValue,
faultPicture:faultPicture,
faultPicture:this.videoUrl,
lat:this.latitude,
lon:this.longitude
}
@ -707,7 +758,48 @@ page {
background: #FFFFFF;
box-shadow: 0rpx 10rpx 64rpx 0rpx rgba(0, 0, 0, 0.08);
border-radius: 20rpx 20rpx 20rpx 20rpx;
.vadio_png1{
position: relative;
width: 100%;
height: 340rpx;
margin-top: 30rpx;
.backimg{
width: 100%;
height: 340rpx;
}
.tip_img{
position: absolute;
top: 72rpx;
left: 210rpx;
width: 252rpx;
height: 194rpx;
z-index: 11;
}
.vad{
width: 100%;
height: 370rpx;
border-radius: 40rpx;
z-index: 1;
}
.glass{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 340rpx;
background: rgba(255, 255, 255, 0.2);
border-radius: 40rpx;
// box-shadow: 0 rgba(0, 0, 0, 0.1);
backdrop-filter: blur(10rpx);
-webkit-backdrop-filter: blur(10rpx); /* For Safari */
// border: 1rpx solid rgba(255, 255, 255, 0.3);
z-index: 10;
}
}
.tit {
width: 100%;
display: flex;

View File

@ -42,7 +42,8 @@
</view>
<view class="img">
<view class="" v-for="(img, imgidx) in parsePictures(pic.finishPicture)" :key="imgidx">
<image :src="img" mode="aspectFill" @click="preview(img, pic)"></image>
<!-- <image :src="img" mode="aspectFill" @click="preview(img, pic)"></image> -->
<video :src="img"></video>
</view>
</view>
</view>

View File

@ -54,7 +54,8 @@
tel:'',
name:'',
zfzh:'',
isReal:false
isReal:false,
backData: null
}
},
onLoad(option) {
@ -66,12 +67,54 @@
this.zfzh = JSON.parse(option.user).realIdCard
}
},
onShow() {
if (this.backData == true) {
console.log('接收数据:', this.backData);
this.getshuaxin();
this.backData = null; //
}
},
methods: {
//
getshuaxin(){
this.$u.get('/app/realName/refreshRealName').then(res => {
if(res.code == 200){
if(res.data.pass == true){
let realNameType = res.data.realNameType
let infoId = res.data.infoId
uni.showModal({
title: '温馨提示',
content: `人脸认证成功`,
showCancel: false,
success: function(res) {
uni.navigateBack()
}
})
}else{
uni.showModal({
title: '温馨提示',
content: `人脸认证失败`,
showCancel: false,
success: function(res) {
uni.navigateBack()
}
})
}
}else{
uni.showModal({
title: '温馨提示',
content: `人脸认证失败`,
showCancel: false,
success: function(res) {
uni.navigateBack()
}
})
}
})
},
//
btnfh(){
uni.switchTab({
url:'/pages/my'
})
uni.navigateBack()
},
//
btnshiming(){
@ -83,6 +126,7 @@
this.$u.put(`/app/realName/realName`,data).then(res =>{
if(res.code == 200){
let https = encodeURIComponent(res.data.jumpUrl)
this.backData = true
uni.navigateTo({
url:'/page_fenbao/renlian?https=' + https
})

View File

@ -74,7 +74,8 @@
token: '',
contact: '',
picdomain:'',
userId:''
userId:'',
btnflag:true
}
},
computed: {
@ -135,25 +136,8 @@
this.currentCount = this.textValue.trim().replace(/\s+/g, '').length
},
sub() {
if (this.cutidx == -1) {
uni.showToast({
title: '请选择反馈类型',
icon: 'none',
duration: 2000
})
} else if (this.textValue == '') {
uni.showToast({
title: '请输入问题描述',
icon: 'none',
duration: 2000
})
} else if (this.contact == '') {
uni.showToast({
title: '请输入联系方式',
icon: 'none',
duration: 2000
})
} else {
if(this.btnflag == true){
this.btnflag = false
var imgString = this.imglist.join(',')
let data = {
userId:this.userId,
@ -170,11 +154,35 @@
duration: 2000
})
setTimeout(()=>{
this.btnflag = true
uni.navigateBack()
},1500)
}else if(res.code == 401){
this.btnflag = true
uni.showModal({
title: '提示',
content: '您当前未登录,是否前去登录?',
showCancel: true,
success: function(res) {
if (res.confirm) {
uni.reLaunch({
url: '/pages/login/login'
})
} else if (res.cancel) {
}
}
})
}else{
this.btnflag = true
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
}
})
}
}
},
btn() {
let _this = this

View File

@ -198,8 +198,8 @@
getlunbo(){
this.$u.get("/app/ad").then(res => {
if(res.code == 200){
if(res.rows.length > 0 && res.rows[0] != null){
res.rows.forEach(item =>{
if(res.data.length > 0 && res.data[0] != null){
res.data.forEach(item =>{
this.lists.push({
image:item.picture,
title: item.adId

View File

@ -13,10 +13,10 @@
style="margin-top: 30rpx;">
快捷登录
</button>
<!-- <view class="tipss" @click="pageindex=1" style="width: 100%;text-align: center;margin-top: 50rpx;color: #ccc;">
手机号登录
</view> -->
<view class="tipss" @click="bdl" style="width: 100%;text-align: center;margin-top: 50rpx;color: #333;position: fixed;z-index: 99;bottom: 60rpx;">
暂不登录
</view>
</view>
<view class="page3" v-if="pageindex == 2">
<view class="tit">
@ -279,6 +279,11 @@
},
},
methods: {
bdl(){
uni.switchTab({
url:'/pages/index/index'
})
},
page3(){
this.pageindex=3
this.phone1=''

View File

@ -68,7 +68,8 @@
</view>
</view>
<view class="gg">
<image src="https://api.ccttiot.com/smartmeter/img/static/uTZBBRuyRexKd6c4VE9d" mode=""></image>
<!-- <image src="https://api.ccttiot.com/smartmeter/img/static/uTZBBRuyRexKd6c4VE9d" mode=""></image> -->
<u-swiper :list="lists"></u-swiper>
</view>
</view>
@ -153,7 +154,8 @@
guanliflag:false,
adminflag:false,
user:{},
kefulist:[]
kefulist:[],
lists:[]
}
},
onLoad() {
@ -162,8 +164,29 @@
onShow() {
this.getareaList()
this.getkefu()
this.getlunbo()
},
methods: {
// 广
getlunbo(){
this.$u.get("/app/ad").then(res => {
if(res.code == 200){
if(res.data.length > 0 && res.data[0] != null){
res.data.forEach(item =>{
this.lists.push({
image:item.picture,
title: item.adId
})
})
}else{
this.lists.push({
image:"https://api.ccttiot.com/smartmeter/img/static/uTZBBRuyRexKd6c4VE9d",
title: ""
})
}
}
})
},
//
getkefu(){
this.$u.get(`/app/customerService/list?pageNum=1&pageSize=999`).then(res =>{
@ -347,6 +370,9 @@
</script>
<style lang="scss">
/deep/ wx-swiper{
height: 286rpx !important;
}
page {
background: linear-gradient( 180deg, #CCE5FF 0%, rgba(204,229,255,0) 40%);
}
@ -550,7 +576,7 @@
.li{
display: flex;
justify-content: space-between;
height: 80rpx;
height: 100rpx;
align-items: center;
.lt{
display: flex;

View File

@ -50,7 +50,7 @@
</view>
<view class="" @click="btnqd">
<image src="https://api.ccttiot.com/smartmeter/img/static/uqTfyigsAuNX67k5QY4m" mode=""></image>
{{deivceobj.deviceLockStatus == 0 ? '已锁车' : '已开启'}}
{{deivceobj.deviceLockStatus == 0 ? '点击开锁' : '临时锁车'}}
</view>
<view class="" @click="btndaohang">
<image src="https://api.ccttiot.com/smartmeter/img/static/uNYGQSPt1pxciP1CDp1b" mode=""></image>
@ -106,22 +106,6 @@
</view>
</view>
</view>
<!-- 还车牌照 -->
<!-- <view class="cont_box" v-if="orderAreaReturnVerify">
<view class="tit">
<image src="https://lxnapi.ccttiot.com/bike/img/static/uByIrgaV23PDGZWReKHW" mode=""></image>
还车请拍摄车辆照片
</view>
<view class="icon">
<view class="imgbox" v-for="(item, index) in imglist " :key="index">
<image :src="item" @click="previewImage(index)" mode="aspectFill"></image>
<image @click="btnscpic(index)" src="https://api.ccttiot.com/smartmeter/img/static/uupDDn1ykO99dIgh961m" class="text" mode=""></image>
</view>
<view class="imgbox" @click="btn">
<image src="https://api.ccttiot.com/smartmeter/img/static/uY8CPw9YE6JxPzcHUaqf" mode=""></image>
</view>
</view>
</view> -->
<!-- 还车换车按钮 -->
<view class="anniuhc">
<view class="huanche" style="background-color: #fff;border: 1px solid #4297F3;color: #4297F3;" @click="btnghbike">
@ -163,7 +147,7 @@
data() {
return {
bgc: {
backgroundColor: "rgb(235,240,254)",
backgroundColor: "",
},
cheflag:true,
qdtxt:'已关闭',
@ -190,7 +174,6 @@
}
},
onShow() {
this.getQiniuToken()
setTimeout(()=>{
this.getorderdevice()
},100)
@ -226,52 +209,6 @@
}
})
},
//
previewImage(index) {
uni.previewImage({
current: this.imglist[index],
urls: this.imglist
})
},
//
btnscpic(index){
this.imglist.splice(index, 1)
},
//
getQiniuToken() {
this.$u.get("/common/qiniuToken").then((res) => {
if (res.code == 200) {
this.token = res.data
}
})
},
//
btn() {
let _this = this
let math = 'static/' + _this.$u.guid(20)
uni.chooseImage({
count: 9,
type: 'all',
success(res) {
const tempFilePaths = res.tempFiles
wx.uploadFile({
url: 'https://up-z2.qiniup.com',
name: 'file',
filePath: tempFilePaths[0].path,
formData: {
token: _this.token, //token
key: 'smartmeter/img/' + math
},
success: function (res) {
let str = JSON.parse(res.data)
let userImgs = 'https://api.ccttiot.com/' + str.key
console.log(userImgs)
_this.imglist.push(userImgs)
}
})
}
})
},
//
btnghbike(){
uni.navigateTo({
@ -300,7 +237,7 @@
btnhc(){
if(this.orderAreaReturnVerify == true){
uni.navigateTo({
url:'/page_user/hcshenhe?sn=' + this.deivceobj.deviceSn + '&orderid=' + this.deivceobj.orderId
url:'/page_user/hcshenhe?sn=' + this.deivceobj.deviceSn + '&orderid=' + this.deivceobj.orderId + '&orderAreaId=' + this.deivceobj.orderAreaId
})
}else{
uni.getLocation({
@ -421,14 +358,14 @@
let that = this
uni.showModal({
title: '提示',
content: '您是否要开启车辆?',
content: '您是否要解锁车辆?',
showCancel: true,
success: function (res) {
if (res.confirm) {
that.$u.put(`/app/order/openDevice?orderId=${that.deivceobj.orderId}`).then((res) => {
if (res.code == 200) {
uni.showToast({
title: '开启成功',
title: '解锁成功',
icon: 'success',
duration: 2000
})
@ -447,17 +384,28 @@
}
})
}else if(this.deivceobj.deviceLockStatus == 1){
uni.getLocation({
type: 'wgs84',
success: (res) => {
console.log(res);
this.lat = res.latitude
this.lon = res.longitude
},
fail: (err) => {
console.error('获取位置失败:', err)
}
})
let that = this
uni.showModal({
title: '提示',
content: '您是否要临时关闭车辆?',
content: '您是否要临时锁车',
showCancel: true,
success: function (res) {
if (res.confirm) {
that.$u.put(`/app/order/closeDevice?orderId=${that.deivceobj.orderId}`).then((res) => {
that.$u.put(`/app/order/closeDevice?orderId=${that.deivceobj.orderId}&lat=${that.lat}&lon=${that.lon}`).then((res) => {
if (res.code == 200) {
uni.showToast({
title: '临时关闭成功',
title: '临时锁车成功',
icon: 'success',
duration: 2000
})
@ -544,49 +492,6 @@
padding-bottom: 240rpx;
box-sizing: border-box;
}
.cont_box {
margin: 0 auto;
padding: 24rpx 32rpx;
width: 680rpx;
margin-top: 38rpx;
background: #FFFFFF;
box-shadow: 0rpx 10rpx 64rpx 0rpx rgba(0, 0, 0, 0.08);
border-radius: 20rpx 20rpx 20rpx 20rpx;
.icon {
display: flex;
flex-wrap: wrap;
align-items: center;
margin-top: 40rpx;
.imgbox {
width: 200rpx;
position: relative;
margin-top: 20rpx !important;
.text{
width: 40rpx;
height: 40rpx;
position: absolute;
top: -10rpx;
right: 10rpx;
}
image {
width: 180rpx;
height: 180rpx;
border-radius: 10rpx;
}
}
}
.tit {
width: 100%;
display: flex;
flex-wrap: nowrap;
align-items: center;
image {
margin-right: 12rpx;
width: 24rpx;
height: 24rpx;
}
}
}
.mask{
width: 100%;
height: 100vh;
@ -666,6 +571,10 @@
margin-top: 24rpx;
padding: 0 26rpx;
box-sizing: border-box;
height: 78vh;
overflow: scroll;
padding-bottom: 80rpx;
box-sizing: border-box;
.anniuhc{
display: flex;
justify-content: space-between;

File diff suppressed because it is too large Load Diff