var myCombos = new Array(); var windowOpenFunctions = new Array(); /** * @Description: 下面自定义dhtmlx的ajax错误提示(重写) * @Author: lynn.chen 陈立 * @Modified By: * @Date: 2013-01-23 * @param: dhtmlx源码参数 */ if(typeof(_dhtmlxError) != "undefined") { _dhtmlxError.prototype.throwError = function(type, name, params){ //alert(type + "---" + name + "---" + params[1]); //alert(type + "---" + name + "---" + params[0].status); if(typeof(params) != "undefined") { var status = params[0].status; dealAjaxError(status); } return null; }; } /** * @Description: 此方法为表单操作页面如何显示的方法,其它需要弹出框的地方,请使用createWindow()方法 * @Author: lynn.chen 陈立 * @Modified By: * @Date: 2013-01-23 * @param: paramStr 打开页面或者弹出框的参数 */ var winPath = "";//当前窗口界面的路径 function openWindow(paramStr, isWindow) { //persCustomFieldAction!getAllField.action^900^430^新增人员 var params = paramStr.split("^");//获取参数值 winPath = params[0]; if(typeof(isWindow) != "undefined" && isWindow) { if(isWindow == "yes") { createWindow(paramStr); } else { getAddTemplate(params[0]); } } else { if(system.isFormByWinOpen) { createWindow(paramStr); } else { getAddTemplate(params[0],""); } } } /** * 创建顶层Top窗口,适用于iframe中需要将窗口弹在最外层时 * * @author lynn.chen * @since 2015年5月14日 下午1:51:05 */ function createTopWindow(paramStr, html, confirmFun) { //如果为iframe弹窗的话则调用top弹窗,显示在外层 if(typeof(window.top.createWindow) != "undefined") { window.top.createWindow(paramStr, html, confirmFun); } else { createWindow(paramStr, html, confirmFun); } } /** * @Description: 创建窗口,窗口个数不受限制 * @Author: lynn.chen 陈立 * @Modified By: * @Date: 2013-01-23 * @param: paramStr 弹出框的参数(path^x^y^w^h^title-----persCustomFieldAction!getAllField.action^0^0^900^430^导入) */ var fixedCWinId = "userWin"; var dhxWins; var newWin; function createWindow(paramStr, html, confirmFun) { paramStr = paramStr.replace("#","public_winTemplate.action"); if(!dhxWins) { dhxWins = new dhtmlXWindows(); //dhxWins.enableAutoViewport(false); //dhxWins.attachViewportTo(document.body); dhxWins.zIndexStep = 15; //grid分栏后,左边的z-index=11 --zhangc 2014-6-13 //dhxWins.setSkin((typeof(sysCfg) != "undefined" ? sysCfg.dhxSkin : "dhx_skyblue")); //dhxWins.setImagePath("/public/controls/dhtmlx/dhtmlxWindows/codebase/imgs/"); dhxWins.attachEvent("onClose", function(win){ //此函数为窗口关闭之后,如何存在下一级的窗口,则对下一级窗口进行屏蔽处理 //win.setModal(false); //---将会导致下一个弹出框z-index每次增加zIndexStep(50),而当前窗口会关闭,没必要先屏蔽,lynn.chen 陈立 /*窗口关闭回调函数 * getCurrentWindow().onClose = function(){ return false;//返回false不关闭窗口 };*/ if($(".dhtmlx_window_active").size() == 0) { //$(window.top.document.body).removeClass("dhxwins_vp_dhx_web"); } if(win.onClose) { var ret = win.onClose(); if(ret == false) { return; } } if(win.onFormClose)//表单关闭回调函数 { var ret = win.onFormClose(); if(ret == false) { return; } } try { //销毁pagingToolbar $(".dhtmlx_window_active .gridbox").each(function(index,element){ if(document.getElementById(this.id) && mygrids[this.id] && mygrids[this.id].pagingToolbar) { mygrids[this.id].pagingToolbar.unload(); } }); //判断函数destroyComboxTree是否存在;如果存在则执行 if(typeof(destroyComboxTree) == "function") { destroyComboxTree(); } $("div[class*='dhtmlxcalendar_in_input']").hide();//时间控件隐藏 $("div[class^='dhx_popup_dhx_']").hide();//popup提示控件隐藏 } catch(e) { //alert("not function); } var lastId = 0; dhxWins.forEachWindow(function(){ lastId++; }); win.setModal(false);//是否进行屏蔽 if(lastId != 1) { var id = fixedCWinId + (lastId-1); newWin = dhxWins.window(id); newWin.setModal(true);//是否进行屏蔽 /*var newWinZIndex = $(newWin).css("z-index") - dhxWins.zIndexStep; $(newWin).css("z-index", newWinZIndex); $(".dhx_modal_cover_ifr").css("z-index", newWinZIndex -2); $(".dhx_modal_cover_dv").css("z-index", newWinZIndex -2);*/ } else { //视频ocx控件显示 $("iframe[src*='.action']:eq(0)").contents().find("#zkVideoOcx").css("visibility", "visible"); $("iframe[src*='.action']:eq(0)").contents().find(".videoOcx").css("visibility", "visible"); } window.setTimeout(function(){ $(".dhxwin_active input[type=text][readonly!=readonly][disabled!='disabled'],.dhxwin_active input[type=password][readonly!=readonly][disabled!='disabled']").eq(0).focus(); }, 300); return true; }); document.onkeydown=esckeydown; //esc键关闭弹出框口 } var title = ""; var idPrefix = 0; dhxWins.forEachWindow(function() { idPrefix++; var oldId = fixedCWinId + idPrefix; getCurrentWindow().setModal(false);//是否进行屏蔽 }); idPrefix++;//每次进来就来原有的窗口个数下加1 var id = fixedCWinId +idPrefix; //globalCWinId = createWinId ? createWinId : fixedCWinId; //path^x^y^w^h^title(persCustomFieldAction!getAllField.action^0^0^900^430^导入) var params = paramStr.split("^");//获取参数值 newWin = dhxWins.createWindow(id, params[1]?params[1] : 0, params[2]?params[2] : 0, params[3]?params[3] : 750, params[4] ? params[4] : 300); newWin.setText(params[5]? params[5] : title); //添加“正在加载中……”功能 var loadingHtml = "
"; newWin.attachHTMLString(loadingHtml); if(!params[1] && !params[2]) { newWin.center(); } else if(params[1] == 0 && params[2] == 0) { newWin.center(); } newWin.setModal(true);//是否进行屏蔽 newWin.denyResize();//是否可以放大 newWin.button("park").hide(); newWin.button("minmax1").hide(); $(".dhxwin_button_close").attr("title", "关闭"); newWin.bringToTop(); newWin.path = params[0]; //newWin.hideHeader(); //视频ocx控件隐藏,避免其覆盖弹出框 $("iframe[src*='.action']:eq(0)").contents().find("#zkVideoOcx").css("visibility", "hidden"); $("iframe[src*='.action']:eq(0)").contents().find(".videoOcx").css("visibility", "hidden"); for(var i = 0; i< windowOpenFunctions.length; i++) {//自定义窗口打开接口 if(typeof(windowOpenFunctions[i]) == "function") { windowOpenFunctions[i].apply(this,[newWin]); } else if(typeof(windowOpenFunctions[i]) == "string" && typeof(window[windowOpenFunctions[i]])=="function") { window[windowOpenFunctions[i]].apply(this,[newWin]); } } if(params[0] == "*")//表示直接使用html { if(html) { newWin.attachHTMLString(html); } } else { //添加“正在加载中……”功能 var xmlHttpObj = createXMLHttpReuestObject(); var url = params[0]; var unParm = url.indexOf("?") != -1 ? "&" : "?"; xmlHttpObj.open("get",url + unParm + "un=" + Math.round(Math.random()*100000)); xmlHttpObj.url = url; xmlHttpObj.win = newWin; xmlHttpObj.onload = function(a){ var status = 200; try { status = this.status; } catch(e) { status = 0; } try { if((this.readyState == 4 && status == 200) || status == 404 || status == 500) { var responseText = this.responseText; try { //添加对返回结果的判断是否异常结果 var tempText = this.responseText.substring(0,20); if(tempText.indexOf("ret") != -1 && (tempText.indexOf(sysCfg.warning) != -1 || tempText.indexOf(sysCfg.error) != -1)) { //格式化返回的字符为对象 var responseJson = eval("("+this.responseText+")"); if(responseJson.ret == 500) { messageBox({messageType:"alert", text:responseJson.msg,callback:closeWindow}); } return; } } catch(e) { } var repText = ""; var text = (html ? html : ""); if(responseText.indexOf(repText) != -1) { responseText = responseText.replace("", text); } else { responseText += text; } responseText = responseText.replace("confirmFun",confirmFun); this.win.attachHTMLString(loadingHtml + responseText); } } catch(e) { status = status; throw e; } finally { //去除转圈处理和获取焦点 window.setTimeout(function(){ $("#progressWin" + id).remove(); $(".dhxwin_active input[type=text][readonly!=readonly][disabled!='disabled'],.dhxwin_active input[type=password][readonly!=readonly][disabled!='disabled']").eq(0).focus(); }, 300); if(typeof(dealAjaxError) != "undefined") { status = status == 0 ? "201" : status; dealAjaxError(status); } } } /* xmlHttpObj.onreadystatechange = function() { alert("b"); }*/ xmlHttpObj.send(null); } //return newWin; } /** * @Description: 根据不同浏览器,动态创建XMLHttpRequest对象 * @Author: 何朗 helang * @Date: 2013-04-18 * @return 创建成功的XMLHttpRequest对象 */ function createXMLHttpReuestObject() { var XMLHttpFactories = [ function(){return new XMLHttpRequest()}, function(){return new ActiveXObject("Msxml2.XMLHTTP")}, function(){return new ActiveXObject("Msxml3.XMLHTTP")}, function(){return new ActiveXObject("Microsoft.XMLHTTP")} ]; var xmlHttp = false; for(var i=0; i 0) { return; } else if(myForms[objId]) { myForms[objId].unload();//清空之前的myForm,否则会new多次,出现多个 } attributes = attributes? attributes : new Array(); var size= attributes.size ? attributes.size : 22; var buttonWidth = attributes.buttonWidth ? attributes.buttonWidth : 50; buttonWidth = buttonWidth > 60 ? 60 : buttonWidth; var inputWidth = attributes.inputWidth? attributes.inputWidth : 210; var labelWidth = inputWidth; var labelHeight = attributes.labelHeight ? attributes.labelHeight : 20; var leftLabel = attributes.leftLabel ? attributes.leftLabel : "备选人员"; var rightLabel = attributes.rightLabel ? attributes.rightLabel : "已选人员"; if(attributes.isAllSelect == undefined) { var isAllSelect = true; } else { var isAllSelect = attributes.isAllSelect; } var allOffsetTop = size*6; var offsetTop = isAllSelect ? 0 : size*8; var allButtonType = isAllSelect ? "button" : "hidden"; formData = [ { type: "settings", position: "label-top", labelWidth: labelWidth, inputWidth: inputWidth, labelHeight: labelHeight }, { type: "multiselect", label: leftLabel, name: "c_all", size: size, options: (leftOptions != null ? eval(leftOptions) : []) }, { type: "newcolumn" }, { type: "block", inputWidth:"auto", offsetLeft: 0, list: [{ type: allButtonType, name: "addAll", value: ">>", offsetLeft: 0,//(60-buttonWidth)/2, offsetTop: allOffsetTop, inputWidth: buttonWidth }, { type: "button", name: "add", value: " > ", offsetLeft: 0,//(60-buttonWidth)/2, offsetTop: offsetTop, inputWidth: buttonWidth }, { type: "button", name: "remove", value: " < ", offsetLeft: 0,//(60-buttonWidth)/2, inputWidth : buttonWidth }, { type: allButtonType, name: "removeAll", value: "<<", offsetLeft: 0,//(60-buttonWidth)/2, inputWidth: buttonWidth }] }, { type: "newcolumn" }, { type: "multiselect", label: rightLabel, name: "c_blocked", size: size, options: (rightOptions != null ? eval(rightOptions) : []) } ]; myForms[objId] = new dhtmlXForm(objId, formData); //按钮部分样式修复 $("#"+ objId +" .in_block").css("padding", "0 5px"); $("#"+ objId +" .dhxform_btn_txt").css("margin", "0 10px"); //下面2句是解决ie下已下拉框显示的问题 /* 暂时屏蔽,Occupancy有问题 $.browser.msie *******梁海波-20140410********* */ //myForms[objId].getSelect("c_blocked").options.add(new Option("0" , "")); //$(myForms[objId].getSelect("c_blocked")).find('option').filter(':eq(0)').remove(); myForms[objId].attachEvent("onButtonClick", function(name){ if (name == "add" || name == "remove" || name == "addAll" || name == "removeAll") { changeContactState(objId, name == "add" || name == "addAll", name, isAllSelect, selectFunc, noselectFunc); } }); //双击 $(".dhxform_select[name^='c_all']").dblclick(function(){ changeContactState(objId, true, "add", isAllSelect,selectFunc, noselectFunc); }); $(".dhxform_select[name^='c_blocked']").dblclick(function(){ changeContactState(objId, false, "remove", isAllSelect, selectFunc, noselectFunc); }); //获取当前值 myForms[objId].getValue = function(){ var optValue = ""; var selectedOptions = myForms[objId].getSelect("c_blocked").options; for ( var i = 0; i < selectedOptions.length; i++) { optValue += selectedOptions[i].value + ","; } return optValue != "" ? optValue.substring(0,optValue.length-1) : optValue; }; } function changeContactState(objId, block, name, isAllSelect, selectFunc, noselectFunc) { var ida = (block ? "c_all" : "c_blocked"); var idb = (block ? "c_blocked" : "c_all"); var sa = myForms[objId].getSelect(ida); var sb = myForms[objId].getSelect(idb); if(name == "addAll" || name == "removeAll") { for ( var i = 0; i < sa.options.length; i++) { sb.options.add(new Option(sa.options[i].text, sa.options[i].value)); } for ( var i = 0; i < sa.options.length;) { $(sa).find('option').filter(':eq(' + i + ')').remove(); } } else { var t = myForms[objId].getItemValue(ida); if(t.length == 0) { return; } eval("var k={'" + t.join(":true,") + "':true};"); var w = 0; var ind = -1; while(w < sa.options.length) { if(k[sa.options[w].value]) { sb.options.add(new Option(sa.options[w].text, sa.options[w].value)); $(sa).find('option').filter(':eq(' + w + ')').remove(); ind = w; } else { w++; } } if(sa.options.length > 0 && ind >= 0) { if(sa.options.length > 0) { sa.options[t.length > 1 ? 0 : Math.min(ind, sa.options.length - 1)].selected = true; } } //单选 if(isAllSelect == false && block == true && sb.options.length > 1) { sa.options.add(new Option(sb.options[0].text, sb.options[0].value)); $(sb).find('option').filter(':eq(0)').remove(); } } //对已选数据列进行判断,是否已选数据 if(myForms[objId].getSelect("c_blocked").options.length > 0) { if(selectFunc) { selectFunc(); } } else { if(noselectFunc) { noselectFunc(); } } } /** * @Description: 打开表单页面,只适用于操作栏中进行调用 * @Author: lynn.chen 陈立 * @Modified By: * @Date: 2013-03-06 * @param: id 操作时的参数, * 形如persCustomFieldAction!getAllField.action^0^0^900^430为path^x^y^w^h^title */ function openWindowToForm(id) { var objId = "operate"; var winStr = id; if(id.split("^")[0].indexOf("]") > 0) { objId = id.split("^")[0].substring(1,id.split("^")[0].indexOf("]")); winStr = id.substring(id.split("^")[0].indexOf("]")+1); } if(operateToolbars[objId]) { try { var isExistId = false; operateToolbars[objId].forEachItem( function(itemId){ if(itemId == id) { isExistId = true; return; } }); if(isExistId) { winStr += "^"+operateToolbars[objId].getItemText(id); } else { winStr += "^"+operateToolbars[objId].getListOptionText("moreActions",id); } } catch(e) { winStr += "^"+operateToolbars["leftOperate"].getItemText(id); } } openWindow(winStr); } /** * @Description: 专门为导出提供,弹出窗口 * @Author: pokiz.xu * id 的格式为accTransactionAction!export.action(type=XLS|PDF)^0^0^500^190#rightGridbox#leftOperate * ^前面的为导出的action路径,#后面接着哪个grid,与哪个操作区域 * #后面的可以不填,如果填,需要两个一起填写 * (type=...)为导出页面显示的导出格式 * @Date: 2013-03-06 * @modify: gordon.zhang@zkteco.com 2014-12-18 */ function openWindowForExport(id) { var winStr; var objId = "operate"; var gridName; var sourceId = id; if(id.indexOf("#") >= 1) { gridName = id.substring(id.indexOf("#")+1, id.lastIndexOf("#")); objId = id.substring(id.lastIndexOf("#") + 1, id.length); id = id.substring(0, id.indexOf("#")); } var typeStr=""; if (id.indexOf("(type=")>=1) { var typeBegini = id.indexOf("(type="); var typeEndi = id.substring(typeBegini).indexOf(")"); typeStr = id.substring(typeBegini,typeBegini+typeEndi); typeStr = typeStr.split("=")[1]; id = id.substring(0,typeBegini)+id.substring(typeBegini+typeEndi+1); } var opStr; if(id.indexOf("(select") > 0) { var opParamStr = id.substring(id.indexOf("(select") + "(select".length + 1, id.lastIndexOf(")")); var val = $("input:hidden[name='"+opParamStr+"']").val(); opStr = val; } var winHtml = ""; if(operateToolbars[objId]) { var parentId = operateToolbars[objId].getParentId(sourceId); if(parentId != null && parentId.length > 0)//有父级存在 { winHtml = operateToolbars[objId].getListOptionText(parentId,sourceId); } else { winHtml = operateToolbars[objId].getItemText(sourceId); } } else { winHtml = "导出"; } winStr = "^"+winHtml; var actionName = id.split("^")[0]; var size = id.substring(id.indexOf("^")); var actionInput = ""; var gridNameInput = ""; var custom = ""; var typeStr = ""; createWindow("public_opExportRecord.action" + size +winStr, actionInput + gridNameInput + custom+typeStr); } /** * @Description: 已打开窗口的方式来进行操作,只适用于操作栏中进行调用 * @Author: lynn.chen 陈立 * @Modified By: * @Date: 2013-03-06 * @param: id 操作时的参数, * 形如persCustomFieldAction!getAllField.action^0^0^900^430为path^x^y^w^h^title * 下面为需在弹窗前进行进行判断的配置 * persCustomFieldAction!getAllField.action? * id=(id*{checkboxName:'ids',selectedNum:1,conditionMode:'!=',noSelectPrompt:'请选择你要操作的对象',noRightSelectPrompt:'只能选择一个对象进行操作',split:','}) * ^0^0^900^430 */ var currentOperateId; var operateObjId = "operate"; function openWindowByOperate(id) { var winStr = id; if(id.split("^")[0].indexOf("]") > 0) { operateObjId = id.split("^")[0].substring(1,id.split("^")[0].indexOf("]")); winStr = id.substring(id.split("^")[0].indexOf("]")+1); } else { operateObjId = "operate"; } if(operateToolbars[operateObjId] && id.split("^").length > 6) { winStr += "^"+operateToolbars[operateObjId].getItemText(id); } if(id.indexOf("(id")>0) { var checkboxName; var idStr = "(id)"; var selectedNum = 1; var conditionMode = "!="; var noSelectPrompt = "请选择你要操作的对象!"; var noRightSelectPrompt = "只能选择一个对象进行操作"; var split = ","; var idNum = 0; if(id.indexOf("(id*")>0) { //(id*{checkboxName:'ids',selectedNum:1,conditionMode:'!=',noSelectPrompt:'请选择你要操作的角色',noRightSelectPrompt:'只能选择一个操作的角色',split:','}) var opParamStr = id.substring(id.indexOf("(id*") + "(id*".length, id.lastIndexOf(")")); var opParams = eval("(" + opParamStr + ")"); checkboxName = opParams.checkboxName ? opParams.checkboxName : checkboxName; selectedNum = opParams.selectedNum != undefined ? opParams.selectedNum : selectedNum; conditionMode = opParams.conditionMode ? opParams.conditionMode : conditionMode; noSelectPrompt = opParams.noSelectPrompt ? opParams.noSelectPrompt : noSelectPrompt; noRightSelectPrompt = opParams.noRightSelectPrompt ? opParams.noRightSelectPrompt : noRightSelectPrompt; split = opParams.split ? opParams.split : split; idStr = id.substring(id.indexOf("(id*"), id.lastIndexOf(")")+1); } var checkboxVlaues = getGridCheckboxValue(checkboxName, split); if(checkboxVlaues == "") { messageBox({messageType:"alert",text: noSelectPrompt}); return; } else { idNum = checkboxVlaues.split(split).length; switch (conditionMode) { case "!=": if(idNum != selectedNum) { messageBox({messageType:"alert",text: noRightSelectPrompt.format(selectedNum)}); return; } break; case "==": if(idNum == selectedNum) { messageBox({messageType:"alert",text: noRightSelectPrompt.format(selectedNum)}); return; } break; case ">": if(idNum > selectedNum) { //noRightSelectPrompt = "已选择{0},最多只能选择{1}个对象进行操作"; messageBox({messageType:"alert",text: noRightSelectPrompt.format(idNum,selectedNum)}); return; } break; case ">=": if(idNum >= selectedNum) { messageBox({messageType:"alert",text: noRightSelectPrompt.format(selectedNum)}); return; } break; case "<": if(idNum < selectedNum) { messageBox({messageType:"alert",text: noRightSelectPrompt.format(selectedNum)}); return; } break; case "<=": if(idNum > selectedNum) { var msg = "选择操作数目不能超过{0}条!"; messageBox({messageType:"alert",text: msg.format(selectedNum)}); return; } break; default: messageBox({messageType:"alert",text: "条件运算符不合法,必须为'!=,==,>,>=,<,<='"}); return; break; } } winStr = id.replace(idStr, checkboxVlaues); } var isExistId = false; operateToolbars[operateObjId].forEachItem( function(itemId){ if(itemId == id) { isExistId = true; return; } }); if(isExistId) { winStr += "^"+operateToolbars[operateObjId].getItemText(id); } else { winStr += "^" + operateToolbars[operateObjId].getListOptionText("moreActions",id); } currentOperateId = id; createWindow(winStr); } /** * @Description: 非打开窗口的方式来进行操作,非操作栏中同样可以进行调用 * @Author: lynn.chen 陈立 * @Modified By: * @Date: 2013-03-06 * @param: id 操作时的参数, * 形如persCustomFieldAction!getAllField.action为path * 下面为需在弹窗前进行进行判断的配置 * [operateId]persCustomFieldAction!getAllField.action? * id=(id*{checkboxName:'ids',selectedNum:1,conditionMode:'!=',noSelectPrompt:'请选择你要操作的对象',noRightSelectPrompt:'只能选择一个对象进行操作',split:',',gridName: 'gridbox'})^#自定义提示信息 * */ function executeOperate(id, callbackFun) { var opStr = id.split("^")[0]; if(id.indexOf("]") > 0) { operateObjId = id.substring(1,id.indexOf("]")); opStr = id.substring(id.indexOf("]")+1); } else { operateObjId = "operate"; } var idNum = 0; var itemText = ""; var gridName = null; if(id.indexOf("(id")>0)//判断是否是grid复选 { var checkboxName; var idStr = "(id)"; var selectedNum = 0; var conditionMode = "=="; var noSelectPrompt = "请选择你要操作的对象!"; var noRightSelectPrompt = "只能选择一个对象进行操作"; var split = ","; var isOnline = false; if(id.indexOf("(id*")>0)//这里是判断是否存在提示信息参数 { //(id*{checkboxName:'ids',selectedNum:1,conditionMode:'!=',noSelectPrompt:'请选择你要操作的角色',noRightSelectPrompt:'只能选择一个操作的角色',split:','}) var opParamStr = id.substring(id.indexOf("(id*") + "(id*".length, id.lastIndexOf(")")); var opParams = eval("(" + opParamStr + ")"); checkboxName = opParams.checkboxName ? opParams.checkboxName : checkboxName; selectedNum = opParams.selectedNum != undefined ? opParams.selectedNum : selectedNum; conditionMode = opParams.conditionMode ? opParams.conditionMode : conditionMode; noSelectPrompt = opParams.noSelectPrompt ? opParams.noSelectPrompt : noSelectPrompt; noRightSelectPrompt = opParams.noRightSelectPrompt ? opParams.noRightSelectPrompt : noRightSelectPrompt; isOnline = opParams.isOnline ? opParams.isOnline : isOnline ; split = opParams.split ? opParams.split : split; gridName = opParams.gridName ? opParams.gridName : gridName; idStr = id.substring(id.indexOf("(id*"), id.lastIndexOf(")")+1); } var checkboxVlaues = getGridCheckboxValue(checkboxName, split); if(checkboxVlaues == "") { messageBox({messageType:"alert",text: noSelectPrompt}); return; } else { idNum = checkboxVlaues.split(split).length; switch (conditionMode) { case "!=": if(idNum != selectedNum) { messageBox({messageType:"alert",text: noRightSelectPrompt}); return; } break; case "==": if(idNum == selectedNum) { messageBox({messageType:"alert",text: noRightSelectPrompt}); return; } break; case ">": if(idNum > selectedNum) { messageBox({messageType:"alert",text: noRightSelectPrompt}); return; } break; case ">=": if(idNum >= selectedNum) { messageBox({messageType:"alert",text: noRightSelectPrompt}); return; } break; case "<": if(idNum < selectedNum) { messageBox({messageType:"alert",text: noRightSelectPrompt}); return; } break; case "<=": if(idNum >= selectedNum) { messageBox({messageType:"alert",text: noRightSelectPrompt}); return; } break; default: messageBox({messageType:"alert",text: "条件运算符不合法"}); return; break; } } opStr = opStr.replace(idStr, checkboxVlaues); } else if(id.indexOf("(select") > 0) { var opParamStr = id.substring(id.indexOf("(select") + "(select".length + 1, id.lastIndexOf(")")); var val = $("input:hidden[name='"+opParamStr+"']").val(); opStr = id.substring(0, id.indexOf("custom=") + "custom=".length) + (val == undefined ? "" : val); } var msg = "你确定要执行{0}操作吗?";//你确定要执行{0}操作吗? if(id.split("^").length >= 2)//判断是否存在自定义文本 { itemText = id.split("^")[1]; if(itemText.indexOf("#") >= 0) { msg = itemText.replace("#",""); } } else if(operateToolbars[operateObjId])//判断是否是Toolbar中的操作 { var isExistId = false; operateToolbars[operateObjId].forEachItem( function(itemId){ if(itemId == id) { isExistId = true; return; } }); if(isExistId)//判断当前操作栏对象中是否存在该id,存在则直接获取文本(通过id来获取文本) { itemText = operateToolbars[operateObjId].getItemText(id); } else//不存在时从下来框中去获取,下拉框id统一使用moreActions { itemText += "^" + operateToolbars[operateObjId].getListOptionText("moreActions",id); } } msg = msg.format(itemText); var submit = function (result) { if(result) { //这里判断该操作是否为ajax操作 if(opStr.indexOf(".action") > 0 || opStr.indexOf(".do") > 0) { var urlStr=opStr; if(opStr.indexOf("?")!=-1){ urlStr=opStr.substr(0,opStr.indexOf("?")); } onLoading(function(){ $.ajax({ type: "POST", url: urlStr, data:parseURL2JSON(opStr), dataType:"json", async : true, success: function(result) { if(callbackFun) { dealRetResult(result,callbackFun); } else { dealRetResult(result, undefined, gridName); } } }); }); } else//不是ajax则为执行函数 { eval(opStr + '()'); } } return true; //close }; messageBox({messageType:"confirm", text:msg, callback:submit}); currentOperateId = id; } /** * @Description: 根据解析xml来创建操作栏,在list模版页面进行调用 * @Author: lynn.chen 陈立 * @Modified By: * @Date: 2013-01-23 * @param: pageConfigXML 需要解析的xml路径 * @param: obId 用于显示对象的id,也就是一个页面可以出现多个,默认为list模版中的operate * @param: callback 加载完回调函数 */ var operateToolbars = new Array(); function createToolbar(pageConfigXML, obj, callback) { var obId = "operate"; pageConfigXML += (pageConfigXML.indexOf("?") > 0 ? "&" : "?") + "rootType=toolbars"; if(typeof(obj) == "undefined" || typeof(obj) == "string")//判断是否是对象id字符串 { obId = (obj ? obj : obId); operateToolbars[obId] = new dhtmlXToolbarObject(obId); $("#" + obId).addClass("dhxToolbar"); } else { obId = (obj.id ? obj.id : obId); operateToolbars[obId] = obj; } //operateToolbars[obId].setSkin(sysCfg.dhxSkin); operateToolbars[obId].attachEvent("onClick", function(id){ /**** this.objPull[this.idPrefix + "input_1"]; inputA = Toolbar.objPull[Toolbar.idPrefix+"input_1"].obj.firstChild;*/ }); operateToolbars[obId].setIconSize(18); operateToolbars[obId].setIconsPath(sysCfg.rootPath + "/public/images/opToolbar/"); var path = pageConfigXML + (pageConfigXML.indexOf("?") == -1 ? "?" : "&") + "un=" + new Date().getTime() + "&" + $.param($.ajaxSetup().data); operateToolbars[obId].loadXML(path, function(){ var $dhxToolbar = $(this.base); if($dhxToolbar.size() == 1) { var toolbarWidth = 0; $dhxToolbar.find("div.dhx_toolbar_btn").each(function(i){ toolbarWidth += $(this).outerWidth(); }); //$(".dhx_cell_cont_layout .dhxToolbar .dhxtoolbar_float_left div.dhx_toolbar_btn"). var left = $dhxToolbar.offset().left + 30; if(left < 50 && $("iframe[src*='.action'],iframe[src*='.do']:eq(0)", parent.document).size() > 0) { left = $("iframe[src*='.action'],iframe[src*='.do']:eq(0)", parent.document).parent().offset().left + 40; } if((left + toolbarWidth) > $(window.top.document.body).width()) { $(window.top.document.body).css("min-width",left + toolbarWidth); window.top.resizeWindow(); } } if(typeof(callback) != "undefined") { callback(); } }); } /** * @Description: 获取操作栏真实节点id * @Author: lynn.chen 陈立 * @Date: 2015-01-22 * @param:toolbarId 操作栏对象div id * @param:itemId 操作栏节点id */ function getToolbarRealItemId(toolbarId, itemId) { return operateToolbars[toolbarId].idPrefix + itemId; } /** * @Description: 封装dhmlxmessage消息提示框 * @Author: helang 何朗 * @Date: 2013-04-22 * @param:paramsJson 传入的配置参数 下面是关于paramsJson格式的说明及实例,每个属性都有默认值: confirmBox({ title:"提示信息", type:"confirm-error dhtmlx-myCss",(dhtmlxmessage内置的三种type:confirm-warning confirm confirm-error) ok:"确定", cancel:"取消", expire:3000, text:"你确定要删除此条信息吗?", messageType:"confirm", callback:function(result){alert(11);}, width:250 }); title ok cancel text 分别对应消息提示框上相应的文本内容; messageType指的是消息提示框类型(有confirm message alert三种); callback是回调方法; 特别注意下type属性,这里可以自己定义样式,指定多个样式以空格分隔开,自定义的类样式中属性必须加!important标识且自定义样式必须用dhtmlx-xxxx这种格式类名。 expire当组件的messageType为message的时候,设定message提示框多少毫秒消失,width指当消息提示框类型为message的时候,所显示的提示框的宽度,默认250。 */ function messageBox(paramsJson) { this.messageType = paramsJson.messageType ? $.trim(paramsJson.messageType) : "confirm"; this.types = ""; if(paramsJson.type) { this.typeArray = paramsJson.type.split(" "); for(var i=0; i  "+this.text, expire:this.expire }); //动态计算message的显示位置 //$($(".dhtmlx_message_area")[0]).css("left",(document.body.offsetWidth)/2-40); //$($(".dhtmlx_message_area")[0]).css("top",(document.body.offsetHeight)/2); //添加icon图片,并动态更新样式 var messageIconObj = $("#messageIconId"); messageIconObj.parent().css("text-align","center"); messageIconObj.parent().css("line-height","38px"); messageIconObj.parent().css("overflow","hidden"); messageIconObj.parent().css("height","38px"); messageIconObj.parent().css("padding-left","8px"); messageIconObj.parent().css("padding-right","8px"); messageIconObj.parent().parent().parent().css("width","auto"); messageIconObj.parent().parent().parent().css("display","inline-table"); var messageIconPath = "public/controls/dhtmlx/dhtmlxMessage/codebase/icons/"; //为message框动态指图标,succsee error loading warning 四种不同图标 switch (this.type) { case "success" : messageIconObj.attr("src",messageIconPath+"message_success.png"); break; case "error" : messageIconObj.attr("src",messageIconPath+"message_error.png"); break; case "loading" : messageIconObj.attr("src",messageIconPath+"message_loading.gif"); break; case "warning" : messageIconObj.attr("src",messageIconPath+"message_warning.png"); break; } messageIconObj.css("vertical-align","middle"); break;*/ case "alert": this.title = paramsJson.title ? $.trim(paramsJson.title) : "提示"; this.type = this.types ? $.trim(this.types) : "alert"; //'alert', 'alert-warning', 'alert-error this.text = paramsJson.text ? $.trim(paramsJson.text) : ""; this.ok = paramsJson.ok ? $.trim(paramsJson.ok) : "确定"; this.callback = paramsJson.callback; dhtmlx.alert({ title:this.title, type:this.type, text:this.text, ok:this.ok, callback:this.callback }) break; case "alert-warning": this.title = paramsJson.title ? $.trim(paramsJson.title) : "提示"; this.type = this.types ? $.trim(this.types) : "alert"; //'alert', 'alert-warning', 'alert-error this.text = paramsJson.text ? $.trim(paramsJson.text) : ""; this.ok = paramsJson.ok ? $.trim(paramsJson.ok) : "确定"; this.callback = paramsJson.callback; dhtmlx.alert({ title:this.title, type:this.messageType, text:this.text, ok:this.ok, callback:this.callback }) break; } //添加样式切换功能 /*$(".dhtmlx_popup_button").each(function(b){ $(this).hover(function(){ $(this).css("background","url(public/images/btn_bg_hover.jpg) repeat scroll 0 0 transparent"); }, function(){ $(this).css("background","url(public/images/btn_bg.jpg) repeat scroll 0 0 transparent"); }); });*/ } /** * 限制startTimeId和endTimeId不能大于当前时间 * startTimeId不能大于endTimeId * @author colin.yao 2014-4-16 17:42:14 * @param mCal new出来的日期控件对象 * @param startTimeId * @param endTimeId * @param timeType 日期格式类型 * @param type 类型(1为开始,2为结束) * @return */ function limitTime(mCal, startTimeId, endTimeId, timeType, type){ //获取当前日期 var myDate = new Date(); var oneYear = myDate.getFullYear(); var oneMonth = myDate.getMonth()+1; var oneDay = myDate.getDate(); myDate = oneYear+"-"+oneMonth+"-"+oneDay; var startTime = $("#"+startTimeId).val(); var endTime = $("#"+endTimeId).val(); if(timeType == 0) { mCal.setDateFormat(sysCfg.dhxShortDateFmt); mCal.hideTime(); } else { mCal.setDateFormat(sysCfg.dhxLongDateFmt); } if(type == 1) { if(endTime == "" || endTime == null) { mCal.setSensitiveRange(null, myDate); } else { mCal.setSensitiveRange(null, endTime); } } else { if(startTime == "" || startTime == null) { mCal.setSensitiveRange(null, myDate); } else { mCal.setSensitiveRange(startTime, myDate); } } } /** * 函数主要用于有开始时间和结束时间需要输入的情况 * @author liangm 20130427 * @param mCal 日期控件 * @param startTimeId 开始时间输入框id * @param referTimeId 参照时间id(即当填写开始时间时,那么它的参照时间id即为结束时间输入框id,反之,亦然) * @return */ function inputTime(mCal, startTimeId, referTimeId, timeType) { if(timeType == 0) { mCal.setDateFormat(sysCfg.dhxShortDateFmt); mCal.hideTime(); } else { mCal.setDateFormat(sysCfg.dhxLongDateFmt); } if (referTimeId == startTimeId) { mCal.setSensitiveRange($("#"+referTimeId).val() == "" ? null : $("#"+referTimeId).val(), null); } else { mCal.setSensitiveRange(null, $("#"+referTimeId).val() == "" ? null : $("#"+referTimeId).val()); } } /** * 限制开始时间不能大于结束时间、结束时间不能小于开始时间 * @author Jason 20130620 * @param myCalendar new出来的日期控件对象 * @param startTimeId 开始时间输入框id * @param referTimeId 参照时间id(即当填写开始时间时,那么它的参照时间id即为结束时间输入框id,反之,亦然) * @return */ function inputDateTime(myCalendar, startTimeId, referTimeId) { if (referTimeId == startTimeId) { myCalendar.setSensitiveRange($("#"+referTimeId).val(), null); } else { myCalendar.setSensitiveRange(null, $("#"+referTimeId).val()); } } /** * @Description: 创建长日期格式的dhx日历控件(格式如:2013-5-20 18:00:00) * @Author: lynn.chen 陈立 * @Modified By: * @Date: 2013-09-03 * @param: object 需要解析的xml路径 */ var myCalendars = new Array(); function createLongDhxCalendar0(object, startTime) { var longCalendar; var objArray = object.toString().split(",");//保存id值 //下面是同过ajax请求加载到相应控件中 longCalendar = new dhtmlXCalendarObject(object); longCalendar.setDateFormat(sysCfg.dhxLongDateFmt); if(startTime) { longCalendar.setSensitiveRange(startTime); } //longCalendar._strToDate(new Date(), sysCfg.dhxShortDateFmt); setCalendarTopPosition(longCalendar,objArray); myCalendars[object] = longCalendar; return longCalendar; } /** * @Description: 创建短日期格式的dhx日历控件(格式如:2013-5-20) * @Author: lynn.chen 陈立 * @Modified By: * @Date: 2013-09-03 * @param: object */ function createShortDhxCalendar0(object, startDate) { var shortCalendar; var objArray = object.toString().split(",");//保存id值 //下面是同过ajax请求加载到相应控件中 shortCalendar = new dhtmlXCalendarObject(object); shortCalendar.setDateFormat(sysCfg.dhxShortDateFmt); if(startDate) { shortCalendar.setSensitiveRange(startDate); } shortCalendar.hideTime();//隐藏时间 setCalendarTopPosition(shortCalendar, objArray); myCalendars[object] = shortCalendar; return shortCalendar; } /** * @Description: 自动判断给Calendar设置Position为Top * @Author: lynn.chen 陈立 * @Modified By: * @Date: 2013-09-03 * @param: calendar 日期控件对象 * @param: objArray 对象id数组 * @param: autoJudge 自动判断,false则是一定设置为top */ function setCalendarTopPosition(calendar, objArray, autoJudge) { autoJudge = typeof(autoJudge) == "undefined" || autoJudge == null || autoJudge ? true : false; function doOnInpClick() { if(!autoJudge)//非自动,必须使用 { this.calendar.setPosition($(this).offset().left, ($(this).offset().top - $(this.calendar.base).height())); } else if(($(this).offset().top + $(this.calendar.base).height()) > $(document.body).height() && $(this).offset().top > $(this.calendar.base).height())//动态判断位置 { this.calendar.setPosition($(this).offset().left, ($(this).offset().top - $(this.calendar.base).height())); } }; var objectArray = (typeof(objArray) == "string" ? new Array([objArray]) : objArray); for(var i = 0; i < objectArray.length; i++) { var obj = document.getElementById(objectArray[i]); if(obj == null || !obj) { break; } if(String(obj.tagName).toLowerCase() == "input") { $(obj).bind("blur", function(){ if(this.calendar.isVisible()) { var inputObj = this; var t = window.setTimeout(function(){ inputObj.calendar.hide(); window.clearTimeout(t); },50); } }); $(obj).bind("click", doOnInpClick); obj.calendar = calendar; obj.autoJudge = autoJudge; } } objArray = null; } /** * @Description: 给Layout设置Resize自动适应大小变化 * @Author: lynn.chen 陈立 * @Modified By: * @Date: 2014-3-20 * @param: layout dhtmlXLayoutObject对象 */ function setLayoutResize(layout) { layout.attachEvent("onPanelResizeFinish", setSizesGrid);//内部拖动 layout.attachEvent("onResize", setSizesGrid); //外部缩放 layout.attachEvent("onCollapse", setSizesGrid); //按钮缩 layout.attachEvent("onExpand", setSizesGrid);//按钮展开 layout.setSizes(false); } /** * @Description: 重置grid大小 * @Author: lynn.chen 陈立 * @Modified By: * @Date: 201312-27 * @param: girdName */ function resizeLayout(layoutName) { if(document.getElementById(layoutName)) { var height = $("#" + layoutName).outerHeight() - $("#" + layoutName).position().top; $("#" + layoutName).height(height); } } /** * @Description: 按钮操作模板高度重置方法 * @Author: lynn.chen 陈立 * @Modified By: * @Date: 2015-01-23 */ function opTemplateHeightResize() { if($(".dhxwin_active").size() > 0) { var $contentDiv = $(".dhxwin_active .content_div"); $contentDiv.height($(".dhxwin_active .content_td").height()); $contentDiv.css("overflow", "auto"); } else { var $contentDiv = $(".dhx_cell_cont_layout .content_div"); $contentDiv.height($(".dhx_cell_cont_layout .content_td").height()); $contentDiv.css("overflow", "auto"); } } /** * * TODO 个性化导出 * * @author chenpf * @since 2015年11月9日 下午1:43:12 * @param id "reportId#gridName#reqParams */ function personalExport(id) { var params = id.split("#"); var reportId = params[0]; var gridName = params[1] || "gridbox"; var systemCode = $(document.getElementById("systemCode")).val(); var url = "basePNExportAction!exportPage.action?"; url = url + "systemCode=" + systemCode; url = url + "&reportId=" + reportId + "&gridName=" + gridName; if(typeof(params[2]) != "undefined") { var other = params[2].split("&"); var otherParams = ""; for(var i = 0; i < other.length; i++) { var pair = other[i].split("="); otherParams = otherParams + "&" + pair[0] + "="; if(pair[1].charAt(0) == ":" || pair[1].charAt(0) == "{") {//替换变量 if(pair[1].charAt(0) == ":") {//截取变量名 pair[1] = pair[1].substring(1); } if(pair[1].charAt(0) == "{") {//截取变量名 pair[1] = pair[1].substring(1,pair[1].length - 1); } var paramValue = pair[1]; try {//从当前作用域中获取 paramValue = eval(paramValue); } catch(e) {//没有则从dom元素获取 paramValue = document.getElementById(pair[1]); if(paramValue) { paramValue = $(paramValue).val(); } else { paramValue = $("input[name='" + pair[1] + "']"); if(paramValue.length > 0) { paramValue = $(paramValue).val(); } else { paramValue = pair[1]; } } } otherParams = otherParams + paramValue; } else { otherParams = otherParams + pair[1]; } } url = url + otherParams; } if(typeof(params[3]) != "undefined") { url = url + params[3]; } else{ url = url + "^0^0^550^250^个性化导出"; } createWindow(url); } /** * * TODO 选中左菜单节点 * * @author Administrator * @since 2016年12月14日 上午9:54:15 * @param accId * @param menuId */ function selectLeftMenuNode(accId,menuId){ system.myAcc.cells(accId).open(); system.myAcc.cells(accId).dataObj.selectItem(menuId,true); }