/*** * * EapSoft 常用js封装 * Author : Yuce * Date : 2010-12-28 * */ var webPath = "/eapsoft"; var EapSoftWeb = { undefined : window.undefined, domids : [], domArray : [], clear : function(){ eventObj = null; domids = []; domArray = []; }, submitForm : function(formId, successCallbackFn ,failureCallbackFn ){ }, resolveXML : function(){ }, splitString : function(str,separator){ if (!(str)) return new Array(0); if (!(separator)) return new Array(str); var List = new Array(0); var tmpStr = ""; var index = 0; while (str){ index = str.indexOf(separator); if (index < 0){ List[List.length] = (str); str = null; break; } else if (index ==0){ str = str.substr(index + separator.length); }else{ tmpStr = str.substring(0,index); List[List.length]=(tmpStr); str = str.substr(index + separator.length); } } return List; }, getXMLDoc : function(){ var xDoc=null; if (typeof(ActiveXObject)!= "undefined"){ var msXmlAx=null; //Newer Internet Explorer try{ msXmlAx=new ActiveXObject("Msxml2.DOMDocument"); }catch (e){ //Older Internet Explorer msXmlAx=new ActiveXObject("Msxml.DOMDocument"); } xDoc=msXmlAx; } else if (document.implementation && document.implementation.createDocument){ //Mozilla/Safari xDoc=document.implementation.createDocument("","",null); } if (xDoc==null || typeof xDoc == "undefined"){ xDoc=null; } return xDoc; } /*, loadXMLData : function(domId , xmlName , callBackFn){ var xml= new ActiveXObject("Msxml.DOMDocument"); xml.async = true; var selectIndexs =""; var tableObject = document.all.item(tableId); for(var i=0;i=0){ if(selectIndexs.length >0 ) selectIndexs = selectIndexs +","; selectIndexs = selectIndexs + list[i].value; } } var url = _gModuleName+"/crossgridaction?action=reloaddata&pk="+this.PK+"&id="+this.id+"&showtype="+this.showType+"&selectindexs=" + selectIndexs+"&configstr="+this.configStr; if(para!=""){ url += "&"+para; //url += url + "&" + para; } //alert("url : " + url); var gridId = this.id; xml.onreadystatechange=function() { if (xml.readyState==4) { var xmlNode = xml.documentElement; document.all("CrossGrid_GridData_"+gridId).innerHTML = xmlNode.text; eval(callBackFn); } } var b = xml.load(url); } */ } var EapsoftUtils ={ popQueryCoverFirst : true, showLoading : function(){ if(!$("body")){ return; } if(this.popQueryCoverFirst){ var coverDiv = new String; var imgpath = appPath + "/images/core/loading.gif"; //alert(imgpath); coverDiv = "
数据提交中,请稍候......
"; $("body").append(coverDiv); this.popQueryCoverFirst = false; } $("#coverQueryDiv").show(); }, getLodingDom : function(){ return document.getElementById("coverQueryDiv"); }, closeLoading : function(){ var queryCoverDiv = this.getLodingDom(); if(!queryCoverDiv) return; else{ queryCoverDiv.style.display = "none"; } }, /** * ajaxConfig为一传值对象 * async :Boolean (true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。 * params : name1=value1&name2=value2&..... * successCallbackFn : function 请求成功调用函数 此方法可有2个参数(data , textStatus) 请求结果 * // data 可是 xmlDoc, jsonObj, html, text, 等等... * FailureCallbackFn : function 请求失败调用函数 * resDataType : String 响应端返回的数据类型 默认为text * timeout : Number 设置请求超时时间(毫秒)。此设置将覆盖全局设置。 默认4秒超时 * reqType : String POST/GET 默认POST * 注:默认返回值为text类型,返回纯文本字符串 调用实例 */ ajaxCaller : function(ajaxConfig){ var async = ajaxConfig.async; var successCallbackFn = ajaxConfig.successCallbackFn; var failureCallbackFn = ajaxConfig.failureCallbackFn; var resDataType = ajaxConfig.resDataType; var timeout = ajaxConfig.timeout; var reqType = ajaxConfig.reqType; var reqUrl = ajaxConfig.reqUrl; var params = ajaxConfig.params; if(this.isNull(reqUrl)){ alert("ajax 请求url不能为空!") return; } if(this.isNull(params)){ params = ""; } if(this.isNull(async)) async = true; if(this.isNull(timeout)) timeout = 40000; if(this.isNull(resDataType)) resDataType = "text"; if(this.isNull(reqType)) reqType = "POST"; try{ this.showLoading(); $.ajax({ timeout : timeout , async : async, type : reqType , url : reqUrl, data : params, dataType : resDataType, success: function(data , textStatus){ alert("操作成功!"); if(!EapsoftUtils.isNull(successCallbackFn)){ successCallbackFn(data); } }, error : function(){ //alert(XMLHttpRequest + " : " + textStatus + " :" + errorThrown) if(!EapsoftUtils.isNull(failureCallbackFn)) failureCallbackFn(); } }) }catch(e){ } EapsoftUtils.closeLoading(); }, ajaxCaller2 : function(ajaxConfig){ var async = ajaxConfig.async; var successCallbackFn = ajaxConfig.successCallbackFn; var failureCallbackFn = ajaxConfig.failureCallbackFn; var resDataType = ajaxConfig.resDataType; var timeout = ajaxConfig.timeout; var reqType = ajaxConfig.reqType; var reqUrl = ajaxConfig.reqUrl; var params = ajaxConfig.params; if(this.isNull(reqUrl)){ alert("ajax 请求url不能为空!") return; } if(this.isNull(params)){ params = ""; } if(this.isNull(async)) async = true; if(this.isNull(timeout)) timeout = 40000; if(this.isNull(resDataType)) resDataType = "text"; if(this.isNull(reqType)) reqType = "POST"; try{ this.showLoading(); $.ajax({ timeout : timeout , async : async, type : reqType , url : reqUrl, data : params, dataType : resDataType, success: function(data , textStatus){ // alert("操作成功!"); if(!EapsoftUtils.isNull(successCallbackFn)){ successCallbackFn(data); } }, error : function(){ //alert(XMLHttpRequest + " : " + textStatus + " :" + errorThrown) if(!EapsoftUtils.isNull(failureCallbackFn)) failureCallbackFn(); } }) }catch(e){ } EapsoftUtils.closeLoading(); }, isNull : function(str){ var flag = false; if(str === window.undefined || str == null || str == "" || str.length == 0){ flag = true; } return flag; }, initFrom : function(config){ var fromId = config.fromId; var reqUrl = config.reqUrl; var reqParams = config.reqParams; var initType = config.initType; var callBackFN = config.callBackFN; if(this.isNull(initType)) initType = "form"; if(initType == "from"){ if(this.isNull(fromId)){ alert("未传入要初始化的fromId"); return; } } if(this.isNull(reqUrl)){ alert("未传入请求数据的reqUrl"); return; } if(this.isNull(reqParams)){ reqParams = ""; } //alert("fromId -->" + fromId + " reqUrl -->" + reqUrl + " reqParams -->" + reqParams) try{ this.showLoading(); //alert(222); $.ajax({ timeout : 99999 , async : true, type : "POST" , url : reqUrl, data : reqParams, dataType : "json", success : function(data , textStatus ){ if(data.success){ if(initType == "from"){ var fromObj = document.getElementById(fromId); var domain = data.data; for(var key in domain){ if(!EapsoftUtils.isNull(fromObj.elements[key])){ fromObj.elements[key].value = domain[key]; } } } if(initType == "div"){ var domain = data.data; for(var key in domain){ var domObj = document.getElementById(key) if(domObj){ domObj.innerHTML = domain[key]; } } } callBackFN(); /* for(var i = 0 ; i < fromObj.elements.length - 1 ; i++){ alert(fromObj.elements[i].name); if(!EapsoftUtils.isNull(fromObj.elements[i].name)){ if(!EapsoftUtils.isNull(domain[fromObj.elements[i].name])){ alert(fromObj.elements[i].name + " : " + domain[fromObj.elements[i].name]); fromObj.elements[i].value = domain[fromObj.elements[i].name]; } } } * */ } }, error : function(){ alert("服务器忙,加载数据失败@!"); } }); EapsoftUtils.closeLoading(); }catch(e){} }, /** * 初始化FckEditor * FckInitName : 中的 instanceName值 * fromId : 需要初始化的fromid * initUrl : 请求数据的Url * reqParams : 请求Url 需要传递的参数 e.g : name1=value1&name2=value2..... * fackConTentFieldName : Form表单中存储Fck内容的隐藏值 默认为domain.content */ initFck : function(config){ var FckInitName = config.FckInitName; var fromId = config.fromId; var reqUrl = config.reqUrl; var reqParams = config.reqParams; var fckConTentFieldName = config.fckConTentFieldName; if(this.isNull(FckInitName)){ alert("未传入FCK instanceName"); return; } if(this.isNull(fromId)){ alert("未传入要初始化的fromId"); return; } if(this.isNull(reqUrl)){ alert("未传入请求数据的reqUrl"); return; } if(this.isNull(reqParams)){ reqParams = ""; } if(this.isNull(fckConTentFieldName)){ fckConTentFieldName = "domain.content"; } //alert(FckInitName + " :" + fromId + ":" + reqUrl + " : " + reqParams + " : " + fckConTentFieldName) FCKeditorAPI.GetInstance(FckInitName); try{ this.showLoading(); $.ajax({ timeout : 99999 , async : true, type : "POST" , url : reqUrl, data : reqParams, dataType : "json", success : function(data , textStatus ){ if(data.success){ var fckeditorform = document.getElementById(fromId); //alert(fckeditorform); var domain = data.data; for(var key in domain){ if(!EapsoftUtils.isNull(fckeditorform.elements[key])){ if(fckeditorform.elements[key].name != fckConTentFieldName) fckeditorform.elements[key].value = domain[key]; } } FCKeditorAPI.GetInstance(FckInitName).SetHTML(domain[fckConTentFieldName]); EapsoftUtils.closeLoading(); } }, error : function(XMLHttpRequest ,textStatus ,errorThrown){ alert(XMLHttpRequest + " : " + textStatus + " :" + errorThrown); alert("服务器忙,加载数据失败@!"); } }); }catch(e){} }, GetUrlParam : function( paramName ){ var oRegex = new RegExp( '[\?&]' + paramName + '=([^&]+)', 'i' ) ; var oMatch = oRegex.exec( window.top.location.search ) ; if ( oMatch && oMatch.length > 1 ) return decodeURIComponent( oMatch[1] ) ; else return '' ; }, saveOrUpdate : function(config){ var fromId = config.fromId; var dataType = config.dataType; var beforeSubmit = config.beforeSubmit; var afterSubmit = config.afterSubmit; if(this.isNull(fromId)) return alert("表单Id,不能传空 !"); if(this.isNull(dataType)) dataType = 'json'; EapsoftUtils.showLoading(); var options = { //target:'#Tip', //后台将把传递过来的值赋给该元素 url : $('#' + fromId ).attr("action"), //提交给哪个执行 type : 'POST', //dataType : 'script', //返回文本数据 字符串 dataType : dataType , //返回何种格式的数据 beforeSubmit : function(fromData){ if(beforeSubmit != null && typeof beforeSubmit != "undefined") beforeSubmit(fromData); else return true; }, success : function(resObj, statusText){ EapsoftUtils.closeLoading(); if(afterSubmit != null && typeof afterSubmit != "undefined") afterSubmit(resObj, statusText); } } // 提交表单 $('#' + fromId).ajaxSubmit(options); // 为了防止普通浏览器进行表单提交和产生页面导航(防止页面刷新?)返回false return false; }, getKeyId : function(keyName){ var keyArray = document.getElementsByName(keyName); var ids =""; for(var i = 0 ; i < keyArray.length ; i++){ if(keyArray[i].checked){ if(ids.length > 0) ids += ","; ids += keyArray[i].value; } } return ids; }, //刷新增删改后的相应节点 modifyNode : function(tree , nodeID, pareNodeID , type){ if(type == 'del'){ if(tree.getNodeById(nodeID) != null){ if(tree.getNodeById(nodeID).leaf){ tree.getNodeById(nodeID).parentNode.parentNode.reload({ callback : function(){ tree.getNodeById(nodeID).parentNode.expand(true); } }); }else{ if(tree.getNodeById(nodeID).parentNode != null){ tree.getNodeById(nodeID).parentNode.reload({ callback : function(){ tree.getNodeById(nodeID).parentNode.expand(); } }); }else{ tree.getNodeById(nodeID).reload({ callback : function(){ tree.getNodeById(nodeID).expand(); } }); } } }else{ tree.getNodeById(pareNodeID).reload({ callback : function(){ tree.getNodeById(pareNodeID).expand(); } }); } }else{ if(tree.getNodeById(nodeID) != null){ if(tree.getNodeById(nodeID).leaf){ tree.getNodeById(nodeID).parentNode.reload({ callback : function(){ tree.getNodeById(nodeID).expand(true); } }); }else{ tree.getNodeById(nodeID).reload({ callback : function(){ tree.getNodeById(nodeID).expand(); } }); } }else{ tree.getNodeById(pareNodeID).reload({ callback : function(){ tree.getNodeById(pareNodeID).expand(); } }); } } }, /**************************** Ext Form 操作 *************************************/ getKeyIdList : function(grid ,keyName){ var recs = grid.getSelectionModel().getSelections(); var list = []; if(recs.length == 0){ Ext.MessageBox.alert('提示','请选择要进行操作的记录!'); }else{ for(var i = 0 ; i < recs.length ; i++){ var rec = recs[i]; list.push(rec.get(keyName)) } } return list; }, modifyForm : function(formPanel ,params , loadUrl ){ formPanel.form.reset(); //清空form表单的元素值 if(this.isNull(loadUrl)){ Ext.MessageBox.alert("提示","缺少表单加载url!") return; }else{ this.loadForm(loadUrl , params ,formPanel); } }, loadForm : function(loadUrl , params ,formPanel){ formPanel.form.load({ waitMsg : '正在加载数据请稍后',//提示信息 waitTitle : '提示',//标题 url : loadUrl ,//请求的url地址 params : params, //请求参数 method:'GET',//请求方式 timeout : 6000 , success:function(form,action){//加载成功的处理函数 //Ext.Msg.alert('提示','数据加载成功'); }, failure:function(form,action){//加载失败的处理函数 //Ext.Msg.alert('提示','数据加载失败'); } }); }, updateGrid : function(keyName , keyVal ,formPanel , grid ){ var fields = this.getFormFieldsObj(keyName , keyVal ,formPanel ); var gridStore = grid.getStore(); var index = gridStore.find('domain.' + keyName ,fields.id); if(index != -1){ var item = gridStore.getAt(index); for(var fieldName in fields){ item.set(fieldName,fields[fieldName]); } gridStore.commitChanges(); gridStore.reload(); }else{ var rec = new Ext.data.Record(fields); gridStore.add(rec); } }, //取得表单数据 getFormFieldsObj : function(keyName , keyVal , formPanel){ var fields = formPanel.form.items; var obj = {}; for(var i = 0 ; i < fields.length ; i++){ var item = fields.itemAt(i); var value = item.getValue(); obj[item.name] = value; } if(Ext.isEmpty(obj['id'])){ obj['id'] = keyVal; obj["domain." + keyName] = keyVal; } return obj; }, deleteObjs : function(gridPanel ,keyName, reqUrl , successFn){ var keyList = this.getKeyIdList(gridPanel , keyName); var num = keyList.length; if(num == 0){ Ext.MessageBox.alert("提示","请选择需要删除的记录!") return; } Ext.MessageBox.confirm('提示', '是否删除所勾选的记录?', function(btn){ if(btn == "yes"){ var keyIds = keyList.join(','); var msgTip = Ext.MessageBox.wait( '正在删除信息请稍后......','提示' ); Ext.Ajax.request({ url : reqUrl, params : {keyIds : keyIds}, method : 'POST', success : function(response,options){ var result = Ext.util.JSON.decode(response.responseText); msgTip.hide(); if(result.success){ //服务器端数据成功删除后,同步删除客户端列表中的数据 var gridStore = gridPanel.getStore(); for(var i = 0 ; i < keyList.length ; i++){ var index = gridStore.find(keyName,keyList[i]); if(index != -1){ var rec = gridStore.getAt(index) gridStore.remove(rec); } } successFn(result); }else{ Ext.Msg.alert('提示',result.msg); } }, failure : function(response,options){ msgTip.hide(); Ext.Msg.alert('提示','删除记录请求失败!'); } }); } }); }, recommenNews : function(recommenType ,gridPanel ,keyName, reqUrl , successFn){ var keyList = this.getKeyIdList(gridPanel , keyName); var num = keyList.length; if(num == 0){ Ext.MessageBox.alert("提示","请选择需要推荐的新闻!") return; } Ext.MessageBox.confirm('提示', '是否推荐所勾选的记录?', function(btn){ if(btn == "yes"){ var keyIds = keyList.join(','); var msgTip = Ext.MessageBox.wait( '正在推荐新闻请稍后......','提示' ); Ext.Ajax.request({ url : reqUrl, params : {keyIds : keyIds , recommenType : recommenType}, method : 'POST', success : function(response,options){ var result = Ext.util.JSON.decode(response.responseText); msgTip.hide(); if(result.success){ //服务器端数据成功删除后,同步删除客户端列表中的数据 var gridStore = gridPanel.getStore(); gridStore.reload(); successFn(result); }else{ Ext.Msg.alert('提示',result.msg); } }, failure : function(response,options){ msgTip.hide(); Ext.Msg.alert('提示','服务器忙,推荐新闻失败!请稍候再试!'); } }); } }); } }