271 lines
6.3 KiB
JavaScript
271 lines
6.3 KiB
JavaScript
$.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;i<this.length;i++){
|
||
var d=this[i];
|
||
if(typeof o.key==='string'){
|
||
d=d[o.key]
|
||
}
|
||
if(d===null||d===''||isNaN(d)){
|
||
d=o.sub;
|
||
}else{
|
||
d=Number(d*o.magni+o.offset).toFixed(o.decimal);
|
||
if(!o.strict){
|
||
d=Number(d);
|
||
}
|
||
if(i===0){
|
||
max=d;
|
||
min=d;
|
||
sum=Number(d);
|
||
len++;
|
||
}else{
|
||
if(Number(d)>max){
|
||
max=d;
|
||
}else if(Number(d)<min){
|
||
min=d;
|
||
}
|
||
sum+=Number(d);
|
||
len++;
|
||
}
|
||
}
|
||
arr.push(d);
|
||
}
|
||
return {
|
||
arr:arr,
|
||
max:max,
|
||
min:min,
|
||
sum:sum,
|
||
avglen:len
|
||
}
|
||
}
|