2024-05-09 17:05:51 +08:00
|
|
|
|
<template>
|
2024-05-13 18:03:20 +08:00
|
|
|
|
<view class="page" v-if="loading">
|
2024-05-09 17:05:51 +08:00
|
|
|
|
<u-navbar title="订单详情" :border-bottom="false" :background="bgc" title-color='#2E4975' title-size='36'
|
2024-06-07 18:08:55 +08:00
|
|
|
|
height='45'></u-navbar>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
<map class="map" id="map" ref="map" :scale="zoomSize" :latitude="latitude" :longitude="longitude"
|
2024-06-20 18:08:54 +08:00
|
|
|
|
:show-location='true' :markers="markers" :polygons="polygons" :polyline="polyline"> </map>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
<view class="info_card">
|
|
|
|
|
<view class="info_tit">
|
|
|
|
|
基本信息
|
|
|
|
|
</view>
|
|
|
|
|
<view class="lines"></view>
|
|
|
|
|
<view class="cont">
|
|
|
|
|
<view class="info_li">
|
2024-05-13 18:03:20 +08:00
|
|
|
|
订单编号:<span>{{orderInfo.orderNo}}</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
2024-06-24 17:59:49 +08:00
|
|
|
|
<!-- <view class="info_li">
|
|
|
|
|
|
|
|
|
|
</view> -->
|
2024-05-09 17:05:51 +08:00
|
|
|
|
<view class="info_li">
|
2024-06-24 17:59:49 +08:00
|
|
|
|
<view class="half_infoli " @click="callPhone">
|
|
|
|
|
租赁用户:<span style="color:#4C97E7 ;">{{orderInfo.phonenumber}}</span>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="half_infoli">
|
|
|
|
|
用户姓名:<span v-if="orderInfo.realName">{{orderInfo.realName}}</span>
|
|
|
|
|
<span v-else>--</span>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="info_li">
|
|
|
|
|
订单状态:<span>{{status()}}</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
<view class="info_li">
|
|
|
|
|
<view class="half_infoli">
|
2024-06-21 18:03:21 +08:00
|
|
|
|
租赁时长:<span>{{ computedList(orderInfo)}}</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
<view class="half_infoli">
|
2024-05-13 18:03:20 +08:00
|
|
|
|
行驶距离:<span>{{orderInfo.distance/1000}}Km</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="info_li">
|
2024-05-13 18:03:20 +08:00
|
|
|
|
订单状态:<span>{{status()}}</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="info_card" style="margin-top: 20rpx;">
|
|
|
|
|
<view class="info_tit">
|
|
|
|
|
设备信息
|
|
|
|
|
</view>
|
|
|
|
|
<view class="lines"></view>
|
|
|
|
|
<view class="cont">
|
|
|
|
|
|
|
|
|
|
<view class="info_li">
|
|
|
|
|
<view class="half_infoli">
|
2024-06-21 18:03:21 +08:00
|
|
|
|
车牌号:
|
|
|
|
|
<span v-if="orderInfo.device.vehicleNum">{{orderInfo.device.vehicleNum}}</span>
|
|
|
|
|
<span v-else>--</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
<view class="half_infoli">
|
2024-06-21 18:03:21 +08:00
|
|
|
|
SN:
|
|
|
|
|
<span v-if="orderInfo.device.sn">{{orderInfo.device.sn}}</span>
|
|
|
|
|
<span v-else>--</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="info_li">
|
2024-05-13 18:03:20 +08:00
|
|
|
|
<!-- <view class="half_infoli">
|
|
|
|
|
车辆编号:<span>{{orderInfo.device.areaName}}</span>
|
|
|
|
|
</view> -->
|
2024-05-09 17:05:51 +08:00
|
|
|
|
<view class="half_infoli">
|
2024-06-21 18:03:21 +08:00
|
|
|
|
运营区域
|
|
|
|
|
<span v-if="orderInfo.area">{{orderInfo.area}}</span>
|
|
|
|
|
<span v-else>--</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-09 17:05:51 +08:00
|
|
|
|
<view class="info_card" style="margin-top: 20rpx;">
|
|
|
|
|
<view class="info_tit">
|
2024-06-20 18:08:54 +08:00
|
|
|
|
行程记录
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
<view class="lines"></view>
|
|
|
|
|
<view class="cont">
|
2024-06-20 18:08:54 +08:00
|
|
|
|
<view v-for="(item,index) in orderInfo.tripLogs" :key="index">
|
|
|
|
|
<view class="info_lis" v-if="item.type==1">
|
2024-05-15 18:02:17 +08:00
|
|
|
|
开锁时间:<view class="text">{{item.createTime}}</view>
|
|
|
|
|
</view>
|
2024-06-20 18:08:54 +08:00
|
|
|
|
<view class="info_lis" v-if="item.type==1">
|
2024-05-15 18:02:17 +08:00
|
|
|
|
开锁地点:<view class="text"> {{item.address}}</view>
|
|
|
|
|
</view>
|
2024-06-20 18:08:54 +08:00
|
|
|
|
<view class="info_lis" v-if="item.type==2">
|
2024-05-15 18:02:17 +08:00
|
|
|
|
临时锁车时间:<view class="text">{{item.createTime}}</view>
|
|
|
|
|
</view>
|
2024-06-20 18:08:54 +08:00
|
|
|
|
<view class="info_lis" v-if="item.type==2">
|
2024-05-15 18:02:17 +08:00
|
|
|
|
临时锁车地点:<view class="text">{{item.address}}</view>
|
|
|
|
|
</view>
|
2024-06-20 18:08:54 +08:00
|
|
|
|
<view class="info_lis" v-if="item.type==3">
|
2024-05-15 18:02:17 +08:00
|
|
|
|
解除时间:<view class="text">{{item.createTime}}</view>
|
|
|
|
|
</view>
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
|
|
|
|
<view class="info_lis" v-if="item.type==4">
|
2024-05-15 18:02:17 +08:00
|
|
|
|
关锁时间:<view class="text">{{item.createTime}}</view>
|
|
|
|
|
</view>
|
2024-06-20 18:08:54 +08:00
|
|
|
|
<view class="info_lis" v-if="item.type==4">
|
2024-05-15 18:02:17 +08:00
|
|
|
|
关锁地点:<view class="text">{{item.address}}</view>
|
|
|
|
|
</view>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-13 18:03:20 +08:00
|
|
|
|
<!-- <view class="info_li">
|
2024-05-09 17:05:51 +08:00
|
|
|
|
锁车时间:<span>120.56189,27.12379</span>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="info_li">
|
|
|
|
|
锁车地点:<span>120.56189,27.12379</span>
|
2024-05-13 18:03:20 +08:00
|
|
|
|
</view> -->
|
|
|
|
|
<!-- <view class="info_li">
|
2024-05-09 17:05:51 +08:00
|
|
|
|
解除时间:<span>120.56189,27.12379</span>
|
2024-05-13 18:03:20 +08:00
|
|
|
|
</view> -->
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="info_card" style="margin-top: 20rpx;">
|
|
|
|
|
<view class="info_tit">
|
|
|
|
|
费用明细
|
2024-06-20 18:08:54 +08:00
|
|
|
|
<view class="money">
|
2024-05-13 23:34:28 +08:00
|
|
|
|
结算总费用:¥{{orderInfo.settlementFee}}
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="lines"></view>
|
|
|
|
|
<view class="cont">
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-09 17:05:51 +08:00
|
|
|
|
<view class="info_li">
|
|
|
|
|
<view class="half_infoli">
|
2024-05-13 18:03:20 +08:00
|
|
|
|
预约费用:<span>{{orderInfo.appointmentFee}}</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
<view class="half_infoli">
|
2024-05-13 18:03:20 +08:00
|
|
|
|
调度费用:<span>{{orderInfo.dispatchFee}}</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="info_li">
|
|
|
|
|
<view class="half_infoli">
|
2024-05-13 18:03:20 +08:00
|
|
|
|
管理费用:<span>{{orderInfo.manageFee}}</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
<view class="half_infoli">
|
2024-05-13 18:03:20 +08:00
|
|
|
|
骑行费用:<span>{{orderInfo.ridingFee}}</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="info_li">
|
2024-05-13 18:03:20 +08:00
|
|
|
|
实收:<span>{{orderInfo.totalFee}}</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
<view class="info_li">
|
2024-05-13 18:03:20 +08:00
|
|
|
|
支付方式:<span>微信支付</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
2024-05-13 18:03:20 +08:00
|
|
|
|
<view class="info_li" v-if="orderInfo.rule">
|
|
|
|
|
计费模板:<span>{{orderInfo.rule.name}}</span>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="info_li" v-if="orderInfo.payTime">
|
|
|
|
|
支付时间:<span>{{orderInfo.payTime}}</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
<view class="lines"></view>
|
2024-05-31 17:54:23 +08:00
|
|
|
|
<view class="cont" v-if="orderInfo.etRefund">
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
|
|
|
|
|
2024-05-09 17:05:51 +08:00
|
|
|
|
<view class="info_li">
|
|
|
|
|
<view class="half_infoli">
|
2024-05-13 23:34:28 +08:00
|
|
|
|
预约费退款:<span>{{orderInfo.etRefund.appointmentFee}}</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
<view class="half_infoli">
|
2024-05-13 23:34:28 +08:00
|
|
|
|
调度费退款:<span>{{orderInfo.etRefund.dispatchFee}}</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="info_li">
|
2024-05-13 23:34:28 +08:00
|
|
|
|
<view class="half_infoli">
|
|
|
|
|
骑行费退款:<span>{{orderInfo.etRefund.ridingFee}}</span>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="half_infoli">
|
2024-06-20 18:08:54 +08:00
|
|
|
|
管理费退款:<span>{{orderInfo.etRefund.manageFee}}</span>
|
2024-05-13 23:34:28 +08:00
|
|
|
|
</view>
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
<view class="info_li">
|
2024-05-13 23:34:28 +08:00
|
|
|
|
退款原因:<span>{{orderInfo.etRefund.reason}}</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
<view class="info_li">
|
2024-05-13 23:34:28 +08:00
|
|
|
|
退款时间:<span>{{orderInfo.etRefund.createTime}}</span>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-09 17:05:51 +08:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
2024-06-21 18:03:21 +08:00
|
|
|
|
<view class="bot" v-if='orderInfo.paid==1'>
|
2024-05-09 17:05:51 +08:00
|
|
|
|
<view class="btn">
|
|
|
|
|
退款
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
export default {
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
bgc: {
|
|
|
|
|
backgroundColor: "#F7FAFE",
|
|
|
|
|
},
|
2024-05-31 17:54:23 +08:00
|
|
|
|
latitude: 0,
|
|
|
|
|
longitude: 0,
|
2024-05-09 17:05:51 +08:00
|
|
|
|
isMap: false,
|
|
|
|
|
zoomSize: 15,
|
2024-05-13 18:03:20 +08:00
|
|
|
|
markers: [],
|
2024-05-15 18:02:17 +08:00
|
|
|
|
polyline: [{
|
|
|
|
|
points: [],
|
2024-06-20 18:08:54 +08:00
|
|
|
|
width: 8,
|
|
|
|
|
arrowLine: true,
|
|
|
|
|
color: '#00AF99'
|
|
|
|
|
// strokeWidth: 2,
|
|
|
|
|
// strokeColor: '#00AF99',
|
|
|
|
|
// fillColor: '#00AF99'
|
2024-05-15 18:02:17 +08:00
|
|
|
|
}, ],
|
2024-05-13 18:03:20 +08:00
|
|
|
|
polygons: [],
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-13 18:03:20 +08:00
|
|
|
|
cardId: '001区域',
|
2024-06-20 18:08:54 +08:00
|
|
|
|
orderId: '',
|
|
|
|
|
orderInfo: {},
|
|
|
|
|
loading: false,
|
2024-06-21 18:03:21 +08:00
|
|
|
|
showtk: false,
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-09 17:05:51 +08:00
|
|
|
|
|
|
|
|
|
}
|
2024-05-13 18:03:20 +08:00
|
|
|
|
},
|
|
|
|
|
onLoad(e) {
|
2024-06-20 18:08:54 +08:00
|
|
|
|
this.orderId = e.id
|
2024-05-13 18:03:20 +08:00
|
|
|
|
this.getOrderDetail()
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
|
|
|
|
// this.getParking()
|
2024-05-13 18:03:20 +08:00
|
|
|
|
},
|
2024-06-20 18:08:54 +08:00
|
|
|
|
components: {
|
|
|
|
|
|
2024-05-09 17:05:51 +08:00
|
|
|
|
},
|
|
|
|
|
methods: {
|
2024-06-24 17:59:49 +08:00
|
|
|
|
callPhone(){
|
|
|
|
|
uni.makePhoneCall({
|
|
|
|
|
phoneNumber:this.orderInfo.phonenumber
|
|
|
|
|
})
|
|
|
|
|
},
|
2024-06-21 18:03:21 +08:00
|
|
|
|
computedList(item) {
|
2024-06-24 17:59:49 +08:00
|
|
|
|
if(item.status==0||item.status==2){
|
2024-06-21 18:03:21 +08:00
|
|
|
|
const createTime = new Date(item.createTime);
|
2024-06-24 17:59:49 +08:00
|
|
|
|
const payTime = Date.now();
|
|
|
|
|
const timeDifference = Math.abs(createTime - payTime);
|
|
|
|
|
|
|
|
|
|
const hours = Math.floor(timeDifference / (1000 * 60 * 60));
|
|
|
|
|
const minutes = Math.floor((timeDifference % (1000 * 60 * 60)) / (1000 * 60));
|
|
|
|
|
const seconds = Math.floor((timeDifference % (1000 * 60)) / 1000);
|
|
|
|
|
|
|
|
|
|
let result = '';
|
|
|
|
|
if (hours > 0) {
|
|
|
|
|
result += `${hours}小时`;
|
|
|
|
|
}
|
|
|
|
|
if (minutes > 0 || hours > 0) { // 显示分钟条件:有小时或者有分钟
|
|
|
|
|
result += `${minutes}分`;
|
|
|
|
|
}
|
|
|
|
|
// result += `${seconds}秒`; // 始终显示秒
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}else{
|
|
|
|
|
const createTime = new Date(item.createTime);
|
|
|
|
|
const payTime = new Date(item.returnTime);
|
|
|
|
|
const timeDifference = Math.abs(createTime - payTime);
|
|
|
|
|
|
|
|
|
|
const hours = Math.floor(timeDifference / (1000 * 60 * 60));
|
|
|
|
|
const minutes = Math.floor((timeDifference % (1000 * 60 * 60)) / (1000 * 60));
|
|
|
|
|
const seconds = Math.floor((timeDifference % (1000 * 60)) / 1000);
|
|
|
|
|
|
|
|
|
|
let result = '';
|
|
|
|
|
if (hours > 0) {
|
|
|
|
|
result += `${hours}小时`;
|
|
|
|
|
}
|
|
|
|
|
if (minutes > 0 || hours > 0) { // 显示分钟条件:有小时或者有分钟
|
|
|
|
|
result += `${minutes}分`;
|
|
|
|
|
}
|
|
|
|
|
// result += `${seconds}秒`; // 始终显示秒
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2024-06-21 18:03:21 +08:00
|
|
|
|
},
|
2024-05-13 18:03:20 +08:00
|
|
|
|
convertBoundaryToPolyline(boundary) {
|
|
|
|
|
if (!boundary) return null;
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-13 18:03:20 +08:00
|
|
|
|
const points = JSON.parse(boundary).map(coord => ({
|
|
|
|
|
latitude: coord[1],
|
|
|
|
|
longitude: coord[0]
|
|
|
|
|
}));
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-13 18:03:20 +08:00
|
|
|
|
const polyline = {
|
|
|
|
|
points: points,
|
|
|
|
|
fillColor: "#55888840", //填充颜色
|
|
|
|
|
strokeColor: "#22FF00", //描边颜色
|
|
|
|
|
strokeWidth: 2, //描边宽度
|
|
|
|
|
zIndex: 1, //层级
|
|
|
|
|
};
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-13 18:03:20 +08:00
|
|
|
|
return polyline;
|
|
|
|
|
},
|
2024-05-15 18:02:17 +08:00
|
|
|
|
|
2024-06-20 18:08:54 +08:00
|
|
|
|
convertBoundaryToPolylines(boundaries, num) {
|
|
|
|
|
if (num == 1) {
|
|
|
|
|
console.log('判断');
|
|
|
|
|
return boundaries.map(boundary => {
|
|
|
|
|
if (!boundary) return null;
|
|
|
|
|
let coords;
|
|
|
|
|
try {
|
|
|
|
|
coords = JSON.parse(boundary);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error("Error parsing boundary JSON:", error);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
if (!Array.isArray(coords)) {
|
|
|
|
|
console.error("Parsed boundary is not an array:", coords);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
const points = coords.map(coord => ({
|
|
|
|
|
latitude: coord[1],
|
|
|
|
|
longitude: coord[0]
|
|
|
|
|
}));
|
|
|
|
|
return {
|
|
|
|
|
points: points,
|
|
|
|
|
fillColor: "#3A7EDB40", //填充颜色
|
|
|
|
|
strokeColor: "#3A7EDB", //描边颜色
|
|
|
|
|
strokeWidth: 2, //描边宽度
|
|
|
|
|
zIndex: 1, //层级
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
}).filter(polyline => polyline !== null); // 过滤掉无效的折线数据
|
|
|
|
|
} else if (num == 2) {
|
|
|
|
|
return boundaries.map(boundary => {
|
|
|
|
|
if (!boundary) return null;
|
|
|
|
|
let coords;
|
|
|
|
|
try {
|
|
|
|
|
coords = JSON.parse(boundary);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error("Error parsing boundary JSON:", error);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
if (!Array.isArray(coords)) {
|
|
|
|
|
console.error("Parsed boundary is not an array:", coords);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
const points = coords.map(coord => ({
|
|
|
|
|
latitude: coord[1],
|
|
|
|
|
longitude: coord[0]
|
|
|
|
|
}));
|
|
|
|
|
return {
|
|
|
|
|
points: points,
|
|
|
|
|
fillColor: "#FFF5D640", //填充颜色
|
|
|
|
|
strokeColor: "#FFC107", //描边颜色
|
|
|
|
|
strokeWidth: 2, //描边宽度
|
|
|
|
|
zIndex: 1, //层级
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
}).filter(polyline => polyline !== null); // 过滤掉无效的折线数据
|
|
|
|
|
} else if (num == 3) {
|
|
|
|
|
return boundaries.map(boundary => {
|
|
|
|
|
if (!boundary) return null;
|
|
|
|
|
let coords;
|
|
|
|
|
try {
|
|
|
|
|
coords = JSON.parse(boundary);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error("Error parsing boundary JSON:", error);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
if (!Array.isArray(coords)) {
|
|
|
|
|
console.error("Parsed boundary is not an array:", coords);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
const points = coords.map(coord => ({
|
|
|
|
|
latitude: coord[1],
|
|
|
|
|
longitude: coord[0]
|
|
|
|
|
}));
|
|
|
|
|
return {
|
2024-05-15 18:02:17 +08:00
|
|
|
|
points: points,
|
2024-06-20 18:08:54 +08:00
|
|
|
|
fillColor: "#FFD1CF40", //填充颜色
|
|
|
|
|
strokeColor: "#FF473E", //描边颜色
|
|
|
|
|
strokeWidth: 2, //描边宽度
|
|
|
|
|
zIndex: 1, //层级
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
}).filter(polyline => polyline !== null); // 过滤掉无效的折线数据
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-13 18:03:20 +08:00
|
|
|
|
},
|
|
|
|
|
getParking() {
|
|
|
|
|
// 发送请求获取数据
|
|
|
|
|
this.$u.get('/app/parking/list').then((res) => {
|
|
|
|
|
if (res.code === 200) {
|
|
|
|
|
// 处理接口返回的数据
|
2024-06-20 18:08:54 +08:00
|
|
|
|
const type1Data = [];
|
|
|
|
|
const type2Data = [];
|
|
|
|
|
const type3Data = [];
|
|
|
|
|
|
|
|
|
|
res.rows.forEach(row => {
|
|
|
|
|
if (row.type == 1) {
|
|
|
|
|
type1Data.push(row);
|
|
|
|
|
} else if (row.type == 2) {
|
|
|
|
|
type2Data.push(row);
|
|
|
|
|
} else if (row.type == 3) {
|
|
|
|
|
type3Data.push(row);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
const validBoundaries = type1Data.map(row => row.boundaryStr).filter(boundary =>
|
|
|
|
|
typeof boundary === 'string' && boundary.trim() !== '');
|
|
|
|
|
const polylines = this.convertBoundaryToPolylines(validBoundaries, 1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const validBoundaries1 = type2Data.map(row => row.boundaryStr).filter(boundary =>
|
|
|
|
|
typeof boundary === 'string' && boundary.trim() !== '');
|
|
|
|
|
const polylines1 = this.convertBoundaryToPolylines(validBoundaries1, 2);
|
|
|
|
|
|
|
|
|
|
const validBoundaries2 = type3Data.map(row => row.boundaryStr).filter(boundary =>
|
2024-05-13 18:03:20 +08:00
|
|
|
|
typeof boundary === 'string' && boundary.trim() !== '');
|
2024-06-20 18:08:54 +08:00
|
|
|
|
const polylines2 = this.convertBoundaryToPolylines(validBoundaries2, 3);
|
2024-05-13 18:03:20 +08:00
|
|
|
|
// 将处理后的数据添加到 this.polyline 中
|
2024-06-20 18:08:54 +08:00
|
|
|
|
this.polygons = this.polygons.concat(polylines2);
|
|
|
|
|
this.polygons = this.polygons.concat(polylines1);
|
2024-05-15 18:02:17 +08:00
|
|
|
|
this.polygons = this.polygons.concat(polylines);
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-13 18:03:20 +08:00
|
|
|
|
// console.log(this.polyline);
|
|
|
|
|
res.rows.forEach(item => {
|
2024-06-21 18:03:21 +08:00
|
|
|
|
if(item.type==1){
|
|
|
|
|
this.markers.push({
|
|
|
|
|
id: parseFloat(item.parkingId),
|
|
|
|
|
latitude: parseFloat(item.latitude),
|
|
|
|
|
longitude: parseFloat(item.longitude),
|
|
|
|
|
width: 20,
|
|
|
|
|
height: 40,
|
|
|
|
|
iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/u9yz0bKCWKyev0JYpTne',
|
|
|
|
|
callout: {
|
|
|
|
|
content: item.parkingName, // 修改为你想要显示的文字内容
|
|
|
|
|
color: '#ffffff', // 修改为文字颜色
|
|
|
|
|
fontSize: 14, // 修改为文字大小
|
|
|
|
|
borderRadius: 10, // 修改为气泡圆角大小
|
|
|
|
|
bgColor: '#3A7EDB', // 修改为气泡背景颜色
|
|
|
|
|
padding: 6, // 修改为气泡内边距
|
|
|
|
|
display: 'ALWAYS' // 修改为气泡的显示策略
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}else if(item.type==2){
|
|
|
|
|
this.markers.push({
|
|
|
|
|
id: parseFloat(item.parkingId),
|
|
|
|
|
latitude: parseFloat(item.latitude),
|
|
|
|
|
longitude: parseFloat(item.longitude),
|
|
|
|
|
width: 20,
|
|
|
|
|
height: 40,
|
|
|
|
|
iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/u9yz0bKCWKyev0JYpTne',
|
|
|
|
|
callout: {
|
|
|
|
|
content: item.parkingName, // 修改为你想要显示的文字内容
|
|
|
|
|
color: '#ffffff', // 修改为文字颜色
|
|
|
|
|
fontSize: 14, // 修改为文字大小
|
|
|
|
|
borderRadius: 10, // 修改为气泡圆角大小
|
|
|
|
|
bgColor: '#FFC107', // 修改为气泡背景颜色
|
|
|
|
|
padding: 6, // 修改为气泡内边距
|
|
|
|
|
display: 'ALWAYS' // 修改为气泡的显示策略
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}else if(item.type==3){
|
|
|
|
|
this.markers.push({
|
|
|
|
|
id: parseFloat(item.parkingId),
|
|
|
|
|
latitude: parseFloat(item.latitude),
|
|
|
|
|
longitude: parseFloat(item.longitude),
|
|
|
|
|
width: 20,
|
|
|
|
|
height: 40,
|
|
|
|
|
iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/u9yz0bKCWKyev0JYpTne',
|
|
|
|
|
callout: {
|
|
|
|
|
content: item.parkingName, // 修改为你想要显示的文字内容
|
|
|
|
|
color: '#ffffff', // 修改为文字颜色
|
|
|
|
|
fontSize: 14, // 修改为文字大小
|
|
|
|
|
borderRadius: 10, // 修改为气泡圆角大小
|
|
|
|
|
bgColor: '#FF473E', // 修改为气泡背景颜色
|
|
|
|
|
padding: 6, // 修改为气泡内边距
|
|
|
|
|
display: 'ALWAYS' // 修改为气泡的显示策略
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
2024-05-13 18:03:20 +08:00
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}).catch(error => {
|
|
|
|
|
console.error("Error fetching parking data:", error);
|
|
|
|
|
});
|
|
|
|
|
},
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-13 18:03:20 +08:00
|
|
|
|
getArea() {
|
|
|
|
|
// 发送请求获取数据
|
|
|
|
|
this.$u.get('/app/area/list').then((res) => {
|
|
|
|
|
if (res.code === 200) {
|
|
|
|
|
// 处理接口返回的数据,将边界数据转换为地图组件需要的折线结构
|
|
|
|
|
const polylines = res.rows
|
|
|
|
|
.filter(area => area.boundaryStr) // 过滤掉boundary为空的数据
|
|
|
|
|
.map(area => this.convertBoundaryToPolyline(area.boundaryStr));
|
|
|
|
|
// 更新折线数据
|
2024-05-15 18:02:17 +08:00
|
|
|
|
this.polygons = polylines;
|
2024-06-20 18:08:54 +08:00
|
|
|
|
this.getParking()
|
2024-05-13 18:03:20 +08:00
|
|
|
|
// console.log(this.polyline);
|
|
|
|
|
}
|
|
|
|
|
}).catch(error => {
|
|
|
|
|
console.error("Error fetching area data:", error);
|
|
|
|
|
});
|
|
|
|
|
},
|
2024-06-20 18:08:54 +08:00
|
|
|
|
status() {
|
|
|
|
|
if (this.orderInfo != '') {
|
|
|
|
|
if (this.orderInfo.status == 0) {
|
2024-05-13 18:03:20 +08:00
|
|
|
|
return '预约中'
|
2024-06-20 18:08:54 +08:00
|
|
|
|
} else if (this.orderInfo.status == 1) {
|
2024-05-13 18:03:20 +08:00
|
|
|
|
return '取消预约'
|
2024-06-20 18:08:54 +08:00
|
|
|
|
} else if (this.orderInfo.status == 2) {
|
2024-06-24 17:59:49 +08:00
|
|
|
|
return '骑行中'
|
2024-06-20 18:08:54 +08:00
|
|
|
|
} else if (this.orderInfo.status == 3) {
|
2024-05-13 18:03:20 +08:00
|
|
|
|
return '骑行结束'
|
2024-06-20 18:08:54 +08:00
|
|
|
|
} else if (this.orderInfo.status == 4) {
|
2024-05-13 18:03:20 +08:00
|
|
|
|
return '订单完成'
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-13 18:03:20 +08:00
|
|
|
|
},
|
2024-06-20 18:08:54 +08:00
|
|
|
|
getOrderDetail() {
|
|
|
|
|
this.$u.get('/appVerify/order/' + this.orderId).then((res) => {
|
2024-05-13 18:03:20 +08:00
|
|
|
|
if (res.code === 200) {
|
|
|
|
|
// 处理接口返回的数据,将边界数据转换为地图组件需要的折线结构
|
2024-06-20 18:08:54 +08:00
|
|
|
|
this.orderInfo = res.data
|
|
|
|
|
this.loading = true
|
|
|
|
|
this.latitude = parseFloat(this.orderInfo.latitude)
|
|
|
|
|
this.longitude = parseFloat(this.orderInfo.longitude)
|
|
|
|
|
this.polyline[0].points = JSON.parse(res.data.tripRouteStr).map(coord => ({
|
|
|
|
|
latitude: coord[1],
|
|
|
|
|
longitude: coord[0]
|
|
|
|
|
}));
|
|
|
|
|
let abb;
|
|
|
|
|
try {
|
|
|
|
|
abb = JSON.parse(res.data.tripRouteStr);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error("Error parsing tripRouteStr:", error);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (abb.length > 2) {
|
|
|
|
|
this.latitude = parseFloat(abb[0][1]);
|
|
|
|
|
this.longitude = parseFloat(abb[0][0]);
|
|
|
|
|
this.polyline[0].points = abb.map(coord => ({
|
|
|
|
|
latitude: coord[1],
|
|
|
|
|
longitude: coord[0]
|
|
|
|
|
}));
|
|
|
|
|
this.markers.push({
|
|
|
|
|
id: 0,
|
|
|
|
|
latitude: abb[0][1],
|
|
|
|
|
longitude: abb[0][0],
|
|
|
|
|
width: 25,
|
|
|
|
|
height: 38,
|
|
|
|
|
iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/u06paUGiHLvL08Pw7BGr'
|
|
|
|
|
}, {
|
|
|
|
|
id: 1,
|
|
|
|
|
latitude: abb[abb.length - 1][1],
|
|
|
|
|
longitude: abb[abb.length - 1][0],
|
|
|
|
|
width: 25,
|
|
|
|
|
height: 38,
|
|
|
|
|
iconPath: 'https://lxnapi.ccttiot.com/bike/img/static/uwpAj9vYtPRmhtTOtflx'
|
|
|
|
|
});
|
|
|
|
|
}
|
2024-05-13 18:03:20 +08:00
|
|
|
|
}
|
2024-06-20 18:08:54 +08:00
|
|
|
|
this.getArea()
|
|
|
|
|
|
2024-05-15 18:02:17 +08:00
|
|
|
|
// console.log(points,'');
|
|
|
|
|
// this.polyline[0].points=points
|
2024-05-13 18:03:20 +08:00
|
|
|
|
}).catch(error => {
|
|
|
|
|
console.error("Error fetching area data:", error);
|
|
|
|
|
});
|
|
|
|
|
}
|
2024-05-09 17:05:51 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="scss">
|
|
|
|
|
page {
|
2024-05-15 18:02:17 +08:00
|
|
|
|
overflow-x: hidden;
|
2024-05-09 17:05:51 +08:00
|
|
|
|
background-color: #F3F3F3;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.page {
|
|
|
|
|
padding-bottom: 200rpx;
|
|
|
|
|
width: 750rpx;
|
2024-06-21 18:03:21 +08:00
|
|
|
|
.tip_box {
|
|
|
|
|
position: fixed;
|
|
|
|
|
left: 72rpx;
|
|
|
|
|
top: 628rpx;
|
|
|
|
|
width: 610rpx;
|
|
|
|
|
// height: 282rpx;
|
|
|
|
|
background: #FFFFFF;
|
|
|
|
|
border-radius: 30rpx 30rpx 30rpx 30rpx;
|
|
|
|
|
z-index: 110;
|
|
|
|
|
padding-bottom: 100rpx;
|
|
|
|
|
|
|
|
|
|
.top {
|
|
|
|
|
padding: 52rpx 38rpx 42rpx 36rpx;
|
|
|
|
|
|
|
|
|
|
.ipt_box {
|
|
|
|
|
margin-top: 22rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-wrap: nowrap;
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
|
|
.text {
|
|
|
|
|
width: 96rpx;
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
font-size: 32rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.ipt {
|
|
|
|
|
padding: 10rpx 18rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
margin-left: 26rpx;
|
|
|
|
|
width: 420rpx;
|
|
|
|
|
height: 64rpx;
|
|
|
|
|
border-radius: 0rpx 0rpx 0rpx 0rpx;
|
|
|
|
|
border: 2rpx solid #979797;
|
|
|
|
|
|
|
|
|
|
.input {
|
|
|
|
|
width: 80%;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.tip {
|
|
|
|
|
width: 100%;
|
|
|
|
|
text-align: center;
|
|
|
|
|
font-weight: 700;
|
|
|
|
|
font-size: 32rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.txt {
|
|
|
|
|
margin-top: 32rpx;
|
|
|
|
|
width: 100%;
|
|
|
|
|
text-align: center;
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
font-size: 32rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.bot {
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
|
|
|
|
width: 610rpx;
|
|
|
|
|
// border-top: 2rpx solid #D8D8D8;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-wrap: nowrap;
|
|
|
|
|
// height: 100%;
|
|
|
|
|
bottom: -20rpx;
|
|
|
|
|
|
|
|
|
|
.bot_left {
|
|
|
|
|
border-radius: 0rpx 0rpx 0rpx 30rpx;
|
|
|
|
|
width: 50%;
|
|
|
|
|
height: 86rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
font-size: 32rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
background: #EEEEEE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.bot_right {
|
|
|
|
|
border-radius: 0rpx 0rpx 30rpx 0rpx;
|
|
|
|
|
width: 50%;
|
|
|
|
|
height: 86rpx;
|
|
|
|
|
background: #4C97E7;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
color: #FFFFFF;
|
|
|
|
|
// border-left: 2rpx solid #D8D8D8;
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
font-size: 32rpx;
|
|
|
|
|
// color: #4C97E7;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2024-05-09 17:05:51 +08:00
|
|
|
|
.map {
|
|
|
|
|
width: 750rpx;
|
|
|
|
|
height: 752rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.info_card {
|
|
|
|
|
background: #FFFFFF;
|
|
|
|
|
|
|
|
|
|
.info_tit {
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-wrap: nowrap;
|
|
|
|
|
padding: 22rpx 28rpx;
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
font-size: 32rpx;
|
|
|
|
|
color: #3D3D3D;
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
|
|
|
|
.money {
|
2024-05-09 17:05:51 +08:00
|
|
|
|
margin-left: auto;
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
font-size: 32rpx;
|
|
|
|
|
color: #4C97E7;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.lines {
|
|
|
|
|
width: 750rpx;
|
|
|
|
|
height: 2rpx;
|
|
|
|
|
border: 2rpx solid #ccc;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.cont {
|
|
|
|
|
padding: 26rpx 28rpx;
|
|
|
|
|
|
|
|
|
|
.info_li {
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-09 17:05:51 +08:00
|
|
|
|
display: flex;
|
|
|
|
|
flex-wrap: nowrap;
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
color: #808080;
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
|
|
|
|
.text {
|
2024-05-15 18:02:17 +08:00
|
|
|
|
width: 70%;
|
|
|
|
|
white-space: nowrap;
|
|
|
|
|
/* 禁止换行 */
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
/* 超出部分隐藏 */
|
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
|
}
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-09 17:05:51 +08:00
|
|
|
|
span {
|
|
|
|
|
color: #3D3D3D;
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-09 17:05:51 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
line-height: 48rpx;
|
|
|
|
|
|
|
|
|
|
.half_infoli {
|
|
|
|
|
width: 50%;
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
color: #808080;
|
|
|
|
|
|
2024-05-15 18:02:17 +08:00
|
|
|
|
span {
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-15 18:02:17 +08:00
|
|
|
|
.info_lis {
|
2024-06-24 17:59:49 +08:00
|
|
|
|
width: 90%;
|
2024-05-15 18:02:17 +08:00
|
|
|
|
display: inline-block;
|
|
|
|
|
// flex-wrap: nowrap;
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
color: #808080;
|
2024-06-24 17:59:49 +08:00
|
|
|
|
white-space: nowrap;
|
|
|
|
|
/* 禁止换行 */
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
/* 超出部分隐藏 */
|
|
|
|
|
text-overflow: ellipsis;
|
2024-06-20 18:08:54 +08:00
|
|
|
|
.text {
|
2024-05-15 18:02:17 +08:00
|
|
|
|
display: inline;
|
|
|
|
|
// width: 70%;
|
|
|
|
|
// white-space: nowrap;
|
|
|
|
|
// /* 禁止换行 */
|
|
|
|
|
// overflow: hidden;
|
|
|
|
|
// /* 超出部分隐藏 */
|
|
|
|
|
// text-overflow: ellipsis;
|
|
|
|
|
}
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-15 18:02:17 +08:00
|
|
|
|
span {
|
|
|
|
|
color: #3D3D3D;
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-15 18:02:17 +08:00
|
|
|
|
}
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-15 18:02:17 +08:00
|
|
|
|
line-height: 48rpx;
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-15 18:02:17 +08:00
|
|
|
|
.half_infoli {
|
|
|
|
|
width: 50%;
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
color: #808080;
|
2024-06-20 18:08:54 +08:00
|
|
|
|
|
2024-05-09 17:05:51 +08:00
|
|
|
|
span {
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.bot {
|
|
|
|
|
position: fixed;
|
|
|
|
|
bottom: 0;
|
|
|
|
|
width: 750rpx;
|
|
|
|
|
height: 184rpx;
|
|
|
|
|
background: #FFFFFF;
|
|
|
|
|
box-shadow: 0rpx 10rpx 64rpx 0rpx rgba(0, 0, 0, 0.08), 0rpx 10rpx 64rpx 0rpx rgba(0, 0, 0, 0.08);
|
|
|
|
|
border-radius: 0rpx 0rpx 0rpx 0rpx;
|
|
|
|
|
|
|
|
|
|
.btn {
|
|
|
|
|
margin: 46rpx auto;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
width: 680rpx;
|
|
|
|
|
height: 90rpx;
|
|
|
|
|
background: #4C97E7;
|
|
|
|
|
border-radius: 54rpx 54rpx 54rpx 54rpx;
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
font-size: 40rpx;
|
|
|
|
|
color: #FFFFFF;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|