diff --git a/App.vue b/App.vue
index 9d1fac8..9ed2cc6 100644
--- a/App.vue
+++ b/App.vue
@@ -2,9 +2,9 @@
 	export default {
 		globalData: {
 			msg: {},
-			verno:'10',
-			vername:'2.2.0',
-			version:'2.2.0(11)'
+			verno:'',
+			vername:'',
+			version:''
 		},
 		onLaunch() {
 			let that = this
@@ -33,9 +33,6 @@
 				}
 			})
 
-
-
-
 			//锁定屏幕
 			plus.screen.lockOrientation("portrait-primary")
 
@@ -69,49 +66,16 @@
 				}
 			});
 
-			let uid = uni.getStorageSync("uid")
+			let uid = uni.getStorageSync("userid")
 			//设置Alias
 			KJJPush.setAlias(uid ? uid : 'tourist', 1, result => {
-				//console.log("setAlias:" + JSON.stringify(result));
+				console.log("setAlias:" + JSON.stringify(result));
 			});
 
 			//监听推送打开通知，（前台、后台、ios app完全退出）都可以监听
 			KJJPush.addNotifyMessageOpened(result => {
-
 				console.log(result)
-				var str = JSON.stringify(result);
-				// uni.showModal({
-				// 	title: '推送通知测试',
-				// 	content: str,
-				// 	success: function(res) {}
-				// });
 			});
-			//监听自定义推送消息
-			KJJPush.addCustomizeNotifyMessage(result => {
-				var str = JSON.stringify(result);
-				// uni.showModal({
-				// 	title: 'KJ-JPush',
-				// 	content: str,
-				// 	showCancel: false,
-				// 	success: function(res) {}
-				// });
-			});
-			//监听推送消息
-			// KJJPush.addNotifyMessage(result => {
-			// 	console.log(result)
-			// 	var str = JSON.stringify(result);
-			// 	uni.showModal({
-			// 		title: '推送通知',
-			// 		content: str,
-			// 		success: function(res) {
-			// 			if (res.confirm) {
-			// 				KJJPush.clearAllNotifications();
-			// 				KJJPush.ios_resetJPushBadge();
-			// 			}
-			// 		}
-			// 	});
-			// });
-
 			//  #endif
 
 			//判断token是否过期
@@ -122,7 +86,7 @@
 			if (!token) {
 				//if (isFirstTimeEnterApp) { //判断是否第一次进入App 先入引导页
 				uni.reLaunch({
-					url: "/pages/sub_basic/login/index"
+					url: "/pages/sub_basic/login"
 				})
 				//}
 			} else {
@@ -141,7 +105,7 @@
 						if (hands) {
 							uni.setStorageSync("login", 2)
 							uni.reLaunch({
-								url: "/pages/sub_mine/lock/index"
+								url: "/pages/sub_mine/lock"
 							})
 						} else {
 							uni.switchTab({
@@ -152,9 +116,9 @@
 
 				}).catch(res => {
 					uni.setStorageSync('token', '')
-					if (routes.length != 0 || curRoute != 'pages/sub_basic/login/index') {
+					if (routes.length != 0 || curRoute != 'pages/sub_basic/login') {
 						uni.reLaunch({
-							url: "/pages/sub_basic/login/index"
+							url: "/pages/sub_basic/login"
 						})
 					}
 
@@ -178,12 +142,15 @@
 				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' || curRoute == 'pages/sub_basic/register' || curRoute ==
+						'pages/sub_basic/forgetPwd') {
+							uni.showToast({
+								title:'暂无可用网络。请开启网络',
+								icon:'none'
+							})
 					} else {
 						uni.navigateTo({
-							url: "/pages/sub_basic/network/index"
+							url: "/pages/sub_basic/network"
 						})
 					}
 				}
