/** * @Description: 此js为页面的初始化和一些主要的js应用 * @Author: lynn.chen 陈立 * @Modified By: * @Date: 2013-01-08 */ var operateMessage = null; var system = {}; var btn = null; var flag = false; var limitCalendars=[]; var myLayouts = new Array(); system.start_text = ""; system.rightId = "right";//右边div框架的id system.isFormByWinOpen = true;//表单页是否以弹出窗口来进行添加界面显示 var layout_a="a"; var layout_b="b"; var leftMenuClickFunction = []; //点击左边树时,右边窗口的tab创建 system.createTab = function(id, full_id, text, extra) { var iframeTag = "iframe:"; //$("#" + system.rightId).html(""); //iframe内存释放 $("iframe[src*='.action']").removeAttr("src"); $("iframe[src*='.action']").remove();//移除之前的iframe $("iframe[src*='.html']").removeAttr("src");//移除之前的iframe $("iframe[src*='.html']").remove();//移除之前的iframe //$("iframe[src*='.action']")[0].contentWindow. $.browser.msie && CollectGarbage(); system.contentLayout.cells(layout_b).detachObject(); if(id.indexOf(iframeTag) == 0) { id = id.substring(iframeTag.length); system.contentLayout.cells(layout_b).attachURL(id); } else { setIdHtmlByPath(id,system.rightId); system.contentLayout.cells(layout_b).attachObject(system.rightId); } system.contentLayout.cells(layout_b).progressOff(); }; /**读取搜索配置文件,进行数据加载*/ function loadSearchConfig(searchXMLPath,gridName) { searchXMLPath += (searchXMLPath.indexOf("?") > 0 ? "&" : "?") + "rootType=searchs" + "&etc=" + new Date().getTime(); initSearchConfig(searchXMLPath, gridName); } /**加载搜索控件,必须结合上面的loadSearchConfig一起使用*/ function loadSearchControl(xml,gridName) { loadSearchData(xml, gridName); } /*function enterSearch(obj, gridName) { $(obj).bind("keypress", function(e){ var key = e.which; var reg = new RegExp("\\d"); if(key == 13 )//回车键 { $("#searchButton" + gridName).click(); } }); }*/ function operatePrompt() { var dhxWins = new dhtmlXWindows(); dhxWins.enableAutoViewport(false); dhxWins.attachViewportTo(document.body); dhxWins.setImagePath("/public/controls/dhtmlx/dhtmlxWindows/codebase/imgs/"); w1 = dhxWins.createWindow("w1", 0, 0, 320, 240); w1.setText("友情提示"); w1.center(); w1.attachHTMLString("
目前该功能正在努力开发,请耐心等待....
"); } /** * TODO 设置二级菜单项鼠标经过图标 * @author chenpf * @since 2015年4月29日 下午5:55:32 * @param obj 该二级菜单项的Jquery选择器对象,可以是id,DOM元素对象等 * @returns true:设置成功,false:设置失败 */ function setAccMouseOverIcon(obj) { var imgObj=$(obj).find("img.dhx_cell_hdr_icon"); var oldSrc=imgObj.attr("src"); //根据路径名判断是否是鼠标经过的图片 if(oldSrc.indexOf("_over.")!=-1) return false; //拼接新路径 var newSrc=oldSrc.substr(0,oldSrc.lastIndexOf("."))+"_over"+oldSrc.substr(oldSrc.lastIndexOf(".")); imgObj.attr("src",newSrc); return true; } /** * TODO 设置二级菜单项鼠标离开图标 * @author chenpf * @since 2015年4月29日 下午5:55:32 * @param obj 该二级菜单项的Jquery选择器对象,可以是id,DOM元素对象等 * @returns true:设置成功,false:设置失败 */ function setAccMouseOutIcon(obj) { var imgObj=$(obj).find("img.dhx_cell_hdr_icon"); if(imgObj.length === 0) return true; //根据路径名判断是否是鼠标经过的图片 if(imgObj.attr("src").indexOf("_over.")==-1) return false; var newSrc=imgObj.attr("src").replace("_over.","."); imgObj.attr("src",newSrc); return true; } //界面初始化方法,一切从这里开始 function init() { //session超时,地址回绑,增加一个cookie。 update by: ob.huang 2013-05-07 //var backUrl = window.location.href; //var loc = backUrl.substring(backUrl.lastIndexOf("/")+1, backUrl.length) createCookie("backUrl",window.location.pathname); if("false"=='true') { layout_a="b"; layout_b="a"; } var leftMenuXML=""; if(document.getElementById("leftMenuXML")) { leftMenuXML = document.getElementById("leftMenuXML").value;//获取左边xml菜单 } //创建主体部分,形成左右格局 system.contentLayout = new dhtmlXLayoutObject(document.body, "2U", "dhx_subMenu"); system.contentLayout.setOffsets({ top: 0, right: 0, bottom: 0, left: 0 }); //绑定layout事件-darcy20130111 leftMenuXML setLayoutResize(system.contentLayout); //system.contentLayout = new dhtmlXLayoutObject(document.body, "3U", sysCfg.dhxSkin); //system.contentLayout = new dhtmlXLayoutObject(document.body, "3L", sysCfg.dhxSkin); if(document.getElementById("top")) { if(document.getElementById("ieBrowserPrompt")) { $("#top").height($("#top").height() + $("#ieBrowserPrompt").height()); } system.contentLayout.attachHeader("top"); } system.contentLayout.cells(layout_a).setWidth(240); system.contentLayout.cells(layout_a).setText("功能菜单"); system.contentLayout.cells(layout_a).attachObject("left"); system.contentLayout.cells(layout_b).setText(""); //$(document.body).hide(); //system.contentLayout.cells("c").setText("系统监控"); //system.contentLayout.setCollapsedText("c", "系统监控"); //system.contentLayout.cells("c").attachObject("bottom"); //system.contentLayout.cells("c").setHeight("200"); //system.contentLayout.cells("c").collapse();//默认折叠。有报警等异常时自动展开-darcy20130409 //监控的下半部分-事件记录 //var statusBar = system.contentLayout.attachStatusBar(); //statusBar.setText("Active Alarm: Ack. Alarm: Off Normal: Fresh Time:"); //$("div[title='Collapse']").hide(); //system.contentLayout.cells("b").attachURL(indexPage); system.contentLayout.cells(layout_a).hideHeader(); system.contentLayout.cells(layout_b).hideHeader(); //判断是否需要隐藏左边窗口 if($("#isCollapse").val() == "true") { system.contentLayout.cells(layout_a).collapse(); } system.contentLayout.cells(layout_a).fixSize(true, true); //$(system.contentLayout.cells("a").cell).css("background-color","#474b4f"); //system.contentLayout.cells("b").expand(); //system.contentLayout.cells("b").style.overflow="auto"; //var b = system.contentLayout.cells("b"); //b.vs[b.av].dhxcont.mainCont[b.av].style.overflow = "visible"; if(leftMenuXML!="") { system.myAcc = system.contentLayout.cells(layout_a).attachAccordion({icons_path: "/public/controls/dhtmlx/skins/web/imgs/dhxtree_web/"}); system.myAcc.setOffset(0);//设置间隔 //system.myAcc.enableMultiMode("auto", 600)//启用多选模式 system.myAcc.initSelectAccId = null; system.myAcc.initSelectMenuId = null; system.myAcc.openedSelf = true; system.myAcc.attachEvent("onBeforeActive", function(id, state) {//用于展开时点击自己close system.myAcc.openedSelf = false; //切换图标 system.myAcc.forEachItem(function(cell){ if(cell.isOpened()) { setAccMouseOutIcon(cell.cell); } }); return true; // allow opening }); $.ajax({ url:leftMenuXML, type: 'GET', dataType: 'xml', async : false, success: function(xml){ var childrenSize = $(xml).find("tree").children().size(); var initSelectMenuId= getLocationParam("menuId");//通过获取路径中的menuId来指定选中菜单 if((initSelectMenuId == null || initSelectMenuId == "") && sysCfg.devMode)//开发模式开启 { initSelectMenuId = getCookie("leftMenuId" + window.location.pathname);//模块菜单选中记忆功能 } /**初始化选中节点---begin**/ var defaultSelectMenuId = null; var defaultSelectAccId = null; $(xml).find("tree").children().each(function(i) { $(this).find("item").each(function(j) { if($(this).attr("id") == initSelectMenuId) { system.myAcc.initSelectMenuId = initSelectMenuId; return false; } else if($(this).attr("select")) { defaultSelectMenuId = $(this).attr('id'); } }); if(system.myAcc.initSelectMenuId != null)//存在初始化id { system.myAcc.initSelectAccId = $(this).attr('id'); return false; } else if(defaultSelectAccId == null && defaultSelectMenuId != null)//存在xml中的默认的初始化id { defaultSelectAccId = $(this).attr('id'); } }); if(system.myAcc.initSelectAccId == null) { system.myAcc.initSelectAccId = defaultSelectAccId; system.myAcc.initSelectMenuId = defaultSelectMenuId; } /**初始化选中节点---end**/ $(xml).find("tree").children().each(function(i) { var accId = $(this).attr('id'); var text = $(this).attr('text'); var icon = $(this).attr('im0'); //getItem($(this)); //console.log($(this).find("item")); var isOpen = false;//是否打开该Acc节点 if(accId == system.myAcc.initSelectAccId) { isOpen = true; } system.myAcc.addItem(accId, text, isOpen, null, icon); var subMenuXMLString = ""; $(this).find("item").each(function(j) { var $item = $(this)[0]; var attrStr = ""; $($(this)[0].attributes).each(function(i) { attrStr += " " + $(this)[0].name + "='" + $(this)[0].value + "'"; }); subMenuXMLString += "<" + $item.nodeName + "" + attrStr +">"; }); var isLast = (childrenSize == (i+1) ? true : false); if(isLast) { system.myAcc.lastAccId = accId; } loadTree(accId, subMenuXMLString, isLast); $(system.myAcc.cells(accId).cell.firstChild).attr("accid", accId); $(system.myAcc.cells(accId).cell.firstChild).bind("click",function(){ if(system.myAcc.openedSelf) { system.myAcc.cells($(this).attr("accid")).close(); //system.myAcc.cells(system.myAcc.lastAccId).open();//展开最后一个 system.myAcc.openedSelf = false; } else { system.myAcc.openedSelf = true; } }); }); $(".dhx_cell_cont_acc").mCustomScrollbar({//自定义滚动条dhx_cell_cont_acc scrollButtons:{ enable:true //是否使用上下滚动按钮 }, scrollInertia:150 }); //console.log(system.myAcc.initSelectAccId); } }); } } function loadTree(accId, subMenuXMLString, isLast) { var tree = system.myAcc.cells(accId).attachTree(); tree.setSkin("dhx_subMenu"); tree.setImagePath(sysCfg.treeImgPath); tree.enableTreeImages("false"); tree.enableTreeLines("false"); tree.enableTextSigns(false); tree.enableIEImageFix(false);//取消树节点图片标签为DIV,解决4.2后菜单缩进问题 tree.enableLineNowrap= false; tree.setOnLoadingEnd(function (){ if(system.myAcc.initSelectAccId == accId) { //system.myAcc.cells(accId).open(); this.selectItem(system.myAcc.initSelectMenuId,true,true); system.submenuTree = this; //设置选中图标 setAccMouseOverIcon(system.myAcc.cells(system.myAcc.initSelectAccId).cell); $("div[class='dhx_cell_acc'] .dhx_cell_cont_acc").mCustomScrollbar("scrollTo",".selectedTreeRow");//使其到达选中节点位置 } if(isLast) { //$(".dhxtree_dhx_subMenu td.standartTreeRow").removeAttr("nowrap");//使其不强制不换行,已改源码加入tree.enableLineNowrap解决 $('div[class="dhx_cell_hdr_text dhx_cell_hdr_icon"]').each(function(i, obj){ var height = (50-14)/2; if($(obj).height() > 50) { $(obj).css({"line-height": "14px"}); height = (50-(14*2))/2; $(obj).prepend("
") $(obj).show(); } //$(obj).parent().css({"padding-top": padding, "padding-bottom": padding}); }); } $(".dhx_cell_acc .dhx_cell_hdr").each(function(i,obj) { //是否已添加错误事件,避免重复绑定错误事件 var hasErrorEvent=true; //添加鼠标经过事件 $(obj).bind("mouseover",function() { if(!setAccMouseOverIcon(obj)) return; //错误时还原路径 var imgObj=$(obj).find("img.dhx_cell_hdr_icon"); if(hasErrorEvent){ imgObj.bind("error",function() { imgObj.attr("src",oldSrc); }); hasErrorEvent=false; } }); //添加鼠标离开事件 $(obj).bind("mouseout",function() { if(system.myAcc.cells($(obj).attr("accid")).isOpened()) return; setAccMouseOutIcon(obj); }); }); }); //tree.enableDragAndDrop(true); tree.attachEvent("onClick", function(id) { if(leftMenuClickFunction != null && leftMenuClickFunction.length > 0) {//菜单项单击事件数组,用于给菜单树动态添加事件 for(var i = 0; i < leftMenuClickFunction.length; i++) { if(typeof(leftMenuClickFunction[i]) == "function") { leftMenuClickFunction[i](id); } } } system.submenuTree = this; /*$.jBox.closeTip(); $.jBox.closeMessager();*/ //tree.saveSelectedItem("selectedMenu","expires="+0+";path="+ "/;"); var menuId = id; //主菜单 id = (id.indexOf("^") == -1 ? id : id.split("^")[1]);//截取id //当节点不存在,默认选中第一个子节点(权限) if(tree.getIndexById(id)==null) { id = tree.getItemIdByIndex(menuId, 0); } //通过当前选中的菜单来设置右边的标题文本 var model = tree.getItemText(id); var text = "" + model; system.contentLayout.cells(layout_b).progressOn(); system.createTab(id); system.contentLayout.cells(layout_b).setText(text); createCookie("leftMenuId" + window.location.pathname,menuId); $(".dhx_cell_closed .selectedTreeRow").addClass("standartTreeRow").removeClass("selectedTreeRow"); //document.cookie = 'leftMenuId='+ id +';expires='+0+";path="+ "/;"; //当前选中 //tree.selectItem(id); //当前焦点 //tree.focusItem(id); return true; }); var xmlString = '' + subMenuXMLString + ''; //console.log(xmlString); tree.loadXMLString(xmlString); } //加载窗体变化时宽度自动适应的事件 if (window.attachEvent) { window.attachEvent("onresize",resizeWindow); } else { window.addEventListener("resize",resizeWindow, false); } //重置窗口大小 function resizeWindow() { var t; var cautionHeight = null; var doorStateHeight = null; window.clearTimeout(t); window.clearTimeout(gt); var gt; t = window.setTimeout(function() { function resizeLayout() { if(system.contentLayout) { system.contentLayout.setSizes(false); } if(typeof(myLayouts) != "undefined") { for(var key in myLayouts) { if(document.getElementById(key) && "setSizes" in myLayouts[key])//判断该对象是否存在setSizes方法 { $("#" + key).height("100%"); var height = $("#" + key).height() - $("#" + key).position().top; $("#" + key).height(height); myLayouts[key].setSizes(false); } } } } resizeLayout(); resizeLayout(); setSizesGrid(); if(document.getElementById("deptTreeDiv")) { var height = $(document.body).height()- 145 - 30 - 45; $("#deptTreeDiv").height(height); $("#layoutBox").height(height + 32); } if(document.getElementById("mainDiv")) { $("#mainDiv").height("100%"); } //set和编辑模板页面自适应 $(".dhx_cell_cont_layout .content_div").height(0); $(".dhx_cell_cont_layout .content_div").height($(".dhx_cell_cont_layout .content_td").height()); },50); } function setSizesGrid() { if(typeof(mygrids) != "undefined") { for(var key in mygrids) { if("setSizes" in mygrids[key])//判断该对象是否存在setSizes方法 { if(mygrids[key].enableResetHeight) { resizeGird(key); } mygrids[key].setSizes(false); } } } } //enter键事件 function enterOnKeyUp(e) { var focusObj = document.activeElement; //绑定回车确定事件代码 var theEvent = window.event || e; var code = theEvent.keyCode || theEvent.which||e.charCode; if (code == 13) { //绑定全局回车提交表单事件 if($("#OK").length > 0) { $("#OK").click(); } //每次进来初始化 btn = null; flag = false; if(focusObj.nodeName == "INPUT" && focusObj.nodeType == 1) { var firstParentNodes = $(document.activeElement).parentsUntil('#searchBoxrightGridbox'); var secondParentNodes = $(document.activeElement).parentsUntil('#searchBoxleftGridbox'); if(firstParentNodes.length < secondParentNodes.length) { serchButtonObj($("#searchBoxrightGridbox"),focusObj); serchFoucusObj($("#searchBoxrightGridbox"),focusObj); if(flag) { $(btn).click(); } } else if(firstParentNodes.length == secondParentNodes.length) { serchButtonObj($("#searchBoxgridbox"),focusObj); serchFoucusObj($("#searchBoxgridbox"),focusObj); if(flag) { $(btn).click(); } } else if(firstParentNodes.length > secondParentNodes.length) { serchButtonObj($("#searchBoxleftGridbox"),focusObj); serchFoucusObj($("#searchBoxleftGridbox"),focusObj); if(flag) { $(btn).click(); } } } } } //根据节点id,来判断在path后面添加参数 --add by wenxin function addParamByMenuId(path) { if (system && system.submenuTree) { var leftMenuId = system.submenuTree.getSelectedItemId(); if(new RegExp("searchHide=").test(leftMenuId)) { var pathParam = leftMenuId.split("searchHide=")[1];//[alarmEvent:'alarm'] pathParam = pathParam.substring(1,pathParam.length-1); var paramKey = pathParam.split(":")[0]; var paramValue = pathParam.split(":")[1]; if(path.indexOf("?") > 0) { path += "&" + paramKey + "=" + paramValue; } else { path += "?" + paramKey + "=" + paramValue; } } } return path; }