/**
* @author 孙宇
*
* @requires jQuery,EasyUI
*
* panel关闭时回收内存,主要用于layout使用iframe嵌入网页时的内存泄漏问题
*/
$.fn.panel.defaults.onBeforeDestroy = function() {
var frame = $('iframe', this);
try {
if (frame.length > 0) {
for ( var i = 0; i < frame.length; i++) {
frame[i].contentWindow.document.write('');
frame[i].contentWindow.close();
}
frame.remove();
if ($.browser.msie) {
CollectGarbage();
}
}
} catch (e) {
}
};
/**
* 使panel和datagrid在加载时提示
*
* @author 孙宇
*
* @requires jQuery,EasyUI
*
*/
$.fn.panel.defaults.loadingMessage = '加载中....';
$.fn.datagrid.defaults.loadMsg = '加载中....';
/**
* @author 孙宇
*
* @requires jQuery,EasyUI
*
* 通用错误提示
*
* 用于datagrid/treegrid/tree/combogrid/combobox/form加载数据出错时的操作
*/
var easyuiErrorFunction = function(XMLHttpRequest) {
$.messager.progress('close');
//update-begin--Author:zhoujf Date:20170608 for:TASK #2058 【提示风格】断网后,点击下一页提示信息--------------------
try{
var emsg = XMLHttpRequest.responseText.substring(XMLHttpRequest.responseText.indexOf('错误描述'),XMLHttpRequest.responseText.indexOf('错误信息'));
if(emsg==undefined||emsg==''){
emsg = "网络异常!";
}
$.messager.alert('错误',emsg);
}catch(ex){
$.messager.alert('错误',XMLHttpRequest.responseText==''?'网络异常!':XMLHttpRequest.responseText);
}
//update-end--Author:zhoujf Date:20170608 for:TASK #2058 【提示风格】断网后,点击下一页提示信息--------------------
};
$.fn.datagrid.defaults.onLoadError = easyuiErrorFunction;
$.fn.treegrid.defaults.onLoadError = easyuiErrorFunction;
$.fn.tree.defaults.onLoadError = easyuiErrorFunction;
$.fn.combogrid.defaults.onLoadError = easyuiErrorFunction;
$.fn.combobox.defaults.onLoadError = easyuiErrorFunction;
$.fn.form.defaults.onLoadError = easyuiErrorFunction;
/**
* @author 孙宇
*
* @requires jQuery,EasyUI
*
* 为datagrid、treegrid增加表头菜单,用于显示或隐藏列,注意:冻结列不在此菜单中
*/
var createGridHeaderContextMenu = function(e, field) {
e.preventDefault();
var grid = $(this);/* grid本身 */
var headerContextMenu = this.headerContextMenu;/* grid上的列头菜单对象 */
if (!headerContextMenu) {
var tmenu = $('
').appendTo('body');
var fields = grid.datagrid('getColumnFields');
console.log('id='+grid.attr('id'));
storage=$.localStorage;if(!storage)storage=$.cookieStorage;
var cols = storage.get(grid.attr('id')+'hiddenColumns');
var init=true;
if(cols){
init=false;
}
for ( var i = 0; i < fields.length; i++) {
var fildOption = grid.datagrid('getColumnOption', fields[i]);
console.log(fields[i]+'='+fildOption.hidden);
if (!fildOption.hidden||fildOption.hidden==false) {
$('').html(fildOption.title).appendTo(tmenu);
} else {
if(init==false){
for(var j=0;j').html(fildOption.title).appendTo(tmenu);
}
}
}
}
}saveHeader();//龙金波,修改bug 先存一个表头的hidden初始状态,避免隐藏字段第一次保存时就不对了
headerContextMenu = this.headerContextMenu = tmenu.menu({
onClick : function(item) {
var field = $(item.target).attr('field');
if (item.iconCls == 'icon-ok') {
grid.datagrid('hideColumn', field);
$(this).menu('setIcon', {
target : item.target,
iconCls : 'icon-empty'
});saveHeader(field,true);//龙金波添加保存表头
} else if (item.iconCls == 'icon-empty') {
grid.datagrid('showColumn', field);
$(this).menu('setIcon', {
target : item.target,
iconCls : 'icon-ok'
});saveHeader(field,false);//龙金波添加保存表头
}else{
//恢复表头
}
}
});
}
headerContextMenu.menu('show', {
left : e.pageX,
top : e.pageY
});
};
$.fn.datagrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu;
$.fn.treegrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu;
/**
* @author 孙宇
*
* @requires jQuery,EasyUI
*
* 扩展validatebox,添加验证两次密码功能
*/
$.extend($.fn.validatebox.defaults.rules, {
eqPwd : {
validator : function(value, param) {
return value == $(param[0]).val();
},
message : '密码不一致!'
}
});
/**
* @author 夏悸
*
* @requires jQuery,EasyUI
*
* 扩展tree,使其支持平滑数据格式
*/
$.fn.tree.defaults.loadFilter = function(data, parent) {
var opt = $(this).data().tree.options;
var idFiled, textFiled, parentField;
if (opt.parentField) {
idFiled = opt.idFiled || 'id';
textFiled = opt.textFiled || 'text';
parentField = opt.parentField;
var i, l, treeData = [], tmpMap = [];
for (i = 0, l = data.length; i < l; i++) {
tmpMap[data[i][idFiled]] = data[i];
}
for (i = 0, l = data.length; i < l; i++) {
if (tmpMap[data[i][parentField]] && data[i][idFiled] != data[i][parentField]) {
if (!tmpMap[data[i][parentField]]['children'])
tmpMap[data[i][parentField]]['children'] = [];
data[i]['text'] = data[i][textFiled];
tmpMap[data[i][parentField]]['children'].push(data[i]);
} else {
data[i]['text'] = data[i][textFiled];
treeData.push(data[i]);
}
}
return treeData;
}
return data;
};
/**
* @author 孙宇
*
* @requires jQuery,EasyUI
*
* 扩展treegrid,使其支持平滑数据格式
*/
$.fn.treegrid.defaults.loadFilter = function(data, parentId) {
var opt = $(this).data().treegrid.options;
var idFiled, textFiled, parentField;
if (opt.parentField) {
idFiled = opt.idFiled || 'id';
textFiled = opt.textFiled || 'text';
parentField = opt.parentField;
var i, l, treeData = [], tmpMap = [];
for (i = 0, l = data.length; i < l; i++) {
tmpMap[data[i][idFiled]] = data[i];
}
for (i = 0, l = data.length; i < l; i++) {
if (tmpMap[data[i][parentField]] && data[i][idFiled] != data[i][parentField]) {
if (!tmpMap[data[i][parentField]]['children'])
tmpMap[data[i][parentField]]['children'] = [];
data[i]['text'] = data[i][textFiled];
tmpMap[data[i][parentField]]['children'].push(data[i]);
} else {
data[i]['text'] = data[i][textFiled];
treeData.push(data[i]);
}
}
return treeData;
}
return data;
};
/**
* @author 孙宇
*
* @requires jQuery,EasyUI
*
* 扩展combotree,使其支持平滑数据格式
*/
$.fn.combotree.defaults.loadFilter = $.fn.tree.defaults.loadFilter;
/**
* @author 孙宇
*
* @requires jQuery,EasyUI
*
* 防止panel/window/dialog组件超出浏览器边界
* @param left
* @param top
*/
var easyuiPanelOnMove = function(left, top) {
var l = left;
var t = top;
if (l < 1) {
l = 1;
}
if (t < 1) {
t = 1;
}
var width = parseInt($(this).parent().css('width')) + 14;
var height = parseInt($(this).parent().css('height')) + 14;
var right = l + width;
var buttom = t + height;
var browserWidth = $(window).width();
var browserHeight = $(window).height();
if (right > browserWidth) {
l = browserWidth - width;
}
if (buttom > browserHeight) {
t = browserHeight - height;
}
$(this).parent().css({/* 修正面板位置 */
left : l,
top : t
});
};
try {
$.fn.dialog.defaults.onMove = easyuiPanelOnMove;
$.fn.window.defaults.onMove = easyuiPanelOnMove;
$.fn.panel.defaults.onMove = easyuiPanelOnMove;
} catch (e) {
// TODO: handle exception
}
/**
* @author 孙宇
*
* @requires jQuery,EasyUI,jQuery cookie plugin
*
* 更换EasyUI主题的方法
*
* @param themeName
* 主题名称
*/
changeTheme = function(themeName) {
var $easyuiTheme = $('#easyuiTheme');
var url = $easyuiTheme.attr('href');
var href = url.substring(0, url.indexOf('themes')) + 'themes/' + themeName + '/easyui.css';
$easyuiTheme.attr('href', href);
var $iframe = $('iframe');
if ($iframe.length > 0) {
for ( var i = 0; i < $iframe.length; i++) {
var ifr = $iframe[i];
$(ifr).contents().find('#easyuiTheme').attr('href', href);
}
}
$.cookie('easyuiThemeName', themeName, {
expires : 7
});
};
/**
* @author 孙宇
*
* @requires jQuery
*
* 将form表单元素的值序列化成对象
*
* @returns object
*/
serializeObject = function(form) {
var o = {};
$.each(form.serializeArray(), function(index) {
if (o[this['name']]) {
o[this['name']] = o[this['name']] + "," + this['value'];
} else {
o[this['name']] = this['value'];
}
});
return o;
};
/**
* @author 孙宇
*
* 增加formatString功能
*
* 使用方法:formatString('字符串{0}字符串{1}字符串','第一个变量','第二个变量');
*
* @returns 格式化后的字符串
*/
formatString = function(str) {
for ( var i = 0; i < arguments.length - 1; i++) {
str = str.replace("{" + i + "}", arguments[i + 1]);
}
return str;
};
/**
* @author 孙宇
*
* 接收一个以逗号分割的字符串,返回List,list里每一项都是一个字符串
*
* @returns list
*/
stringToList = function(value) {
if (value != undefined && value != '') {
var values = [];
var t = value.split(',');
for ( var i = 0; i < t.length; i++) {
values.push('' + t[i]);/* 避免他将ID当成数字 */
}
return values;
} else {
return [];
}
};
/**
* @author 孙宇
*
* @requires jQuery
*
* 改变jQuery的AJAX默认属性和方法
*/
$.ajaxSetup({
type : 'POST',
error : function(XMLHttpRequest, textStatus, errorThrown) {
$.messager.progress('close');
$.messager.alert('错误', XMLHttpRequest.responseText==''?'网络异常!':XMLHttpRequest.responseText);
}
});
function clearLocalstorage(){
storage=$.localStorage;
if(!storage)
storage=$.cookieStorage;
storage.removeAll();
$.messager.alert('信息', "浏览器缓存清除成功!");
}
//update-begin--Author:钟世云 Date:20150610 for:online支持树配置--------------------
//如果在最外层页面,创建tools对象
if (window.top == window) {
var tools = {msg : "这是一个工具对象,可以把常用属性放到这个对象上。如:在任意页面用top.currDatagri可以获取当前的datagrid"};
}
//update-end--Author:钟世云 Date:20150610 for:online支持树配置----------------------