286 lines
6.1 KiB
Vue
286 lines
6.1 KiB
Vue
|
<template>
|
|||
|
<view class="page">
|
|||
|
<u-navbar title="选择车辆 " :border-bottom="false" :background="background" title-color='#000' title-size='36'
|
|||
|
height='45' back-icon-color='#000'></u-navbar>
|
|||
|
<view class="content">
|
|||
|
<view class="content_item" v-for="item, indexs in deviceList" :key="indexs" @click="selectCar(item)">
|
|||
|
<view class="content_item_left">
|
|||
|
<view class="carInfo">
|
|||
|
<image src="https://lxnapi.ccttiot.com/bike/img/static/uUIunSd0CSU3ovogLJHk" mode=""
|
|||
|
class="titimg">
|
|||
|
</image>
|
|||
|
<view class="power">
|
|||
|
<view v-for="index in 10" :key="index">
|
|||
|
<image :src="getImageSrc(index, item.remainingPower)" mode="aspectFit"
|
|||
|
class="power-icon" />
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
{{ item.remainingMileage }}KM
|
|||
|
</view>
|
|||
|
<view class="model">
|
|||
|
车型:{{ item.model }}
|
|||
|
</view>
|
|||
|
<view class="carNum">
|
|||
|
{{ item.vehicleNum }}
|
|||
|
</view>
|
|||
|
<view class="type">
|
|||
|
租赁中
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="content_item_right">
|
|||
|
<image :src="modelInfo.picture" mode="" v-if="modelInfo.picture" class="rightimage"></image>
|
|||
|
<image src="https://lxnapi.ccttiot.com/bike/img/static/uB1F5aibooguILH8uB4F" mode="" v-else
|
|||
|
class="rightimage"></image>
|
|||
|
<view class="tips">
|
|||
|
选择车辆
|
|||
|
<image src="https://lxnapi.ccttiot.com/bike/img/static/uj7bE7GMcCm6g2igeo7k" mode=""
|
|||
|
v-if="item.isDefault == 1"></image>
|
|||
|
<image src="https://lxnapi.ccttiot.com/bike/img/static/uN3QtzNuM2CMTLUm3joR" mode="" v-else>
|
|||
|
</image>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<u-select v-model="showadd" :list="list" title='选择添加方式' @confirm="confirm"></u-select>
|
|||
|
<view class="botBtn" @click="addCar">+ 添加车辆</view>
|
|||
|
<view class="botBtn1" @click="cancel">取消</view>
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
export default {
|
|||
|
data() {
|
|||
|
return {
|
|||
|
background: {
|
|||
|
backgroundColor: "#fff",
|
|||
|
},
|
|||
|
deviceList: [],
|
|||
|
showadd: false,
|
|||
|
list: [
|
|||
|
{
|
|||
|
value: '1',
|
|||
|
label: '扫码添加'
|
|||
|
},
|
|||
|
{
|
|||
|
value: '2',
|
|||
|
label: '手动输入'
|
|||
|
}
|
|||
|
],
|
|||
|
}
|
|||
|
},
|
|||
|
onLoad() {
|
|||
|
this.getDeviceList()
|
|||
|
},
|
|||
|
methods: {
|
|||
|
confirm(e) {
|
|||
|
|
|||
|
this.showadd = false
|
|||
|
if (e[0].value == '1') {
|
|||
|
uni.navigateTo({
|
|||
|
url: '/page_user/QrBind'
|
|||
|
})
|
|||
|
} else if (e[0].value == '2') {
|
|||
|
uni.navigateTo({
|
|||
|
url: '/page_user/SnBind'
|
|||
|
})
|
|||
|
}
|
|||
|
},
|
|||
|
cancel() {
|
|||
|
uni.navigateBack()
|
|||
|
},
|
|||
|
addCar() {
|
|||
|
this.showadd = true
|
|||
|
},
|
|||
|
selectCar(item) {
|
|||
|
this.$u.put(`/appVerify/toggleDefault?sn=${item.sn}`).then((res) => {
|
|||
|
if (res.code == 200) {
|
|||
|
this.getDeviceList()
|
|||
|
uni.showToast({
|
|||
|
title: '操作成功',
|
|||
|
icon: 'none',
|
|||
|
duration: 2000
|
|||
|
});
|
|||
|
} else {
|
|||
|
uni.showToast({
|
|||
|
title: res.msg,
|
|||
|
icon: 'none',
|
|||
|
duration: 2000
|
|||
|
});
|
|||
|
}
|
|||
|
});
|
|||
|
},
|
|||
|
getDeviceList() {
|
|||
|
|
|||
|
this.$u.get(`/appVerify/getDeviceListByToken`).then((res) => {
|
|||
|
if (res.code == 200) {
|
|||
|
// 检查返回的数据数组是否非空
|
|||
|
if (res.data && res.data.length > 0) {
|
|||
|
// 找出所有 isDefault 为 0 的设备
|
|||
|
this.deviceList = res.data
|
|||
|
|
|||
|
// 设置 showdevice 为 true
|
|||
|
|
|||
|
}
|
|||
|
} else {
|
|||
|
uni.showToast({
|
|||
|
title: res.msg,
|
|||
|
icon: 'none',
|
|||
|
duration: 2000
|
|||
|
});
|
|||
|
}
|
|||
|
});
|
|||
|
},
|
|||
|
getImageSrc(index, power) {
|
|||
|
const fullPowerIcon = 'https://lxnapi.ccttiot.com/bike/img/static/uhxmJlps8lrRRTmBIFpl';
|
|||
|
const emptyPowerIcon = 'https://lxnapi.ccttiot.com/bike/img/static/u1CcbtQydd107cOUEZ1l';
|
|||
|
|
|||
|
// 计算每个格子代表的电量值
|
|||
|
const powerPerGrid = power / 10;
|
|||
|
|
|||
|
// 如果当前格子序号小于等于应显示的格子数,显示满格图标
|
|||
|
return index + 1 <= Math.floor(powerPerGrid) ? fullPowerIcon : emptyPowerIcon;
|
|||
|
},
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="scss">
|
|||
|
.page {
|
|||
|
.botBtn1 {
|
|||
|
position: fixed;
|
|||
|
display: flex;
|
|||
|
justify-content: center;
|
|||
|
align-items: center;
|
|||
|
left: 38rpx;
|
|||
|
bottom: 58rpx;
|
|||
|
width: 682rpx;
|
|||
|
height: 92rpx;
|
|||
|
box-shadow: 0rpx 2rpx 18rpx 0rpx rgba(0, 0, 0, 0.1);
|
|||
|
border-radius: 16rpx 16rpx 16rpx 16rpx;
|
|||
|
border: 2rpx solid #4297F3;
|
|||
|
font-weight: 500;
|
|||
|
font-size: 40rpx;
|
|||
|
color: #4297F3;
|
|||
|
}
|
|||
|
|
|||
|
.botBtn {
|
|||
|
position: fixed;
|
|||
|
display: flex;
|
|||
|
justify-content: center;
|
|||
|
align-items: center;
|
|||
|
left: 38rpx;
|
|||
|
bottom: 178rpx;
|
|||
|
width: 682rpx;
|
|||
|
height: 92rpx;
|
|||
|
background: #4297F3;
|
|||
|
box-shadow: 0rpx 2rpx 18rpx 0rpx rgba(0, 0, 0, 0.1);
|
|||
|
border-radius: 16rpx 16rpx 16rpx 16rpx;
|
|||
|
font-weight: 500;
|
|||
|
font-size: 40rpx;
|
|||
|
color: #FFFFFF;
|
|||
|
}
|
|||
|
|
|||
|
.content {
|
|||
|
padding: 0 40rpx;
|
|||
|
background-color: #fff;
|
|||
|
|
|||
|
.content_item {
|
|||
|
margin-top: 20rpx;
|
|||
|
padding: 48rpx 42rpx;
|
|||
|
width: 688rpx;
|
|||
|
display: flex;
|
|||
|
flex-wrap: nowrap;
|
|||
|
background: #EEF2FD;
|
|||
|
border-radius: 28rpx 28rpx 28rpx 28rpx;
|
|||
|
|
|||
|
.content_item_right {
|
|||
|
width: 300rpx;
|
|||
|
|
|||
|
image {
|
|||
|
width: 212rpx;
|
|||
|
height: 164rpx;
|
|||
|
}
|
|||
|
|
|||
|
.tips {
|
|||
|
display: flex;
|
|||
|
flex-wrap: nowrap;
|
|||
|
align-items: center;
|
|||
|
margin-top: 12rpx;
|
|||
|
font-weight: 400;
|
|||
|
font-size: 30rpx;
|
|||
|
color: #3D3D3D;
|
|||
|
|
|||
|
image {
|
|||
|
width: 29rpx;
|
|||
|
height: 29rpx;
|
|||
|
margin-left: 12rpx;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.content_item_left {
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
flex-wrap: wrap;
|
|||
|
|
|||
|
.type {
|
|||
|
margin-top: 20rpx;
|
|||
|
padding: 8rpx 19rpx;
|
|||
|
|
|||
|
background: #D2E8FF;
|
|||
|
border-radius: 29rpx 29rpx 29rpx 29rpx;
|
|||
|
font-weight: 500;
|
|||
|
font-size: 28rpx;
|
|||
|
color: #4297F3;
|
|||
|
}
|
|||
|
|
|||
|
.model {
|
|||
|
width: 100%;
|
|||
|
margin-top: 15rpx;
|
|||
|
font-weight: 700;
|
|||
|
font-size: 32rpx;
|
|||
|
color: #3D3D3D;
|
|||
|
}
|
|||
|
|
|||
|
.carNum {
|
|||
|
width: 100%;
|
|||
|
margin-top: 15rpx;
|
|||
|
font-weight: 700;
|
|||
|
font-size: 32rpx;
|
|||
|
color: #3D3D3D;
|
|||
|
}
|
|||
|
|
|||
|
.carInfo {
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
font-weight: 700;
|
|||
|
font-size: 36rpx;
|
|||
|
color: #3D3D3D;
|
|||
|
|
|||
|
// justify-content: center;
|
|||
|
.titimg {
|
|||
|
margin-bottom: 8rpx;
|
|||
|
margin-right: 12rpx;
|
|||
|
|
|||
|
width: 30rpx;
|
|||
|
height: 30rpx;
|
|||
|
}
|
|||
|
|
|||
|
.power {
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
// gap: 4rpx; // 设置图标之间的间距
|
|||
|
margin-right: 12rpx;
|
|||
|
|
|||
|
.power-icon {
|
|||
|
width: 18rpx;
|
|||
|
height: 36rpx;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</style>
|