20 Commits 9b1bfff8dc ... 5988f38f22

Author SHA1 Message Date
  pingan\平安 5988f38f22 bugfix_dly 2 days ago
  郭宇琦 5dfcc172e6 bug修复 2 days ago
  郭宇琦 17890ccab0 Merge branch 'dly_test' into gyq_test 2 days ago
  xxq 60107d8790 0403_xxq 2 days ago
  xxq 288fbcc30a 0403 2 days ago
  郭宇琦 4ccb4f0e37 Merge branch 'gyq_test' of http://git.bms16.com/liuwei/zx_flk_app into gyq_test 2 days ago
  郭宇琦 37d56d0bb4 bug修复 2 days ago
  liuwei 1b4d05a40c Merge branch 'lw_test' into gyq_test 2 days ago
  liuwei a3ca7fcb00 Merge branch 'lw_test' of http://git.bms16.com/liuwei/zx_flk_app into lw_test 2 days ago
  liuwei 7e76e10980 Merge branch 'gyq_test' into lw_test+首页禁用 2 days ago
  郭宇琦 a5f2ac5a4e bug修改 2 days ago
  郭宇琦 62072febc0 bug修改 2 days ago
  郭宇琦 678d6ec0e5 Merge branch 'gyq_test' of http://git.bms16.com/liuwei/zx_flk_app into gyq_test 2 days ago
  郭宇琦 68ea2f4fa8 bug修改 2 days ago
  xiongyi 372f079656 1 2 days ago
  郭宇琦 8728d5639a Merge branch 'gyq_test' of http://git.bms16.com/liuwei/zx_flk_app into gyq_test 2 days ago
  郭宇琦 5b1bde677d bug 2 days ago
  pingan\平安 23694422ee bugfix_2025年4月2日19:48:28 2 days ago
  pingan\平安 d3d9b30b0c Merge branch 'lw_test' of http://git.bms16.com/liuwei/zx_flk_app into lw_test 2 days ago
  pingan\平安 86ecb5edf7 bugfix_dly 2 days ago

+ 1 - 1
.hbuilderx/launch.json

@@ -20,7 +20,7 @@
         },
         {
             "openVueDevtools" : false,
-            "playground" : "standard",
+            "playground" : "custom",
             "type" : "uni-app:app-android"
         },
         {

+ 1 - 0
App.vue

@@ -75,6 +75,7 @@
 			nearLockInfo:{},//蓝牙配对信息
 			nearLockCheck:false,//是否已经蓝牙配对成功
 			sensitivityType:0,//车辆灵敏度存储
+			isOverdueShow:false,//是否逾期
 		}
 	};
 </script>

+ 8 - 8
common/common.js

@@ -150,7 +150,7 @@ function alert(title, content, successCallBack) {
 
 function loading() {
 	uni.showLoading({
-		title: '正在加载数据 ...',
+		title: i18n.t('正在加载数据')+'...',
 		mask: true
 	});
 }
@@ -160,7 +160,7 @@ function loading() {
 
 function successToast(title, duration) {
 	uni.showToast({
-		title: title || '成功',
+		title: title || i18n.t('成功'),
 		icon: 'success',
 		duration: duration || 1500,
 		mask: true
@@ -172,7 +172,7 @@ function successToast(title, duration) {
 
 function simpleToast(title, duration) {
 	uni.showToast({
-		title: title || '成功',
+		title: title || i18n.t('成功'),
 		icon: 'none',
 		duration: duration || 1500
 	});
@@ -215,8 +215,8 @@ function uploadImg(callback) {
 						callback(rtDataObj.data[0].url);
 					} else {
 						uni.showModal({
-							title: '错误',
-							content: '上传图片错误[' + rtDataObj.message + ']'
+							title: i18n.t('错误'),
+							content: i18n.t('上传图片错误')+'[' + rtDataObj.message + ']'
 						});
 					}
 				}
@@ -256,7 +256,7 @@ function upLoadImgQiNiu(callback, type = ['album', 'camera']) {
 							callback(config.QINIU_SITE + key);
 						},
 						fail: function(res) {
-							simpleToast('上传失败');
+							simpleToast(i18n.t('上传失败'));
 							uni.hideLoading();
 						}
 					});
@@ -307,7 +307,7 @@ function upLoadImgQiNiu2(callback, filePath) {
 					callback(config.QINIU_SITE + key);
 				},
 				fail: function(res) {
-					simpleToast('上传失败');
+					simpleToast(i18n.t('上传失败'));
 					uni.hideLoading();
 				}
 			});
@@ -845,7 +845,7 @@ async function callPhone(phone) {
 	// const text=that.$t()+phone+'?'
 	let res = await uni.showModal({
 		content: text,
-		confirmText: '确定',
+		confirmText: i18n.t('确定'),
 	})
 	if (res[1].confirm) {
 		uni.makePhoneCall({

+ 4 - 2
common/storage.js

@@ -105,12 +105,14 @@ const activeTabsNo = [
 		disableUrl:'https://qiniu.bms16.com/FsEZK73sizxfudIUbEW-gGpqzfAZ'
 	},
 ]
-const toBeSelectTabsNo = [{
+const toBeSelectTabsNo = [
+	{
 		name:i18n.t('胎压'),
 		type:'tirePressure',
 		iconUrl: `${QINIU_URL}FmbcjmvoB4J3CT1hrbjNX4kxv9Zq`,
 		disableUrl:'https://qiniu.bms16.com/Fn9W4gHx3IEGKliBB-y0Kpydcrxj'
-	},{
+	},
+	{
 		name: i18n.t('电池信息'),
 		type:'batteryInfo',
 		url:'/pages/batteryDetail/batteryDetail',

+ 1 - 1
component/carPlan/carPlan.vue

@@ -7,7 +7,7 @@
 					</view>
 				<view class="car-model-detail flex-row">
 					<!-- <priceTool :price="58" :font_size="40"/> -->
-					<allPrice :amount="((priceAll || 0)/100)"/>
+					<allPrice :amount="((price || 0)/100)"/>
 					<view v-if="params.overdueData && params.overdueData.money" style="align-items: baseline;" class="flex-row">
 						<text>逾期金额:</text>
 						<allPrice  :amount="(params.overdueData.money || 0/100)"/>

+ 1 - 1
component/payTypeModel/payTypeModel.vue

@@ -42,7 +42,7 @@
 				</view> -->
 			</view>
 			<view class="over-btn-view">
-				<view class="over-btn flex-row" @tap="toPayOrFreeExchange">立即支付</view>
+				<view class="over-btn flex-row" @tap="toPayOrFreeExchange">{{$t('立即支付')}}</view>
 			</view>
 		</view>
 	</view>

+ 12 - 10
component/scanCabBtn/scanBtn.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="container-view">
 		<view style="height: 160rpx;"></view>
-		<view @tap="sacnBtn" class="refund-btn"><text>扫码换电</text></view>
+		<view @tap="sacnBtn" class="refund-btn"><text>换电</text></view>
 		<view v-if="isModelCenter" class="model_center">
 			<image class="pack_model" src="https://zxappfile.bms16.com/zx_client/buy_pack_model.png" />
 			<view v-if="packType==0" class="pack_model_text">您还未购买换电套餐,需先完成购买后再扫码领取电池</view>
@@ -246,16 +246,17 @@
 				uni.showLoading({
 					title:' 加载中...'
 				})
-				uni.hideLoading()
-				let res = await uni.scanCode({
-					onlyFromCamera: true,
-					scanType: ['qrCode'],
-				});
+				this.loadNowCabinetDetail(this.dev_id)
+				// return
+				// let res = await uni.scanCode({
+				// 	onlyFromCamera: true,
+				// 	scanType: ['qrCode'],
+				// });
 				
-				var cabinet_dev_id = '';
-				if(res[0]) return
-				res = res[1]
-				this.loadGeneralQRData(res)
+				// var cabinet_dev_id = '';
+				// if(res[0]) return
+				// res = res[1]
+				// this.loadGeneralQRData(res)
 				
 				// if ('path' in res && res.path) {
 				// 	if (res.path.split('%26devid%3D').length > 1) {
@@ -427,6 +428,7 @@
 					pay_type:0,
 					battery_sn_list,
 				})
+				uni.hideLoading()
 				if(data.code == 200){
 					uni.navigateTo({
 						url:`/pages/openCabinet/openCabinet?order_sn=${data.data.order_sn}`

+ 7 - 2
components/basic-drag/index.vue

@@ -11,7 +11,7 @@
 					<image v-if="item.isLock" :src="icons.lock" class="right-icon" />
 					<image v-if="!item.isLock && isActiveEdit" @click="deleteTab(item)" :src="icons.edit"
 						class="right-icon" />
-					<image @click="clickTap(item)" :src="item.iconUrl" class="icon" />
+					<image @click="clickTap(item)" :src="isOverdueShow?item.disableUrl:item.iconUrl" class="icon" />
 					<view class="name">{{ item.name }}</view>
 				</view>
 			</view>
@@ -74,7 +74,11 @@
 			longpress: {
 				type: Boolean,
 				default: true
-			}
+			},
+			isOverdueShow: {
+				type: Boolean,
+				default: false
+			},
 		},
 		data() {
 			const MAX_TAB_LEN = 4
@@ -132,6 +136,7 @@
 		methods: {
 			
 			clickTap(item){
+				if(this.isOverdueShow) return
 				this.$emit('changClick',item)
 			},
 			getMovableItem(tab) {

+ 5 - 3
locale/en.json

@@ -295,7 +295,7 @@
 	"当前选择": "CurSel",
 	"租赁设备": "Leased Device",
 	"绑定设备": "Bind Device",
-	"是否确定": "Are you sure?",
+	"是否确定": "Are you sure? ",
 	"清空当前设备蓝牙相关": "Clear current device Bluetooth data",
 	"切换成功!": "Switch successful!",
 	"由于": "Due to",
@@ -478,6 +478,7 @@
 	"确认修改": "Confirm modification",
 	"是否确认修改密码?": "Confirm password change?",
 	"修改成功": "Change successful",
+	"请重新登录": "Please login again",
 	"忘记密码": "Forgot password",
 	"请输入要重置的邮箱账号": "Enter the email address to reset password",
 	"重置密码": "Reset password",
@@ -795,7 +796,7 @@
 	"车辆类型": "Vehicle Type",
 	"租借类型": "Rental Type",
 	"地图控件": "Map Control",
-	"请输入搜索内容": "Please enter search content",
+	"请输入搜索内容": "Enter search content",
 	"清空": "Clear",
 	"搜索": "Search",
 	"门店": "Shop",
@@ -847,5 +848,6 @@
 	"完成弹窗": "Completion Popup",
 	"祝您骑行愉快": "Enjoy Your Ride!",
 	"车辆已被租售!": "Vehicle Rented or Sold!",
-	"全部": "All"
+	"全部": "All",
+	"立即支付": "Pay Now"
 }

+ 3 - 1
locale/zh.json

@@ -478,6 +478,7 @@
 	"确认修改": "确认修改",
 	"是否确认修改密码?": "是否确认修改密码?",
 	"修改成功": "修改成功",
+	"请重新登录": "请重新登录",
 	"忘记密码": "忘记密码",
 	"请输入要重置的邮箱账号": "请输入要重置的邮箱账号",
 	"重置密码": "重置密码",
@@ -847,5 +848,6 @@
 	"完成弹窗": "完成弹窗",
 	"祝您骑行愉快": "祝您骑行愉快",
 	"车辆已被租售!": "车辆已被租售!",
-	"全部": "全部"
+	"全部": "全部",
+	"立即支付": "立即支付"
 }

+ 1 - 1
mixin/index.js

@@ -34,7 +34,7 @@ export default {
 		   }
 	  },
 		tapOpenControl(e){
-			const _carOnline= uni.getStorageSync('car_info').online == 0 //在线
+			const _carOnline= uni.getStorageSync('car_info').online == 1 //在线
 			console.log('_carOnline',this._carOnline);
 			const {name,type}=e
 			this.setData({

+ 3 - 3
output3.json

@@ -280,7 +280,7 @@
   "开机": "Slide to Turn On",
   "开启车辆": "Start Vehicle",
   "关机": "Shutdown",
-  "您确认": "Are you sure?",
+  "您确认": "Are you sure? ",
   "吗": "?",
   "处理修改之后的数据": "Process modified data",
   "输入注册账号的密码即可解绑": "Enter the registration account password to unbind",
@@ -295,7 +295,7 @@
   "当前选择": "Current Selection",
   "租赁设备": "Leased Device",
   "绑定设备": "Bind Device",
-  "是否确定": "Are you sure?",
+  "是否确定": "Are you sure? ",
   "清空当前设备蓝牙相关": "Clear current device Bluetooth data",
   "切换成功!": "Switch successful!",
   "由于": "Due to",
@@ -794,7 +794,7 @@
   "车辆类型": "Vehicle Type",
   "租借类型": "Rental Type",
   "地图控件": "Map Control",
-  "请输入搜索内容": "Please enter search content",
+  "请输入搜索内容": "Enter search content",
   "清空": "Clear",
   "搜索": "Search",
   "门店": "Pickup Store",

+ 5 - 1
pages/addUser/addUser.vue

@@ -3,7 +3,7 @@
 		<navBar :name="$t('添加成员')" left="0"/>
 		<view class="flex-row email-input-view">
 			<input class="email-input-style" type="email" v-model="email" :placeholder="$t('请输入被邀人邮箱号')"  placeholder-style="font-size: 32rpx; font-weight: 400; color: #BAC1D0;">
-			<img @click="clearInput" class="clear-btn" src="https://qiniu.bms16.com/Fjpf2YnHUK1_CFf20kKRvjX9YdC3" alt="">
+			<img @tap="closeEmail" class="clear-btn" src="https://qiniu.bms16.com/Fjpf2YnHUK1_CFf20kKRvjX9YdC3" alt="">
 		</view>
 		<view @click="nextFn" class="next-btn" :class="{'next-btn-i':!isEmailFn(email)}">{{ $t('下一步') }}</view>
 	</view>
@@ -27,6 +27,9 @@
 		onLoad: function(options) {
 		},
 		methods: {
+			closeEmail(){
+				this.email = ""
+			},
 			isEmailFn(str){
 				return isEmail(str)
 			},
@@ -94,5 +97,6 @@
 	height: 40rpx;
 	right: 36rpx;
 	top: 28rpx;
+	z-index: 9;
 }
 </style>

+ 5 - 0
pages/batteryPackage/batteryPackage.css

@@ -1,5 +1,10 @@
 .battery-package-main{
 	padding: 32rpx;
+	width: 100%;
+    min-height: 100vh;
+    background: linear-gradient(180deg, #CFD1DE 0%, #F1F3F4 100%), #F1F3F4;
+    background-size: 100% 528rpx;
+    background-repeat: no-repeat;
 }
 .package-icon-view{
 	margin-bottom: 40rpx;

+ 2 - 2
pages/batteryPackage/batteryPackage.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="battery-package-main">
-		<navBar bgColor="#fff" :name="$t('换电套餐')" />
+		<navigation :type="true" :name="$t('换电套餐')" />
 		
 		<view class="package-icon-view flex-row">
 			<img src="https://qiniu.bms16.com/FqF7erLOB8OutmFnre7-mbTkwpZr" alt="">
@@ -47,7 +47,7 @@
 		<view style="height: 200rpx;">
 			
 		</view>
-		<view v-if="form.package_code" @click="isShowToBuy = true"  class="pay-btn">{{ $t('立即购买') }}</view>
+		<view v-if="form.package_code" @click="isShowToBuy = true"  class="pay-btn">{{ $t('需到店支付') }}</view>
 		<payTypeModel @closeShow='isShowToBuy = false' :free_price='form.price' :isShowToBuy='isShowToBuy' @payToOrder='submit'></payTypeModel>
 	</view>
 </template>

+ 26 - 2
pages/carDetail/carDetail.vue

@@ -131,7 +131,6 @@
 				this.locationFn()
 			}
 			if (options.shop_type) {
-				console.log(options.shop_type,99999999)
 				this.shop_type = options.shop_type
 				const d = {
 					hire_duration_unit:options.shop_type,
@@ -161,7 +160,22 @@
 						
 						// me.tapSelectType(resp.data.data.rental_setting[0])
 						resp.data.data.distance = common.formatDistance(Number(resp.data.data.distance))
-						resp.data.data.desc = this.$htmlData(resp.data.data.desc)
+						
+						
+						const imgRegex = /<img([^>]*)>/gi;
+						
+						// 替换函数,设置 width="100%" 和 height="auto"
+						const updatedRichText = resp.data.data.model_desc.replace(imgRegex, (match) => {
+						  // 使用正则表达式移除已有的 width 和 height 属性
+						  const cleanedMatch = match.replace(/(width|height)="[^"]*"/gi, '');
+						  
+						  // 添加新的 width="100%" 和 height="auto"
+						  return cleanedMatch.replace('<img', '<img width="100%" height="auto"');
+						});
+						
+						
+						resp.data.data.model_desc = updatedRichText
+						
 						me.setData({
 							car_detail: resp.data.data,
 							// price: ((resp.data.data.rental_setting[0]?.hire_price || 0) / 100).toFixed(2)
@@ -227,7 +241,17 @@
 					success: function(res) {},
 				})
 			},
+			loadIsLogin() {
+				uni.navigateTo({
+					url: '/pages/loginRegister/login',
+				})
+			},
 			useCarBtn() {
+				const user_token = storage.getUserToken()
+				if (!user_token) {
+					this.loadIsLogin()
+					return
+				}
 				const pData = {
 					...this.car_detail,
 					price: this.price

+ 6 - 2
pages/carFunctionSet/more.vue

@@ -15,7 +15,7 @@
           <view :class="['name', getMovableItem(tab) && 'shake']">{{ tab.name }}</view>
         </view>
       </draggable> -->
-			<basic-drag @changClick='changClick' @end='endFn'   @toggleEdit='toggleEdit' v-model="activeTabs" :width="700" :column="4"
+			<basic-drag @changClick='changClick' @end='endFn'   @toggleEdit='toggleEdit' :isOverdueShow='isOverdueShow' v-model="activeTabs" :width="700" :column="4"
 				itemKey="name"></basic-drag>
 
 		</view>
@@ -78,7 +78,8 @@
 				activeTabs: [],
 				toBeSelectTabs: [],
 				car_info :{},
-				showUnBind:true
+				showUnBind:true,
+				isOverdueShow:false
 			}
 		},
 		computed: {
@@ -92,6 +93,9 @@
 		onLoad(){
 			this.car_info =  uni.getStorageSync('car_info') || {};
 			this.showUnBind = !!this.car_info.sold_time
+			const app=getApp()
+			this.isOverdueShow=app.globalData.isOverdueShow
+			console.log(this.isOverdueShow,'this.isOverdueShow');
 		},
 		created() {
 			this.initializeTabs()

+ 8 - 3
pages/index/components/control/control.vue

@@ -2,7 +2,7 @@
     <view class="container-view-contril">
 		<scroll-view class="scroll-view flex-row" scroll-x="true">
 			<view @tap="tapOpen" v-for="(item,index) of contrilList" :key="index" :data-item="item" class="contril-item flex-row">
-				<img class="contril-item-img"  :src="item.isTurnOn==0?item.offUrl:item.iconUrl" alt="">
+				<img class="contril-item-img"  :src="isOverdueShow?item.disableUrl:(item.isTurnOn==0?item.offUrl:item.iconUrl)" alt="">
 				<text >{{item.name}}</text>
 			</view>
 			<view class="contril-item flex-row" @tap="toMoreFunctionSet">
@@ -101,6 +101,10 @@ export default {
 			type: Boolean,
 			default: false
 		},
+		isOverdueShow: {
+			type: Boolean,
+			default: false
+		}
 	},
 
     data() {
@@ -161,8 +165,9 @@ export default {
 			// setTimeout(() => apiCall(3), 200);
 		},
 		tapOpen(e){
-				const item = e.currentTarget.dataset.item;
-				this.changClick(item)
+			if(this.isOverdueShow) return
+			const item = e.currentTarget.dataset.item;
+			this.changClick(item)
 		},
 		toMoreFunctionSet() {
 			uni.navigateTo({

+ 1 - 1
pages/index/index.css

@@ -163,7 +163,7 @@
 	border-image: linear-gradient(90deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0.1)) 3 3;
 	height: 100rpx;
 	align-items: center;
-	margin: 40rpx 20rpx;
+	margin: 40rpx 24rpx;
 	padding: 0 24rpx;
 }
 .overdue-view-text{

+ 42 - 28
pages/index/index.vue

@@ -6,27 +6,37 @@
 		<view v-if="isConnected">
 			<block v-if="isLogin && car_info.car_sn">
 				<view class="container-view">
-					<!-- #ifdef MP-WEIXIN -->
-					<view :style="{height: `${statusBarHeight + 30}px`}"></view>
-					<!-- #endif -->
-					<!-- #ifdef APP -->
-					<view :style="{height: `${statusBarHeight}px`}"></view>
-					<!-- #endif -->
-					<!-- <navBar type="index" /> -->
-					<view class="flex-row flex-between align-center padding_about_40">
-						<view class="car-name-view" @tap="navSwitchCar">
-							<text class="text" style="margin-right: 10rpx;">{{car_info.car_name}}</text>
-							<img src="https://qiniu.bms16.com/FoSXDpVGvbdmwbX3CMUBvR7X4IzI"
-								style="width: 14rpx;height: 14rpx;" alt="">
-						</view>
-						<view @click="routerLink('/pages/message/index?isSys=0')" class="news">
-							<view v-if="newsList.device_count > 0" class="num">
-								{{ newsList.device_count}}
+					<view class="header_view">
+						<!-- #ifdef MP-WEIXIN -->
+						<view :style="{height: `${statusBarHeight + 30}px`}"></view>
+						<!-- #endif -->
+						<!-- #ifdef APP -->
+						<view :style="{height: `${statusBarHeight}px`}"></view>
+						<!-- #endif -->
+						<!-- <navBar type="index" /> -->
+						<view class="flex-row flex-between align-center padding_about_40">
+							<view class="car-name-view" @tap="navSwitchCar">
+								<text class="text" style="margin-right: 10rpx;">{{car_info.car_name}}</text>
+								<img src="https://qiniu.bms16.com/FoSXDpVGvbdmwbX3CMUBvR7X4IzI"
+									style="width: 14rpx;height: 14rpx;" alt="">
+							</view>
+							<view @click="routerLink('/pages/message/index?isSys=0')" class="news">
+								<view v-if="newsList.device_count > 0" class="num">
+									{{ newsList.device_count}}
+								</view>
+								<image src="https://qiniu.bms16.com/FtlfBtBE5-TeTI5EdrciX_u8u_Sx"
+									style="width: 48rpx;height: 48rpx;" mode=""></image>
 							</view>
-							<image src="https://qiniu.bms16.com/FtlfBtBE5-TeTI5EdrciX_u8u_Sx"
-								style="width: 48rpx;height: 48rpx;" mode=""></image>
 						</view>
 					</view>
+					<view>
+						<!-- #ifdef MP-WEIXIN -->
+						<view :style="{height: `${statusBarHeight + 80}px`}"></view>
+						<!-- #endif -->
+						<!-- #ifdef APP -->
+						<view :style="{height: `${statusBarHeight + 50}px`}"></view>
+						<!-- #endif -->
+					</view>
 					<view v-if="isOverdueShow" class="overdue-view flex-row flex-between">
 						<view class="overdue-view-text flex-row">
 							<text class="overdue-text-left">{{$t("您已逾期")}}
@@ -64,11 +74,10 @@
 						<!-- <img :src="'https://qiniu.bms16.com/Fg8_p7083jpsy8BXG4bR6yMs7jQX'"
 							style="width: 100%;height: 526rpx;" alt=""> -->
 							<view class="custom-swiper-view">
-								<u-swiper @click="toMoreInfoPage" v-if="car_image.length!=0" :list="car_image"  :autoplay="false" mode="none"
+								<u-swiper @click="toMoreInfoPage" :list="car_image"  :autoplay="false" mode="none"
 									 :height="480" bgColor="transparent" class="custom-swiper">
 								</u-swiper>
-								<image @click="toMoreInfoPage" v-else style="width: 100%;height: 480rpx;" src="https://qiniu.bms16.com/Fg8_p7083jpsy8BXG4bR6yMs7jQX" mode="">
-								</image>
+						
 							</view>
 							
 						<view class="flex-row align-center update-time-view">
@@ -78,7 +87,7 @@
 								:style="{width: '24rpx',height: '32rpx'}" alt="">
 						</view>
 					</view>
-					<Control :contrilList="contrilList" @toBluetooth="inductiveUnlockHandle" @loadCarDetail="loadCarDetail"/>
+					<Control :contrilList="contrilList" @toBluetooth="inductiveUnlockHandle" @loadCarDetail="loadCarDetail" :isOverdueShow="isOverdueShow"/>
 					
 			
 					<view :class="['flex-row', 'flex-between', 'map-card-view',car_info.exchange_package_info && car_info.exchange_package_info.activity_time?'height_362':'height_260']">
@@ -96,7 +105,7 @@
 											style="width: 24rpx;height: 20rpx;"
 											src="https://qiniu.bms16.com/FltPK-o7KGS3dQ2pfQHXGSxOdzaN" alt=""></view>
 								</view>
-								<view class="card-top-text">{{car_info.current_mail}}<text class="font_24">km</text>
+								<view class="card-top-text">{{isTrackOrAll?car_info.current_mail:car_info.total_mil}}<text class="font_24">km</text>
 								</view>
 							</view>
 			
@@ -168,6 +177,8 @@
 			<IosUnlockAuth :authStepList="authStepList" :value="isShowPermission" @closePermission="closePermission"
 				v-else-if="isShowPermission && (platform === 'ios')" />
 		</view>
+		
+		
 		<returnCar :isShowReturnCar="isShowReturnCar" typePage="index" @closeShowReturnCarBtn="()=>isShowReturnCar=false"
 			@navStoreBtn="navStoreBtn" @immediatelyReturnBtn="immediatelyReturnBtn" />
 	</view>
@@ -212,7 +223,7 @@
 				newsList: {},
 				img_list: [],
 				isLogin: false,
-				isOverdueShow: true,
+				isOverdueShow: false,
 				contrilList: [],
 				isTrackOrAll: true,
 				model_list: [],
@@ -494,7 +505,7 @@
 					uni.hideLoading();
 					if (resp.data.code === 200) {
 						resp.data.data.car_sn = car_sn
-						const _car_image=resp.data.data.model_images?resp.data.data.model_images.split(','):[]
+						const _car_image=resp.data.data.model_images?resp.data.data.model_images.split(','):['https://qiniu.bms16.com/Fg8_p7083jpsy8BXG4bR6yMs7jQX']
 						me.setData({
 							car_info: resp.data.data,
 							car_image:_car_image
@@ -503,18 +514,21 @@
 						const app=getApp()
 						//车辆离线连接蓝牙
 						console.log('me.car_info.online',me.car_info.online);
-						if(me.car_info.online==1){
+						if(me.car_info.online==0){
 							me.loadBluetooth()
 						}
 						// this.isConnectBlueth=app.globalData.connectionState[this.car_info.car_sn]
 						//判断逾期
-						if (!resp.data.data.sold_time) return
+						if (resp.data.data.sold_time) return
 						let time = Math.ceil(resp.data.data.hire_end_time - Math.floor(new Date()) / 1000) / 60
-						if (time > 0) {
+						console.log(time,resp.data.data.hire_end_time,Math.floor(new Date()) / 1000);
+						if (time <= 0) {
 							this.isOverdueShow = true
+							app.globalData.isOverdueShow=true
 							this.car_info.hire_end_time = common.getTimeToDay(time)
 						} else {
 							this.isOverdueShow = false
+							app.globalData.isOverdueShow=false
 						}
 						console.log('this.time',this.time);
 						

+ 1 - 1
pages/loginRegister/changePassword.vue

@@ -62,7 +62,7 @@ export default {
 			if(res[1].confirm){
 				let {data} = await http.postApi(config.API_FLK_ACCOUNT_IMODIFY_PASSWD,this.form)
 				if(data.code == 200){
-					common.simpleToast(this.$t('修改成功,请重新登录'))
+					common.simpleToast(this.$t('修改成功') + ',' + this.$t('请重新登录'))
 					storage.removeUserToken()
 					uni.removeStorageSync('USER_INFO_DATA')
 					uni.reLaunch({

+ 10 - 5
pages/loginRegister/login.vue

@@ -2,7 +2,7 @@
     <view class="zx-page-linear login-page">
 		<navBar type="login" left="0" bgColor="transparent"></navBar>
       <view class="title-wrap">
-        <view class="title">{{ $t('欢迎来到') }}FRANCO MORINI</view>
+        <view class="title">{{ $t('欢迎来到') }} <br> FRANCO MORINI</view>
         <view class="sub-title">{{ $t('邮箱密码登录') }}</view>
       </view>
       <view class="main">
@@ -17,6 +17,7 @@
             :isPassword="form.passwd"
         />
         <view 
+			v-if="Language == 'zh'"
           :class="['agreement-row', checkShakeObj.agreemen && 'shake']" 
           @tap="isCheckAgreement = !isCheckAgreement"
         >
@@ -37,7 +38,7 @@
           </view>
           <view class="split-line"/>
           <view class="register" @tap="routerLink('/pages/loginRegister/register')">
-            {{ $t('没有账号') + ' ' + $t('立即注册') }}
+            {{ $t('立即注册') }}
           </view>
         </view>
 <!--        <view class="other-type-login">
@@ -57,10 +58,14 @@
 	const http = require('@/common/http.js');
   const common = require('@/common/common.js');
 	const storage = require('@/common/storage.js');
+	import {
+		Language
+	} from '@/utils/util.js'
   export default {
     data() {
       return {
         QINIU_URL,
+		Language:Language,
         isCheckAgreement: false,
         checkShakeObj: {
           email: false,
@@ -101,7 +106,7 @@
         uni.showToast({ title: message, icon: 'none' })
       },
       loginHandle() {
-        if (!this.isCheckAgreement) {
+        if (!this.isCheckAgreement && this.Language == 'zh') {
           this._applyCheck('agreemen', this.$t('请勾选用户协议和隐私政策'))
           return
         }
@@ -140,7 +145,7 @@
             font-weight: 800;
             font-size: 56rpx;
             color: #060809;
-            line-height: 56rpx;
+            line-height: 76rpx;
             text-align: left;
             font-style: normal;
             margin-bottom: 24rpx;
@@ -196,7 +201,7 @@
         }
   
         .register-row {
-            margin: 32rpx 80rpx 0;
+            margin: 32rpx 70rpx 0;
             font-family: PingFangSC, PingFang SC;
             font-weight: bold;
             font-size: 28rpx;

+ 6 - 1
pages/loginRegister/register.vue

@@ -17,6 +17,7 @@
             isPassword
         />
         <view 
+			v-if="Language == 'zh'"
           :class="['agreement-row', checkShakeObj.agreemen && 'shake']" 
           @tap="isCheckAgreement = !isCheckAgreement"
         >
@@ -46,6 +47,9 @@ import NoticeDialog from '@/component/comPopup/Notice.vue'
 import ZxInput from './components/ZxInput.vue'
 const config = require('@/common/config.js');
 const http = require('@/common/http.js');
+	import {
+		Language
+	} from '@/utils/util.js'
 export default {
     components: {
         NoticeDialog,
@@ -53,6 +57,7 @@ export default {
     },
     data() {
         return {
+			Language:Language,
             isCheckAgreement: false,
             isSendSucceed: false,
             form: {},
@@ -92,7 +97,7 @@ export default {
 		    return regex.test(password);
 		},
         submit() {
-            if (!this.isCheckAgreement) {
+            if (!this.isCheckAgreement && this.Language == 'zh') {
                 this._applyCheck('agreemen', this.$t('请勾选用户协议和隐私政策'))
                 return
             }

+ 2 - 2
pages/message/index.vue

@@ -244,7 +244,7 @@
 		.sys-msg-wrap {
 
 			.row {
-				margin-bottom: 40rpx;
+				margin-bottom: 20rpx;
 				display: flex;
 				justify-content: space-between;
 
@@ -285,7 +285,7 @@
 			}
 
 			.msg-item {
-				padding: 40rpx 0;
+				padding: 20rpx 0;
 				border-bottom: 1px solid #F1F4F5;
 
 				&:last-child {

+ 1 - 1
pages/my/my.scss

@@ -1,7 +1,7 @@
 
 @import "@/libs/css/layout.scss";
 .container-view {
-    padding: 36rpx 32rpx 264rpx;
+    padding: 36rpx 32rpx 0rpx;
     box-sizing: border-box;
     .user-switch-row {
         display: flex;

+ 26 - 2
pages/my/set.vue

@@ -21,7 +21,7 @@
 				</view>
 			</view>
 		</view>
-		<view class="zx-form-btn fix-bottom-btn logout-btn" @tap="handleQuit">{{ $t('退出登录') }}</view>
+		<view v-if='userInfo.user_name' class="zx-form-btn fix-bottom-btn logout-btn" @tap="handleQuit">{{ $t('退出登录') }}</view>
 	</view>
 </template>
 
@@ -36,6 +36,9 @@
 	const common = require('../../common/common.js');
 	import dayjs from 'dayjs'
 	import 'dayjs/locale/zh-cn';
+	import {
+		Language
+	} from '@/utils/util.js'
 	export default {
 		data() {
 			return {
@@ -62,7 +65,6 @@
 						title: this.$t('关于我们'),
 						url: '/pages/aboutMy/aboutMy',
 						textProp: 'version',
-						hideArrow: true
 					},
 					{
 						title: this.$t('隐私协议'),
@@ -76,6 +78,28 @@
 			}
 		},
 		onLoad() {
+			if(Language != 'zh'){
+				this.list =[{
+						title: this.$t('昵称'),
+						url: '',
+						textProp: 'nickname'
+					},
+					{
+						title: this.$t('注册时间'),
+						textProp: 'registrationTime',
+						hideArrow: true
+					},
+					{
+						title: this.$t('修改密码'),
+						url: '/pages/loginRegister/changePassword'
+					},
+					{
+						title: this.$t('关于我们'),
+						url: '/pages/aboutMy/aboutMy',
+						textProp: 'version',
+					}
+				]
+			}
 			let getAppBaseInfo = uni.getAppBaseInfo()
 			this.setData({
 				// app_logo: appConfig.app_logo,

+ 2 - 2
pages/package/package.vue

@@ -47,6 +47,7 @@
 							style="color: #9FA7B7;">/{{item.total_day}}{{ $t('天') }}</text>
 					</view>
 				</view>
+				<!-- 套餐类型 1 天卡 2 次卡 3 天次卡 -->
 				<view v-if="item.package_type == 1" class="package-item">
 					<view class="item-title">{{ $t('免费换电数') }}</view>
 					<!-- <view style="color: #060809;" class="item-info">{{item.last_num}}{{ $t('次') }}</view> -->
@@ -58,8 +59,7 @@
 				</view>
 				<view v-if="item.package_type == 3" class="package-item">
 					<view class="item-title">{{ $t('免费换电数') }}</view>
-					<!-- <view style="color: #060809;" class="item-info">{{item.last_num}}{{ $t('次') }}/{{item.total_num}}{{ $t('次') }}</view> -->
-					<view style="color: #060809;" class="item-info">{{item.total_day}}{{ $t('天') }}/{{item.last_num}}{{ $t('次') }}</view>
+					<view style="color: #060809;" class="item-info">{{item.last_num}}/{{item.num}}{{ $t('次') }}</view>
 				</view>
 			</view>
 		</view>

+ 1 - 1
pages/purchaseOrder/purchaseOrder.vue

@@ -211,7 +211,7 @@
 					unitPrice: model_info.rental_setting.find(v => v.hire_duration_unit == model_info
 						.selectType)?.hire_price,
 					service_list: model_info.service_list || [],
-					price: model_info.totalPrice / 100,
+					price: model_info.price,
 					totalPrice: model_info.selectType != 100 ? ((model_info.totalPrice + model_info.deposit) / 100).toFixed(2) : ((model_info.sell_price) / 100).toFixed(2)
 				})
 			}

+ 1 - 1
pages/service/components/carRentalList/carRentalList.vue

@@ -36,7 +36,7 @@
 								<view class="flex-row flex-between">
 									<view class="bottom-text">
 										{{ leaseUnitsResult }} <text
-											style="margin-left: 10rpx;">¥</text><text>{{item.model_list[0].hire_price}}</text>
+											style="margin-left: 10rpx;">¥</text><text>{{(item.model_list[0].hire_price / 100).toFixed(2)}}</text>
 									</view>
 								</view>
 							</view>

+ 2 - 2
pages/service/components/leaseType/leaseType.vue

@@ -39,8 +39,8 @@
 		        </scroll-view>
 				
 				<view class="options-wrap">
-		            <view class="btn cancle" @click="closeLeaseType">取消</view>
-		            <view class="btn confirm" @click="chooseLeaseType">确定</view>
+		            <view class="btn cancle" @click="closeLeaseType">{{$t('取消')}}</view>
+		            <view class="btn confirm" @click="chooseLeaseType">{{$t('确定')}}</view>
 		        </view>
 				<view style="height: 170rpx;"></view>
 		    </view>