|
@@ -1,469 +0,0 @@
|
|
|
-<!DOCTYPE html>
|
|
|
-<html>
|
|
|
-
|
|
|
-<head>
|
|
|
- <meta name="renderer" content="webkit">
|
|
|
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
|
|
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
|
|
- <link rel="stylesheet" href="/static/css/zTreeStyle.css" type="text/css" />
|
|
|
- <link charset="utf-8" rel="stylesheet" href="/static/css/layui.css?v=1.0.0">
|
|
|
- <link rel="stylesheet" href="/static/css/temp.css" media="all">
|
|
|
- <script src="/static/js/jquery-1.8.2.min.js?v=1.0.0"></script>
|
|
|
- <script src="/static/js/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
|
|
- <script src="/static/js/layui.js?v=1.0.0"></script>
|
|
|
- <script src="/static/js/common.js?v=1.0.0"></script>
|
|
|
- <script src="/static/js/api.config.js"></script>
|
|
|
- <script src="/static/js/util.js?v=1.0.0"></script>
|
|
|
- <script src="/static/js/customform.js?v=1.0.0"></script>
|
|
|
- <script src="/static/js/url.js?v=1.0.0"></script>
|
|
|
- <script src="/static/js/lay/lay-config.js?v=1.0.0"></script>
|
|
|
- <script type="text/javascript" src="/static/js/jquery.ztree.all.min.js"></script>
|
|
|
- <script type="text/javascript" src="/static/js/jquery.ztree.exhide-3.5.js"></script>
|
|
|
-</head>
|
|
|
-<style>
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-</style>
|
|
|
-
|
|
|
-<body class="bg-info">
|
|
|
-
|
|
|
- <div class="layui-card border-info">
|
|
|
-
|
|
|
- <div class="layui-card-header layui-card-header-bb-2"
|
|
|
- style="height: 55px;line-height: 20px; padding-left: 0;padding-right: 8px;padding-top: 15px;">
|
|
|
- <div class="layui-input-inline" style="padding-left: 30px;">
|
|
|
- <input class="layui-input " id="searchInput" value="" placeholder="输入查询内容...">
|
|
|
- </div>
|
|
|
- <div class="layui-input-inline">
|
|
|
- <button class="layui-btn layui-btn-normal" id="search_btn">查询</button>
|
|
|
- </div>
|
|
|
-
|
|
|
-
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class="layui-card-body">
|
|
|
-
|
|
|
- <div class="layui-row">
|
|
|
-
|
|
|
- <ul id="tree" class="ztree" style="overflow-y: auto;"></ul>
|
|
|
-
|
|
|
- </div>
|
|
|
-
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class="layui-card-footer">
|
|
|
-
|
|
|
- <button class=" layui-btn layui-btn-sm layui-btn-normal ztreeSave">
|
|
|
- <i class="layui-icon layui-icon-ok-circle "></i>
|
|
|
- <span class="btn-span-middle">确定</span>
|
|
|
- </button>
|
|
|
- <button class=" layui-btn layui-btn-sm layui-btn-normal parentClear ">
|
|
|
- <i class="layui-icon layui-icon-fonts-clear "></i>
|
|
|
- <span class="btn-span-middle">清空选择</span>
|
|
|
- </button>
|
|
|
- <button class="ag-btn-cancel layui-btn layui-btn-sm layui-btn-normal">
|
|
|
- <i class="layui-icon layui-icon-close "></i>
|
|
|
- <span class="btn-span-middle">取消</span>
|
|
|
- </button>
|
|
|
- </div>
|
|
|
-
|
|
|
- </div>
|
|
|
-
|
|
|
- <input type="hidden" name='roleCode' />
|
|
|
-
|
|
|
- <input type="hidden" name="roleName" />
|
|
|
-
|
|
|
-</body>
|
|
|
-
|
|
|
-<script>
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- layui.use(['element', 'form'], function () {
|
|
|
-
|
|
|
- var layer = layui.layer;
|
|
|
-
|
|
|
- var zTreeObj,
|
|
|
- setting = {
|
|
|
- check: {
|
|
|
- enable: true,
|
|
|
- chkboxType: {
|
|
|
- "Y": "ps",
|
|
|
- "N": "s"
|
|
|
- },
|
|
|
- chkStyle: "radio"
|
|
|
-
|
|
|
- },
|
|
|
- async: {
|
|
|
- enable: true,
|
|
|
- contentType: "application/json",
|
|
|
- url: "",
|
|
|
- dataType: "JSON",
|
|
|
- autoParam: [],
|
|
|
- headers: { "agileauthtoken": util.getToken() },
|
|
|
- type: "post",
|
|
|
-
|
|
|
- dataFilter: function filter(treeId, parentNode, childNodes) {
|
|
|
-
|
|
|
- if (!childNodes) return null;
|
|
|
-
|
|
|
- return childNodes;
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- view: {
|
|
|
- dblClickExpand: true, //双击节点时,是否自动展开父节点的标识
|
|
|
- showLine: false, //设置 zTree 是否显示节点之间的连线。
|
|
|
- selectedMulti: false, //设置是否允许同时选中多个节点。
|
|
|
- autoCancelSelected: false, //禁止按住ctrl多选
|
|
|
- showTitle: true, //设置显示提示信息
|
|
|
- txtSelectedEnable: true //设置可以选择节点名称
|
|
|
- },
|
|
|
- data: {
|
|
|
- key: {
|
|
|
- name: ""
|
|
|
- },
|
|
|
- simpleData: {
|
|
|
- enable: true,
|
|
|
- idKey: "",
|
|
|
- pIdKey: "",
|
|
|
- rootPId: "0"
|
|
|
- }
|
|
|
- },
|
|
|
- callback: {
|
|
|
- //点击节点开始时执行
|
|
|
- beforeClick: function (treeId, treeNode) {
|
|
|
-
|
|
|
-
|
|
|
- zTreeObj.reAsyncChildNodes(treeNode, "refresh");
|
|
|
-
|
|
|
- return false;
|
|
|
-
|
|
|
- },
|
|
|
- onCheck: function (event, treeId, treeNode) {
|
|
|
-
|
|
|
- if (treeNode.checked) {
|
|
|
-
|
|
|
- zTreeObj.reAsyncChildNodes(treeNode, "refresh");
|
|
|
-
|
|
|
- }
|
|
|
- },
|
|
|
- beforeAsync: function (treeId, treeNode) {
|
|
|
-
|
|
|
-
|
|
|
- if (!treeNode) {
|
|
|
-
|
|
|
- return true;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- if (!treeNode.isParent) {
|
|
|
-
|
|
|
- return false;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- },
|
|
|
- onAsyncError: function (event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown) {
|
|
|
-
|
|
|
-
|
|
|
- if (XMLHttpRequest && XMLHttpRequest.responseText) {
|
|
|
-
|
|
|
- util.error($.parseJSON(XMLHttpRequest.responseText).message);
|
|
|
- }
|
|
|
-
|
|
|
- if (treeNode) {
|
|
|
-
|
|
|
- treeNode.isParent = false;
|
|
|
-
|
|
|
- zTreeObj.removeChildNodes(treeNode);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- },
|
|
|
- onAsyncSuccess: function (event, treeId, treeNode, msg) {
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- };
|
|
|
-
|
|
|
-
|
|
|
- var parentOpt = {
|
|
|
- "id": "",
|
|
|
- "ag-tree-key": "",
|
|
|
- "ag-tree-parent-key": "",
|
|
|
- "ag-tree-return-parent-key": "parentCode",
|
|
|
- "ag-tree-return-key": "optCode",
|
|
|
- "ag-tree-return-name": "optName",
|
|
|
- "ag-tree-name": "",
|
|
|
- "ag-tree-url": "",
|
|
|
- "ag-tree-type": "radio",
|
|
|
- "ag-data-ctx": "sysmgr",
|
|
|
- "ag-tree-data": []
|
|
|
- }
|
|
|
-
|
|
|
- function initSetting() {
|
|
|
-
|
|
|
- setting.data.key.name = parentOpt["ag-tree-return-name"];
|
|
|
-
|
|
|
- setting.data.simpleData.idKey = parentOpt["ag-tree-return-key"];
|
|
|
-
|
|
|
- setting.data.simpleData.pIdKey = parentOpt["ag-tree-return-parent-key"];
|
|
|
-
|
|
|
- setting.check.chkStyle = parentOpt["ag-tree-type"];
|
|
|
-
|
|
|
- if (parentOpt["ag-tree-type"] == "radio") {
|
|
|
-
|
|
|
- setting.check.radioType = "all";
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- setting.async.url = ctx + "/" + parentOpt["ag-data-ctx"] + parentOpt["ag-tree-url"];
|
|
|
-
|
|
|
- var autoArr = [];
|
|
|
-
|
|
|
- autoArr.push(parentOpt["ag-tree-return-key"] + "=" + parentOpt["ag-tree-parent-key"]);
|
|
|
-
|
|
|
- //autoArr.push(parentOpt["ag-tree-return-name"]+"="+parentOpt["ag-tree-name"]);
|
|
|
-
|
|
|
- //autoArr.push(parentOpt["ag-tree-return-parent-key"]+"="+parentOpt["ag-tree-parent-key"]);
|
|
|
-
|
|
|
- setting.async.autoParam = autoArr;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- function initOpt() {
|
|
|
-
|
|
|
- var param = util.getUrlParam();
|
|
|
-
|
|
|
- id = param.id;
|
|
|
-
|
|
|
- var errorMsg = "";
|
|
|
-
|
|
|
- var parentObj = parent.$("#" + id);
|
|
|
-
|
|
|
- if (parentObj.length == 0) {
|
|
|
-
|
|
|
- util.error("id不存在!");
|
|
|
-
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- for (var key in parentOpt) {
|
|
|
-
|
|
|
- var val = parentObj.attr(key);
|
|
|
-
|
|
|
- if (!util.isNull(val)) {
|
|
|
-
|
|
|
- parentOpt[key] = val;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- if (key == "ag-tree-data") {
|
|
|
-
|
|
|
- val = parent.$("[name=" + parentOpt["ag-tree-key"] + "]").data(key);
|
|
|
-
|
|
|
- if (!util.isNull(val)) {
|
|
|
-
|
|
|
- parentOpt[key] = val;
|
|
|
- }
|
|
|
-
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- if (util.isNull(parentOpt[key])) {
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- errorMsg += "[" + key + "]属性未配置,"
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- if (!util.isNull(errorMsg)) {
|
|
|
-
|
|
|
- util.error(errorMsg);
|
|
|
-
|
|
|
- return false;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- $(document).ready(function () {
|
|
|
-
|
|
|
-
|
|
|
- $("#tree").height($(window).height() - 159);
|
|
|
-
|
|
|
- if (!initOpt()) {
|
|
|
-
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- initSetting();
|
|
|
-
|
|
|
- zTreeObj = $.fn.zTree.init($("#tree"), setting);
|
|
|
-
|
|
|
-
|
|
|
- $(".ztreeSave").click(function () {
|
|
|
-
|
|
|
- save();
|
|
|
- });
|
|
|
-
|
|
|
- $("#search_btn").click(function () {
|
|
|
-
|
|
|
- check();
|
|
|
- });
|
|
|
-
|
|
|
- $(".parentClear").click(function () {
|
|
|
-
|
|
|
- parentClear();
|
|
|
-
|
|
|
- });
|
|
|
-
|
|
|
-
|
|
|
- });
|
|
|
- //初始化节点树
|
|
|
-
|
|
|
- function trimtest(str) {
|
|
|
- // 用正则表达式将前后空格
|
|
|
- // 用空字符串替代。
|
|
|
- return str.replace(/(^\s*)|(\s*$)/g, "");
|
|
|
- }
|
|
|
- //将所有隐藏的节点显示出来。
|
|
|
- function refreashNodes() {
|
|
|
- nodes = zTreeObj.getNodesByParam("isHidden", true);
|
|
|
- zTreeObj.showNodes(nodes);
|
|
|
- }
|
|
|
-
|
|
|
- function parentClear() {
|
|
|
-
|
|
|
-
|
|
|
- parent.$("[name=" + parentOpt["ag-tree-key"] + "]").val("");
|
|
|
-
|
|
|
- parent.$("[name=" + parentOpt["ag-tree-name"] + "]").val("");
|
|
|
-
|
|
|
- parent.util.closeAll();
|
|
|
- }
|
|
|
-
|
|
|
- function save() {
|
|
|
-
|
|
|
- refreashNodes();
|
|
|
-
|
|
|
- var nodes = zTreeObj.getCheckedNodes(true);
|
|
|
-
|
|
|
- if (nodes.length == 0) {
|
|
|
-
|
|
|
- util.error("请选中渠道!");
|
|
|
-
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- var keyVal = "";
|
|
|
-
|
|
|
- var nameVal = "";
|
|
|
-
|
|
|
- if (parentOpt["ag-tree-type"] == "checkbox") {
|
|
|
-
|
|
|
- util.error("待开发...");
|
|
|
-
|
|
|
- return;
|
|
|
-
|
|
|
- } else if (parentOpt["ag-tree-type"] == "radio") {
|
|
|
-
|
|
|
-
|
|
|
- if (nodes[0].isAjaxing == true) {
|
|
|
-
|
|
|
- util.error("正在加载子节点,请稍后!");
|
|
|
-
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- keyVal = nodes[0][parentOpt["ag-tree-return-key"]];
|
|
|
-
|
|
|
- nameVal = nodes[0][parentOpt["ag-tree-return-name"]];
|
|
|
-
|
|
|
- } else {
|
|
|
-
|
|
|
- util.error("类型配置不正确:" + parentOpt["ag-tree-type"]);
|
|
|
-
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- parent.$("[name=" + parentOpt["ag-tree-key"] + "]").val(keyVal);
|
|
|
-
|
|
|
- parent.$("[name=" + parentOpt["ag-tree-name"] + "]").val(nameVal);
|
|
|
-
|
|
|
- parent.util.closeAll();
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- function check() {
|
|
|
-
|
|
|
- util.load('检索中请稍后!');
|
|
|
-
|
|
|
- showSelected();
|
|
|
-
|
|
|
-
|
|
|
- util.disLoad();
|
|
|
- }
|
|
|
-
|
|
|
- function showSelected() {
|
|
|
-
|
|
|
- var searchStr = $('#searchInput').val(); //通过id获取页面输入的值
|
|
|
- if (searchStr == '') {
|
|
|
- refreashNodes();
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- var allNodes = zTreeObj.transformToArray(zTreeObj.getNodes());
|
|
|
-
|
|
|
- zTreeObj.hideNodes(allNodes); //隐藏所有节点
|
|
|
- // var nodes = zTreeObj.getNodesByFilter(filter); // 查找节点集合 两种方式
|
|
|
-
|
|
|
- var nodes = zTreeObj.getNodesByParamFuzzy(setting.data.key.name, searchStr);
|
|
|
-
|
|
|
- if (nodes.length == 0) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- var resultNodes = new Array();
|
|
|
- $.each(nodes, function (i, n) {
|
|
|
- var tempNode = n;
|
|
|
- for (var i = 0; i < n.level; i++) {
|
|
|
- tempNode = tempNode.getParentNode(); //获取当前被选中的节点的父节点
|
|
|
- if (tempNode != null && tempNode != "") {
|
|
|
- resultNodes.push(tempNode);
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- resultNodes = resultNodes.concat(nodes); //concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
|
|
|
- zTreeObj.showNodes(resultNodes);
|
|
|
- zTreeObj.expandAll(true);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- function showValNode(obj) {
|
|
|
- var val = $(obj).val();
|
|
|
- val = trimtest(val);
|
|
|
- if (val == "") {
|
|
|
- refreashNodes();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- });
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-</script>
|
|
|
-
|
|
|
-</html>
|