/** * * Basic * 所有页面的共用基础功能 * * */ function utils_get_param(name){ var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); if(r!=null)return unescape(r[2]); return null; } function reloadPage(){ location.reload() } let Queue = {THRESHOLD: 1000, IS_LOADED : false, nowuse : 0, SVR_URL:"http://localhost:8803/server/", groupsCount : 0, groups:[], shouldStop : false, backup:["http://localhost:8803/server/", "/server/", "http://172.30.84.3:8803/server/","https://1.niimei.com/server/"] , list:[], temporary:0, errorCount:0}; let Users = {list : []}; let Sectors = {list : []}; function get_server_url() { let output = $.ajax({url: Queue.SVR_URL + "/fcFlow/list", timeout:1000 }).fail(on_check_fail).done(function(){ Queue.IS_LOADED = true; console.warn("Using SERVER : "); console.warn(Queue.SVR_URL); setTimeout(parse_queue, 50); }); } function on_check_fail(){ if(Queue.nowuse === Queue.backup.length - 1){ console.warn("Backup Failed : " + Queue.backup[Queue.nowuse]); console.warn(this); var out = ""; Queue.backup.forEach(function(val,index,arr){ out += val + "\n"; }); send_alert("抱歉, 服务器连接失败! \n 请确认 " + out + "其中之一可用"); }else{ Queue.nowuse ++; Queue.SVR_URL = Queue.backup[Queue.nowuse]; $.ajax({url: Queue.SVR_URL + "/fcFlow/list", timeout:1000 }).fail(on_check_fail).done(function(){ Queue.IS_LOADED = true; console.warn("Using SERVER : "); console.warn(Queue.SVR_URL); setTimeout(parse_queue, 50); }); } } function get_data(url, callback, scope) { Queue.list.push({url:url, callback:callback, gid:-1, scope:scope}); } function new_data_group(groupName, callback){ var gid = -1; Queue.groups.forEach(function(val,index,arr){ if(val.groupName === groupName){ gid = val.gid; } }); if(gid === -1) { gid = Queue.groupsCount; Queue.groupsCount++; Queue.groups.push({ gid: gid, groupName:groupName, callme: callback, counter:0 }); } return gid; } function group_get_data(groupName, url, callback){ var gid = -1; Queue.groups.forEach(function(val,index,arr){ if(val.groupName === groupName){ gid = val.gid; } }); if(gid === -1) { send_alert("Group 方法使用错误!!!") } Queue.list.push({url:url, callback:callback, gid:gid}); } function parse_queue(){ console.log("Queue Length : " + Queue.list.length); if(Queue.temporary > new Date().getTime()){ for(i = 0; i < Queue.list.length; i++) { Queue.list.pop(); } } Queue.temporary = 0; if(Queue.list.length > 0){ let one = Queue.list.pop(); if(one.gid === -1) { request_data(one.url, one.callback, one.scope); }else{ g_request_data(one.url, one.callback, one.gid, one.scope); } } if(Queue.shouldStop == false) { setTimeout(parse_queue, 50); } } function request_data(url, callback, scope){ $.ajax({ url: Queue.SVR_URL + url, apiName: url, sendTime: new Date(), callme: callback, callerThis: scope }).done(on_dat_success).fail(on_fail); } function g_request_data(url, callback, gid){ $.ajax({ url: Queue.SVR_URL + url, apiName: url, sendTime: new Date(), gid: gid, callme: callback }).done(on_gp_success).fail(on_fail); } function on_gp_success(a,b) { var gid = this.gid; if(check_if_success(a,b)) { this.callme(a,b); Queue.groups.forEach(function(v,i,a){ if(v.gid === gid){ v.counter ++; v.callme(v); } }); } } function on_dat_success(a,b){ if(check_if_authfail(a,b)){ setCookieWithTimeout("doibyUser","",-10); location.href = "sign-in1.html?from=entrance-5&msg=server-redirect-detected"; return; } if(check_if_success(a,b)) { this.callme(a,b); } } function check_if_authfail(a){ if(a == null || typeof a !== "string") { return false; }else{ if(a.indexOf("login?from=") > 0 || a.startsWith("") || a.indexOf("") > 0){ return true; } } return false; } function check_if_success(a,b){ if(typeof a === "string"){ try { a = JSON.parse(a); }catch (e) { console.warn("=---------- 异常 -----------="); console.warn(a); console.warn("=----------------------------="); send_alert("信息失败 : "+e); return; } }else if(typeof a === "undefined"){ console.warn("=---------- 异常 -----------="); console.warn(a); console.warn("=------------------------------="); send_alert("信息失败 : "+e); return; } if(a.ret === "10000") { return true; }else{ console.trace(); console.error(b); console.error(JSON.stringify(a)); send_alert("查询失败 : 请参阅控制台输出! "); } return false; } function on_fail(msg, sta) { Queue.errorCount += 1; if(Queue.errorCount >= 10){ Queue.errorCount = 0; Queue.temporary = new Date().getTime() + 30*1000; Queue.shouldStop = true; console.warn("----- Too many failure, temporary stop HTTP ------"); send_alert("很抱歉,网络错误数量过多,暂时终止HTTP功能30s"); } let vurl = ""; try { vurl = " : "+this.url.substring(7, 12); }catch (e) { vurl = ""; } send_alert("很抱歉,网络错误,请查看 Console" + vurl); console.warn("----- 网络请求失败 ---------"); console.warn(JSON.stringify(this)); console.warn("-----------msg-------------"); console.warn(JSON.stringify(msg)); console.warn("-----------sta--------------"); console.warn(JSON.stringify(sta)); console.warn("----------------------------"); } function first_parse(ajax, obj) { if (typeof obj === "string") { obj = JSON.parse(obj); } if (typeof obj !== "object") { console.warn(ajax); throw "Error ! Parsing JSON failed ." + JSON.stringify(obj); } if (obj.ret === "10000") { return obj.model; } else { console.warn(ajax); throw "Error ! Server returned error." + JSON.stringify(obj); } } function on_document_load() { if(typeof (page_document_load) !== "undefined"){ page_document_load(); } if(typeof (resizeAll) !== "undefined"){ resizeAll(); } } var AlertClosingTimeout = 0; function send_alert(a, b){ if(Queue.shouldStop) return; $("#mpAlert").html(a); $("#mpAlert").show(); if(AlertClosingTimeout > 0) { clearTimeout(AlertClosingTimeout); } AlertClosingTimeout = setTimeout(function(){ if ($("#mpAlert").html().indexOf("<") >= 0) { return; } $("#mpAlert").hide(); }, 10000); return; var q = "\n