From 2af5f043b60c1f7ac38ecccc8f5bf44743134325 Mon Sep 17 00:00:00 2001
From: cuiqian2004 <cuiqian2004@163.com>
Date: 星期五, 12 十二月 2025 18:08:00 +0800
Subject: [PATCH] test

---
 pages/login/index.vue |  367 ++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 313 insertions(+), 54 deletions(-)

diff --git a/pages/login/index.vue b/pages/login/index.vue
index 108311f..b47187d 100644
--- a/pages/login/index.vue
+++ b/pages/login/index.vue
@@ -7,18 +7,18 @@
 					<!-- <image class="title-img" src="/images/earth.svg" alt=" 鍥剧墖" /> -->
 
 				</view>
-				<text class="title">璇风櫥褰�/text>
+				<text class="title">{{translate('start_login')}}</text>
 				<view class="login-form">
 					<view class="login-form-item line">
-						<text class="label">鐢ㄦ埛鍚�/text>
+						<text class="label">{{translate('account')}}</text>
 						<input class="input" :focus="formData.accountFocus" comfirm-type="done" type="text"
-							v-model="form.account" placeholder="鎵嬫満鍙风爜" />
+							v-model="form.account" :placeholder="translate('input_login')" />
 					</view>
 
 					<view class="login-form-item line">
-						<text class="label">瀵嗙爜</text>
+						<text class="label">{{translate('password')}}</text>
 						<input class="input" :focus="formData.passwordFocus" :password="hidePassContent"
-							comfirm-type="done" v-model="form.password" placeholder="鐧诲綍瀵嗙爜" />
+							comfirm-type="done" v-model="form.password" :placeholder="translate('input_password')" />
 						<uni-icons :type="hidePassContent?'eye-slash':'eye'" size="28"
 							@click="clickHidePassContent"></uni-icons>
 					</view>
@@ -26,7 +26,7 @@
 						<checkbox-group @change="handleSavePwdChange">
 							<label>
 								<checkbox value="1" :checked="savePsw" />
-								<text>璁颁綇瀵嗙爜</text>
+								<text>{{translate('remember_password')}}</text>
 							</label>
 						</checkbox-group>
 
@@ -34,7 +34,8 @@
 						<!-- 	<a @click="clickForgotPassword">蹇樿瀵嗙爜</a> -->
 					</view>
 					<view class="button-group">
-						<a-button :disabled="disabledOk" type="primary" class="button" @click="clickLogin">鐧诲綍</a-button>
+						<a-button :disabled="disabledOk" type="primary" class="button"
+							@click="clickLogin">{{translate('login')}}</a-button>
 						<!-- <a-button class="button" type="ghost"  @click="clickNewAccount">鍒涘缓璐﹀彿</a-button> -->
 					</view>
 				</view>
@@ -42,26 +43,67 @@
 			</view>
 		</view>
 		<view class="bottom">
+			<a class="language" @click="clickLanguage">{{translate("language")}}</a>
 			<view class="version">
-				鐗堟湰锛歿{version}}
+				{{translate("version")}}锛歿{version.date}}_{{version.ver}}
 			</view>
 		</view>
+		<!-- 鐗堟湰鍗囩骇寮圭獥寮� -->
+		<uni-popup ref="promotion" type="center">
+			<view class="promotion" style="width: 700rpx;padding:20rpx 40rpx; background: white;font-size: 36rpx;">
+
+				<view class="operates">
+					<view v-if="showUpdateBtns" style="text-align: center;padding:20rpx;font-weight: 700;">
+						{{translate('ask_update') }}
+					</view>
+					<view style="text-align: center;padding-top:20rpx;">
+						{{carUpdateFlag ? translate('tip_car_update') : translate('tip_app_update')  }}锛歿{newVersion.date}}_{{newVersion.ver}}
+					</view>
+					<view  v-if="newVersion.info" style="padding:20rpx;font-weight: 600;">
+						{{translate("version_info")}}锛歿{newVersion.info}}
+					</view>
+					
+					<template v-if="showUpdateBtns">
+						<text @click="onCancel"
+							style="margin-top:30rpx; display: inline-block;color: #7cd0f8;width: 50%; text-align: center;">{{translate('cancel')}}</text>
+						<text @click="onUpdate"
+							style="margin-top:30rpx;display: inline-block;color: #7cd0f8;width: 50%; text-align: center;">{{translate('confirm')}}</text>
+					</template>
+				</view>
+				<view class="operates" v-if=" !showUpdateBtns">
+					<cmdProgress :percent="percentage" stroke-color="linear-gradient(to right, #ef32d9, #89fffd)">
+					</cmdProgress>
+				</view>
+			</view>
+		</uni-popup>
 	</view>
 </template>
 
 <script>
+	import cmdProgress from "@/components/cmd-progress/index.vue"
 	import {
 		session,
 		showToast,
-		showModal
+		showModal,
+		showError
 	} from "@/comm/utils.js"
+	import TaskInit from "@/comm/extend.js"
 	import {
 		Button
 	} from 'antd-mobile-vue-next'
+	import {
+		getAppVersion,
+		getServerVersion,
+		downloadUpdatePackage
+	} from "@/api/version.js"
+
+
+
 	export default {
 		name: "PagesLogin",
 		components: {
-			'a-button': Button
+			'a-button': Button,
+			cmdProgress
 		},
 		data() {
 
@@ -76,7 +118,19 @@
 				},
 				hidePassContent: true,
 				savePsw: false,
-				version: "1.0.0",
+				version: {
+					date: "",
+					ver: ""
+				},
+				newVersion: {
+					date: "",
+					ver: "",
+					info:""
+				},
+				carUpdateFlag: false,
+				vesironFileName: "", //瀹夊崜app涓嬭浇閾炬帴
+				percentage: 0, //涓嬭浇杩涘害
+				showUpdateBtns: true,
 			}
 		},
 		computed: {
@@ -92,7 +146,11 @@
 				return false
 			}
 		},
-		onLoad() {
+		onLoad(option) {
+			const _this = this
+			uni.setNavigationBarTitle({
+				title: this.translate('login')
+			})
 
 			uni.getSystemInfo({
 				success(e) {
@@ -105,7 +163,7 @@
 
 			})
 			const info = session.getValue("login_info")
-			console.log(info)
+
 			this.setData({
 				form: {
 					account: info?.id || '',
@@ -117,7 +175,22 @@
 			// #ifdef APP-PLUS
 			plus.runtime.getProperty(plus.runtime.appid, (info) => {
 				// console.log(info);
-				this.version = info.version;
+				const verStr = info.version || "";
+				const arVer = verStr.split("_")
+				if (arVer.length > 1) {
+					_this.version = {
+						date: arVer[0],
+						ver: arVer[1]
+					}
+				} else if (arVer.length == 1) {
+					_this.version = {
+						date: "",
+						ver: arVer[0]
+					}
+				}
+				if (!option.flag)
+					_this.checkAppVersion(_this.version)
+
 			});
 			//#endif
 
@@ -144,6 +217,13 @@
 					});
 				});
 			},
+
+			clickLanguage() {
+				uni.navigateTo({
+					url: "/pages/my/language"
+				})
+
+			},
 			clickHidePassContent() {
 				this.hidePassContent = !this.hidePassContent
 			},
@@ -156,45 +236,211 @@
 				}
 
 			},
-			clickLogin() {
-				let account = this.form.account.trim()
-				if (!account) {
-					showToast("璇疯緭鍏ユ墜鏈哄彿")
-					return
-				}
-				let password = this.form.password.trim()
-				if (!password) {
-					showToast("璇疯緭鍏ュ瘑鐮�)
-					return
-				}
-				if (account != "sa") {
-					showToast("鎵嬫満鍙蜂笉瀛樺湪")
-					return
-				}
-				if (password != "0000") {
-					showToast("瀵嗙爜閿欒")
-					return
-				}
-				if (this.savePsw) {
+			onUpdate() {
+				this.showUpdateBtns = false;
 
-					session.setValue("login_info", {
-						id: account,
-						password,
-						savePsw: true,
-					})
-				} else {
-					session.setValue("login_info", {
-						id: account,
-						password: ""
-					})
+
+				this.updateAPP(this.vesironFileName, this.newVersion)
+			},
+			onCancel() {
+				this.$refs.promotion.close();
+				if (!this.carUpdateFlag) {
+					setTimeout(() => {
+						this.checkServerVersion()
+					}, 500)
 				}
-				getApp().globalData.withLog  = 	session.getValue("write_log") ? true:false
-				uni.reLaunch({
-					url: "/pages/index/index"
+
+			},
+			updateAPP(fileName, verInfo) {
+				let _this = this;
+				let sys = uni.getSystemInfoSync().platform //妫�煡绯荤粺
+
+				downloadUpdatePackage(fileName, (path) => {
+					if (_this.carUpdateFlag) {
+						var pathArr = fileName.split(".")
+						const fileExt = pathArr.pop()
+						const fileName2 = `EasyGO_${verInfo.date}_${verInfo.ver}.${fileExt}`
+						TaskInit.fileUtils.clearSavedFiles("car_version")
+						TaskInit.fileUtils.moveToLocal(path, "car_version", fileName2).then((
+							res) => {
+							console.log("淇濆瓨鎴愬姛锛�, res)
+							showToast(this.translate('download_success'));
+						}).catch((err) => {
+							console.log("淇濆瓨澶辫触锛�, err)
+							showToast(_this.translate("failed_save_file"))
+						})
+					} else {
+						plus.runtime.openFile(path); //閫夋嫨杞欢鎵撳紑鏂囦欢
+						showToast(this.translate('update_success'));
+					}
+					_this.$refs.promotion.close();
+
+				}, (res) => {
+					console.log('涓嬭浇杩涘害' + res.progress);
+					_this.percentage = res.progress
+					if (_this.percentage == 100) {
+						_this.$refs.promotion.close();
+					}
+				}, (err) => {
+					_this.$refs.promotion.close();
+					showToast(`${_this.translate('update_fail') },${err}`);
 				})
-				// uni.navigateTo({
-				// 	url: `/pages/index/connect?ip=192.168.1.2&sid=HH&password=HH888888`
-				// })
+
+			},
+			async checkAppVersion(version) {
+				try {
+					const listVer = await getAppVersion() || []
+					const appVer = listVer[0] || {}
+					this.vesironFileName = appVer.file_name || ""
+					if (this.vesironFileName) {
+						var isver = this.compareVersion({
+							date: appVer.file_time,
+							ver: appVer.version
+						}, version);
+
+						if (isver) {
+							this.carUpdateFlag = false
+							this.newVersion = {
+								date: appVer.file_time,
+								ver: appVer.version,
+								info: appVer.info,
+							}
+							this.$refs.promotion.open();
+						} else {
+							this.checkServerVersion()
+						}
+					} else {
+						this.checkServerVersion()
+					}
+				} catch (ex) {
+					console.log(ex)
+				}
+
+			},
+			getVersionFromFileName(fileName) {
+				if (!fileName.trim()) {
+					return {
+						date: "",
+						ver: ""
+					}
+				}
+				let versionInfos = fileName.trim().split('_');
+				let date = versionInfos[1]
+				let version2 = versionInfos[2]
+				let versionInfos2 = version2.split('.');
+				versionInfos2.pop()
+				return {
+					date,
+					ver: versionInfos2.join(".")
+				}
+			},
+			compareVersion(curV, reqV) {
+
+				if (curV.date == reqV.date) {
+					return curV.ver > reqV.ver
+				}
+				return curV.date > reqV.date
+			},
+			async checkServerVersion() {
+				try {
+					const listVer = await getServerVersion() || []
+					const svrVer = listVer[0] || {}
+					this.vesironFileName = svrVer.file_name || ""
+					if (this.vesironFileName) {
+						var oldVerName = ""
+						var fileList = []
+						try {
+							fileList = await TaskInit.fileUtils.listSavedFiles('car_version')
+						} catch (ex) {
+							console.log(ex)
+						}
+						fileList.forEach((ele) => {
+							if (oldVerName) {
+								if (oldVerName < ele.name) {
+									oldVerName = ele.name
+								}
+							} else {
+								oldVerName = ele.name
+							}
+						})
+						console.log(oldVerName)
+						if (oldVerName) {
+							const oldVer = this.getVersionFromFileName(oldVerName)
+							const isVer = this.compareVersion({
+								date: svrVer.file_time,
+								ver: svrVer.version
+							}, oldVer);
+							if (isVer || !oldVer) {
+								this.carUpdateFlag = true
+								this.newVersion = {
+									date: svrVer.file_time,
+									ver: svrVer.version,
+										info: svrVer.info,
+								}
+								this.$refs.promotion.open();
+							}
+						} else {
+							this.carUpdateFlag = true
+							this.newVersion = {
+								date: svrVer.file_time,
+								ver: svrVer.version,
+								info: svrVer.info,
+							}
+							this.$refs.promotion.open();
+						}
+
+					}
+				} catch (ex) {
+
+					console.log(ex)
+				}
+
+			},
+
+			async clickLogin() {
+
+				try {
+					let account = this.form.account.trim()
+					if (!account) {
+						showToast(this.translate("input_login"))
+						return
+					}
+					let password = this.form.password.trim()
+					if (!password) {
+						showToast(this.translate("input_password"))
+						return
+					}
+					if (account != "sa") {
+						showToast(this.translate("account_not_exist"))
+						return
+					}
+					if (password != "0000") {
+						showToast(this.translate("password_error"))
+						return
+					}
+					if (this.savePsw) {
+
+						session.setValue("login_info", {
+							id: account,
+							password,
+							savePsw: true,
+						})
+					} else {
+						session.setValue("login_info", {
+							id: account,
+							password: ""
+						})
+					}
+					getApp().globalData.withLog = session.getValue("write_log") ? true : false
+					uni.reLaunch({
+						url: "/pages/index/index"
+					})
+					// uni.navigateTo({
+					// 	url: `/pages/index/connect?ip=192.168.1.2&sid=HH&password=HH888888`
+					// })
+				} catch (ex) {
+					showError(ex)
+				}
 			},
 			clickNewAccount() {
 				uni.navigateTo({
@@ -205,8 +451,13 @@
 				uni.navigateTo({
 					url: "/pages/login/forgot-password"
 				})
-			}
-		}
+			},
+			translate(t) {
+				if (typeof this.$t == "function") return this.$t(`page.${t}`)
+				else return t;
+			},
+		},
+
 	}
 </script>
 
@@ -233,6 +484,13 @@
 				color: #888;
 				flex-direction: row;
 				display: flex;
+			}
+
+			.language {
+				float: left;
+				display: flex;
+				text-decoration: underline;
+				/* 涓嬪垝绾�*/
 			}
 		}
 
@@ -275,7 +533,7 @@
 			margin: 20rpx 10rpx;
 			font-size: 28rpx !important;
 			flex-direction: row;
-			
+
 
 			.label {
 				text-align: right;
@@ -289,7 +547,8 @@
 			}
 
 		}
-		.line{
+
+		.line {
 			border-bottom: 2rpx solid #ddd;
 		}
 

--
Gitblit v1.9.1