var randomCode = 0; var time = 0; var qrCodeLoginId = 0; var charList = ['0','1','2','3','4','5','6','7','8','9' ,'a','b','c','d','e','f','g' ,'h','i','j','k','l','m','n' ,'o','p','q','r','s','t' ,'u','v','w','x','y','z']; //二维码登录 function doQrcodeLogin(){ var loginName = $("#username").val(); randomCode = getRandcode(); //弹出二维码 //doOverLay("加载中。。。"); $.ajax({ url:yUrl("/qrCode/createLoginQrCode.do"), data:{'loginName':loginName,'qrCodeLogin.randomCode':randomCode}, dataType:'json', cache:false, error: function(){ randomCode = 0; closeLay(); showMessage("页面异常!"); $('#password').val(""); closeLay(); loginImg(); }, success: function(data){ closeLay(); if(data == 'error'){ randomCode = 0; qrCodeLoginId = 0; showMessage("服务器异常!"); $('#password').val(""); $("#qrcodeDiv").dialog('destroy').html(''); loginImg(); }else{ var popup = $("#qrcodeDiv"); var img = $("#img_qrcode"); if(img.attr('src') == undefined){ var imgtemp = ''; popup.append(imgtemp); img = $("#img_qrcode"); } $(popup).find("div").empty(); img.attr('src','data:image/png;base64,' + data.base64QrCode); qrCodeLoginId = data.qrCodeLoginId; $(popup).dialog({ resizable: true, height: 380, width: 250, modal: true, title:'药数立方扫描二维码', close: function(event, ui) { time = 999;//立即停止校验二维码 randomCode = 0; qrCodeLoginId = 0; showMessage("已终止二维码验证!"); loginImg(); $('#password').val(""); $(popup).dialog('destroy').html(''); }, buttons : { "关闭" : function() { time = 999;//立即停止校验二维码 randomCode = 0; qrCodeLoginId = 0; showMessage("已终止二维码验证!"); loginImg(); $('#password').val(""); $(popup).dialog('destroy').html(''); } } }); //等待扫码二维码 time = 0; scanWaitResult(); } } }); } //生成随机字母或数字 function getRanNum(n) { var result = []; for (var i = 0; i < n; i++) { //生成一个0到35的随机数 var ranNum = Math.ceil(Math.random() * 35); result.push(charList[ranNum]); } return result.join(''); } //生成32位随机校验码 function getRandcode() { var random1 = getRanNum(8); var random2 = getRanNum(4); var random3 = getRanNum(4); var random4 = getRanNum(4); var random5 = getRanNum(12); return random1 + '-' + random2 + '-' + random3 + '-' + random4 + '-' + random5; } //获取扫描结果 function scanWaitResult(){ if(time < 30){ time = time + 1; var loginName = $("#username").val(); $.ajax({ url : yUrl("/qrCode/checkLoginQrCode.do"), data:{ 'loginName':loginName, 'qrCodeLogin.randomCode':randomCode, 'qrCodeLogin.id':qrCodeLoginId }, type : "post", dataType : 'json', async : false, cache : false, error : function() { randomCode = 0; qrCodeLoginId = 0; showMessage("页面异常!"); $('#password').val(""); $("#qrcodeDiv").dialog('destroy').html(''); loginImg(); }, success : function(data) { if(data == 'success') { showMessage("验证成功!"); $("#qrcodeDiv").dialog('destroy').html(''); //开始登录 doLogin(); }else if(data == 'error'){ showMessage("验证失败!"); $('#password').val(""); $("#qrcodeDiv").dialog('destroy').html(''); loginImg(); }else{ setTimeout("scanWaitResult()", 2000); } } }); }else{ randomCode = 0; qrCodeLoginId = 0; if(time != 999){ showMessage("扫码超时,请在1分钟内使用【药数立方】小程序扫描二维码!"); } $("#qrcodeDiv").dialog('destroy').html(''); $('#password').val(""); loginImg(); } }