diff --git a/App.vue b/App.vue
index fa9f0db..3ffa7df 100644
--- a/App.vue
+++ b/App.vue
@@ -1,11 +1,13 @@
 <script>
 	export default {
 		globalData: {
-			msg: {}
+			msg: {},
+			verno:'10',
+			vername:'2.2.0'
 		},
 		onLaunch() {
 			let that = this
-			
+
 			//获取平台信息
 			uni.getSystemInfo({
 				success(res) {
@@ -13,12 +15,14 @@
 				}
 			})
 			// #ifdef APP-PLUS
-			
+
 			//获取版本号
 			let v = plus.runtime.version
 			let c = plus.runtime.versionCode
 			let version = v + '(' + c + ')'
 			that.globalData.version = version
+			that.globalData.vername = v
+			that.globalData.verno = c
 
 			//获取设备uuid
 			plus.device.getInfo({
@@ -28,6 +32,9 @@
 				}
 			})
 
+
+
+
 			//锁定屏幕
 			plus.screen.lockOrientation("portrait-primary")
 
@@ -120,7 +127,7 @@
 			} else {
 				let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
 				let curRoute = ''
-				if(routes.length != 0){
+				if (routes.length != 0) {
 					curRoute = routes[routes.length - 1].route //获取当前页面路由
 				}
 				//console.log(routes)
@@ -128,22 +135,31 @@
 					if (res.token) {
 						uni.setStorageSync("token", res.token)
 					}
-					if(curRoute != 'pages/sub_tabbar/index'){
-						uni.switchTab({
-							url: "/pages/sub_tabbar/index"
-						})
+					if (curRoute != 'pages/sub_tabbar/index') {
+						let hands = uni.getStorageSync("hands")
+						if (hands) {
+							uni.setStorageSync("login", 2)
+							uni.reLaunch({
+								url: "/pages/sub_mine/lock/index"
+							})
+						} else {
+							uni.switchTab({
+								url: "/pages/sub_tabbar/index"
+							})
+						}
 					}
-					
+
 				}).catch(res => {
-					uni.setStorageSync('token','')
-					if(routes.length != 0 || curRoute != 'pages/sub_basic/login/index'){
+					uni.setStorageSync('token', '')
+					if (routes.length != 0 || curRoute != 'pages/sub_basic/login/index') {
 						uni.reLaunch({
 							url: "/pages/sub_basic/login/index"
 						})
 					}
-					
+
 				})
 			}
+
 			uni.onNetworkStatusChange(function(res) {
 				if (res.networkType == '4g') {
 					uni.showToast({
@@ -161,7 +177,8 @@
 				if (!res.isConnected || res.networkType == '2g' || res.networkType == 'none') {
 					let routes = getCurrentPages()
 					let curRoute = routes[routes.length - 1].route
-					if (curRoute == 'pages/sub_basic/login/index' || curRoute == 'pages/sub_basic/register/index' || curRoute == 'pages/sub_basic/forgetPwd/index') {
+					if (curRoute == 'pages/sub_basic/login/index' || curRoute == 'pages/sub_basic/register/index' || curRoute ==
+						'pages/sub_basic/forgetPwd/index') {
 
 					} else {
 						uni.navigateTo({
@@ -171,7 +188,9 @@
 				}
 			});
 		},
+		onShow() {
 
+		}
 	}
 </script>
 
