| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385 |
- /**
- * @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 = $('<div style="width:100px;"></div>').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) {
- $('<div iconCls="icon-ok" field="' + fields[i] + '"/>').html(fildOption.title).appendTo(tmenu);
- } else {
- if(init==false){
- for(var j=0;j<cols.length;j++){
- if(cols[j].field==fields[i]&&cols[j].visible!=false){
- //console.log(cols[j].field+'=='+cols[j].visible);
- $('<div iconCls="icon-empty" field="' + fields[i] + '"/>').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支持树配置----------------------
|