// 这里是项目的公共代码 // 项目根路径 var prjpath='/thscm_supplier'; var dhxSkin='dhx_skyblue'; // ! 检查元素在数组中的位置. >=0 表示位置, 不存在返回-1. // ! 检查元素是否存在数组中, 存在返回>=0, 不存在返回-1. if( !Array.indexOf) { Array.prototype.indexOf = function (obj){ for (var i = 0; i < this.length; i++) { if (this[i] == obj) { return i; } } return -1; }; }; // ! 判断对象是否是数组. function isArray(v){ if( typeof(v) == 'object' ) return Object.prototype.toString.call(v) === '[object Array]'; else return false; }; // ! 将一个对象转换为数组. 参数本身可能也是数组. function toArray(obj){ var ar = new Array(); if( typeof(obj) == 'string' ) ar = obj.split(','); else if( typeof(obj) == 'object' ) { if( isArray(obj) ) ar = obj; } else if( typeof(obj) == 'number' ){ ar.push(obj); } else if( typeof(obj) == 'boolean' ){ ar.push(obj); } return ar; }; // ! 从数组中过滤掉不以 obj 开头的元素. 同时将截掉 obj // ! arr 可以是一个字符串(以','分隔)也可以是一个数组 // ! 返回过滤后的数组. function filtrElement(obj,arr){ if( typeof(obj) == 'undefined' ) return arr; var arDest = new Array(), arSrc = toArray(arr); var objlen = obj.length; for( var i = 0; i < arSrc.length; i++){ var vidx = arSrc[i]; if( vidx.substr(0,objlen)==obj) arDest.push(vidx.substr(objlen,vidx.length)); } return arDest; }; // ! 使用勾选的最初和最后状态确定操作. 返回的是操作数组(id|optType,id|optType). optType:0-删除;1-增加. // ! vOld-表示最初的勾选ID列表. 可以是','分隔的字符串, 也可以是数组 // ! vNew-表示最后的勾选ID列表. 可以是','分隔的字符串, 也可以是数组 // ! 返回的是需要提交的ID数组. function dealCheckItem(vOld, vNew){ var arOpt = new Array(), arOld = toArray(vOld), arNew = toArray(vNew); // ! 第一步: 确定最后为增加的. if( 0 < arNew.length ){ if( 0 >= arOld.length ){ for( var i=0;i= arNew.length ){ for( var i=0;i0){ if( i > 0 ) newurl += "&"; newurl += arrtmp[i].substring(0,num); newurl += "="; newurl += encodeURIComponent(encodeURIComponent(arrtmp[i].substr(num+1))); } } return newurl; }; // ! 对于枚举值的字符串, 提取值. 例如: [1]-正常. 调用 splitEnumValue("[1]-正常") 返回:"1" function splitEmVal(str){ var n1 = str.indexOf("["); if( n1 >= 0 ){ var n2 = str.indexOf("]"); if( n2 > 1 ){ return str.substr(n1+1,n2-1); } } return ""; }; // ! art.dialog 提示消息 function artAlert(vHint,vLock,vFun){ var vL = vLock==false?false:true; var vOk = typeof(vFun)!='function'?true:vFun; try{ art.dialog({ id:'hint-msg', title: "系统提示", content: ""+vHint+"", ok: vOk, okValue:'确定', lock: vL }); }catch(ex){} }; // ! art.dialog 确认框 function artConfirm(vHint,vFun){ art.dialog({ id:'cfm-msg', title: "系统提示", content: ""+vHint+"", cancel:true, cancelValue: '取消', ok: vFun, okValue:'确定', lock: true }); }; /** * 锁定提示框,返回提示框对象 * * @param vHint * @returns 返回提示框对象 */ function artProgress(vHint){ var artProgressObj; try{ artProgressObj = art.dialog({ id:'hint-msg', title: "系统提示", content: ""+vHint+"", lock: true, cancel:false }); }catch(ex){} return artProgressObj; }; // ! art.dialog tips function artTips(vHint){ art.dialog({ id:'tip-msg', title: false, content: ""+vHint+"", cancel: false, padding:10, height:30, time:2000 }); }; // ! 返回标题. (设置了图片和字体) function getLayoutTitle(vTitle,vImg){ var vret = ""; if( typeof(vImg)=="string") vret = ""; // vret = ""; vret += "" + vTitle +""; return vret; }; // ! 返回标题. (设置了图片和字体) function getTabTitle(vTitle,vImg){ var vret = ""; if( typeof(vImg)=="string") // vret = ""; vret = ""; // vret += "" + // vTitle +""; vret += "" + vTitle +""; return vret; }; // ! ajax function post(url,param){ // var loader = dhtmlxAjax.postSync(url,param); var loader = dhtmlx.ajax().sync().post(url,param); var msg = eval( '(' + loader.responseText + ')' ); return msg; }; // ! ajax post function postBusi(url,param,callBackOk,callBackFail){ var msg = post(url,param); var vHint = "返回码: ["+msg.code+"]

返回消息:

    "+msg.message; artAlert(vHint,false); if(1==msg.code){ if(typeof(callBackOk)=='function') callBackOk(); }else{ if(typeof(callBackFail)=='function') callBackFail(); } return msg; }; // ! 装载 tree. 如果失败则弹出提示. 成功时不提示. function loadTree(tree,url,param){ var loader = dhtmlx.ajax().sync().post(url,param); var msg = eval( '(' + loader.responseText + ')' ); if( msg.code != 1 ){ dhtmlx.alert("error_code:"+msg.code+";error_msg:"+msg.message); }else{ // tree.setDataMode("json"); // tree.loadJSONObject(eval('('+msg.body+')')); tree.parse(eval("("+msg.body+")"),"json"); } return msg; }; // ! 装载 grid. --lixia增加tipFlag来判定是否显示提示信息 function loadGrid(vGrid,url,param,tipFlag){ vGrid.clearAll(); var msg = post(url,param); if( msg.code == 1 ){ vGrid.parse(eval("("+msg.body+")"),"json"); if(typeof(tipFlag)=='undefined' || tipFlag) artTips("提示:查询成功."); } else if( msg.code == 20001 ){ if(typeof(tipFlag)=='undefined' || tipFlag) artTips("提示:不好意思,查询不到数据!"); } else{ var vHint = "系统出错啦!

    error code:"+msg.code+"

   error message:"+msg.message; if(typeof(tipFlag)=='undefined' || !tipFlag) artAlert(vHint); } }; // ! 删除 grid. 一行记录(从服务端) function deleteGrid(vGrid,url,param){ var vSelId = vGrid.getSelectedRowId(); if( vSelId==null ){ artAlert("删除记录时,请首先选择所需要删除的记录行!",false); return; } artConfirm("您确定要删除所选择的记录行数据吗?",function(){ var msg = postBusi(url,param); if( msg.code == 1 ) vGrid.deleteRow(vSelId); return msg; }); }; // ! dhtmlx grid--toolbar: 在四个通用按钮(add,update,delete,export), // 对应的回调函数分别为:addGT(),updateGT(),deleteGT(),exportGT() // ! vDis-表示是否显示,不显示必须设置为false function gridToolbar(vLayoutCell,vDis1,vDis2,vDis3,vDis4){ var dhxGT = vLayoutCell.attachToolbar(); dhxGT.setIconsPath(prjpath+"/static/images/"); if( vDis1 != false ){ dhxGT.addSeparator("sep0", 1); dhxGT.addButton("add", 1, "新增", "add.png"); } if( vDis2 != false ){ dhxGT.addSeparator("sep1", 2); dhxGT.addButton("update", 3, "修改", "edit.png"); } if( vDis3 != false ){ dhxGT.addSeparator("sep2", 4); dhxGT.addButton("delete", 5, "删除", "delete.png"); } if( vDis4 != false ){ dhxGT.addSeparator("sep3", 6); dhxGT.addButton("export", 7, "导出", "excel.png"); } dhxGT.attachEvent("onClick", function(id){ if( id=="add" ) addGT(); else if( id == "update") updateGT(); else if( id == "delete") deleteGT(); else if( id == "export") exportGT(); else; }); }; // ! 新建窗口. 该函数的调用: dhxWin = newWindos(dhxWin); //! 原因是 js 的参数没有引用的说法. // ! 必须定义

var dhxWins; function createWindow(vId,vName,vX,vY,vWidth,vHeigh){ if( null == dhxWins ){ dhxWins = new dhtmlXWindows(); // dhxWins.attachViewportTo("div_win"); // dhxWins.setSkin("dhx_skyblue"); // dhxWins.vp.style.border = "#a4bed4 1px solid"; // dhxWins.vp.style.borderRadius = "2px"; } var vWin = dhxWins.createWindow(vId, vX, vY, vWidth, vHeigh); vWin.button("minmax1").disable(); vWin.button("park").hide(); vWin.setText(vName); vWin.center(); vWin.setModal(true); return vWin; }; // ! 在子窗口(iFrame)中关闭窗口. 参数为在父页面中创建窗口时的名称 function closeParentWin(vName){ if( null != parent.dhxWins ){ var vWin = parent.dhxWins.window(vName); if( null != vWin ){ try{parent.$("body").focus();}catch(e){} vWin.close(); vWin = null; } // parent.dhxWins.unload(); // parent.dhxWins = null; } }; // 对Date的扩展,将 Date 转化为指定格式的String // 月(M)、日(d)、小时(h)(24小时制)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) // 例子: // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 // (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 Date.prototype.Format = function(fmt) { var o = { "M+" : this.getMonth()+1, // 月份 "d+" : this.getDate(), // 日 "h+" : this.getHours(), // 小时 "m+" : this.getMinutes(), // 分 "s+" : this.getSeconds(), // 秒 "q+" : Math.floor((this.getMonth()+3)/3), // 季度 "S" : this.getMilliseconds() // 毫秒 }; if(/(y+)/.test(fmt)) fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); for(var k in o) if(new RegExp("("+ k +")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); return fmt; }; // ! 返回当月的上一月1日的日期 function getFirstDayOfPrivMonth(){ var Nowdate=new Date(); return new Date(Nowdate.getYear(),Nowdate.getMonth()-1,1,0,0,0); }; // ! 返回当月的上一月最后一日的日期 function getLastDayOfPrivMonth(){ var Nowdate=new Date(); var MonthNextFirstDay=new Date(Nowdate.getYear(),Nowdate.getMonth(),1,23,59,59); return new Date(MonthNextFirstDay-86400000); }; /** 替换文本中的换行为
标签 */ String.prototype.addBrTag = function(){ var str = this; return str.replace(/\n/g, "
"); }; /** 替换文本中的
标签为换行 */ String.prototype.removeBrTag = function(){ var str = this; return str.replace(/<\/br\w*\/*>/g, "\n"); }; /** onFocus事件清除焦点 * */ function clearFocus(name){ document.getElementsByName(name)[0].blur(); }; /** 校验内容不能全为空格 */ var regNotEmpty = /^\s*$/; function notEmpty(data){ return !regNotEmpty.test(data); } /** url直接查询grid */ /** vGrid grid对象,url数据加载url,layoutCell 可以为空 */ function qryGridUtil (vGrid,url,layoutCell){ if( typeof(layoutCell)!= 'undefined' ) // debugger; layoutCell.progressOn(); vGrid.clearAll(); this.send(url,"POST",function(loader, res){ var msg = eval( '(' + res + ')' ); if( msg.code == 1 ){ vGrid.parse(eval("("+msg.body+")"),"json"); artTips("提示:查询成功."); } else if( msg.code == 20001 ){ artTips("提示:不好意思,查询不到数据!"); } else{ var vHint = "系统出错啦!

    error code:"+msg.code+"

   error message:"+msg.message; artAlert(vHint); } if( typeof(layoutCell)!= 'undefined' ) layoutCell.progressOff(); }); }; // easy ui 数据加载,将dhtmlx的数据格式进行转换,并加载数据 function loadEasyGrid(id,url,para,fs){ var fields = fs.split(","); var easyData = {}; var msg = post(url,para); var rows = []; if( msg.code == 1 ){ var data = eval("("+msg.body+")"); var datas = data.rows; for(var i=0;i