/** * @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支持树配置----------------------