$.ajaxSetup({ error : function(xhr, textStatus, errorThrown) { var status = xhr.status; // http status var msg = xhr.responseText; var json = xhr.responseJSON; var message = ""; if (status == 400) { console.error(message); } else if (status == 401) { console.error('access_token过期'); // sessionStorage.removeItem("access_token"); // sessionStorage.removeItem("refresh_token"); location.href = '/'; } else if (status == 403) { message = "未授权"; console.error(message); } else if (status == 404) { if(msg.path== "/login"){ location.href = '/'; } } else if (status == 500) { message = '系统错误:' + message + ',请刷新页面,或者联系管理员'; console.error(message); } else if (status == 504) { message = '服务器关闭或请求超时:' + message; console.error(message); }else{ if(msg != undefined && msg != ""){ try { var response = JSON.parse(msg); var exception = response.exception; } catch (error) { var exception = msg; } if(exception){ message = exception; }else{ message = response.message; } } } } }); $.i18n=function(opt){ if(!opt){opt={}} if(opt.language===undefined){ opt.language=localStorage.getItem('i18n'); if(!opt.language){ opt.language=navigator.language=='zh-CN'?'cn':'en'; } } if(typeof opt.url!=='string'||opt.url==''){ opt.url='/locales/'+opt.language+'/translation.json' } $.ajax({ url:opt.url, type:'get', dataType:'json', success:function(res){ var temp=res; $('[data-i18n]').each(function(i,e){ var p=$(e).attr('data-i18n').split(/[\]\.]/); if(p[0].indexOf('[')===-1){ p.unshift(''); } var len=p.length; var d=temp[p[1]]; while(d[p[p.length+1-(--len)]]){ d=d[p[p.length+1-len]]; } if(typeof d!=='string'&&typeof d!=='number'){d='';} p[0]==='[value'?$(e).val(d):p[0]===''?$(e).html(d):$(e).attr(p[0].substring(1),d); }); if(typeof opt.finish==='function'){ opt.finish(temp); }else{ $.i18nData=temp; } } }); } function iframeSrc(id,src){ document.getElementById(id).setAttribute('src',src); } function getLocal(){ return window.navData===undefined?parent.location:location; } function initSocket(obj) { var defaul = { url: 'websocket', flag: 1, socket: '', Timer: '', times:5, data:{}, autoReConnect: 5, //关闭连接 closeWebSocket: function () { this.socket.close(); }, //发送消息 send: function (message) { this.data=message; message.flag=1; this.socket.send(JSON.stringify(message)); }, //发送心跳包 heatPack: function () { var me=this; this.Timer = setTimeout(function () { me.socket.send(JSON.stringify({flag: 0})); }, 60000); }, connection: function () { try { var me=this; if (typeof (WebSocket) == "undefined") { console.log("您的浏览器不支持WebSocket"); } else { //获取域名和端口 var _local_ = getLocal().href.split('//')[1].split('/')[0]; //实现化WebSocket对象,指定要连接的服务器地址与端口 建立连接 var protocol=window.location.protocol==='https:'?'wss://':'ws://'; me.socket = new WebSocket(protocol + _local_ + "/ws/" + me.url); // me.socket = new WebSocket( "ws://192.168.77.147:1120/ws/" + me.url); //打开事件 me.socket.onopen = function () { // me.times=me.autoReConnect; me.open(me); }; //获得消息事件 me.socket.onmessage = function (msg) { //清除上一个心跳任务,添加下一个心跳任务 clearTimeout(me.Timer); me.heatPack(); var data = new Function('return '+msg.data)(); if (data.flag != 0) { me.times=me.autoReConnect; me.success(data); } //发现消息进入 调后台获取 //getCallingList(); }; //关闭事件 me.socket.onclose = function () { if(--me.times>=0){ setTimeout(function(){ me.reconn(); },8000) } me.close(); }; //发生了错误事件 me.socket.onerror = function () { console.log('err') me.error(); } } } catch (error) { console.error(error) } }, open:function(){ var me=this; me.send(me.data); }, close:function(){ }, error:function(){ }, reconn:function(){ var me=this; if(me.socket.readyState<1.5){ me.closeWebSocket(); } // me.open=function(){ // me.send(me.data); // } me.socket=''; me.connection(); }, success: function (msg) { console.log(msg) } } Object.assign(defaul, obj); defaul.connection(); return defaul; } function offCheckAll(name){ $('input[name="'+name+'"]').attr('checked',false) } /** * @desc 图表展示数据通用过滤方法 * @param param 入参对象 * key 默认值:false, 操作字段的键名,当该值不为字符串时,默认取数组每个下标 * sub 默认值:'', 不是数字类型的字段用该值替换 * decimal 默认值:0, 保留小数位数 * strict 默认值:false, 是否强制保留小数位数 * offset 默认值:0, 偏移量 * magni 默认值:1 倍率 * @return 返回一个对象,包括: * arr 转换后的数组, * max 最大值, * min 最小值, * sum 求和, * avglen 有数值的个数. */ Array.prototype.itemToNumber=function(param){ if(typeof param!=='object'){param={}} var defalut={ key:false, //操作字段的键名,当该值不为字符串时,默认取数组每个下标 sub:'', //不是数字类型的字段用该值替换 decimal:0, //保留小数位数 strict:false, //是否强制保留小数位数 offset:0, //偏移量 magni:1 //倍率 } var o=Object.assign(defalut,param); for(var i=0,arr=[],max,min,sum,len=0;imax){ max=d; }else if(Number(d)