You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

378 lines
14 KiB
Plaintext

11 months ago
/// <reference path="easyUI/jquery-1.8.0.min.js" />
/// <reference path="easyUI/jquery.easyui.min.js" />
//added by liuxc,2014-12-1
//此文件可用于存放EasyUI的公用JS方法建议都给JS方法加上注释Demo如下
function InitOKCancelText() {
if ($.messager == null || $.messager == undefined)
return;
if ($.messager.defaults == null && $.messager.defaults == undefined)
$.messager.defaults.ok = "确定";
if ($.messager.defaults == null && $.messager.defaults == undefined)
$.messager.defaults.cancel = "取消";
}
function OpenEasyUiDialog(url, iframeId, dlgTitle, dlgWidth, dlgHeight, dlgIcon, showBtns, okBtnFunc, okBtnFuncArgs, dockObj, dlgClosedFunc) {
InitOKCancelText();
///<summary>使用EasyUiDialog打开一个页面</summary>
///<param name="url" type="String">页面链接</param>
///<param name="iframeId" type="String">嵌套url页面的iframe的id在okBtnFunc中可以通过document.getElementById('eudlgframe').contentWindow获取该页面然后直接调用该页面的方法比如获取选中值</param>
///<param name="dlgTitle" type="String">Dialog标题</param>
///<param name="dlgWidth" type="int">Dialog宽度</param>
///<param name="dlgHeight" type="int">Dialog高度</param>
///<param name="dlgIcon" type="String">Dialog图标必须是一个样式class</param>
///<param name="showBtns" type="Boolean">Dialog下方是否显示“确定”“取消”按钮如果显示则后面的okBtnFunc参数要填写</param>
///<param name="okBtnFunc" type="Function">点击“确定”按钮调用的方法</param>
///<param name="okBtnFuncArgs" type="Object">okBtnFunc方法使用的参数</param>
///<param name="dockObj" type="Object">Dialog绑定的dom对象随此dom对象有尺寸变化而变化document.getElementById('mainDiv')</param>
///<param name="dlgClosedFunc" type="Function">窗体关闭调用的方法注意此方法中不能再调用dialog中页面的内容</param>
// var inIframe = window.frameElement != null && window.frameElement.nodeName == 'IFRAME',
// doc = inIframe ? window.parent.document : window.document;
var dlg = $('#eudlg');
var isTheFirst;
if (dlg.length == 0) {
isTheFirst = true;
var divDom = document.createElement('div');
divDom.setAttribute('id', 'eudlg');
document.body.appendChild(divDom);
dlg = $('#eudlg');
//dlg.append("<iframe frameborder='0' src='' scrolling='auto' id='" + iframeId + "' style='width:100%;height:100%'></iframe>");
}
if (dlg.length == 1 && $('#' + iframeId).length == 0) {
dlg.children().remove();
dlg.empty();
dlg.html("");
dlg.append("<iframe frameborder='0' src='' scrolling='auto' id='" + iframeId + "' style='width:100%;height:97%'></iframe>");
}
if (dlg.length == 1 && $('#' + iframeId).length == 0) {
console.log("never happend");
dlg.html("<iframe frameborder='0' src='' scrolling='auto' id='" + iframeId + "' style='width:100%;height:97%'></iframe>");
}
if (typeof window.doCloseDialog != "function") {
window.doCloseDialog = function () {
dlg.dialog("close");
};
// 当弹出框未获得焦点时触发
$(document).bind("keyup", function (e) {
e = e || window.event;
var key = e.keyCode || e.which || e.charCode;
if (key == 27) {
if (typeof doCloseDialog === 'function') {
doCloseDialog.call();
}
}
});
}
//此处为防止在一个页面使用多次此方法时传进的iframeId不同造成找不到非第一次创建的iframe的错误而设置的
//todo:此处暂时有问题同一个页面调用此方法传进的iframeId必须相同否则会出现问题此问题有待以后解决
// if ($('#' + iframeId).length == 0) {
// dlg.empty();
// dlg.append("<iframe frameborder='0' src='' scrolling='auto' id='" + iframeId + "' style='width:100%;height:100%'></iframe>");
// }
//处理定位外层容器尺寸变化事件
if (dockObj != null && dockObj != undefined) {
var dobj = $(dockObj);
dlgWidth = dobj.innerWidth() - 20;
dlgHeight = dobj.innerHeight() - 20;
if (isTheFirst) {
$(dockObj).resize(function () {
var obj = $(this);
$('#eudlg').dialog('resize', {
width: obj.innerWidth() - 20,
height: obj.innerHeight() - 40
});
});
}
}
dlg.dialog({
title: dlgTitle,
width: dlgWidth,
height: dlgHeight,
iconCls: dlgIcon,
resizable: true,
modal: true,
onClose: function () {
/*防止缓存,切换页面不能显示问题*/
$("#eudlg").remove();
if (dlgClosedFunc) {
dlgClosedFunc();
}
},
cache: false
});
if (showBtns && okBtnFunc) {
dlg.dialog({
buttons: [{
text: '确定',
handler: function () {
if (okBtnFunc(okBtnFuncArgs) == false) {
return;
}
dlg.dialog('close');
$('#' + iframeId).attr('src', '');
}
}, {
text: '取消',
handler: function () {
dlg.dialog('close');
$('#' + iframeId).attr('src', '');
}
}]
});
}
else {
dlg.dialog({
buttons: null
});
}
dlg.dialog('open');
$('#' + iframeId).attr('src', url);
}
function OpenEasyUiSampleEditDialog(editPropertyName, editType, oldValue, okBtnFunc, okBtnFuncArgs, isMultiLine, dlgIcon, dlgWidth, dlgHeight) {
InitOKCancelText();
///<summary>使用EasyUiDialog打开一个含有1个字段文本框的编辑页面</summary>
///<param name="editPropertyName" type="String">当前编辑的字段中文名称</param>
///<param name="editType" type="String">编辑类型,比如:新建、编辑等</param>
///<param name="oldValue" type="String">编辑时,字段的旧文本值</param>
///<param name="okBtnFunc" type="Function">点击“确定”按钮调用的方法</param>
///<param name="okBtnFuncArgs" type="Object">okBtnFunc方法使用的参数</param>
///<param name="isMultiLine" type="Boolean">是否显示多行输入文本框</param>
///<param name="dlgIcon" type="String">Dialog图标必须是一个样式class</param>
///<param name="dlgWidth" type="int">Dialog宽度</param>
///<param name="dlgHeight" type="int">Dialog高度</param>
var dlgId = isMultiLine ? 'eumeditdlg' : 'eueditdlg',
dlgLableId = dlgId + 'label',
dlgTxtId = dlgId + 'txt',
dlg = $('#' + dlgId),
dw = dlgWidth || 380,
dh = dlgHeight || 160 + (isMultiLine ? 24 * 3 : 24),
tw = dw - 56,
th = dh - 160;
if (dlg.length == 0) {
var divDom = document.createElement('div');
divDom.setAttribute('id', dlgId);
document.body.appendChild(divDom);
dlg = $('#' + dlgId);
dlg.append("<div style='padding:10px'><span id='" + dlgLableId + "'>请输入" + editPropertyName + "</span>:<br />" +
"<" + (isMultiLine ? "textarea" : "input type='text'") + " id='" + dlgTxtId + "' style='width:" + tw + "px;height:" + th + "px;line-height:24px;' /></div>");
//选中处理
$('#' + dlgTxtId).focus(function () {
this.select();
});
}
else {
$('#' + dlgLableId).text('请输入' + editPropertyName);
$('#' + dlgTxtId).css('width', tw + 'px').css('height', th + 'px');
}
if (oldValue) {
$('#' + dlgTxtId).val(oldValue);
}
dlg.dialog({
title: editType + editPropertyName,
width: dw,
height: dh,
iconCls: dlgIcon,
resizable: false,
modal: true,
buttons: [{
text: '确定',
handler: function () {
if (okBtnFunc) {
if (okBtnFunc($('#' + dlgTxtId).val(), okBtnFuncArgs) == false) {
$('#' + dlgTxtId).focus();
return;
}
dlg.dialog('close');
$('#' + dlgTxtId).val('');
}
}
}, {
text: '取消',
handler: function () {
dlg.dialog('close');
$('#' + dlgTxtId).val('');
}
}]
});
dlg.dialog('open');
$('#' + dlgTxtId).focus();
}
function OpenEasyUiDialogForSingleHtml(url, dlgTitle, dlgWidth, dlgHeight, dlgIcon, showBtns, okBtnFunc, okBtnFuncArgs) {
InitOKCancelText();
///<summary>使用EasyUiDialog打开一个页面</summary>
///<param name="url" type="String">页面链接</param>
///<param name="dlgTitle" type="String">Dialog标题</param>
///<param name="dlgWidth" type="int">Dialog宽度</param>
///<param name="dlgHeight" type="int">Dialog高度</param>
///<param name="dlgIcon" type="String">Dialog图标必须是一个样式class</param>
///<param name="showBtns" type="Boolean">Dialog下方是否显示“确定”“取消”按钮如果显示则后面的okBtnFunc参数要填写</param>
///<param name="okBtnFunc" type="Function">点击“确定”按钮调用的方法</param>
///<param name="okBtnFuncArgs" type="Object">okBtnFunc方法使用的参数</param>
var dlg = $('#euhtmldlg');
var isTheFirst;
if (dlg.length == 0) {
isTheFirst = true;
var divDom = document.createElement('div');
divDom.setAttribute('id', 'euhtmldlg');
document.body.appendChild(divDom);
dlg = $('#euhtmldlg');
}
dlg.dialog({
title: dlgTitle,
width: dlgWidth || 800,
height: dlgHeight || 495,
iconCls: dlgIcon,
resizable: true,
modal: true,
href: url,
cache: false
});
if (showBtns && okBtnFunc) {
dlg.dialog({
buttons: [{
text: '确定',
iconCls: 'icon-save',
handler: function () {
okBtnFunc(okBtnFuncArgs)
dlg.dialog('close');
//dlg.dialog({ href: '' });
}
}, {
text: '取消',
iconCls: 'icon-cancel',
handler: function () {
dlg.dialog('close');
//dlg.dialog({ href: '' });
}
}]
});
}
else {
dlg.dialog({
buttons: null,
onClose: function () {
//dlg.dialog({ href: '' });
}
});
}
dlg.dialog('open');
}
//打开.
function OpenEasyUiDialogExt(url, title, w, h, isReload) {
OpenEasyUiDialog(url, "eudlgframe", title, w, h, "icon-property", true, null, null, null, function () {
if (isReload == true) {
Reload();
}
});
}
function OpenEasyUiDialogExtCloseFunc(url, title, w, h, closeFunc) {
OpenEasyUiDialog(url, "eudlgframe", title, w, h, "icon-property", true, null, null, null, closeFunc);
}
function OpenEasyUiConfirm(msg, okBtnFunc, okBtnFuncArgs) {
InitOKCancelText();
///<summary>打开EasyUiConfirm确认框</summary>
///<param name="msg" type="String">确认消息</param>
///<param name="okBtnFunc" type="Function">点击“确定”按钮调用的方法</param>
///<param name="okBtnFuncArgs" type="Object">okBtnFunc方法使用的参数</param>
$.messager.confirm('询问', msg, function (r) {
if (r && okBtnFunc) {
okBtnFunc(okBtnFuncArgs);
}
});
}
function EasyUiMenuShowForCheckedItems(menuid, itemChecks) {
InitOKCancelText();
///<summary>EasyUi Menu中的checkbox项的显示菜单状态处理方法</summary>
///<param name="menuid" type="String">menu的id</param>
///<param name="itemChecks" type="Array">各checkbox item的选中信息格式[{id:'各checkbox item id',checked:true},...]</param>
var menu = $('#' + menuid)[0];
$.each(itemChecks, function () {
$('#' + menuid).menu('setIcon', { target: $('#' + this.id)[0], iconCls: this.checked ? 'icon-ok' : 'icon-xxxx' });
});
}
function EasyUiCheckedMenuItemClick(menuid, checkitemid) {
InitOKCancelText();
///<summary>EasyUi Menu中的checkbox项的按钮选中/取消选中单击处理方法此处checkbox项是一个虚拟的本身easyui中不存在</summary>
///<param name="menuid" type="String">menu的id</param>
///<param name="checkitemid" type="String">复选项的itemid</param>
var item = $('#' + menuid).menu('getItem', $('#' + checkitemid)[0]),
newIconCls = 'icon-xxxx';
if (!item.iconCls || item.iconCls != 'icon-ok') {
newIconCls = 'icon-ok';
}
$('#' + menuid).menu('setIcon', { target: $('#' + checkitemid)[0], iconCls: newIconCls });
}
function EasyUiMenuItemsCheckOnlyOne(menuid, submenuid, checkitemid, groupItemIdPrefix) {
InitOKCancelText();
///<summary>操作EasyUi Menu中的多checkbox项选一项的处理方法要求这多个item的id前缀一致</summary>
///<param name="menuid" type="String">menu的id</param>
///<param name="submenuid" type="String">如果这些项处于menu的一个子级菜单中请填写这个子级菜单项的项级item的id</param>
///<param name="checkitemid" type="String">中选中项的itemid</param>
///<param name="groupItemIdPrefix" type="String">id前缀</param>
var menu = submenuid ? $('#' + submenuid)[0] : $('#' + menuid)[0];
for (var i = 0, j = menu.children.length; i < j; i++) {
if (menu.children[i].className.indexOf('menu-item') == -1) continue;
if (menu.children[i].id == checkitemid) {
$('#' + menuid).menu('setIcon', { target: menu.children[i], iconCls: 'icon-ok' });
}
else if(groupItemIdPrefix && menu.children[i].id.length > groupItemIdPrefix.length && menu.children[i].id.substr(0, groupItemIdPrefix.length) == groupItemIdPrefix) {
$('#' + menuid).menu('setIcon', { target: menu.children[i], iconCls: 'icon-xxxx' }); //此处的icon-xxxx本身是不存在的但如果此处不写的话easyui的设置图标方法会神经性的失效原因不明
}
}
}