From d88668def1e6cc45a417bba9af396ecd3bd5de45 Mon Sep 17 00:00:00 2001 From: yubaolee Date: Thu, 31 Aug 2017 19:23:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=95=E5=85=A5ztree?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenAuth.App/AuthorizeApp.cs | 4 +- .../ViewModel/UserWithAccessedCtrls.cs | 1 - OpenAuth.Mvc/Controllers/HomeController.cs | 8 +- .../Controllers/ModuleManagerController.cs | 2 +- .../Controllers/UserSessionController.cs | 30 ++ OpenAuth.Mvc/OpenAuth.Mvc.csproj | 8 + OpenAuth.Mvc/Views/UserManager/Index.cshtml | 11 +- OpenAuth.Mvc/css/metroStyle/img/line_conn.png | Bin 0 -> 933 bytes OpenAuth.Mvc/css/metroStyle/img/loading.gif | Bin 0 -> 381 bytes OpenAuth.Mvc/css/metroStyle/img/metro.gif | Bin 0 -> 4679 bytes OpenAuth.Mvc/css/metroStyle/img/metro.png | Bin 0 -> 5283 bytes OpenAuth.Mvc/css/metroStyle/metroStyle.css | 96 ++++ OpenAuth.Mvc/css/treetable.css | 18 +- OpenAuth.Mvc/js/index.js | 6 +- OpenAuth.Mvc/js/users.js | 141 ++---- OpenAuth.Mvc/js/ztree.js | 475 ++++++++++++++++++ 16 files changed, 668 insertions(+), 132 deletions(-) create mode 100644 OpenAuth.Mvc/Controllers/UserSessionController.cs create mode 100644 OpenAuth.Mvc/css/metroStyle/img/line_conn.png create mode 100644 OpenAuth.Mvc/css/metroStyle/img/loading.gif create mode 100644 OpenAuth.Mvc/css/metroStyle/img/metro.gif create mode 100644 OpenAuth.Mvc/css/metroStyle/img/metro.png create mode 100644 OpenAuth.Mvc/css/metroStyle/metroStyle.css create mode 100644 OpenAuth.Mvc/js/ztree.js diff --git a/OpenAuth.App/AuthorizeApp.cs b/OpenAuth.App/AuthorizeApp.cs index ecfaabfc..b650c0d6 100644 --- a/OpenAuth.App/AuthorizeApp.cs +++ b/OpenAuth.App/AuthorizeApp.cs @@ -35,9 +35,7 @@ namespace OpenAuth.App moduleView.Elements = service.ModuleElements.Where(u => u.ModuleId == moduleView.Id).OrderBy(u => u.Sort).ToList(); } - - user.ModuleWithChildren = user.Modules.GenerateTree(c => c.Id, c => c.ParentId); - + return user; } } diff --git a/OpenAuth.App/ViewModel/UserWithAccessedCtrls.cs b/OpenAuth.App/ViewModel/UserWithAccessedCtrls.cs index 09a4c792..a54a51b4 100644 --- a/OpenAuth.App/ViewModel/UserWithAccessedCtrls.cs +++ b/OpenAuth.App/ViewModel/UserWithAccessedCtrls.cs @@ -32,7 +32,6 @@ namespace OpenAuth.App.ViewModel /// public List Modules { get; set; } - public IEnumerable> ModuleWithChildren { get; set; } //用户可以访问的资源 public List Resources { get; set; } diff --git a/OpenAuth.Mvc/Controllers/HomeController.cs b/OpenAuth.Mvc/Controllers/HomeController.cs index 2474edeb..e25a937a 100644 --- a/OpenAuth.Mvc/Controllers/HomeController.cs +++ b/OpenAuth.Mvc/Controllers/HomeController.cs @@ -1,7 +1,5 @@ using System.Text; using System.Web.Mvc; -using Infrastructure; -using OpenAuth.App.SSO; namespace OpenAuth.Mvc.Controllers { @@ -18,11 +16,7 @@ namespace OpenAuth.Mvc.Controllers return View(); } - public string GetNavBar() - { - var user = AuthUtil.GetCurrentUser(); - return JsonHelper.Instance.Serialize(user.ModuleWithChildren); - } + public ActionResult Git() { diff --git a/OpenAuth.Mvc/Controllers/ModuleManagerController.cs b/OpenAuth.Mvc/Controllers/ModuleManagerController.cs index 72da3c8e..e18423cb 100644 --- a/OpenAuth.Mvc/Controllers/ModuleManagerController.cs +++ b/OpenAuth.Mvc/Controllers/ModuleManagerController.cs @@ -28,7 +28,7 @@ namespace OpenAuth.Mvc.Controllers ViewBag.FirstId = firstId; ViewBag.ModuleType = key; - var moduleWithChildren = AuthUtil.GetCurrentUser().ModuleWithChildren; + var moduleWithChildren = AuthUtil.GetCurrentUser().Modules.GenerateTree(u =>u.Id, u =>u.ParentId); var modules = key == "UserModule" ? App.LoadForUser(firstId) : App.LoadForRole(firstId); CheckModule(moduleWithChildren, modules); diff --git a/OpenAuth.Mvc/Controllers/UserSessionController.cs b/OpenAuth.Mvc/Controllers/UserSessionController.cs new file mode 100644 index 00000000..946513f5 --- /dev/null +++ b/OpenAuth.Mvc/Controllers/UserSessionController.cs @@ -0,0 +1,30 @@ +using System.Web.Mvc; +using Infrastructure; +using OpenAuth.App.SSO; + +namespace OpenAuth.Mvc.Controllers +{ + /// + /// 获取登陆用户的全部信息 + /// + public class UserSessionController : BaseController + { + /// + /// 获取登陆用户可访问的所有模块,及模块的操作菜单 + /// + public string GetModulesTree() + { + var user = AuthUtil.GetCurrentUser(); + return JsonHelper.Instance.Serialize(user.Modules.GenerateTree(u => u.Id, u => u.ParentId)); + } + + /// + /// 获取登陆用户可访问的所有部门 + /// + public string GetOrgsTree() + { + var user = AuthUtil.GetCurrentUser(); + return JsonHelper.Instance.Serialize(user.Orgs.GenerateTree(u => u.Id, u => u.ParentId)); + } + } +} \ No newline at end of file diff --git a/OpenAuth.Mvc/OpenAuth.Mvc.csproj b/OpenAuth.Mvc/OpenAuth.Mvc.csproj index 0a002330..9b42eef9 100644 --- a/OpenAuth.Mvc/OpenAuth.Mvc.csproj +++ b/OpenAuth.Mvc/OpenAuth.Mvc.csproj @@ -161,6 +161,7 @@ + Global.asax @@ -196,6 +197,11 @@ + + + + + @@ -320,6 +326,7 @@ + @@ -373,6 +380,7 @@ + diff --git a/OpenAuth.Mvc/Views/UserManager/Index.cshtml b/OpenAuth.Mvc/Views/UserManager/Index.cshtml index 4e33ef4b..fb366d10 100644 --- a/OpenAuth.Mvc/Views/UserManager/Index.cshtml +++ b/OpenAuth.Mvc/Views/UserManager/Index.cshtml @@ -1,24 +1,23 @@ @section header { - + }
-
-
    -
    + +
      %eNv<=;4;$&*l9z?u( zP*7y?;7!l|0S|ih=+&ElKyP{x)=9VNda#Bh^TG2x?>q1N%+qe?ZejQOF2`{N>(J=2 z@iO}^T)N2q&)@ESXTvpW4rw2cY2pyXwLCmRzzUoR>LJHlJotcYHXfu3lOXzbf&|zq=t4Ev@t=T!pkMMEQ&x?c~PmTs(2en zWl<8!>{UymqE%E)s)F?cSv2B}wVrXXj>T3woKhNTf{-K$pU6BW6G5!k>zRfml^CKF zFGA|1r7$k$3I>W@;z!iSA;=V+5uQ^WvP{p85JVfjHwg4$TD=u6nNkFG^1KGOhr=nO;Z*{Q*Oypy;ZK&6j4= zO*gh>i;eM7$lOktt)IPo@hZDgmeCrdUq`=BPn$bmxOcCwzBxJhc>{dnemyQ;QN9%( PWf#XXJI4F{`%nG=ZlfRK literal 0 HcmV?d00001 diff --git a/OpenAuth.Mvc/css/metroStyle/img/loading.gif b/OpenAuth.Mvc/css/metroStyle/img/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8c289293b11c889703d83dce6631fce90da4630 GIT binary patch literal 381 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 literal 0 HcmV?d00001 diff --git a/OpenAuth.Mvc/css/metroStyle/img/metro.png b/OpenAuth.Mvc/css/metroStyle/img/metro.png new file mode 100644 index 0000000000000000000000000000000000000000..e9e58a3a73ab5eac62afb4a4062887896248ec2d GIT binary patch literal 5283 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 tKB8gmm_&cf{x8xo``@I~f=7He=?t

      最近偶然发现贤心大神的layui框架,瞬间被他的完美样式所吸引,虽然功能不算强大,但毕竟是一个刚刚出现的框架,后面会慢慢完善的。很早之前就想做一套后台模版,但是感觉bootstrop代码的冗余太大,不是非常喜欢,自己写又太累,所以一直闲置了下来。直到遇到了layui我才又燃起了制作一套后台模版的斗志。由于本人只是纯前端,所以页面只是单纯的实现了效果,没有做服务器端的一些处理,可能后期技术跟上了会更新的,如果有什么问题欢迎大家指导。谢谢大家。

      在此特别感谢Beginner和Paco,他们写的框架给了我很好的启发和借鉴。希望有时间可以多多请教。

      ', + content: '
      ' + + '

      浴火重生,OpenAuth.Net 4.0正式上线,界面采用贤心的layui 2.10及马哥的layuicms

      ' + + '

      喜欢的,快快star吧!

      ', success: function(layero){ var btn = layero.find('.layui-layer-btn'); btn.css('text-align', 'center'); diff --git a/OpenAuth.Mvc/js/users.js b/OpenAuth.Mvc/js/users.js index dbc29c48..01d41826 100644 --- a/OpenAuth.Mvc/js/users.js +++ b/OpenAuth.Mvc/js/users.js @@ -1,115 +1,46 @@ layui.config({ base: "/js/" -}).use(['form','tree', 'layer', 'jquery', 'table'], function () { +}).use(['form','ztree', 'layer', 'jquery', 'table'], function () { var form = layui.form, layer = parent.layer === undefined ? layui.layer : parent.layer, $ = layui.jquery; var table = layui.table; - layui.tree({ - elem: '#demo1' //指定元素 - , target: '_blank' //是否新选项卡打开(比如节点返回href才有效) - , click: function (item) { //点击节点回调 - layer.msg('当前节名称:' + item.name + '
      全部参数:' + JSON.stringify(item)); - console.log(item); - } - , nodes: [ //节点 - { - name: '常用文件夹' - , id: 1 - , alias: 'changyong' - , children: [ - { - name: '所有未读(设置跳转)' - , id: 11 - , href: 'http://www.layui.com/' - , alias: 'weidu' - }, { - name: '置顶邮件' - , id: 12 - }, { - name: '标签邮件' - , id: 13 - } - ] - }, { - name: '我的邮箱' - , id: 2 - , spread: true - , children: [ - { - name: 'QQ邮箱' - , id: 21 - , spread: true - , children: [ - { - name: '收件箱' - , id: 211 - , children: [ - { - name: '所有未读' - , id: 2111 - }, { - name: '置顶邮件' - , id: 2112 - }, { - name: '标签邮件' - , id: 2113 - } - ] - }, { - name: '已发出的邮件' - , id: 212 - }, { - name: '垃圾邮件' - , id: 213 - } - ] - }, { - name: '阿里云邮' - , id: 22 - , children: [ - { - name: '收件箱' - , id: 221 - }, { - name: '已发出的邮件' - , id: 222 - }, { - name: '垃圾邮件' - , id: 223 - } - ] - } - ] - } - , { - name: '收藏夹' - , id: 3 - , alias: 'changyong' - , children: [ - { - name: '爱情动作片' - , id: 31 - , alias: 'love' - }, { - name: '技术栈' - , id: 12 - , children: [ - { - name: '前端' - , id: 121 - } - , { - name: '全端' - , id: 122 - } - ] - } - ] - } - ] - }); + var ztree = function () { + var url = '/OrgManager/LoadOrg'; + var setting = { + view: { selectedMulti: false }, + data: { + key: { + name: 'Name', + title: 'Name' + }, + simpleData: { + enable: true, + idKey: 'Id', + pIdKey: 'ParentId', + rootPId: 'null' + } + }, + callback: { + onClick: function (event, treeId, treeNode) { + // list.reload(treeNode.Id); + } + } + }; + var load = function () { + $.getJSON(url, function (json) { + var zTreeObj = $.fn.zTree.init($("#tree"), setting, json); + // list.reload(); + zTreeObj.expandAll(true); + }); + }; + load(); + + return { + reload: load + } + }(); //监听表格复选框选择 table.on('checkbox(list)', function (obj) { diff --git a/OpenAuth.Mvc/js/ztree.js b/OpenAuth.Mvc/js/ztree.js new file mode 100644 index 00000000..034b6b27 --- /dev/null +++ b/OpenAuth.Mvc/js/ztree.js @@ -0,0 +1,475 @@ +/* + * JQuery zTree core v3.5.29 + * http://treejs.cn/ + * + * Copyright (c) 2010 Hunter.z + * + * Licensed same as jquery - MIT License + * http://www.opensource.org/licenses/mit-license.php + * + * email: hunter.z@263.net + * Date: 2017-06-19 + */ + +layui.define("jquery", function (exports) { + var jQuery = layui.jquery; + var $ = layui.jquery; + + (function (r) { + var I, J, K, L, M, N, v, s = {}, w = {}, x = {}, O = { + treeId: "", treeObj: null, view: { addDiyDom: null, autoCancelSelected: !0, dblClickExpand: !0, expandSpeed: "fast", fontCss: {}, nameIsHTML: !1, selectedMulti: !0, showIcon: !0, showLine: !0, showTitle: !0, txtSelectedEnable: !1 }, data: { key: { children: "children", name: "name", title: "", url: "url", icon: "icon" }, simpleData: { enable: !1, idKey: "id", pIdKey: "pId", rootPId: null }, keep: { parent: !1, leaf: !1 } }, async: { + enable: !1, contentType: "application/x-www-form-urlencoded", type: "post", dataType: "text", + url: "", autoParam: [], otherParam: [], dataFilter: null + }, callback: { beforeAsync: null, beforeClick: null, beforeDblClick: null, beforeRightClick: null, beforeMouseDown: null, beforeMouseUp: null, beforeExpand: null, beforeCollapse: null, beforeRemove: null, onAsyncError: null, onAsyncSuccess: null, onNodeCreated: null, onClick: null, onDblClick: null, onRightClick: null, onMouseDown: null, onMouseUp: null, onExpand: null, onCollapse: null, onRemove: null } + }, y = [function (b) { + var a = b.treeObj, c = f.event; a.bind(c.NODECREATED, function (a, c, g) { + j.apply(b.callback.onNodeCreated, + [a, c, g]) + }); a.bind(c.CLICK, function (a, c, g, k, h) { j.apply(b.callback.onClick, [c, g, k, h]) }); a.bind(c.EXPAND, function (a, c, g) { j.apply(b.callback.onExpand, [a, c, g]) }); a.bind(c.COLLAPSE, function (a, c, g) { j.apply(b.callback.onCollapse, [a, c, g]) }); a.bind(c.ASYNC_SUCCESS, function (a, c, g, k) { j.apply(b.callback.onAsyncSuccess, [a, c, g, k]) }); a.bind(c.ASYNC_ERROR, function (a, c, g, k, h, f) { j.apply(b.callback.onAsyncError, [a, c, g, k, h, f]) }); a.bind(c.REMOVE, function (a, c, g) { j.apply(b.callback.onRemove, [a, c, g]) }); a.bind(c.SELECTED, + function (a, c, g) { j.apply(b.callback.onSelected, [c, g]) }); a.bind(c.UNSELECTED, function (a, c, g) { j.apply(b.callback.onUnSelected, [c, g]) }) + }], z = [function (b) { var a = f.event; b.treeObj.unbind(a.NODECREATED).unbind(a.CLICK).unbind(a.EXPAND).unbind(a.COLLAPSE).unbind(a.ASYNC_SUCCESS).unbind(a.ASYNC_ERROR).unbind(a.REMOVE).unbind(a.SELECTED).unbind(a.UNSELECTED) }], A = [function (b) { var a = h.getCache(b); a || (a = {}, h.setCache(b, a)); a.nodes = []; a.doms = [] }], B = [function (b, a, c, d, e, g) { + if (c) { + var k = h.getRoot(b), f = b.data.key.children; + c.level = a; c.tId = b.treeId + "_" + ++k.zId; c.parentTId = d ? d.tId : null; c.open = typeof c.open == "string" ? j.eqs(c.open, "true") : !!c.open; c[f] && c[f].length > 0 ? (c.isParent = !0, c.zAsync = !0) : (c.isParent = typeof c.isParent == "string" ? j.eqs(c.isParent, "true") : !!c.isParent, c.open = c.isParent && !b.async.enable ? c.open : !1, c.zAsync = !c.isParent); c.isFirstNode = e; c.isLastNode = g; c.getParentNode = function () { return h.getNodeCache(b, c.parentTId) }; c.getPreNode = function () { return h.getPreNode(b, c) }; c.getNextNode = function () { + return h.getNextNode(b, + c) + }; c.getIndex = function () { return h.getNodeIndex(b, c) }; c.getPath = function () { return h.getNodePath(b, c) }; c.isAjaxing = !1; h.fixPIdKeyValue(b, c) + } + }], u = [function (b) { + var a = b.target, c = h.getSetting(b.data.treeId), d = "", e = null, g = "", k = "", p = null, i = null, q = null; if (j.eqs(b.type, "mousedown")) k = "mousedown"; else if (j.eqs(b.type, "mouseup")) k = "mouseup"; else if (j.eqs(b.type, "contextmenu")) k = "contextmenu"; else if (j.eqs(b.type, "click")) if (j.eqs(a.tagName, "span") && a.getAttribute("treeNode" + f.id.SWITCH) !== null) d = j.getNodeMainDom(a).id, + g = "switchNode"; else { if (q = j.getMDom(c, a, [{ tagName: "a", attrName: "treeNode" + f.id.A }])) d = j.getNodeMainDom(q).id, g = "clickNode" } else if (j.eqs(b.type, "dblclick") && (k = "dblclick", q = j.getMDom(c, a, [{ tagName: "a", attrName: "treeNode" + f.id.A }]))) d = j.getNodeMainDom(q).id, g = "switchNode"; if (k.length > 0 && d.length == 0 && (q = j.getMDom(c, a, [{ tagName: "a", attrName: "treeNode" + f.id.A }]))) d = j.getNodeMainDom(q).id; if (d.length > 0) switch (e = h.getNodeCache(c, d), g) { + case "switchNode": e.isParent ? j.eqs(b.type, "click") || j.eqs(b.type, "dblclick") && + j.apply(c.view.dblClickExpand, [c.treeId, e], c.view.dblClickExpand) ? p = I : g = "" : g = ""; break; case "clickNode": p = J + } switch (k) { case "mousedown": i = K; break; case "mouseup": i = L; break; case "dblclick": i = M; break; case "contextmenu": i = N } return { stop: !1, node: e, nodeEventType: g, nodeEventCallback: p, treeEventType: k, treeEventCallback: i } + }], C = [function (b) { var a = h.getRoot(b); a || (a = {}, h.setRoot(b, a)); a[b.data.key.children] = []; a.expandTriggerFlag = !1; a.curSelectedList = []; a.noSelection = !0; a.createdNodes = []; a.zId = 0; a._ver = (new Date).getTime() }], + D = [], E = [], F = [], G = [], H = [], h = { + addNodeCache: function (b, a) { h.getCache(b).nodes[h.getNodeCacheId(a.tId)] = a }, getNodeCacheId: function (b) { return b.substring(b.lastIndexOf("_") + 1) }, addAfterA: function (b) { E.push(b) }, addBeforeA: function (b) { D.push(b) }, addInnerAfterA: function (b) { G.push(b) }, addInnerBeforeA: function (b) { F.push(b) }, addInitBind: function (b) { y.push(b) }, addInitUnBind: function (b) { z.push(b) }, addInitCache: function (b) { A.push(b) }, addInitNode: function (b) { B.push(b) }, addInitProxy: function (b, a) { + a ? u.splice(0, 0, + b) : u.push(b) + }, addInitRoot: function (b) { C.push(b) }, addNodesData: function (b, a, c, d) { var e = b.data.key.children; a[e] ? c >= a[e].length && (c = -1) : (a[e] = [], c = -1); if (a[e].length > 0 && c === 0) a[e][0].isFirstNode = !1, i.setNodeLineIcos(b, a[e][0]); else if (a[e].length > 0 && c < 0) a[e][a[e].length - 1].isLastNode = !1, i.setNodeLineIcos(b, a[e][a[e].length - 1]); a.isParent = !0; c < 0 ? a[e] = a[e].concat(d) : (b = [c, 0].concat(d), a[e].splice.apply(a[e], b)) }, addSelectedNode: function (b, a) { var c = h.getRoot(b); h.isSelectedNode(b, a) || c.curSelectedList.push(a) }, + addCreatedNode: function (b, a) { (b.callback.onNodeCreated || b.view.addDiyDom) && h.getRoot(b).createdNodes.push(a) }, addZTreeTools: function (b) { H.push(b) }, exSetting: function (b) { r.extend(!0, O, b) }, fixPIdKeyValue: function (b, a) { b.data.simpleData.enable && (a[b.data.simpleData.pIdKey] = a.parentTId ? a.getParentNode()[b.data.simpleData.idKey] : b.data.simpleData.rootPId) }, getAfterA: function (b, a, c) { for (var d = 0, e = E.length; d < e; d++) E[d].apply(this, arguments) }, getBeforeA: function (b, a, c) { + for (var d = 0, e = D.length; d < e; d++) D[d].apply(this, + arguments) + }, getInnerAfterA: function (b, a, c) { for (var d = 0, e = G.length; d < e; d++) G[d].apply(this, arguments) }, getInnerBeforeA: function (b, a, c) { for (var d = 0, e = F.length; d < e; d++) F[d].apply(this, arguments) }, getCache: function (b) { return x[b.treeId] }, getNodeIndex: function (b, a) { if (!a) return null; for (var c = b.data.key.children, d = a.parentTId ? a.getParentNode() : h.getRoot(b), e = 0, g = d[c].length - 1; e <= g; e++) if (d[c][e] === a) return e; return -1 }, getNextNode: function (b, a) { + if (!a) return null; for (var c = b.data.key.children, d = a.parentTId ? + a.getParentNode() : h.getRoot(b), e = 0, g = d[c].length - 1; e <= g; e++) if (d[c][e] === a) return e == g ? null : d[c][e + 1]; return null + }, getNodeByParam: function (b, a, c, d) { if (!a || !c) return null; for (var e = b.data.key.children, g = 0, k = a.length; g < k; g++) { if (a[g][c] == d) return a[g]; var f = h.getNodeByParam(b, a[g][e], c, d); if (f) return f } return null }, getNodeCache: function (b, a) { if (!a) return null; var c = x[b.treeId].nodes[h.getNodeCacheId(a)]; return c ? c : null }, getNodeName: function (b, a) { return "" + a[b.data.key.name] }, getNodePath: function (b, a) { + if (!a) return null; + var c; (c = a.parentTId ? a.getParentNode().getPath() : []) && c.push(a); return c + }, getNodeTitle: function (b, a) { return "" + a[b.data.key.title === "" ? b.data.key.name : b.data.key.title] }, getNodes: function (b) { return h.getRoot(b)[b.data.key.children] }, getNodesByParam: function (b, a, c, d) { if (!a || !c) return []; for (var e = b.data.key.children, g = [], k = 0, f = a.length; k < f; k++) a[k][c] == d && g.push(a[k]), g = g.concat(h.getNodesByParam(b, a[k][e], c, d)); return g }, getNodesByParamFuzzy: function (b, a, c, d) { + if (!a || !c) return []; for (var e = b.data.key.children, + g = [], d = d.toLowerCase(), k = 0, f = a.length; k < f; k++) typeof a[k][c] == "string" && a[k][c].toLowerCase().indexOf(d) > -1 && g.push(a[k]), g = g.concat(h.getNodesByParamFuzzy(b, a[k][e], c, d)); return g + }, getNodesByFilter: function (b, a, c, d, e) { if (!a) return d ? null : []; for (var g = b.data.key.children, k = d ? null : [], f = 0, i = a.length; f < i; f++) { if (j.apply(c, [a[f], e], !1)) { if (d) return a[f]; k.push(a[f]) } var q = h.getNodesByFilter(b, a[f][g], c, d, e); if (d && q) return q; k = d ? q : k.concat(q) } return k }, getPreNode: function (b, a) { + if (!a) return null; for (var c = + b.data.key.children, d = a.parentTId ? a.getParentNode() : h.getRoot(b), e = 0, g = d[c].length; e < g; e++) if (d[c][e] === a) return e == 0 ? null : d[c][e - 1]; return null + }, getRoot: function (b) { return b ? w[b.treeId] : null }, getRoots: function () { return w }, getSetting: function (b) { return s[b] }, getSettings: function () { return s }, getZTreeTools: function (b) { return (b = this.getRoot(this.getSetting(b))) ? b.treeTools : null }, initCache: function (b) { for (var a = 0, c = A.length; a < c; a++) A[a].apply(this, arguments) }, initNode: function (b, a, c, d, e, g) { + for (var k = + 0, f = B.length; k < f; k++) B[k].apply(this, arguments) + }, initRoot: function (b) { for (var a = 0, c = C.length; a < c; a++) C[a].apply(this, arguments) }, isSelectedNode: function (b, a) { for (var c = h.getRoot(b), d = 0, e = c.curSelectedList.length; d < e; d++) if (a === c.curSelectedList[d]) return !0; return !1 }, removeNodeCache: function (b, a) { var c = b.data.key.children; if (a[c]) for (var d = 0, e = a[c].length; d < e; d++) h.removeNodeCache(b, a[c][d]); h.getCache(b).nodes[h.getNodeCacheId(a.tId)] = null }, removeSelectedNode: function (b, a) { + for (var c = h.getRoot(b), + d = 0, e = c.curSelectedList.length; d < e; d++) if (a === c.curSelectedList[d] || !h.getNodeCache(b, c.curSelectedList[d].tId)) c.curSelectedList.splice(d, 1), b.treeObj.trigger(f.event.UNSELECTED, [b.treeId, a]), d--, e-- + }, setCache: function (b, a) { x[b.treeId] = a }, setRoot: function (b, a) { w[b.treeId] = a }, setZTreeTools: function (b, a) { for (var c = 0, d = H.length; c < d; c++) H[c].apply(this, arguments) }, transformToArrayFormat: function (b, a) { + if (!a) return []; var c = b.data.key.children, d = []; if (j.isArray(a)) for (var e = 0, g = a.length; e < g; e++) d.push(a[e]), + a[e][c] && (d = d.concat(h.transformToArrayFormat(b, a[e][c]))); else d.push(a), a[c] && (d = d.concat(h.transformToArrayFormat(b, a[c]))); return d + }, transformTozTreeFormat: function (b, a) { var c, d, e = b.data.simpleData.idKey, g = b.data.simpleData.pIdKey, k = b.data.key.children; if (!e || e == "" || !a) return []; if (j.isArray(a)) { var f = [], h = {}; for (c = 0, d = a.length; c < d; c++) h[a[c][e]] = a[c]; for (c = 0, d = a.length; c < d; c++) h[a[c][g]] && a[c][e] != a[c][g] ? (h[a[c][g]][k] || (h[a[c][g]][k] = []), h[a[c][g]][k].push(a[c])) : f.push(a[c]); return f } else return [a] } + }, + m = { + bindEvent: function (b) { for (var a = 0, c = y.length; a < c; a++) y[a].apply(this, arguments) }, unbindEvent: function (b) { for (var a = 0, c = z.length; a < c; a++) z[a].apply(this, arguments) }, bindTree: function (b) { + var a = { treeId: b.treeId }, c = b.treeObj; b.view.txtSelectedEnable || c.bind("selectstart", v).css({ "-moz-user-select": "-moz-none" }); c.bind("click", a, m.proxy); c.bind("dblclick", a, m.proxy); c.bind("mouseover", a, m.proxy); c.bind("mouseout", a, m.proxy); c.bind("mousedown", a, m.proxy); c.bind("mouseup", a, m.proxy); c.bind("contextmenu", + a, m.proxy) + }, unbindTree: function (b) { b.treeObj.unbind("selectstart", v).unbind("click", m.proxy).unbind("dblclick", m.proxy).unbind("mouseover", m.proxy).unbind("mouseout", m.proxy).unbind("mousedown", m.proxy).unbind("mouseup", m.proxy).unbind("contextmenu", m.proxy) }, doProxy: function (b) { for (var a = [], c = 0, d = u.length; c < d; c++) { var e = u[c].apply(this, arguments); a.push(e); if (e.stop) break } return a }, proxy: function (b) { + var a = h.getSetting(b.data.treeId); if (!j.uCanDo(a, b)) return !0; for (var a = m.doProxy(b), c = !0, d = 0, e = a.length; d < + e; d++) { var g = a[d]; g.nodeEventCallback && (c = g.nodeEventCallback.apply(g, [b, g.node]) && c); g.treeEventCallback && (c = g.treeEventCallback.apply(g, [b, g.node]) && c) } return c + } + }; I = function (b, a) { var c = h.getSetting(b.data.treeId); if (a.open) { if (j.apply(c.callback.beforeCollapse, [c.treeId, a], !0) == !1) return !0 } else if (j.apply(c.callback.beforeExpand, [c.treeId, a], !0) == !1) return !0; h.getRoot(c).expandTriggerFlag = !0; i.switchNode(c, a); return !0 }; J = function (b, a) { + var c = h.getSetting(b.data.treeId), d = c.view.autoCancelSelected && + (b.ctrlKey || b.metaKey) && h.isSelectedNode(c, a) ? 0 : c.view.autoCancelSelected && (b.ctrlKey || b.metaKey) && c.view.selectedMulti ? 2 : 1; if (j.apply(c.callback.beforeClick, [c.treeId, a, d], !0) == !1) return !0; d === 0 ? i.cancelPreSelectedNode(c, a) : i.selectNode(c, a, d === 2); c.treeObj.trigger(f.event.CLICK, [b, c.treeId, a, d]); return !0 + }; K = function (b, a) { var c = h.getSetting(b.data.treeId); j.apply(c.callback.beforeMouseDown, [c.treeId, a], !0) && j.apply(c.callback.onMouseDown, [b, c.treeId, a]); return !0 }; L = function (b, a) { + var c = h.getSetting(b.data.treeId); + j.apply(c.callback.beforeMouseUp, [c.treeId, a], !0) && j.apply(c.callback.onMouseUp, [b, c.treeId, a]); return !0 + }; M = function (b, a) { var c = h.getSetting(b.data.treeId); j.apply(c.callback.beforeDblClick, [c.treeId, a], !0) && j.apply(c.callback.onDblClick, [b, c.treeId, a]); return !0 }; N = function (b, a) { var c = h.getSetting(b.data.treeId); j.apply(c.callback.beforeRightClick, [c.treeId, a], !0) && j.apply(c.callback.onRightClick, [b, c.treeId, a]); return typeof c.callback.onRightClick != "function" }; v = function (b) { + b = b.originalEvent.srcElement.nodeName.toLowerCase(); + return b === "input" || b === "textarea" + }; var j = { + apply: function (b, a, c) { return typeof b == "function" ? b.apply(P, a ? a : []) : c }, canAsync: function (b, a) { var c = b.data.key.children; return b.async.enable && a && a.isParent && !(a.zAsync || a[c] && a[c].length > 0) }, clone: function (b) { if (b === null) return null; var a = j.isArray(b) ? [] : {}, c; for (c in b) a[c] = b[c] instanceof Date ? new Date(b[c].getTime()) : typeof b[c] === "object" ? j.clone(b[c]) : b[c]; return a }, eqs: function (b, a) { return b.toLowerCase() === a.toLowerCase() }, isArray: function (b) { + return Object.prototype.toString.apply(b) === + "[object Array]" + }, isElement: function (b) { return typeof HTMLElement === "object" ? b instanceof HTMLElement : b && typeof b === "object" && b !== null && b.nodeType === 1 && typeof b.nodeName === "string" }, $: function (b, a, c) { a && typeof a != "string" && (c = a, a = ""); return typeof b == "string" ? r(b, c ? c.treeObj.get(0).ownerDocument : null) : r("#" + b.tId + a, c ? c.treeObj : null) }, getMDom: function (b, a, c) { + if (!a) return null; for (; a && a.id !== b.treeId;) { + for (var d = 0, e = c.length; a.tagName && d < e; d++) if (j.eqs(a.tagName, c[d].tagName) && a.getAttribute(c[d].attrName) !== + null) return a; a = a.parentNode + } return null + }, getNodeMainDom: function (b) { return r(b).parent("li").get(0) || r(b).parentsUntil("li").parent().get(0) }, isChildOrSelf: function (b, a) { return r(b).closest("#" + a).length > 0 }, uCanDo: function () { return !0 } + }, i = { + addNodes: function (b, a, c, d, e) { + if (!b.data.keep.leaf || !a || a.isParent) if (j.isArray(d) || (d = [d]), b.data.simpleData.enable && (d = h.transformTozTreeFormat(b, d)), a) { + var g = l(a, f.id.SWITCH, b), k = l(a, f.id.ICON, b), p = l(a, f.id.UL, b); if (!a.open) i.replaceSwitchClass(a, g, f.folder.CLOSE), + i.replaceIcoClass(a, k, f.folder.CLOSE), a.open = !1, p.css({ display: "none" }); h.addNodesData(b, a, c, d); i.createNodes(b, a.level + 1, d, a, c); e || i.expandCollapseParentNode(b, a, !0) + } else h.addNodesData(b, h.getRoot(b), c, d), i.createNodes(b, 0, d, null, c) + }, appendNodes: function (b, a, c, d, e, g, k) { + if (!c) return []; var f = [], j = b.data.key.children, q = (d ? d : h.getRoot(b))[j], l, Q; if (!q || e >= q.length - c.length) e = -1; for (var t = 0, m = c.length; t < m; t++) { + var o = c[t]; g && (l = (e === 0 || q.length == c.length) && t == 0, Q = e < 0 && t == c.length - 1, h.initNode(b, a, o, d, + l, Q, k), h.addNodeCache(b, o)); l = []; o[j] && o[j].length > 0 && (l = i.appendNodes(b, a + 1, o[j], o, -1, g, k && o.open)); k && (i.makeDOMNodeMainBefore(f, b, o), i.makeDOMNodeLine(f, b, o), h.getBeforeA(b, o, f), i.makeDOMNodeNameBefore(f, b, o), h.getInnerBeforeA(b, o, f), i.makeDOMNodeIcon(f, b, o), h.getInnerAfterA(b, o, f), i.makeDOMNodeNameAfter(f, b, o), h.getAfterA(b, o, f), o.isParent && o.open && i.makeUlHtml(b, o, f, l.join("")), i.makeDOMNodeMainAfter(f, b, o), h.addCreatedNode(b, o)) + } return f + }, appendParentULDom: function (b, a) { + var c = [], d = l(a, b); !d.get(0) && + a.parentTId && (i.appendParentULDom(b, a.getParentNode()), d = l(a, b)); var e = l(a, f.id.UL, b); e.get(0) && e.remove(); e = i.appendNodes(b, a.level + 1, a[b.data.key.children], a, -1, !1, !0); i.makeUlHtml(b, a, c, e.join("")); d.append(c.join("")) + }, asyncNode: function (b, a, c, d) { + var e, g; if (a && !a.isParent) return j.apply(d), !1; else if (a && a.isAjaxing) return !1; else if (j.apply(b.callback.beforeAsync, [b.treeId, a], !0) == !1) return j.apply(d), !1; if (a) a.isAjaxing = !0, l(a, f.id.ICON, b).attr({ style: "", "class": f.className.BUTTON + " " + f.className.ICO_LOADING }); + var k = {}; for (e = 0, g = b.async.autoParam.length; a && e < g; e++) { var p = b.async.autoParam[e].split("="), n = p; p.length > 1 && (n = p[1], p = p[0]); k[n] = a[p] } if (j.isArray(b.async.otherParam)) for (e = 0, g = b.async.otherParam.length; e < g; e += 2) k[b.async.otherParam[e]] = b.async.otherParam[e + 1]; else for (var q in b.async.otherParam) k[q] = b.async.otherParam[q]; var m = h.getRoot(b)._ver; r.ajax({ + contentType: b.async.contentType, cache: !1, type: b.async.type, url: j.apply(b.async.url, [b.treeId, a], b.async.url), data: b.async.contentType.indexOf("application/json") > + -1 ? JSON.stringify(k) : k, dataType: b.async.dataType, success: function (g) { if (m == h.getRoot(b)._ver) { var e = []; try { e = !g || g.length == 0 ? [] : typeof g == "string" ? eval("(" + g + ")") : g } catch (k) { e = g } if (a) a.isAjaxing = null, a.zAsync = !0; i.setNodeLineIcos(b, a); e && e !== "" ? (e = j.apply(b.async.dataFilter, [b.treeId, a, e], e), i.addNodes(b, a, -1, e ? j.clone(e) : [], !!c)) : i.addNodes(b, a, -1, [], !!c); b.treeObj.trigger(f.event.ASYNC_SUCCESS, [b.treeId, a, g]); j.apply(d) } }, error: function (c, d, g) { + if (m == h.getRoot(b)._ver) { + if (a) a.isAjaxing = null; i.setNodeLineIcos(b, + a); b.treeObj.trigger(f.event.ASYNC_ERROR, [b.treeId, a, c, d, g]) + } + } + }); return !0 + }, cancelPreSelectedNode: function (b, a, c) { var d = h.getRoot(b).curSelectedList, e, g; for (e = d.length - 1; e >= 0; e--) if (g = d[e], a === g || !a && (!c || c !== g)) if (l(g, f.id.A, b).removeClass(f.node.CURSELECTED), a) { h.removeSelectedNode(b, a); break } else d.splice(e, 1), b.treeObj.trigger(f.event.UNSELECTED, [b.treeId, g]) }, createNodeCallback: function (b) { + if (b.callback.onNodeCreated || b.view.addDiyDom) for (var a = h.getRoot(b) ; a.createdNodes.length > 0;) { + var c = a.createdNodes.shift(); + j.apply(b.view.addDiyDom, [b.treeId, c]); b.callback.onNodeCreated && b.treeObj.trigger(f.event.NODECREATED, [b.treeId, c]) + } + }, createNodes: function (b, a, c, d, e) { if (c && c.length != 0) { var g = h.getRoot(b), k = b.data.key.children, k = !d || d.open || !!l(d[k][0], b).get(0); g.createdNodes = []; var a = i.appendNodes(b, a, c, d, e, !0, k), j, n; d ? (d = l(d, f.id.UL, b), d.get(0) && (j = d)) : j = b.treeObj; j && (e >= 0 && (n = j.children()[e]), e >= 0 && n ? r(n).before(a.join("")) : j.append(a.join(""))); i.createNodeCallback(b) } }, destroy: function (b) { + b && (h.initCache(b), + h.initRoot(b), m.unbindTree(b), m.unbindEvent(b), b.treeObj.empty(), delete s[b.treeId]) + }, expandCollapseNode: function (b, a, c, d, e) { + var g = h.getRoot(b), k = b.data.key.children, p; if (a) { + if (g.expandTriggerFlag) p = e, e = function () { p && p(); a.open ? b.treeObj.trigger(f.event.EXPAND, [b.treeId, a]) : b.treeObj.trigger(f.event.COLLAPSE, [b.treeId, a]) }, g.expandTriggerFlag = !1; if (!a.open && a.isParent && (!l(a, f.id.UL, b).get(0) || a[k] && a[k].length > 0 && !l(a[k][0], b).get(0))) i.appendParentULDom(b, a), i.createNodeCallback(b); if (a.open == c) j.apply(e, + []); else { + var c = l(a, f.id.UL, b), g = l(a, f.id.SWITCH, b), n = l(a, f.id.ICON, b); a.isParent ? (a.open = !a.open, a.iconOpen && a.iconClose && n.attr("style", i.makeNodeIcoStyle(b, a)), a.open ? (i.replaceSwitchClass(a, g, f.folder.OPEN), i.replaceIcoClass(a, n, f.folder.OPEN), d == !1 || b.view.expandSpeed == "" ? (c.show(), j.apply(e, [])) : a[k] && a[k].length > 0 ? c.slideDown(b.view.expandSpeed, e) : (c.show(), j.apply(e, []))) : (i.replaceSwitchClass(a, g, f.folder.CLOSE), i.replaceIcoClass(a, n, f.folder.CLOSE), d == !1 || b.view.expandSpeed == "" || !(a[k] && + a[k].length > 0) ? (c.hide(), j.apply(e, [])) : c.slideUp(b.view.expandSpeed, e))) : j.apply(e, []) + } + } else j.apply(e, []) + }, expandCollapseParentNode: function (b, a, c, d, e) { a && (a.parentTId ? (i.expandCollapseNode(b, a, c, d), a.parentTId && i.expandCollapseParentNode(b, a.getParentNode(), c, d, e)) : i.expandCollapseNode(b, a, c, d, e)) }, expandCollapseSonNode: function (b, a, c, d, e) { + var g = h.getRoot(b), f = b.data.key.children, g = a ? a[f] : g[f], f = a ? !1 : d, j = h.getRoot(b).expandTriggerFlag; h.getRoot(b).expandTriggerFlag = !1; if (g) for (var n = 0, l = g.length; n < + l; n++) g[n] && i.expandCollapseSonNode(b, g[n], c, f); h.getRoot(b).expandTriggerFlag = j; i.expandCollapseNode(b, a, c, d, e) + }, isSelectedNode: function (b, a) { if (!a) return !1; var c = h.getRoot(b).curSelectedList, d; for (d = c.length - 1; d >= 0; d--) if (a === c[d]) return !0; return !1 }, makeDOMNodeIcon: function (b, a, c) { + var d = h.getNodeName(a, c), d = a.view.nameIsHTML ? d : d.replace(/&/g, "&").replace(//g, ">"); b.push("", d, "") + }, makeDOMNodeLine: function (b, a, c) { b.push("") }, makeDOMNodeMainAfter: function (b) { b.push("") }, makeDOMNodeMainBefore: function (b, a, c) { b.push("
    • ") }, makeDOMNodeNameAfter: function (b) { b.push("") }, + makeDOMNodeNameBefore: function (b, a, c) { + var d = h.getNodeTitle(a, c), e = i.makeNodeUrl(a, c), g = i.makeNodeFontCss(a, c), k = [], p; for (p in g) k.push(p, ":", g[p], ";"); b.push(" 0 ? "href='" + e + "'" : "", " target='", i.makeNodeTarget(c), "' style='", k.join(""), "'"); j.apply(a.view.showTitle, [a.treeId, c], a.view.showTitle) && d && b.push("title='", d.replace(/'/g, "'").replace(//g, + ">"), "'"); b.push(">") + }, makeNodeFontCss: function (b, a) { var c = j.apply(b.view.fontCss, [b.treeId, a], b.view.fontCss); return c && typeof c != "function" ? c : {} }, makeNodeIcoClass: function (b, a) { var c = ["ico"]; a.isAjaxing || (c[0] = (a.iconSkin ? a.iconSkin + "_" : "") + c[0], a.isParent ? c.push(a.open ? f.folder.OPEN : f.folder.CLOSE) : c.push(f.folder.DOCU)); return f.className.BUTTON + " " + c.join("_") }, makeNodeIcoStyle: function (b, a) { + var c = []; if (!a.isAjaxing) { + var d = a.isParent && a.iconOpen && a.iconClose ? a.open ? a.iconOpen : a.iconClose : + a[b.data.key.icon]; d && c.push("background:url(", d, ") 0 0 no-repeat;"); (b.view.showIcon == !1 || !j.apply(b.view.showIcon, [b.treeId, a], !0)) && c.push("width:0px;height:0px;") + } return c.join("") + }, makeNodeLineClass: function (b, a) { + var c = []; b.view.showLine ? a.level == 0 && a.isFirstNode && a.isLastNode ? c.push(f.line.ROOT) : a.level == 0 && a.isFirstNode ? c.push(f.line.ROOTS) : a.isLastNode ? c.push(f.line.BOTTOM) : c.push(f.line.CENTER) : c.push(f.line.NOLINE); a.isParent ? c.push(a.open ? f.folder.OPEN : f.folder.CLOSE) : c.push(f.folder.DOCU); + return i.makeNodeLineClassEx(a) + c.join("_") + }, makeNodeLineClassEx: function (b) { return f.className.BUTTON + " " + f.className.LEVEL + b.level + " " + f.className.SWITCH + " " }, makeNodeTarget: function (b) { return b.target || "_blank" }, makeNodeUrl: function (b, a) { var c = b.data.key.url; return a[c] ? a[c] : null }, makeUlHtml: function (b, a, c, d) { c.push("
        "); c.push(d); c.push("
      ") }, makeUlLineClass: function (b, + a) { return b.view.showLine && !a.isLastNode ? f.line.LINE : "" }, removeChildNodes: function (b, a) { if (a) { var c = b.data.key.children, d = a[c]; if (d) { for (var e = 0, g = d.length; e < g; e++) h.removeNodeCache(b, d[e]); h.removeSelectedNode(b); delete a[c]; b.data.keep.parent ? l(a, f.id.UL, b).empty() : (a.isParent = !1, a.open = !1, c = l(a, f.id.SWITCH, b), d = l(a, f.id.ICON, b), i.replaceSwitchClass(a, c, f.folder.DOCU), i.replaceIcoClass(a, d, f.folder.DOCU), l(a, f.id.UL, b).remove()) } } }, scrollIntoView: function (b) { + if (b) { + if (!Element.prototype.scrollIntoViewIfNeeded) Element.prototype.scrollIntoViewIfNeeded = + function (a) { + function b(a, d, e, f) { return { left: a, top: d, width: e, height: f, right: a + e, bottom: d + f, translate: function (g, k) { return b(g + a, k + d, e, f) }, relativeFromTo: function (k, h) { var i = a, j = d, k = k.offsetParent, h = h.offsetParent; if (k === h) return g; for (; k; k = k.offsetParent) i += k.offsetLeft + k.clientLeft, j += k.offsetTop + k.clientTop; for (; h; h = h.offsetParent) i -= h.offsetLeft + h.clientLeft, j -= h.offsetTop + h.clientTop; return b(i, j, e, f) } } } for (var d, e = this, g = b(this.offsetLeft, this.offsetTop, this.offsetWidth, this.offsetHeight) ; j.isElement(d = + e.parentNode) ;) { + var f = d.offsetLeft + d.clientLeft, h = d.offsetTop + d.clientTop, g = g.relativeFromTo(e, d).translate(-f, -h); d.scrollLeft = !1 === a || g.left <= d.scrollLeft + d.clientWidth && d.scrollLeft <= g.right - d.clientWidth + d.clientWidth ? Math.min(g.left, Math.max(g.right - d.clientWidth, d.scrollLeft)) : (g.right - d.clientWidth + g.left) / 2; d.scrollTop = !1 === a || g.top <= d.scrollTop + d.clientHeight && d.scrollTop <= g.bottom - d.clientHeight + d.clientHeight ? Math.min(g.top, Math.max(g.bottom - d.clientHeight, d.scrollTop)) : (g.bottom - d.clientHeight + + g.top) / 2; g = g.translate(f - d.scrollLeft, h - d.scrollTop); e = d + } + }; b.scrollIntoViewIfNeeded() + } + }, setFirstNode: function (b, a) { var c = b.data.key.children; if (a[c].length > 0) a[c][0].isFirstNode = !0 }, setLastNode: function (b, a) { var c = b.data.key.children, d = a[c].length; if (d > 0) a[c][d - 1].isLastNode = !0 }, removeNode: function (b, a) { + var c = h.getRoot(b), d = b.data.key.children, e = a.parentTId ? a.getParentNode() : c; a.isFirstNode = !1; a.isLastNode = !1; a.getPreNode = function () { return null }; a.getNextNode = function () { return null }; if (h.getNodeCache(b, + a.tId)) { + l(a, b).remove(); h.removeNodeCache(b, a); h.removeSelectedNode(b, a); for (var g = 0, k = e[d].length; g < k; g++) if (e[d][g].tId == a.tId) { e[d].splice(g, 1); break } i.setFirstNode(b, e); i.setLastNode(b, e); var j, g = e[d].length; if (!b.data.keep.parent && g == 0) e.isParent = !1, e.open = !1, g = l(e, f.id.UL, b), k = l(e, f.id.SWITCH, b), j = l(e, f.id.ICON, b), i.replaceSwitchClass(e, k, f.folder.DOCU), i.replaceIcoClass(e, j, f.folder.DOCU), g.css("display", "none"); else if (b.view.showLine && g > 0) { + var n = e[d][g - 1], g = l(n, f.id.UL, b), k = l(n, f.id.SWITCH, + b); j = l(n, f.id.ICON, b); e == c ? e[d].length == 1 ? i.replaceSwitchClass(n, k, f.line.ROOT) : (c = l(e[d][0], f.id.SWITCH, b), i.replaceSwitchClass(e[d][0], c, f.line.ROOTS), i.replaceSwitchClass(n, k, f.line.BOTTOM)) : i.replaceSwitchClass(n, k, f.line.BOTTOM); g.removeClass(f.line.LINE) + } + } + }, replaceIcoClass: function (b, a, c) { if (a && !b.isAjaxing && (b = a.attr("class"), b != void 0)) { b = b.split("_"); switch (c) { case f.folder.OPEN: case f.folder.CLOSE: case f.folder.DOCU: b[b.length - 1] = c } a.attr("class", b.join("_")) } }, replaceSwitchClass: function (b, + a, c) { if (a) { var d = a.attr("class"); if (d != void 0) { d = d.split("_"); switch (c) { case f.line.ROOT: case f.line.ROOTS: case f.line.CENTER: case f.line.BOTTOM: case f.line.NOLINE: d[0] = i.makeNodeLineClassEx(b) + c; break; case f.folder.OPEN: case f.folder.CLOSE: case f.folder.DOCU: d[1] = c } a.attr("class", d.join("_")); c !== f.folder.DOCU ? a.removeAttr("disabled") : a.attr("disabled", "disabled") } } }, selectNode: function (b, a, c) { + c || i.cancelPreSelectedNode(b, null, a); l(a, f.id.A, b).addClass(f.node.CURSELECTED); h.addSelectedNode(b, a); + b.treeObj.trigger(f.event.SELECTED, [b.treeId, a]) + }, setNodeFontCss: function (b, a) { var c = l(a, f.id.A, b), d = i.makeNodeFontCss(b, a); d && c.css(d) }, setNodeLineIcos: function (b, a) { + if (a) { + var c = l(a, f.id.SWITCH, b), d = l(a, f.id.UL, b), e = l(a, f.id.ICON, b), g = i.makeUlLineClass(b, a); g.length == 0 ? d.removeClass(f.line.LINE) : d.addClass(g); c.attr("class", i.makeNodeLineClass(b, a)); a.isParent ? c.removeAttr("disabled") : c.attr("disabled", "disabled"); e.removeAttr("style"); e.attr("style", i.makeNodeIcoStyle(b, a)); e.attr("class", i.makeNodeIcoClass(b, + a)) + } + }, setNodeName: function (b, a) { var c = h.getNodeTitle(b, a), d = l(a, f.id.SPAN, b); d.empty(); b.view.nameIsHTML ? d.html(h.getNodeName(b, a)) : d.text(h.getNodeName(b, a)); j.apply(b.view.showTitle, [b.treeId, a], b.view.showTitle) && l(a, f.id.A, b).attr("title", !c ? "" : c) }, setNodeTarget: function (b, a) { l(a, f.id.A, b).attr("target", i.makeNodeTarget(a)) }, setNodeUrl: function (b, a) { var c = l(a, f.id.A, b), d = i.makeNodeUrl(b, a); d == null || d.length == 0 ? c.removeAttr("href") : c.attr("href", d) }, switchNode: function (b, a) { + a.open || !j.canAsync(b, + a) ? i.expandCollapseNode(b, a, !a.open) : b.async.enable ? i.asyncNode(b, a) || i.expandCollapseNode(b, a, !a.open) : a && i.expandCollapseNode(b, a, !a.open) + } + }; r.fn.zTree = { + consts: { + className: { BUTTON: "button", LEVEL: "level", ICO_LOADING: "ico_loading", SWITCH: "switch", NAME: "node_name" }, event: { NODECREATED: "ztree_nodeCreated", CLICK: "ztree_click", EXPAND: "ztree_expand", COLLAPSE: "ztree_collapse", ASYNC_SUCCESS: "ztree_async_success", ASYNC_ERROR: "ztree_async_error", REMOVE: "ztree_remove", SELECTED: "ztree_selected", UNSELECTED: "ztree_unselected" }, + id: { A: "_a", ICON: "_ico", SPAN: "_span", SWITCH: "_switch", UL: "_ul" }, line: { ROOT: "root", ROOTS: "roots", CENTER: "center", BOTTOM: "bottom", NOLINE: "noline", LINE: "line" }, folder: { OPEN: "open", CLOSE: "close", DOCU: "docu" }, node: { CURSELECTED: "curSelectedNode" } + }, _z: { tools: j, view: i, event: m, data: h }, getZTreeObj: function (b) { return (b = h.getZTreeTools(b)) ? b : null }, destroy: function (b) { if (b && b.length > 0) i.destroy(h.getSetting(b)); else for (var a in s) i.destroy(s[a]) }, init: function (b, a, c) { + var d = j.clone(O); r.extend(!0, d, a); d.treeId = + b.attr("id"); d.treeObj = b; d.treeObj.empty(); s[d.treeId] = d; if (typeof document.body.style.maxHeight === "undefined") d.view.expandSpeed = ""; h.initRoot(d); b = h.getRoot(d); a = d.data.key.children; c = c ? j.clone(j.isArray(c) ? c : [c]) : []; b[a] = d.data.simpleData.enable ? h.transformTozTreeFormat(d, c) : c; h.initCache(d); m.unbindTree(d); m.bindTree(d); m.unbindEvent(d); m.bindEvent(d); var e = { + setting: d, addNodes: function (a, b, c, e) { + function f() { i.addNodes(d, a, b, l, e == !0) } a || (a = null); if (a && !a.isParent && d.data.keep.leaf) return null; + var h = parseInt(b, 10); isNaN(h) ? (e = !!c, c = b, b = -1) : b = h; if (!c) return null; var l = j.clone(j.isArray(c) ? c : [c]); j.canAsync(d, a) ? i.asyncNode(d, a, e, f) : f(); return l + }, cancelSelectedNode: function (a) { i.cancelPreSelectedNode(d, a) }, destroy: function () { i.destroy(d) }, expandAll: function (a) { a = !!a; i.expandCollapseSonNode(d, null, a, !0); return a }, expandNode: function (a, b, c, e, f) { + function m() { var b = l(a, d).get(0); b && e !== !1 && i.scrollIntoView(b) } if (!a || !a.isParent) return null; b !== !0 && b !== !1 && (b = !a.open); if ((f = !!f) && b && j.apply(d.callback.beforeExpand, + [d.treeId, a], !0) == !1) return null; else if (f && !b && j.apply(d.callback.beforeCollapse, [d.treeId, a], !0) == !1) return null; b && a.parentTId && i.expandCollapseParentNode(d, a.getParentNode(), b, !1); if (b === a.open && !c) return null; h.getRoot(d).expandTriggerFlag = f; !j.canAsync(d, a) && c ? i.expandCollapseSonNode(d, a, b, !0, m) : (a.open = !b, i.switchNode(this.setting, a), m()); return b + }, getNodes: function () { return h.getNodes(d) }, getNodeByParam: function (a, b, c) { + return !a ? null : h.getNodeByParam(d, c ? c[d.data.key.children] : h.getNodes(d), + a, b) + }, getNodeByTId: function (a) { return h.getNodeCache(d, a) }, getNodesByParam: function (a, b, c) { return !a ? null : h.getNodesByParam(d, c ? c[d.data.key.children] : h.getNodes(d), a, b) }, getNodesByParamFuzzy: function (a, b, c) { return !a ? null : h.getNodesByParamFuzzy(d, c ? c[d.data.key.children] : h.getNodes(d), a, b) }, getNodesByFilter: function (a, b, c, e) { b = !!b; return !a || typeof a != "function" ? b ? null : [] : h.getNodesByFilter(d, c ? c[d.data.key.children] : h.getNodes(d), a, b, e) }, getNodeIndex: function (a) { + if (!a) return null; for (var b = d.data.key.children, + c = a.parentTId ? a.getParentNode() : h.getRoot(d), e = 0, f = c[b].length; e < f; e++) if (c[b][e] == a) return e; return -1 + }, getSelectedNodes: function () { for (var a = [], b = h.getRoot(d).curSelectedList, c = 0, e = b.length; c < e; c++) a.push(b[c]); return a }, isSelectedNode: function (a) { return h.isSelectedNode(d, a) }, reAsyncChildNodesPromise: function (a, b, c) { return new Promise(function (d, f) { try { e.reAsyncChildNodes(a, b, c, function () { d(a) }) } catch (h) { f(h) } }) }, reAsyncChildNodes: function (a, b, c, e) { + if (this.setting.async.enable) { + var j = !a; j && (a = h.getRoot(d)); + if (b == "refresh") { for (var b = this.setting.data.key.children, m = 0, r = a[b] ? a[b].length : 0; m < r; m++) h.removeNodeCache(d, a[b][m]); h.removeSelectedNode(d); a[b] = []; j ? this.setting.treeObj.empty() : l(a, f.id.UL, d).empty() } i.asyncNode(this.setting, j ? null : a, !!c, e) + } + }, refresh: function () { this.setting.treeObj.empty(); var a = h.getRoot(d), b = a[d.data.key.children]; h.initRoot(d); a[d.data.key.children] = b; h.initCache(d); i.createNodes(d, 0, a[d.data.key.children], null, -1) }, removeChildNodes: function (a) { + if (!a) return null; var b = a[d.data.key.children]; + i.removeChildNodes(d, a); return b ? b : null + }, removeNode: function (a, b) { a && (b = !!b, b && j.apply(d.callback.beforeRemove, [d.treeId, a], !0) == !1 || (i.removeNode(d, a), b && this.setting.treeObj.trigger(f.event.REMOVE, [d.treeId, a]))) }, selectNode: function (a, b, c) { function e() { if (!c) { var b = l(a, d).get(0); i.scrollIntoView(b) } } if (a && j.uCanDo(d)) { b = d.view.selectedMulti && b; if (a.parentTId) i.expandCollapseParentNode(d, a.getParentNode(), !0, !1, e); else if (!c) try { l(a, d).focus().blur() } catch (f) { } i.selectNode(d, a, b) } }, transformTozTreeNodes: function (a) { + return h.transformTozTreeFormat(d, + a) + }, transformToArray: function (a) { return h.transformToArrayFormat(d, a) }, updateNode: function (a) { a && l(a, d).get(0) && j.uCanDo(d) && (i.setNodeName(d, a), i.setNodeTarget(d, a), i.setNodeUrl(d, a), i.setNodeLineIcos(d, a), i.setNodeFontCss(d, a)) } + }; b.treeTools = e; h.setZTreeTools(d, e); b[a] && b[a].length > 0 ? i.createNodes(d, 0, b[a], null, -1) : d.async.enable && d.async.url && d.async.url !== "" && i.asyncNode(d); return e + } + }; var P = r.fn.zTree, l = j.$, f = P.consts + })(jQuery); + + /* + * JQuery zTree excheck v3.5.29 + * http://treejs.cn/ + * + * Copyright (c) 2010 Hunter.z + * + * Licensed same as jquery - MIT License + * http://www.opensource.org/licenses/mit-license.php + * + * email: hunter.z@263.net + * Date: 2017-06-19 + */ + (function (m) { + var p, q, r, o = { event: { CHECK: "ztree_check" }, id: { CHECK: "_check" }, checkbox: { STYLE: "checkbox", DEFAULT: "chk", DISABLED: "disable", FALSE: "false", TRUE: "true", FULL: "full", PART: "part", FOCUS: "focus" }, radio: { STYLE: "radio", TYPE_ALL: "all", TYPE_LEVEL: "level" } }, v = { check: { enable: !1, autoCheckTrigger: !1, chkStyle: o.checkbox.STYLE, nocheckInherit: !1, chkDisabledInherit: !1, radioType: o.radio.TYPE_LEVEL, chkboxType: { Y: "ps", N: "ps" } }, data: { key: { checked: "checked" } }, callback: { beforeCheck: null, onCheck: null } }; p = function (c, + a) { if (a.chkDisabled === !0) return !1; var b = g.getSetting(c.data.treeId), d = b.data.key.checked; if (k.apply(b.callback.beforeCheck, [b.treeId, a], !0) == !1) return !0; a[d] = !a[d]; e.checkNodeRelation(b, a); d = n(a, j.id.CHECK, b); e.setChkClass(b, d, a); e.repairParentChkClassWithSelf(b, a); b.treeObj.trigger(j.event.CHECK, [c, b.treeId, a]); return !0 }; q = function (c, a) { if (a.chkDisabled === !0) return !1; var b = g.getSetting(c.data.treeId), d = n(a, j.id.CHECK, b); a.check_Focus = !0; e.setChkClass(b, d, a); return !0 }; r = function (c, a) { + if (a.chkDisabled === + !0) return !1; var b = g.getSetting(c.data.treeId), d = n(a, j.id.CHECK, b); a.check_Focus = !1; e.setChkClass(b, d, a); return !0 + }; m.extend(!0, m.fn.zTree.consts, o); m.extend(!0, m.fn.zTree._z, { + tools: {}, view: { + checkNodeRelation: function (c, a) { + var b, d, h, i = c.data.key.children, l = c.data.key.checked; b = j.radio; if (c.check.chkStyle == b.STYLE) { + var f = g.getRadioCheckedList(c); if (a[l]) if (c.check.radioType == b.TYPE_ALL) { + for (d = f.length - 1; d >= 0; d--) b = f[d], b[l] && b != a && (b[l] = !1, f.splice(d, 1), e.setChkClass(c, n(b, j.id.CHECK, c), b), b.parentTId != + a.parentTId && e.repairParentChkClassWithSelf(c, b)); f.push(a) + } else { f = a.parentTId ? a.getParentNode() : g.getRoot(c); for (d = 0, h = f[i].length; d < h; d++) b = f[i][d], b[l] && b != a && (b[l] = !1, e.setChkClass(c, n(b, j.id.CHECK, c), b)) } else if (c.check.radioType == b.TYPE_ALL) for (d = 0, h = f.length; d < h; d++) if (a == f[d]) { f.splice(d, 1); break } + } else a[l] && (!a[i] || a[i].length == 0 || c.check.chkboxType.Y.indexOf("s") > -1) && e.setSonNodeCheckBox(c, a, !0), !a[l] && (!a[i] || a[i].length == 0 || c.check.chkboxType.N.indexOf("s") > -1) && e.setSonNodeCheckBox(c, + a, !1), a[l] && c.check.chkboxType.Y.indexOf("p") > -1 && e.setParentNodeCheckBox(c, a, !0), !a[l] && c.check.chkboxType.N.indexOf("p") > -1 && e.setParentNodeCheckBox(c, a, !1) + }, makeChkClass: function (c, a) { + var b = c.data.key.checked, d = j.checkbox, h = j.radio, i = "", i = a.chkDisabled === !0 ? d.DISABLED : a.halfCheck ? d.PART : c.check.chkStyle == h.STYLE ? a.check_Child_State < 1 ? d.FULL : d.PART : a[b] ? a.check_Child_State === 2 || a.check_Child_State === -1 ? d.FULL : d.PART : a.check_Child_State < 1 ? d.FULL : d.PART, b = c.check.chkStyle + "_" + (a[b] ? d.TRUE : d.FALSE) + + "_" + i, b = a.check_Focus && a.chkDisabled !== !0 ? b + "_" + d.FOCUS : b; return j.className.BUTTON + " " + d.DEFAULT + " " + b + }, repairAllChk: function (c, a) { if (c.check.enable && c.check.chkStyle === j.checkbox.STYLE) for (var b = c.data.key.checked, d = c.data.key.children, h = g.getRoot(c), i = 0, l = h[d].length; i < l; i++) { var f = h[d][i]; f.nocheck !== !0 && f.chkDisabled !== !0 && (f[b] = a); e.setSonNodeCheckBox(c, f, a) } }, repairChkClass: function (c, a) { if (a && (g.makeChkFlag(c, a), a.nocheck !== !0)) { var b = n(a, j.id.CHECK, c); e.setChkClass(c, b, a) } }, repairParentChkClass: function (c, + a) { if (a && a.parentTId) { var b = a.getParentNode(); e.repairChkClass(c, b); e.repairParentChkClass(c, b) } }, repairParentChkClassWithSelf: function (c, a) { if (a) { var b = c.data.key.children; a[b] && a[b].length > 0 ? e.repairParentChkClass(c, a[b][0]) : e.repairParentChkClass(c, a) } }, repairSonChkDisabled: function (c, a, b, d) { if (a) { var h = c.data.key.children; if (a.chkDisabled != b) a.chkDisabled = b; e.repairChkClass(c, a); if (a[h] && d) for (var i = 0, l = a[h].length; i < l; i++) e.repairSonChkDisabled(c, a[h][i], b, d) } }, repairParentChkDisabled: function (c, + a, b, d) { if (a) { if (a.chkDisabled != b && d) a.chkDisabled = b; e.repairChkClass(c, a); e.repairParentChkDisabled(c, a.getParentNode(), b, d) } }, setChkClass: function (c, a, b) { a && (b.nocheck === !0 ? a.hide() : a.show(), a.attr("class", e.makeChkClass(c, b))) }, setParentNodeCheckBox: function (c, a, b, d) { + var h = c.data.key.children, i = c.data.key.checked, l = n(a, j.id.CHECK, c); d || (d = a); g.makeChkFlag(c, a); a.nocheck !== !0 && a.chkDisabled !== !0 && (a[i] = b, e.setChkClass(c, l, a), c.check.autoCheckTrigger && a != d && c.treeObj.trigger(j.event.CHECK, [null, c.treeId, + a])); if (a.parentTId) { l = !0; if (!b) for (var h = a.getParentNode()[h], f = 0, k = h.length; f < k; f++) if (h[f].nocheck !== !0 && h[f].chkDisabled !== !0 && h[f][i] || (h[f].nocheck === !0 || h[f].chkDisabled === !0) && h[f].check_Child_State > 0) { l = !1; break } l && e.setParentNodeCheckBox(c, a.getParentNode(), b, d) } + }, setSonNodeCheckBox: function (c, a, b, d) { + if (a) { + var h = c.data.key.children, i = c.data.key.checked, l = n(a, j.id.CHECK, c); d || (d = a); var f = !1; if (a[h]) for (var k = 0, m = a[h].length; k < m; k++) { + var o = a[h][k]; e.setSonNodeCheckBox(c, o, b, d); o.chkDisabled === + !0 && (f = !0) + } if (a != g.getRoot(c) && a.chkDisabled !== !0) { f && a.nocheck !== !0 && g.makeChkFlag(c, a); if (a.nocheck !== !0 && a.chkDisabled !== !0) { if (a[i] = b, !f) a.check_Child_State = a[h] && a[h].length > 0 ? b ? 2 : 0 : -1 } else a.check_Child_State = -1; e.setChkClass(c, l, a); c.check.autoCheckTrigger && a != d && a.nocheck !== !0 && a.chkDisabled !== !0 && c.treeObj.trigger(j.event.CHECK, [null, c.treeId, a]) } + } + } + }, event: {}, data: { + getRadioCheckedList: function (c) { + for (var a = g.getRoot(c).radioCheckedList, b = 0, d = a.length; b < d; b++) g.getNodeCache(c, a[b].tId) || (a.splice(b, + 1), b--, d--); return a + }, getCheckStatus: function (c, a) { if (!c.check.enable || a.nocheck || a.chkDisabled) return null; var b = c.data.key.checked; return { checked: a[b], half: a.halfCheck ? a.halfCheck : c.check.chkStyle == j.radio.STYLE ? a.check_Child_State === 2 : a[b] ? a.check_Child_State > -1 && a.check_Child_State < 2 : a.check_Child_State > 0 } }, getTreeCheckedNodes: function (c, a, b, d) { + if (!a) return []; for (var h = c.data.key.children, i = c.data.key.checked, e = b && c.check.chkStyle == j.radio.STYLE && c.check.radioType == j.radio.TYPE_ALL, d = !d ? [] : d, + f = 0, k = a.length; f < k; f++) { if (a[f].nocheck !== !0 && a[f].chkDisabled !== !0 && a[f][i] == b && (d.push(a[f]), e)) break; g.getTreeCheckedNodes(c, a[f][h], b, d); if (e && d.length > 0) break } return d + }, getTreeChangeCheckedNodes: function (c, a, b) { if (!a) return []; for (var d = c.data.key.children, h = c.data.key.checked, b = !b ? [] : b, i = 0, e = a.length; i < e; i++) a[i].nocheck !== !0 && a[i].chkDisabled !== !0 && a[i][h] != a[i].checkedOld && b.push(a[i]), g.getTreeChangeCheckedNodes(c, a[i][d], b); return b }, makeChkFlag: function (c, a) { + if (a) { + var b = c.data.key.children, + d = c.data.key.checked, h = -1; if (a[b]) for (var i = 0, e = a[b].length; i < e; i++) { + var f = a[b][i], g = -1; if (c.check.chkStyle == j.radio.STYLE) if (g = f.nocheck === !0 || f.chkDisabled === !0 ? f.check_Child_State : f.halfCheck === !0 ? 2 : f[d] ? 2 : f.check_Child_State > 0 ? 2 : 0, g == 2) { h = 2; break } else g == 0 && (h = 0); else if (c.check.chkStyle == j.checkbox.STYLE) if (g = f.nocheck === !0 || f.chkDisabled === !0 ? f.check_Child_State : f.halfCheck === !0 ? 1 : f[d] ? f.check_Child_State === -1 || f.check_Child_State === 2 ? 2 : 1 : f.check_Child_State > 0 ? 1 : 0, g === 1) { h = 1; break } else if (g === + 2 && h > -1 && i > 0 && g !== h) { h = 1; break } else if (h === 2 && g > -1 && g < 2) { h = 1; break } else g > -1 && (h = g) + } a.check_Child_State = h + } + } + } + }); var m = m.fn.zTree, k = m._z.tools, j = m.consts, e = m._z.view, g = m._z.data, n = k.$; g.exSetting(v); g.addInitBind(function (c) { c.treeObj.bind(j.event.CHECK, function (a, b, d, h) { a.srcEvent = b; k.apply(c.callback.onCheck, [a, d, h]) }) }); g.addInitUnBind(function (c) { c.treeObj.unbind(j.event.CHECK) }); g.addInitCache(function () { }); g.addInitNode(function (c, a, b, d) { + if (b) { + a = c.data.key.checked; typeof b[a] == "string" && (b[a] = + k.eqs(b[a], "true")); b[a] = !!b[a]; b.checkedOld = b[a]; if (typeof b.nocheck == "string") b.nocheck = k.eqs(b.nocheck, "true"); b.nocheck = !!b.nocheck || c.check.nocheckInherit && d && !!d.nocheck; if (typeof b.chkDisabled == "string") b.chkDisabled = k.eqs(b.chkDisabled, "true"); b.chkDisabled = !!b.chkDisabled || c.check.chkDisabledInherit && d && !!d.chkDisabled; if (typeof b.halfCheck == "string") b.halfCheck = k.eqs(b.halfCheck, "true"); b.halfCheck = !!b.halfCheck; b.check_Child_State = -1; b.check_Focus = !1; b.getCheckStatus = function () { + return g.getCheckStatus(c, + b) + }; c.check.chkStyle == j.radio.STYLE && c.check.radioType == j.radio.TYPE_ALL && b[a] && g.getRoot(c).radioCheckedList.push(b) + } + }); g.addInitProxy(function (c) { + var a = c.target, b = g.getSetting(c.data.treeId), d = "", h = null, e = "", l = null; if (k.eqs(c.type, "mouseover")) { if (b.check.enable && k.eqs(a.tagName, "span") && a.getAttribute("treeNode" + j.id.CHECK) !== null) d = k.getNodeMainDom(a).id, e = "mouseoverCheck" } else if (k.eqs(c.type, "mouseout")) { + if (b.check.enable && k.eqs(a.tagName, "span") && a.getAttribute("treeNode" + j.id.CHECK) !== null) d = + k.getNodeMainDom(a).id, e = "mouseoutCheck" + } else if (k.eqs(c.type, "click") && b.check.enable && k.eqs(a.tagName, "span") && a.getAttribute("treeNode" + j.id.CHECK) !== null) d = k.getNodeMainDom(a).id, e = "checkNode"; if (d.length > 0) switch (h = g.getNodeCache(b, d), e) { case "checkNode": l = p; break; case "mouseoverCheck": l = q; break; case "mouseoutCheck": l = r } return { stop: e === "checkNode", node: h, nodeEventType: e, nodeEventCallback: l, treeEventType: "", treeEventCallback: null } + }, !0); g.addInitRoot(function (c) { g.getRoot(c).radioCheckedList = [] }); + g.addBeforeA(function (c, a, b) { c.check.enable && (g.makeChkFlag(c, a), b.push("")) }); g.addZTreeTools(function (c, a) { + a.checkNode = function (a, b, c, g) { + var f = this.setting.data.key.checked; if (a.chkDisabled !== !0 && (b !== !0 && b !== !1 && (b = !a[f]), g = !!g, (a[f] !== b || c) && !(g && k.apply(this.setting.callback.beforeCheck, [this.setting.treeId, a], !0) == !1) && k.uCanDo(this.setting) && this.setting.check.enable && + a.nocheck !== !0)) a[f] = b, b = n(a, j.id.CHECK, this.setting), (c || this.setting.check.chkStyle === j.radio.STYLE) && e.checkNodeRelation(this.setting, a), e.setChkClass(this.setting, b, a), e.repairParentChkClassWithSelf(this.setting, a), g && this.setting.treeObj.trigger(j.event.CHECK, [null, this.setting.treeId, a]) + }; a.checkAllNodes = function (a) { e.repairAllChk(this.setting, !!a) }; a.getCheckedNodes = function (a) { var b = this.setting.data.key.children; return g.getTreeCheckedNodes(this.setting, g.getRoot(this.setting)[b], a !== !1) }; + a.getChangeCheckedNodes = function () { var a = this.setting.data.key.children; return g.getTreeChangeCheckedNodes(this.setting, g.getRoot(this.setting)[a]) }; a.setChkDisabled = function (a, b, c, g) { b = !!b; c = !!c; e.repairSonChkDisabled(this.setting, a, b, !!g); e.repairParentChkDisabled(this.setting, a.getParentNode(), b, c) }; var b = a.updateNode; a.updateNode = function (c, g) { + b && b.apply(a, arguments); if (c && this.setting.check.enable && n(c, this.setting).get(0) && k.uCanDo(this.setting)) { + var i = n(c, j.id.CHECK, this.setting); (g == !0 || this.setting.check.chkStyle === + j.radio.STYLE) && e.checkNodeRelation(this.setting, c); e.setChkClass(this.setting, i, c); e.repairParentChkClassWithSelf(this.setting, c) + } + } + }); var s = e.createNodes; e.createNodes = function (c, a, b, d, g) { s && s.apply(e, arguments); b && e.repairParentChkClassWithSelf(c, d) }; var t = e.removeNode; e.removeNode = function (c, a) { var b = a.getParentNode(); t && t.apply(e, arguments); a && b && (e.repairChkClass(c, b), e.repairParentChkClass(c, b)) }; var u = e.appendNodes; e.appendNodes = function (c, a, b, d, h, i, j) { + var f = ""; u && (f = u.apply(e, arguments)); + d && g.makeChkFlag(c, d); return f + } + })(jQuery); + + /* + * JQuery zTree exedit v3.5.29 + * http://treejs.cn/ + * + * Copyright (c) 2010 Hunter.z + * + * Licensed same as jquery - MIT License + * http://www.opensource.org/licenses/mit-license.php + * + * email: hunter.z@263.net + * Date: 2017-06-19 + */ + (function (v) { + var J = { event: { DRAG: "ztree_drag", DROP: "ztree_drop", RENAME: "ztree_rename", DRAGMOVE: "ztree_dragmove" }, id: { EDIT: "_edit", INPUT: "_input", REMOVE: "_remove" }, move: { TYPE_INNER: "inner", TYPE_PREV: "prev", TYPE_NEXT: "next" }, node: { CURSELECTED_EDIT: "curSelectedNode_Edit", TMPTARGET_TREE: "tmpTargetzTree", TMPTARGET_NODE: "tmpTargetNode" } }, x = { + onHoverOverNode: function (b, a) { var c = m.getSetting(b.data.treeId), d = m.getRoot(c); if (d.curHoverNode != a) x.onHoverOutNode(b); d.curHoverNode = a; f.addHoverDom(c, a) }, onHoverOutNode: function (b) { + var b = + m.getSetting(b.data.treeId), a = m.getRoot(b); if (a.curHoverNode && !m.isSelectedNode(b, a.curHoverNode)) f.removeTreeDom(b, a.curHoverNode), a.curHoverNode = null + }, onMousedownNode: function (b, a) { + function c(b) { + if (B.dragFlag == 0 && Math.abs(O - b.clientX) < e.edit.drag.minMoveSize && Math.abs(P - b.clientY) < e.edit.drag.minMoveSize) return !0; var a, c, n, k, i; i = e.data.key.children; M.css("cursor", "pointer"); if (B.dragFlag == 0) { + if (g.apply(e.callback.beforeDrag, [e.treeId, l], !0) == !1) return r(b), !0; for (a = 0, c = l.length; a < c; a++) { + if (a == 0) B.dragNodeShowBefore = + []; n = l[a]; n.isParent && n.open ? (f.expandCollapseNode(e, n, !n.open), B.dragNodeShowBefore[n.tId] = !0) : B.dragNodeShowBefore[n.tId] = !1 + } B.dragFlag = 1; t.showHoverDom = !1; g.showIfameMask(e, !0); n = !0; k = -1; if (l.length > 1) { var j = l[0].parentTId ? l[0].getParentNode()[i] : m.getNodes(e); i = []; for (a = 0, c = j.length; a < c; a++) if (B.dragNodeShowBefore[j[a].tId] !== void 0 && (n && k > -1 && k + 1 !== a && (n = !1), i.push(j[a]), k = a), l.length === i.length) { l = i; break } } n && (I = l[0].getPreNode(), R = l[l.length - 1].getNextNode()); D = o("
        ", + e); for (a = 0, c = l.length; a < c; a++) n = l[a], n.editNameFlag = !1, f.selectNode(e, n, a > 0), f.removeTreeDom(e, n), a > e.edit.drag.maxShowNodeNum - 1 || (k = o("
      • ", e), k.append(o(n, d.id.A, e).clone()), k.css("padding", "0"), k.children("#" + n.tId + d.id.A).removeClass(d.node.CURSELECTED), D.append(k), a == e.edit.drag.maxShowNodeNum - 1 && (k = o("
      • ...
      • ", e), D.append(k))); D.attr("id", l[0].tId + d.id.UL + "_tmp"); D.addClass(e.treeObj.attr("class")); D.appendTo(M); A = o("", + e); A.attr("id", "zTreeMove_arrow_tmp"); A.appendTo(M); e.treeObj.trigger(d.event.DRAG, [b, e.treeId, l]) + } if (B.dragFlag == 1) { + s && A.attr("id") == b.target.id && u && b.clientX + G.scrollLeft() + 2 > v("#" + u + d.id.A, s).offset().left ? (n = v("#" + u + d.id.A, s), b.target = n.length > 0 ? n.get(0) : b.target) : s && (s.removeClass(d.node.TMPTARGET_TREE), u && v("#" + u + d.id.A, s).removeClass(d.node.TMPTARGET_NODE + "_" + d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE + "_" + J.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE + "_" + J.move.TYPE_INNER)); + u = s = null; K = !1; h = e; n = m.getSettings(); for (var y in n) if (n[y].treeId && n[y].edit.enable && n[y].treeId != e.treeId && (b.target.id == n[y].treeId || v(b.target).parents("#" + n[y].treeId).length > 0)) K = !0, h = n[y]; y = G.scrollTop(); k = G.scrollLeft(); i = h.treeObj.offset(); a = h.treeObj.get(0).scrollHeight; n = h.treeObj.get(0).scrollWidth; c = b.clientY + y - i.top; var p = h.treeObj.height() + i.top - b.clientY - y, q = b.clientX + k - i.left, H = h.treeObj.width() + i.left - b.clientX - k; i = c < e.edit.drag.borderMax && c > e.edit.drag.borderMin; var j = p < e.edit.drag.borderMax && + p > e.edit.drag.borderMin, F = q < e.edit.drag.borderMax && q > e.edit.drag.borderMin, x = H < e.edit.drag.borderMax && H > e.edit.drag.borderMin, p = c > e.edit.drag.borderMin && p > e.edit.drag.borderMin && q > e.edit.drag.borderMin && H > e.edit.drag.borderMin, q = i && h.treeObj.scrollTop() <= 0, H = j && h.treeObj.scrollTop() + h.treeObj.height() + 10 >= a, N = F && h.treeObj.scrollLeft() <= 0, Q = x && h.treeObj.scrollLeft() + h.treeObj.width() + 10 >= n; if (b.target && g.isChildOrSelf(b.target, h.treeId)) { + for (var E = b.target; E && E.tagName && !g.eqs(E.tagName, "li") && E.id != + h.treeId;) E = E.parentNode; var S = !0; for (a = 0, c = l.length; a < c; a++) if (n = l[a], E.id === n.tId) { S = !1; break } else if (o(n, e).find("#" + E.id).length > 0) { S = !1; break } if (S && b.target && g.isChildOrSelf(b.target, E.id + d.id.A)) s = v(E), u = E.id + } n = l[0]; if (p && g.isChildOrSelf(b.target, h.treeId)) { + if (!s && (b.target.id == h.treeId || q || H || N || Q) && (K || !K && n.parentTId)) s = h.treeObj; i ? h.treeObj.scrollTop(h.treeObj.scrollTop() - 10) : j && h.treeObj.scrollTop(h.treeObj.scrollTop() + 10); F ? h.treeObj.scrollLeft(h.treeObj.scrollLeft() - 10) : x && h.treeObj.scrollLeft(h.treeObj.scrollLeft() + + 10); s && s != h.treeObj && s.offset().left < h.treeObj.offset().left && h.treeObj.scrollLeft(h.treeObj.scrollLeft() + s.offset().left - h.treeObj.offset().left) + } D.css({ top: b.clientY + y + 3 + "px", left: b.clientX + k + 3 + "px" }); c = a = 0; if (s && s.attr("id") != h.treeId) { + var z = u == null ? null : m.getNodeCache(h, u); i = (b.ctrlKey || b.metaKey) && e.edit.drag.isMove && e.edit.drag.isCopy || !e.edit.drag.isMove && e.edit.drag.isCopy; k = !!(I && u === I.tId); F = !!(R && u === R.tId); j = n.parentTId && n.parentTId == u; n = (i || !F) && g.apply(h.edit.drag.prev, [h.treeId, l, z], + !!h.edit.drag.prev); k = (i || !k) && g.apply(h.edit.drag.next, [h.treeId, l, z], !!h.edit.drag.next); i = (i || !j) && !(h.data.keep.leaf && !z.isParent) && g.apply(h.edit.drag.inner, [h.treeId, l, z], !!h.edit.drag.inner); j = function () { s = null; u = ""; w = d.move.TYPE_INNER; A.css({ display: "none" }); if (window.zTreeMoveTimer) clearTimeout(window.zTreeMoveTimer), window.zTreeMoveTargetNodeTId = null }; if (!n && !k && !i) j(); else if (F = v("#" + u + d.id.A, s), x = z.isLastNode ? null : v("#" + z.getNextNode().tId + d.id.A, s.next()), p = F.offset().top, q = F.offset().left, + H = n ? i ? 0.25 : k ? 0.5 : 1 : -1, N = k ? i ? 0.75 : n ? 0.5 : 0 : -1, y = (b.clientY + y - p) / F.height(), (H == 1 || y <= H && y >= -0.2) && n ? (a = 1 - A.width(), c = p - A.height() / 2, w = d.move.TYPE_PREV) : (N == 0 || y >= N && y <= 1.2) && k ? (a = 1 - A.width(), c = x == null || z.isParent && z.open ? p + F.height() - A.height() / 2 : x.offset().top - A.height() / 2, w = d.move.TYPE_NEXT) : i ? (a = 5 - A.width(), c = p, w = d.move.TYPE_INNER) : j(), s) { + A.css({ display: "block", top: c + "px", left: q + a + "px" }); F.addClass(d.node.TMPTARGET_NODE + "_" + w); if (T != u || U != w) L = (new Date).getTime(); if (z && z.isParent && w == d.move.TYPE_INNER && + (y = !0, window.zTreeMoveTimer && window.zTreeMoveTargetNodeTId !== z.tId ? (clearTimeout(window.zTreeMoveTimer), window.zTreeMoveTargetNodeTId = null) : window.zTreeMoveTimer && window.zTreeMoveTargetNodeTId === z.tId && (y = !1), y)) window.zTreeMoveTimer = setTimeout(function () { w == d.move.TYPE_INNER && z && z.isParent && !z.open && (new Date).getTime() - L > h.edit.drag.autoOpenTime && g.apply(h.callback.beforeDragOpen, [h.treeId, z], !0) && (f.switchNode(h, z), h.edit.drag.autoExpandTrigger && h.treeObj.trigger(d.event.EXPAND, [h.treeId, z])) }, + h.edit.drag.autoOpenTime + 50), window.zTreeMoveTargetNodeTId = z.tId + } + } else if (w = d.move.TYPE_INNER, s && g.apply(h.edit.drag.inner, [h.treeId, l, null], !!h.edit.drag.inner) ? s.addClass(d.node.TMPTARGET_TREE) : s = null, A.css({ display: "none" }), window.zTreeMoveTimer) clearTimeout(window.zTreeMoveTimer), window.zTreeMoveTargetNodeTId = null; T = u; U = w; e.treeObj.trigger(d.event.DRAGMOVE, [b, e.treeId, l]) + } return !1 + } function r(b) { + if (window.zTreeMoveTimer) clearTimeout(window.zTreeMoveTimer), window.zTreeMoveTargetNodeTId = null; U = T = + null; G.unbind("mousemove", c); G.unbind("mouseup", r); G.unbind("selectstart", k); M.css("cursor", "auto"); s && (s.removeClass(d.node.TMPTARGET_TREE), u && v("#" + u + d.id.A, s).removeClass(d.node.TMPTARGET_NODE + "_" + d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE + "_" + J.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE + "_" + J.move.TYPE_INNER)); g.showIfameMask(e, !1); t.showHoverDom = !0; if (B.dragFlag != 0) { + B.dragFlag = 0; var a, i, j; for (a = 0, i = l.length; a < i; a++) j = l[a], j.isParent && B.dragNodeShowBefore[j.tId] && !j.open && (f.expandCollapseNode(e, + j, !j.open), delete B.dragNodeShowBefore[j.tId]); D && D.remove(); A && A.remove(); var p = (b.ctrlKey || b.metaKey) && e.edit.drag.isMove && e.edit.drag.isCopy || !e.edit.drag.isMove && e.edit.drag.isCopy; !p && s && u && l[0].parentTId && u == l[0].parentTId && w == d.move.TYPE_INNER && (s = null); if (s) { + var q = u == null ? null : m.getNodeCache(h, u); if (g.apply(e.callback.beforeDrop, [h.treeId, l, q, w, p], !0) == !1) f.selectNodes(x, l); else { + var C = p ? g.clone(l) : l; a = function () { + if (K) { + if (!p) for (var a = 0, c = l.length; a < c; a++) f.removeNode(e, l[a]); w == d.move.TYPE_INNER ? + f.addNodes(h, q, -1, C) : f.addNodes(h, q.getParentNode(), w == d.move.TYPE_PREV ? q.getIndex() : q.getIndex() + 1, C) + } else if (p && w == d.move.TYPE_INNER) f.addNodes(h, q, -1, C); else if (p) f.addNodes(h, q.getParentNode(), w == d.move.TYPE_PREV ? q.getIndex() : q.getIndex() + 1, C); else if (w != d.move.TYPE_NEXT) for (a = 0, c = C.length; a < c; a++) f.moveNode(h, q, C[a], w, !1); else for (a = -1, c = C.length - 1; a < c; c--) f.moveNode(h, q, C[c], w, !1); f.selectNodes(h, C); a = o(C[0], e).get(0); f.scrollIntoView(a); e.treeObj.trigger(d.event.DROP, [b, h.treeId, C, q, w, p]) + }; + w == d.move.TYPE_INNER && g.canAsync(h, q) ? f.asyncNode(h, q, !1, a) : a() + } + } else f.selectNodes(x, l), e.treeObj.trigger(d.event.DROP, [b, e.treeId, l, null, null, null]) + } + } function k() { return !1 } var i, j, e = m.getSetting(b.data.treeId), B = m.getRoot(e), t = m.getRoots(); if (b.button == 2 || !e.edit.enable || !e.edit.drag.isCopy && !e.edit.drag.isMove) return !0; var p = b.target, q = m.getRoot(e).curSelectedList, l = []; if (m.isSelectedNode(e, a)) for (i = 0, j = q.length; i < j; i++) { + if (q[i].editNameFlag && g.eqs(p.tagName, "input") && p.getAttribute("treeNode" + + d.id.INPUT) !== null) return !0; l.push(q[i]); if (l[0].parentTId !== q[i].parentTId) { l = [a]; break } + } else l = [a]; f.editNodeBlur = !0; f.cancelCurEditNode(e); var G = v(e.treeObj.get(0).ownerDocument), M = v(e.treeObj.get(0).ownerDocument.body), D, A, s, K = !1, h = e, x = e, I, R, T = null, U = null, u = null, w = d.move.TYPE_INNER, O = b.clientX, P = b.clientY, L = (new Date).getTime(); g.uCanDo(e) && G.bind("mousemove", c); G.bind("mouseup", r); G.bind("selectstart", k); b.preventDefault && b.preventDefault(); return !0 + } + }; v.extend(!0, v.fn.zTree.consts, J); v.extend(!0, + v.fn.zTree._z, { + tools: { + getAbs: function (b) { b = b.getBoundingClientRect(); return [b.left + (document.body.scrollLeft + document.documentElement.scrollLeft), b.top + (document.body.scrollTop + document.documentElement.scrollTop)] }, inputFocus: function (b) { b.get(0) && (b.focus(), g.setCursorPosition(b.get(0), b.val().length)) }, inputSelect: function (b) { b.get(0) && (b.focus(), b.select()) }, setCursorPosition: function (b, a) { + if (b.setSelectionRange) b.focus(), b.setSelectionRange(a, a); else if (b.createTextRange) { + var c = b.createTextRange(); + c.collapse(!0); c.moveEnd("character", a); c.moveStart("character", a); c.select() + } + }, showIfameMask: function (b, a) { for (var c = m.getRoot(b) ; c.dragMaskList.length > 0;) c.dragMaskList[0].remove(), c.dragMaskList.shift(); if (a) for (var d = o("iframe", b), f = 0, i = d.length; f < i; f++) { var j = d.get(f), e = g.getAbs(j), j = o("
        ", b); j.appendTo(o("body", b)); c.dragMaskList.push(j) } } + }, view: { + addEditBtn: function (b, + a) { if (!(a.editNameFlag || o(a, d.id.EDIT, b).length > 0) && g.apply(b.edit.showRenameBtn, [b.treeId, a], b.edit.showRenameBtn)) { var c = o(a, d.id.A, b), r = ""; c.append(r); o(a, d.id.EDIT, b).bind("click", function () { if (!g.uCanDo(b) || g.apply(b.callback.beforeEditName, [b.treeId, a], !0) == !1) return !1; f.editNode(b, a); return !1 }).show() } }, + addRemoveBtn: function (b, a) { + if (!(a.editNameFlag || o(a, d.id.REMOVE, b).length > 0) && g.apply(b.edit.showRemoveBtn, [b.treeId, a], b.edit.showRemoveBtn)) { + var c = o(a, d.id.A, b), r = ""; c.append(r); o(a, d.id.REMOVE, b).bind("click", function () { + if (!g.uCanDo(b) || g.apply(b.callback.beforeRemove, [b.treeId, a], !0) == !1) return !1; f.removeNode(b, + a); b.treeObj.trigger(d.event.REMOVE, [b.treeId, a]); return !1 + }).bind("mousedown", function () { return !0 }).show() + } + }, addHoverDom: function (b, a) { if (m.getRoots().showHoverDom) a.isHover = !0, b.edit.enable && (f.addEditBtn(b, a), f.addRemoveBtn(b, a)), g.apply(b.view.addHoverDom, [b.treeId, a]) }, cancelCurEditNode: function (b, a, c) { + var r = m.getRoot(b), k = b.data.key.name, i = r.curEditNode; if (i) { + var j = r.curEditInput, a = a ? a : c ? i[k] : j.val(); if (g.apply(b.callback.beforeRename, [b.treeId, i, a, c], !0) === !1) return !1; i[k] = a; o(i, d.id.A, b).removeClass(d.node.CURSELECTED_EDIT); + j.unbind(); f.setNodeName(b, i); i.editNameFlag = !1; r.curEditNode = null; r.curEditInput = null; f.selectNode(b, i, !1); b.treeObj.trigger(d.event.RENAME, [b.treeId, i, c]) + } return r.noSelection = !0 + }, editNode: function (b, a) { + var c = m.getRoot(b); f.editNodeBlur = !1; if (m.isSelectedNode(b, a) && c.curEditNode == a && a.editNameFlag) setTimeout(function () { g.inputFocus(c.curEditInput) }, 0); else { + var r = b.data.key.name; a.editNameFlag = !0; f.removeTreeDom(b, a); f.cancelCurEditNode(b); f.selectNode(b, a, !1); o(a, d.id.SPAN, b).html(""); var k = o(a, d.id.INPUT, b); k.attr("value", a[r]); b.edit.editNameSelectAll ? g.inputSelect(k) : g.inputFocus(k); k.bind("blur", function () { f.editNodeBlur || f.cancelCurEditNode(b) }).bind("keydown", function (a) { a.keyCode == "13" ? (f.editNodeBlur = !0, f.cancelCurEditNode(b)) : a.keyCode == "27" && f.cancelCurEditNode(b, null, !0) }).bind("click", function () { return !1 }).bind("dblclick", function () { return !1 }); o(a, d.id.A, b).addClass(d.node.CURSELECTED_EDIT); c.curEditInput = k; c.noSelection = + !1; c.curEditNode = a + } + }, moveNode: function (b, a, c, r, k, i) { + var j = m.getRoot(b), e = b.data.key.children; if (a != c && (!b.data.keep.leaf || !a || a.isParent || r != d.move.TYPE_INNER)) { + var g = c.parentTId ? c.getParentNode() : j, t = a === null || a == j; t && a === null && (a = j); if (t) r = d.move.TYPE_INNER; j = a.parentTId ? a.getParentNode() : j; if (r != d.move.TYPE_PREV && r != d.move.TYPE_NEXT) r = d.move.TYPE_INNER; if (r == d.move.TYPE_INNER) if (t) c.parentTId = null; else { if (!a.isParent) a.isParent = !0, a.open = !!a.open, f.setNodeLineIcos(b, a); c.parentTId = a.tId } var p; + t ? p = t = b.treeObj : (!i && r == d.move.TYPE_INNER ? f.expandCollapseNode(b, a, !0, !1) : i || f.expandCollapseNode(b, a.getParentNode(), !0, !1), t = o(a, b), p = o(a, d.id.UL, b), t.get(0) && !p.get(0) && (p = [], f.makeUlHtml(b, a, p, ""), t.append(p.join(""))), p = o(a, d.id.UL, b)); var q = o(c, b); q.get(0) ? t.get(0) || q.remove() : q = f.appendNodes(b, c.level, [c], null, -1, !1, !0).join(""); p.get(0) && r == d.move.TYPE_INNER ? p.append(q) : t.get(0) && r == d.move.TYPE_PREV ? t.before(q) : t.get(0) && r == d.move.TYPE_NEXT && t.after(q); var l = -1, v = 0, x = null, t = null, D = c.level; + if (c.isFirstNode) { if (l = 0, g[e].length > 1) x = g[e][1], x.isFirstNode = !0 } else if (c.isLastNode) l = g[e].length - 1, x = g[e][l - 1], x.isLastNode = !0; else for (p = 0, q = g[e].length; p < q; p++) if (g[e][p].tId == c.tId) { l = p; break } l >= 0 && g[e].splice(l, 1); if (r != d.move.TYPE_INNER) for (p = 0, q = j[e].length; p < q; p++) j[e][p].tId == a.tId && (v = p); if (r == d.move.TYPE_INNER) { a[e] || (a[e] = []); if (a[e].length > 0) t = a[e][a[e].length - 1], t.isLastNode = !1; a[e].splice(a[e].length, 0, c); c.isLastNode = !0; c.isFirstNode = a[e].length == 1 } else a.isFirstNode && r == d.move.TYPE_PREV ? + (j[e].splice(v, 0, c), t = a, t.isFirstNode = !1, c.parentTId = a.parentTId, c.isFirstNode = !0, c.isLastNode = !1) : a.isLastNode && r == d.move.TYPE_NEXT ? (j[e].splice(v + 1, 0, c), t = a, t.isLastNode = !1, c.parentTId = a.parentTId, c.isFirstNode = !1, c.isLastNode = !0) : (r == d.move.TYPE_PREV ? j[e].splice(v, 0, c) : j[e].splice(v + 1, 0, c), c.parentTId = a.parentTId, c.isFirstNode = !1, c.isLastNode = !1); m.fixPIdKeyValue(b, c); m.setSonNodeLevel(b, c.getParentNode(), c); f.setNodeLineIcos(b, c); f.repairNodeLevelClass(b, c, D); !b.data.keep.parent && g[e].length < + 1 ? (g.isParent = !1, g.open = !1, a = o(g, d.id.UL, b), r = o(g, d.id.SWITCH, b), e = o(g, d.id.ICON, b), f.replaceSwitchClass(g, r, d.folder.DOCU), f.replaceIcoClass(g, e, d.folder.DOCU), a.css("display", "none")) : x && f.setNodeLineIcos(b, x); t && f.setNodeLineIcos(b, t); b.check && b.check.enable && f.repairChkClass && (f.repairChkClass(b, g), f.repairParentChkClassWithSelf(b, g), g != c.parent && f.repairParentChkClassWithSelf(b, c)); i || f.expandCollapseParentNode(b, c.getParentNode(), !0, k) + } + }, removeEditBtn: function (b, a) { o(a, d.id.EDIT, b).unbind().remove() }, + removeRemoveBtn: function (b, a) { o(a, d.id.REMOVE, b).unbind().remove() }, removeTreeDom: function (b, a) { a.isHover = !1; f.removeEditBtn(b, a); f.removeRemoveBtn(b, a); g.apply(b.view.removeHoverDom, [b.treeId, a]) }, repairNodeLevelClass: function (b, a, c) { if (c !== a.level) { var f = o(a, b), g = o(a, d.id.A, b), b = o(a, d.id.UL, b), c = d.className.LEVEL + c, a = d.className.LEVEL + a.level; f.removeClass(c); f.addClass(a); g.removeClass(c); g.addClass(a); b.removeClass(c); b.addClass(a) } }, selectNodes: function (b, a) { + for (var c = 0, d = a.length; c < d; c++) f.selectNode(b, + a[c], c > 0) + } + }, event: {}, data: { setSonNodeLevel: function (b, a, c) { if (c) { var d = b.data.key.children; c.level = a ? a.level + 1 : 0; if (c[d]) for (var a = 0, f = c[d].length; a < f; a++) c[d][a] && m.setSonNodeLevel(b, c, c[d][a]) } } } + }); var I = v.fn.zTree, g = I._z.tools, d = I.consts, f = I._z.view, m = I._z.data, o = g.$; m.exSetting({ + edit: { + enable: !1, editNameSelectAll: !1, showRemoveBtn: !0, showRenameBtn: !0, removeTitle: "remove", renameTitle: "rename", drag: { + autoExpandTrigger: !1, isCopy: !0, isMove: !0, prev: !0, next: !0, inner: !0, minMoveSize: 5, borderMax: 10, borderMin: -5, + maxShowNodeNum: 5, autoOpenTime: 500 + } + }, view: { addHoverDom: null, removeHoverDom: null }, callback: { beforeDrag: null, beforeDragOpen: null, beforeDrop: null, beforeEditName: null, beforeRename: null, onDrag: null, onDragMove: null, onDrop: null, onRename: null } + }); m.addInitBind(function (b) { + var a = b.treeObj, c = d.event; a.bind(c.RENAME, function (a, c, d, f) { g.apply(b.callback.onRename, [a, c, d, f]) }); a.bind(c.DRAG, function (a, c, d, f) { g.apply(b.callback.onDrag, [c, d, f]) }); a.bind(c.DRAGMOVE, function (a, c, d, f) { + g.apply(b.callback.onDragMove, [c, + d, f]) + }); a.bind(c.DROP, function (a, c, d, f, e, m, o) { g.apply(b.callback.onDrop, [c, d, f, e, m, o]) }) + }); m.addInitUnBind(function (b) { var b = b.treeObj, a = d.event; b.unbind(a.RENAME); b.unbind(a.DRAG); b.unbind(a.DRAGMOVE); b.unbind(a.DROP) }); m.addInitCache(function () { }); m.addInitNode(function (b, a, c) { if (c) c.isHover = !1, c.editNameFlag = !1 }); m.addInitProxy(function (b) { + var a = b.target, c = m.getSetting(b.data.treeId), f = b.relatedTarget, k = "", i = null, j = "", e = null, o = null; if (g.eqs(b.type, "mouseover")) { + if (o = g.getMDom(c, a, [{ + tagName: "a", + attrName: "treeNode" + d.id.A + }])) k = g.getNodeMainDom(o).id, j = "hoverOverNode" + } else if (g.eqs(b.type, "mouseout")) o = g.getMDom(c, f, [{ tagName: "a", attrName: "treeNode" + d.id.A }]), o || (k = "remove", j = "hoverOutNode"); else if (g.eqs(b.type, "mousedown") && (o = g.getMDom(c, a, [{ tagName: "a", attrName: "treeNode" + d.id.A }]))) k = g.getNodeMainDom(o).id, j = "mousedownNode"; if (k.length > 0) switch (i = m.getNodeCache(c, k), j) { + case "mousedownNode": e = x.onMousedownNode; break; case "hoverOverNode": e = x.onHoverOverNode; break; case "hoverOutNode": e = + x.onHoverOutNode + } return { stop: !1, node: i, nodeEventType: j, nodeEventCallback: e, treeEventType: "", treeEventCallback: null } + }); m.addInitRoot(function (b) { var b = m.getRoot(b), a = m.getRoots(); b.curEditNode = null; b.curEditInput = null; b.curHoverNode = null; b.dragFlag = 0; b.dragNodeShowBefore = []; b.dragMaskList = []; a.showHoverDom = !0 }); m.addZTreeTools(function (b, a) { + a.cancelEditName = function (a) { m.getRoot(this.setting).curEditNode && f.cancelCurEditNode(this.setting, a ? a : null, !0) }; a.copyNode = function (a, b, k, i) { + if (!b) return null; + if (a && !a.isParent && this.setting.data.keep.leaf && k === d.move.TYPE_INNER) return null; var j = this, e = g.clone(b); if (!a) a = null, k = d.move.TYPE_INNER; k == d.move.TYPE_INNER ? (b = function () { f.addNodes(j.setting, a, -1, [e], i) }, g.canAsync(this.setting, a) ? f.asyncNode(this.setting, a, i, b) : b()) : (f.addNodes(this.setting, a.parentNode, -1, [e], i), f.moveNode(this.setting, a, e, k, !1, i)); return e + }; a.editName = function (a) { + a && a.tId && a === m.getNodeCache(this.setting, a.tId) && (a.parentTId && f.expandCollapseParentNode(this.setting, a.getParentNode(), + !0), f.editNode(this.setting, a)) + }; a.moveNode = function (a, b, k, i) { function j() { f.moveNode(e.setting, a, b, k, !1, i) } if (!b) return b; if (a && !a.isParent && this.setting.data.keep.leaf && k === d.move.TYPE_INNER) return null; else if (a && (b.parentTId == a.tId && k == d.move.TYPE_INNER || o(b, this.setting).find("#" + a.tId).length > 0)) return null; else a || (a = null); var e = this; g.canAsync(this.setting, a) && k === d.move.TYPE_INNER ? f.asyncNode(this.setting, a, i, j) : j(); return b }; a.setEditable = function (a) { this.setting.edit.enable = a; return this.refresh() } + }); + var O = f.cancelPreSelectedNode; f.cancelPreSelectedNode = function (b, a) { for (var c = m.getRoot(b).curSelectedList, d = 0, g = c.length; d < g; d++) if (!a || a === c[d]) if (f.removeTreeDom(b, c[d]), a) break; O && O.apply(f, arguments) }; var P = f.createNodes; f.createNodes = function (b, a, c, d, g) { P && P.apply(f, arguments); c && f.repairParentChkClassWithSelf && f.repairParentChkClassWithSelf(b, d) }; var W = f.makeNodeUrl; f.makeNodeUrl = function (b, a) { return b.edit.enable ? null : W.apply(f, arguments) }; var L = f.removeNode; f.removeNode = function (b, a) { + var c = + m.getRoot(b); if (c.curEditNode === a) c.curEditNode = null; L && L.apply(f, arguments) + }; var Q = f.selectNode; f.selectNode = function (b, a, c) { var d = m.getRoot(b); if (m.isSelectedNode(b, a) && d.curEditNode == a && a.editNameFlag) return !1; Q && Q.apply(f, arguments); f.addHoverDom(b, a); return !0 }; var V = g.uCanDo; g.uCanDo = function (b, a) { + var c = m.getRoot(b); if (a && (g.eqs(a.type, "mouseover") || g.eqs(a.type, "mouseout") || g.eqs(a.type, "mousedown") || g.eqs(a.type, "mouseup"))) return !0; if (c.curEditNode) f.editNodeBlur = !1, c.curEditInput.focus(); + return !c.curEditNode && (V ? V.apply(f, arguments) : !0) + } + })(jQuery); + + + + exports('ztree'); +}).addcss('../../css/metroStyle/metroStyle.css', 'ztreecss'); \ No newline at end of file