/**
|
* 本文件中的js拓展由宇神孙宇和夏悸郭华编写,
|
* 用于滕州数采,向以上两位同志开源精神致敬!
|
*/
|
|
/**
|
* 使panel和datagrid在加载时提示
|
*
|
* @author
|
*
|
* @requires jQuery,EasyUI
|
*
|
*/
|
$.fn.panel.defaults.loadingMessage = '加载中....';
|
$.fn.datagrid.defaults.loadMsg = '加载中....';
|
|
/**
|
* @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].src = '';
|
frame[i].contentWindow.document.write('');
|
frame[i].contentWindow.close();
|
}
|
frame.remove();
|
if (navigator.userAgent.indexOf("MSIE") > 0) {// IE特有回收内存方法
|
try {
|
CollectGarbage();
|
} catch (e) {
|
}
|
}
|
}
|
} catch (e) {
|
}
|
};
|
|
/**
|
* @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
|
});
|
};
|
$.fn.dialog.defaults.onMove = easyuiPanelOnMove;
|
$.fn.window.defaults.onMove = easyuiPanelOnMove;
|
$.fn.panel.defaults.onMove = easyuiPanelOnMove;
|
|
/**
|
* @author
|
*
|
* @requires jQuery,EasyUI
|
*
|
* 通用错误提示
|
*
|
* 用于datagrid/treegrid/tree/combogrid/combobox/form加载数据出错时的操作
|
*/
|
var easyuiErrorFunction = function(XMLHttpRequest) {
|
$.messager.progress('close');
|
$.messager.alert('系统提示', XMLHttpRequest.responseText);
|
};
|
$.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;
|
|
/*var easyuiSuccessFunction = function(node,data) {
|
alert(data);
|
};
|
$.fn.datagrid.defaults.onLoadSuccess = easyuiSuccessFunction;
|
$.fn.treegrid.defaults.onLoadSuccess = easyuiSuccessFunction;
|
$.fn.tree.defaults.onLoadSuccess = easyuiSuccessFunction;
|
$.fn.combogrid.defaults.onLoadSuccess = easyuiSuccessFunction;
|
$.fn.combobox.defaults.onLoadSuccess = easyuiSuccessFunction;
|
$.fn.form.defaults.onLoadSuccess = easyuiSuccessFunction;*/
|
/**
|
* @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 = $('<div style="width:100px;"></div>').appendTo('body');
|
var fields = grid.datagrid('getColumnFields');
|
for ( var i = 0; i < fields.length; i++) {
|
var fildOption = grid.datagrid('getColumnOption', fields[i]);
|
if (!fildOption.hidden) {
|
$('<div iconCls="tick" field="' + fields[i] + '"/>').html(fildOption.title).appendTo(tmenu);
|
} else {
|
$('<div iconCls="bullet_blue" field="' + fields[i] + '"/>').html(fildOption.title).appendTo(tmenu);
|
}
|
}
|
headerContextMenu = this.headerContextMenu = tmenu.menu({
|
onClick : function(item) {
|
var field = $(item.target).attr('field');
|
if (item.iconCls == 'tick') {
|
grid.datagrid('hideColumn', field);
|
$(this).menu('setIcon', {
|
target : item.target,
|
iconCls : 'bullet_blue'
|
});
|
} else {
|
grid.datagrid('showColumn', field);
|
$(this).menu('setIcon', {
|
target : item.target,
|
iconCls : 'tick'
|
});
|
}
|
}
|
});
|
}
|
headerContextMenu.menu('show', {
|
left : e.pageX,
|
top : e.pageY
|
});
|
};
|
//$.fn.datagrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu;
|
//$.fn.treegrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu;
|
|
/**
|
* grid tooltip参数
|
*
|
* @author
|
*/
|
var gridTooltipOptions = {
|
tooltip : function(jq, fields) {
|
return jq.each(function() {
|
var panel = $(this).datagrid('getPanel');
|
if (fields && typeof fields == 'object' && fields.sort) {
|
$.each(fields, function() {
|
var field = this;
|
bindEvent($('.datagrid-body td[field=' + field + '] .datagrid-cell', panel));
|
});
|
} else {
|
bindEvent($(".datagrid-body .datagrid-cell", panel));
|
}
|
});
|
|
function bindEvent(jqs) {
|
jqs.mouseover(function() {
|
var content = $(this).text();
|
if (content.replace(/(^\s*)|(\s*$)/g, '').length > 5) {
|
$(this).tooltip({
|
content : content,
|
trackMouse : true,
|
position : 'bottom',
|
onHide : function() {
|
$(this).tooltip('destroy');
|
},
|
onUpdate : function(p) {
|
var tip = $(this).tooltip('tip');
|
if (parseInt(tip.css('width')) > 500) {
|
tip.css('width', 500);
|
}
|
}
|
}).tooltip('show');
|
}
|
});
|
}
|
}
|
};
|
/**
|
* Datagrid扩展方法tooltip 基于Easyui 1.3.3,可用于Easyui1.3.3+
|
*
|
* 简单实现,如需高级功能,可以自由修改
|
*
|
* 使用说明:
|
*
|
* 在easyui.min.js之后导入本js
|
*
|
* 代码案例:
|
*
|
* $("#dg").datagrid('tooltip'); 所有列
|
*
|
* $("#dg").datagrid('tooltip',['productid','listprice']); 指定列
|
*
|
* @author
|
*/
|
$.extend($.fn.datagrid.methods, gridTooltipOptions);
|
|
/**
|
* Treegrid扩展方法tooltip 基于Easyui 1.3.3,可用于Easyui1.3.3+
|
*
|
* 简单实现,如需高级功能,可以自由修改
|
*
|
* 使用说明:
|
*
|
* 在easyui.min.js之后导入本js
|
*
|
* 代码案例:
|
*
|
* $("#dg").treegrid('tooltip'); 所有列
|
*
|
* $("#dg").treegrid('tooltip',['productid','listprice']); 指定列
|
*
|
* @author
|
*/
|
$.extend($.fn.treegrid.methods, gridTooltipOptions);
|
|
/**
|
* @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,使其可以获取实心节点
|
*/
|
$.extend($.fn.tree.methods, {
|
getCheckedExt : function(jq) {// 获取checked节点(包括实心)
|
var checked = $(jq).tree("getChecked");
|
var checkbox2 = $(jq).find("span.tree-checkbox2").parent();
|
$.each(checkbox2, function() {
|
var node = $.extend({}, $.data(this, "tree-node"), {
|
target : this
|
});
|
checked.push(node);
|
});
|
return checked;
|
},
|
getSolidExt : function(jq) {// 获取实心节点
|
var checked = [];
|
var checkbox2 = $(jq).find("span.tree-checkbox2").parent();
|
$.each(checkbox2, function() {
|
var node = $.extend({}, $.data(this, "tree-node"), {
|
target : this
|
});
|
checked.push(node);
|
});
|
return checked;
|
}
|
});
|
|
/**
|
* @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
|
*
|
* 创建一个模式化的dialog
|
*
|
* @returns $.modalDialog.handler 这个handler代表弹出的dialog句柄
|
*
|
* @returns $.modalDialog.xxx 这个xxx是可以自己定义名称,主要用在弹窗关闭时,刷新某些对象的操作,可以将xxx这个对象预定义好
|
*/
|
$.modalDialog = function(options) {
|
var opts = $.extend({
|
title : ' ',
|
width : 640,
|
height : 480,
|
modal : true,
|
onClose : function() {
|
$(this).dialog('destroy');
|
}
|
}, options);
|
opts.modal = true;// 强制此dialog为模式化,无视传递过来的modal参数
|
if (options.url) {
|
opts.content = '<iframe id="" src="' + options.url + '" allowTransparency="true" scrolling="auto" width="100%" height="98%" frameBorder="0" name=""></iframe>';
|
}
|
return $('<div/>').dialog(opts);
|
};
|