/** * * Basic * 所有页面的共用基础功能 * * */ var showNetwork = false; 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("----- 网络请求失败 ---------"); try { console.warn(JSON.stringify(this)); }catch (e) { console.warn(JSON.stringify(this.url)); console.warn(JSON.stringify(this.responseText)); } 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
\n
\n
\n
\n
New message
\n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
"; //var model = document.createElement("div"); if($("#modalContainer").length <= 0){ alert(a); return ; } $("#modalContainer").html(q); var modalO = $("alertModal"); if(modalO.length === 0){ alert(a); }else{ $("#alertModelLabel").text(b); $("#message-text").text(b); modalO.modal('show'); } } function getUserName(uid){ var uname = null; Users.list.forEach(function(val, aid, arr){ if(val.worker.staffId === uid){ uname = val.worker.staffName; } }); if(uname == null) { if(uid != 0) { get_data("oaStaff/list?staffId=" + uid, on_username_retn); return "[用户:"+uid+"]"; } else return "[用户:"+uid+"]"; }else{ return uname; } } function on_username_retn(obj, sta) { var uid = this.url.substring(this.url.indexOf("staffId=") + 8); let ruid = parseInt(uid); var out = first_parse(this, obj); if(out.list.length > 0){ Users.list.push({ uid : ruid, worker: out.list[0] }); } } function getSectorName(sectorId){ var secName = null; Sectors.list.forEach(function(val, aid, arr){ if(val.sector.sectorId === sectorId){ secName = val.sector.sectorName; } }); if(secName == null) { get_data("fcSector/list?sectorId=" + sectorId, on_secname_retn); return "[工位:"+sectorId+"]"; }else{ return secName; } } function on_secname_retn(obj, sta) { var secid = this.url.substring(this.url.indexOf("sectorId=") + 9); let rsecid = parseInt(secid); var out = first_parse(this, obj); if(out.list.length > 0){ Sectors.list.push({ secid : rsecid, sector: out.list[0] }); } } function getSectorId(spotId){ var secId = null; Sectors.list.forEach(function(val, aid, arr){ if(val.sector.spotId === spotId){ secId = val.sector.sectorId; } }); if(secId == null) { get_data("fcSectorSpot/list?spotId=" + spotId, on_secid_retn); return -1; }else{ return secId; } } function on_secid_retn(obj, sta) { var spotId = this.url.substring(this.url.indexOf("spotId=") + 7); let rsecid = parseInt(spotId); var out = first_parse(this, obj); if(out.list.length > 0){ Sectors.list.push({ secid : rsecid, sector: out.list[0] }); } } /** * Calc b/a+b * 100(precision = 2), when b is zero, return zero * @param a (pass) * @param b (fail) */ function get_factor(a,b){ if(a+b === 0){ return 0; }else{ return Math.floor(10000* b / (a+b) ) / 100; } } function setCookieWithTimeout(name, value, liveMinutes) { if (liveMinutes == undefined || liveMinutes == null) { liveMinutes = 60 * 2; } if (typeof (liveMinutes) != 'number') { liveMinutes = 60 * 2;//默认120分钟 } var minutes = liveMinutes * 60 * 1000; var exp = new Date(); exp.setTime(exp.getTime() + minutes + 8 * 3600 * 1000); //path=/表示全站有效,而不是当前页 document.cookie = name + "=" + value + ";path=/;expires=" + exp.toUTCString(); } function setCookie(c_name,value,expiredays) { var exdate=new Date() exdate.setDate(exdate.getDate()+expiredays) document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()) } function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "=") if (c_start!=-1) { c_start=c_start + c_name.length+1 c_end=document.cookie.indexOf(";",c_start) if (c_end==-1) c_end=document.cookie.length return unescape(document.cookie.substring(c_start,c_end)) } } return ""; } var userId = utils_get_param("userId"); function getUserId() { console.log("Original USERID : " + userId); var use = getCookie("doibyUser"); if (use == null || use === undefined || use.length <= 0) { location.href = "sign-in1.html?from=entrance-1&msg=nologin-mustauth"; return; } console.log("Got UID From COOKIE : " + use); try{ var mm = parseInt(use); if(mm <= 0){ }else{ userId = mm; } }catch (e) { location.href = "sign-in1.html?from=entrance-1&msg=cookie-wrong-format"; return; } console.log("Got UserId Eventually : " + userId); } $(document).ready(on_document_load); get_server_url();