Преглед изворни кода

Merge remote-tracking branch 'origin/dev3.6' into dev3.6

wangkaiyue пре 4 година
родитељ
комит
ebebf8d7f7
1 измењених фајлова са 40 додато и 48 уклоњено
  1. 40 48
      src/web/staticres/js/login.js

+ 40 - 48
src/web/staticres/js/login.js

@@ -5,13 +5,12 @@ if(navigator.appName == "Microsoft Internet Explorer" && navigator.appVersion.ma
 	bIE9=true
 }
 var wsUrl = "ws"+(!bIE9&&"https:"==document.location.protocol?"s":"")+"://"+window.location.host+"/ws";
-var ws = "";
+var ws = null;
 var openid = "";
 var jylgi = 0;
 var loginflag = false;//登录状态
 var mynum = "";//页面参数num
 var keysorpname = "";//项目名称
-var kzyflag = false;//快照页标识
 var thurl = "";//url
 var semnum = "";//SEM
 var ldpnum = "";//落地页扫码后调整标识
@@ -27,7 +26,7 @@ var sendMsgInterval = null;
 var entjumpflag = false;
 //轮询查询
 var LoginPolling = {
-	isPostLoginPolling: false,//是否发起轮询请求
+	isPostLoginPolling: true,//是否发起轮询请求
 	loginPollingInterval: null,
 	initInterval: null,
 	init: function(){
@@ -51,7 +50,7 @@ var LoginPolling = {
 			timeout: 3000,
 			success: function(r){
 				clearInterval(LoginPolling.initInterval);
-				//LoginPolling.initInterval = null;
+				LoginPolling.initInterval = null;
 			}
 		});
 	},
@@ -60,12 +59,10 @@ var LoginPolling = {
 		if(this.loginPollingInterval != null){
 			return;
 		}
+		this.init();
 		//定时器,定时请求看是否扫码登录,返回用户信息,登录
 		this.loginPollingInterval = setInterval(function(){
 			//如果浏览器不支持webscoket,走ajax轮询方式
-			if(window.WebSocket == undefined) {
-				LoginPolling.isPostLoginPolling = true;
-			}
 			if(WSpolling.isPageHidden || !LoginPolling.isPostLoginPolling){
 				return;
 			}
@@ -92,17 +89,21 @@ var LoginPolling = {
 }
 var webSocketHeartCheck = new WebSocketHeartCheck(LoginPolling);
 //创建websocket连接
-var createWebSocket = function(flag){
-	try{
-		ws = new WebSocket(wsUrl);//实例化websocket对象
-		initEventHandle(flag);
-	}catch(e){
-		reconnect();
-		//console.log(e)
+var createWebSocket = function(){
+	if("WebSocket" in window){
+		try{
+			ws = new WebSocket(wsUrl);//实例化websocket对象
+			initEventHandle();
+		}catch(e){
+			reconnect();
+			//console.log(e)
+		}	
+	}else{
+		LoginPolling.isPostLoginPolling = true;
 	}
 }
 //
-var initEventHandle = function(flag){
+var initEventHandle = function(){
 	ws.onmessage = function(e){
 		//接收消息正常,就不再发ajax轮询
 		LoginPolling.isPostLoginPolling = false;
@@ -126,9 +127,7 @@ var initEventHandle = function(flag){
         reconnect();
     }
 	ws.onopen = function(e) {
-		if(flag){//重连之后发送shareid
-			SendMsg();
-		}
+		SendMsg();
 		//心跳检测重置
         webSocketHeartCheck.reset().start(ws,loginflag);
 	}
@@ -143,7 +142,7 @@ function reconnect() {
 	LoginPolling.init();
     //没连接上会一直重连,设置延迟避免请求过多
     setTimeout(function () {
-        createWebSocket(true);
+        createWebSocket();
 		webSocketHeartCheck.lockReconnect = false;
     }, 2000);
 }
@@ -153,29 +152,25 @@ var JYLogin = function(num){
 	loginfg = setInterval(function(){
 		jylgi++;
 		//console.log(jylgi+"-----")
-		if(jylgi>12*60){
-			getNewShareId(num);
+		if(jylgi>120*60){
+			getNewShareId(num,false);
 			jylgi = 0;
 		}
 	},1000)
-	LoginPolling.init();
-	SendMsg();
 }
 var SendMsg = function(){
-	//向后台发送websocket数据
-	if (window["WebSocket"]){
-		if(ws.readyState==1){
-			//console.log("发送:"+pageshareid+"___"+kopshareid)
-			ws.send(pageshareid+"___"+kopshareid);
-		}else{
-			LoginPolling.isPostLoginPolling = true;
-		}
+	if(pageshareid==""||kopshareid==""){
+		return;
+	}
+	if(ws!=null&&ws.readyState==1){
+		//console.log("发送:"+pageshareid+"___"+kopshareid)
+		ws.send(pageshareid+"___"+kopshareid);
 	}else{
 		LoginPolling.isPostLoginPolling = true;
 	}
 }
 //生成页面二维码,不同页面处理逻辑
-var getNewShareId = function(num){
+var getNewShareId = function(num,isFirst){
 	mynum = num;
 	pageType = "T"
 	var rref = document.referrer;
@@ -192,6 +187,15 @@ var getNewShareId = function(num){
 			pageshareid = data.num;
 			kopshareid = data.numot;
 			mynum = num;
+			if(!loginflag){
+				if(isFirst){
+					LoginPolling.start();
+					createWebSocket();
+				}else if(!isFirst){
+					LoginPolling.init();
+					SendMsg();
+				}
+			}
 			localStorage.setItem("oldshareid", pageshareid);
 			//redisUserInfo(pageshareid,kopshareid);
 			$(".jyhead_qr img").attr("src","/front/share/"+pageshareid);
@@ -265,14 +269,7 @@ var getNewShareId = function(num){
 				case "23"://数据导出
 					break;
 			}
-			if(num=="13"&&!kzyflag){
-				return false;
-			}
-			setTimeout(function(){
-				if(!loginflag){
-					JYLogin(num);
-				}
-			},500);
+			JYLogin(num);
 		}
 	},'json');
 }
@@ -543,7 +540,6 @@ var processpage = function(shareid,num){
 //退出登录
 var signout = function(){
 	clearInterval(loginfg);
-	kzyflag = true;
 	loginflag = false;
 	unseatflag = false;
 	unseatzbqyflag = false;
@@ -567,8 +563,8 @@ var signout = function(){
             }else{
             	window.location.reload();
 				/*LoginPolling.start();
-				createWebSocket(false);
-				getNewShareId(mynum);*/
+				createWebSocket();
+				getNewShareId(mynum,true);*/
 			}
 		}
 	})
@@ -633,15 +629,11 @@ var haslogin = function(num,kyorpn,url){
 				infoListCss();
 				commonMouseEvent();
 			}catch(e){}
-			getNewShareId(num);
 		}else{
 			$("#login").html("<button class='loginBtn' data-toggle='modal' onclick='openLoginDig()'>登录</button>");
 			loginBtnType();
-			getNewShareId(num);
-			LoginPolling.start();
-			createWebSocket(false);
-			kzyflag = true;//未登录进入快照页面
 		}
+		getNewShareId(num,true);
 	})
 }
 function loginBtnType(){