var parentTopHeight; var broswerFlag; var sigleSelectionSetting = { view: { dblClickExpand: false, selectedMulti: false }, data: { simpleData: { enable: true } }, callback: { onClick: zTreeSelectItemClick } }; var multiNoGroupSelectionSetting = { view: { selectedMulti: true, showIcon: false, showLine: false }, check: { enable: true, chkboxType: { Y: "", N: "" } }, data: { simpleData: { enable: true } }, callback: { onClick: zTreeSelectItemClick } }; var multiTreeSelectionSetting = { view: { selectedMulti: false }, check: { enable: true, chkboxType: { Y: "", N: "" } }, data: { simpleData: { enable: true } }, callback: { onClick: zTreeSelectItemClick } }; var multiTreeSelectionSetting2 = { view: { selectedMulti: false }, check: { enable: true, chkboxType: { Y: "ps", N: "ps" } }, data: { simpleData: { enable: true } }, callback: { onClick: zTreeSelectItemClick } }; jQuery.fn.extend({ selectTreeRender: function (a) { return this.each(function () { $(this).html(""); new jQuery.SelectTreeBox(this, a) }) }, selectTreeAddItem: function (a) { this.each(function () { var b = $(this).data("data"); var c = "treeNodes"; if ($(this).attr("dataRoot")) { c = $(this).attr("dataRoot") } b[c].push(a); $(this).data("data", b); $(this).html(""); new jQuery.SelectTreeBox(this) }) }, selectTreeRemoveItem: function (a) { this.each(function () { var b = $(this).data("data"); var c = -1; var d = "treeNodes"; if ($(this).attr("dataRoot")) { d = $(this).attr("dataRoot") } $.each(b[d], function (e, f) { if (f.id.toString() == a) { c = e } }); if (c != -1) { b[d].splice(c, 1) } $(this).data("data", b); $(this).html(""); new jQuery.SelectTreeBox(this) }) } }); var depth = 500; var selectTree_id = 1; jQuery.SelectTreeBox = function (F, H) { var o = {}; o.inputClass = o.inputClass || "selectbox"; o.containerClass = o.containerClass || "selectbox-tree"; o.hoverClass = o.hoverClass || "current"; o.currentClass = o.selectedClass || "selected"; o.debug = o.debug || false; selectTree_id++; var g = "请选择"; var k = "0_input"; var w = "0_button"; var u = false; var I = $(F); I.addClass("mainCon"); if (I.attr("prompt") != null) { g = I.attr("prompt") } var f = t(o); var c = $(''); c.attr("id", "selectTree" + selectTree_id + "_tree"); var v = G(o); var p = D(o); var s; s = $(""); var a = false; if (I.attr("multiMode") != null) { if (I.attr("multiMode") == "true" || I.attr("multiMode") == true) { a = true; s.addClass("selBtnMuiti"); if (I.attr("noGroup") == "true" || I.attr("noGroup") == true) { c.addClass("noGroupZtree") } else { c.addClass("multiSelectZtree") } } else { a = false } } if (I.attr("disabled") == "disabled" || I.attr("disabled") == "true" || I.attr("disabled") == true) { s.attr("disabled", true); if (a == true) { s.addClass("selBtn_disabledMuiti") } else { s.addClass("selBtn_disabled") } v.addClass("selectbox_disabled") } s.attr("id", "selectTree" + selectTree_id + "_button"); var m = 135; if (I.attr("selWidth") != null) { m = Number(I.attr("selWidth")) - 22 } v.width(m); var L = $('
'); L.find("td").eq(0).append(v); L.find("td").eq(1).append(s); I.append(L); I.append(f); I.append(p); f.append(c); var C = ""; if (I.attr("selectedValue")) { C = I.attr("selectedValue") } var q = false; if (I.attr("editable") != null) { if (I.attr("editable") == "true") { q = true } else { q = false } } f.hide(); var z = "treeNodes"; if (I.attr("dataRoot")) { z = I.attr("dataRoot") } var n = I.attr("params"); var A; if (n) { try { A = JSON.parse(n) } catch (K) { A = ""; alert("树形下拉框参数格式有误!(提示:json数据的属性和名称必须以双引号包围)") } } else { A = "" } var d = ""; var E = I.attr("url"); var x = I.attr("data"); var l = I.data("data"); if (l) { B(l) } else { if (x) { try { d = JSON.parse(x) } catch (K) { d = ""; alert("树形下拉框参数格式有误!(提示:放在标签中的json数据的属性和名称必须以双引号包围)") } I.data("data", d); B(d) } else { if (E) { $.ajax({ url: I.attr("url"), dataType: "json", data: A, error: function () { alert("树形下拉框数据源出错,请检查url路径") }, success: function (e) { I.data("data", e); d = e; B(e) } }) } } } if (!q) { v.css({ cursor: "pointer" }); v.click(function (e) { k = $(e.target).attr("id"); y(); depth++; I.css({ zIndex: depth }); if (f.attr("hasfocus") == 0) { r() } else { b() } }) } else { v.css({ cursor: "text" }); v.change(function () { I.attr("editValue", $(this).val()); p.val($(this).val()) }) } s.click(function (e) { w = $(e.target).attr("id"); y(); depth++; I.css({ zIndex: depth }); if (f.attr("hasfocus") == 0) { r() } else { b() } }); function y() { f.css({ overflowY: "visible", overflowX: "visible" }); f.width(""); var e = 200; if (parentTopHeight > 0) { var N = window.top.document.documentElement.clientHeight; e = N - parentTopHeight - parentBottomHeight - I.offset().top - 30 } else { e = window.document.documentElement.clientHeight - (I.offset().top - $(window).scrollTop()) - 30 } var P; if (!I.attr("boxWidth")) { P = f.width() } f.css({ overflowY: "auto", overflowX: "hidden" }); if (!I.attr("boxWidth")) { f.width(P) } else { f.width(Number(I.attr("boxWidth"))) } var O = 0; if (I.attr("boxHeight")) { O = Number(I.attr("boxHeight")) } if (O != 0) { f.height(O); if (I.attr("openDirection") == "top") { f.css({ top: -O }) } else { if (I.attr("openDirection") == "bottom") { f.css({ top: 24 }) } else { if (e < O) { if (I.offset().top > O) { f.css({ top: -O }) } else { if (e < 100 && I.offset().top > e && I.offset().top > 100) { f.css({ top: -O }) } else { f.css({ top: 24 }) } } } else { f.css({ top: 24 }) } } } } else { if (I.attr("openDirection") == "top") { if (I.offset().top > f.height()) { f.css({ top: -f.height() }) } else { f.height($mainCon.offset().top); f.css({ top: -$mainCon.offset().top }) } } else { if (I.attr("openDirection") == "bottom") { if (e < f.height()) { f.css({ top: 24 }); f.height(e) } else { f.css({ top: 24 }) } } else { if (e < f.height()) { if (I.offset().top > f.height()) { f.css({ top: -f.height() }) } else { if (e < 100 && I.offset().top > e && I.offset().top > 100) { f.height(I.offset().top); f.css({ top: -I.offset().top }) } else { f.css({ top: 24 }); f.height(e) } } } else { f.css({ top: 24 }) } } } } if (!I.attr("boxWidth")) { if (f.width() < m + 24) { f.width(m + 24) } } } function i() { var e = $("
"); e.addClass("mainCon"); return e } function t(e) { var N = $("
"); N.attr("id", "selectTree" + selectTree_id + "_container"); N.addClass(e.containerClass); N.attr("hasfocus", 0); return N } function G(N) { var e = document.createElement("input"); var P = $(e); P.attr("id", "selectTree" + selectTree_id + "_input"); P.attr("type", "text"); P.addClass(N.inputClass); P.attr("autocomplete", "off"); var O = false; if (I.attr("editable") != null) { if (I.attr("editable") == "true") { O = true } else { O = false } } if (!O) { P.attr("readonly", "readonly") } else { P.attr("readonly", false) } if (I.attr("disabled") == "disabled" || I.attr("disabled") == "true" || I.attr("disabled") == true) { P.attr("disabled", true); P.addClass("inputDisabled") } return P } function D(N) { var e = document.createElement("input"); var O = $(e); O.attr("type", "hidden"); if (I.attr("name") != null) { O.attr("name", I.attr("name")) } return O } function j(N, e) { I.attr("relText", N); I.attr("relValue", e); p.val(e); v.val(N); if (q == "true" || q == true) { I.attr("editValue", v.val()); p.val(v.val()) } I.focus(); return true } function B(N) { if (!N) { return } if (a == true) { if (C == "") { v.val(g); I.attr("relText", g); I.attr("relValue", ""); p.val("") } else { var V = C.split(","); var Q = ""; for (var S = 0; S < V.length; S++) { for (var R = 0; R < N[z].length; R++) { if (N[z][R].id.toString() == V[S]) { N[z][R].checked = true; Q = Q + N[z][R].name + ","; continue } } } if (Q.length > 0) { Q = Q.substring(0, Q.length - 1) } j(Q, C); v.attr("title", Q); try { enableTooltips() } catch (U) {} } if (I.attr("noGroup") == "true" || I.attr("noGroup") == true) { if (H) { $.fn.zTree.init(c, H, N[z]) } else { $.fn.zTree.init(c, multiNoGroupSelectionSetting, N[z]) } } else { if (I.attr("allSelectable") == "true" || I.attr("allSelectable") == true) { if (H) { $.fn.zTree.init(c, H, N[z]) } else { $.fn.zTree.init(c, multiTreeSelectionSetting2, N[z]) } } else { if (H) { $.fn.zTree.init(c, H, N[z]) } else { $.fn.zTree.init(c, multiTreeSelectionSetting, N[z]) } } } } else { if (H) { $.fn.zTree.init(c, H, N[z]) } else { $.fn.zTree.init(c, sigleSelectionSetting, N[z]) } if (C == "") { v.val(g); I.attr("relText", g); I.attr("relValue", ""); p.val("") } else { I.attr("relValue", C); p.val(C); var O = $.fn.zTree.getZTreeObj(c.attr("id")); var P = O.transformToArray(O.getNodes()); for (var T = 0; T < P.length; T++) { if (P[T].id.toString() == C) { O.selectNode(P[T]); I.attr("relText", P[T].name); v.val(P[T].name) } } } } if (q == true) { if (C == "") { I.attr("editValue", g) } else { I.attr("editValue", I.attr("relText")) } } } function b() { f.attr("hasfocus", 0); f.hide(); $("body").unbind("mousedown", J); if (a == true) { var O = $.fn.zTree.getZTreeObj(c.attr("id")); if (O) { var N = O.getCheckedNodes(true); var R = ""; var Q = ""; for (var P = 0; P < N.length; P++) { if (I.attr("exceptParent") == "true" || I.attr("exceptParent") == true) { if (N[P].isParent) { continue } } R = R + N[P].name + ","; Q = Q + N[P].id + "," } if (R.length > 0) { R = R.substring(0, R.length - 1) } if (Q.length > 0) { Q = Q.substring(0, Q.length - 1) } if (R == "") { R = g } j(R, Q); if (R == g) { v.attr("title", " ") } else { v.attr("title", R) } try { enableTooltips() } catch (S) {} } } try { I.trigger("change") } catch (S) {} } function r() { f.attr("hasfocus", 1); depth++; I.css({ zIndex: depth }); f.show(); $("body").bind("mousedown", J) } function J(e) { if (f.attr("hasfocus") == 0) {} else { if ($(e.target).attr("id") == k || $(e.target).attr("id") == w || $(e.target).parent().attr("class") == "ztree" || $(e.target).attr("class") == "ztree" || $(e.target).parents(".ztree").length > 0 || $(e.target).attr("class") == "selectbox-tree") { if ($(e.target).parents(".ztree").length > 0) { setTimeout(function () { y() }, 500) } } else { b() } } } function h() { return I.val() } function M() { return v.val() } }; function getPosition(b, c) { for (var a = 0; a < c.length; a++) { if (b == c[a]) { return a; break } } } String.prototype.trim = function () { return this.replace(/(^\s*)|(\s*$)/g, "") }; function zTreeSelectItemClick(b, d, i) { var c = $("#" + d).parents(".selectTree"); var a = $("#" + d).parents(".mainCon").find('input[type="hidden"]'); var h = $.fn.zTree.getZTreeObj(d); if (c.attr("multiMode") == "true" || c.attr("multiMode") == true) { if (i.clickExpand == true || i.clickExpand == "true") { if (c.attr("allSelectable") == "true" || c.attr("allSelectable") == true) { h.checkNode(i, "", true); h.expandNode(i, true) } else { h.expandNode(i) } } else { h.checkNode(i) } } else { if (i.clickExpand == true || i.clickExpand == "true") { h.expandNode(i) } else { var g; g = $("#" + d).parents(".mainCon").find("input[class*=selectbox]"); g.val(i.name); c.attr("relText", i.name); c.attr("relValue", i.id); a.val(i.id); if (c.attr("editable") == "true" || c.attr("editable") == true) { c.attr("editValue", g.val()); a.val(g.val()) } c.focus(); var j = $("#" + d).parents(".mainCon").find("div[class=selectbox-tree]"); j.hide(); j.attr("hasfocus", 0); try { c.trigger("change") } catch (f) {} } } } function zTreeSelectAddItem(e, c, g, d) { var b = $.fn.zTree.getZTreeObj(e.find("ul").eq(0).attr("id")); var a = b.transformToArray(b.getNodes()); for (var f = 0; f < a.length; f++) { if (a[f].id == c) { b.addNodes(a[f], { id: g, pId: a[f].id, name: d }) } } } function zTreeSelectRemoveItem(c, e) { var b = $.fn.zTree.getZTreeObj(c.find("ul").eq(0).attr("id")); var a = b.transformToArray(b.getNodes()); for (var d = 0; d < a.length; d++) { if (a[d].id == e) { b.removeNode(a[d]) } } };