在vue中使用ztree


首先,在vue項目的main.js中引入以下幾個文件:

import "../../plugins/ztree/js/jquery.ztree.core.min.js"
import "../../plugins/ztree/js/jquery.ztree.excheck.min.js"
import '../../plugins/ztree/css/zTreeStyle.css

頁面詳細代碼如下:

<template>
    <div id="areaTree">
        <div class="box-title">
            <a href="#">列表<i class="fa  fa-refresh" @click="freshArea">點擊</i></a>
        </div>
        <div class="tree-box">
            <div class="zTreeDemoBackground left">
                <ul id="treeDemo" class="ztree"></ul>
            </div>
        </div>
    </div>
</template>


<script>
  // 下面的是單個Vue組件引用的外部靜態文件,也可以在main.js文件中引用
  //import "../../plugins/jquery.3.2.1.js"
  //import "../../plugins/ztree/js/jquery.ztree.core.min.js"
  //import "../../plugins/ztree/js/jquery.ztree.excheck.min.js"
    export default {
      name: 'areaTree',
      components:{
 
      },
      data:function(){
        return{
            setting:{
              check: {  
                    enable: true,  
                    nocheckInherit: false ,
                    chkboxType: { "Y": "p", "N": "s" } 
                },  
                data: {  
                    simpleData: {  
                        enable: true  
                    }  
                },
                callback: {
                    beforeClick: this.beforeClick,
                    onClick: this.zTreeOnClick,
                    onCheck: this.zTreeOnCheck,
                }
            },
            zNodes:[
              { id:1,pid:0,name:"大良造菜單",open:true,nocheck:false,
                children: [
                    { id:11,pid:1,name:"當前項目"},
                    { id:12,pid:1,name:"工程管理",open:true,
                        children: [
                            { id:121,pid:12,name:"我的工程"},
                            { id:122,pid:12,name:"施工調度"},
                            { id:1211,pid:12,name:"材料競價"}
                        ]
                    },
                    { id:13,pid:1,name:"錄入管理",open:true,
                        children: [
                            { id:131,pid:13,name:"用工錄入"},
                            { id:132,pid:13,name:"商家錄入"},
                            { id:1314,pid:13,name:"機構列表"}
                        ]
                    },
                    { id:14,pid:1,name:"審核管理",open:true,
                        children: [
                            { id:141,pid:14,name:"用工審核"},
                            { id:142,pid:14,name:"商家審核"},
                            { id:145,pid:14,name:"機構審核"}
                        ]
                    },
                    { id:15,pid:1,name:"公司管理",open:true,
                        children: [
                            { id:1517,pid:15,name:"我的工程案例"},
                            { id:1518,pid:15,name:"聯系人設置"},
                            { id:1519,pid:15,name:"廣告設置"}
                        ]
                    },
                    { id:16,pid:1,name:"業務管理",open:true,
                        children: [
                            { id:164,pid:16,name:"合同范本"},
                            { id:165,pid:16,name:"合同列表"},
                            { id:166,pid:16,name:"需求調度"}
                        ]
                    },
                    { id:17,pid:1,name:"訂單管理",open:true,
                        children: [
                            { id:171,pid:17,name:"商品訂單"},
                            { id:172,pid:17,name:"用工訂單"},
                            { id:175,pid:17,name:"供應菜單"}
                        ]
                    },
                    { id:18,pid:1,name:"我的功能",open:true,
                        children: [
                            { id:181,pid:18,name:"免費設計"},
                            { id:182,pid:18,name:"裝修報價"},
                            { id:1817,pid:18,name:"項目用工"}
                        ]
                    },
                    { id:19,pid:1,name:"分潤管理",open:true,
                        children: [
                            { id:191,pid:19,name:"分潤列表"}
                        ]
                    },
                    { id:110,pid:1,name:"運營管理",open:true,
                        children: [
                            { id:1101,pid:110,name:"代理列表"},
                            { id:1102,pid:110,name:"代售商品"}
                        ]
                    },
                ]
              }
            ]        
        }
      },
      methods:{
        freshArea: function(){
            $.fn.zTree.init($("#treeDemo"), this.setting, this.zNodes);
        },
        zTreeOnClick: function(event, treeId, treeNode) {
            console.log(treeNode.tId + ", " + treeNode.name);
        },
        zTreeOnCheck: function(event, treeId, treeNode) {
            console.log(treeNode.tId + ", " + treeNode.name + "," + treeNode.checked);
            var zTree = $.fn.zTree.getZTreeObj("treeDemo"),
            checkCount = zTree.getCheckedNodes(true).length,//選中
            nocheckCount = zTree.getCheckedNodes(false).length,//未選中
            changeCount = zTree.getChangeCheckedNodes().length;//獲取輸入框勾選狀態被改變的節點集合(與原始數據 checkedOld 對比)
            var checkedNames = [],checkedIds = [];
            for (var i = 0; i <= zTree.getCheckedNodes(true).length - 1; i++) {
                checkedIds.push(zTree.getCheckedNodes(true)[i].id);
                checkedNames.push(zTree.getCheckedNodes(true)[i].name);
            };
            console.log(checkedIds);
            console.log(checkedNames);
        },
        beforeClick: function(treeId, treeNode) {
          var zTree = $.fn.zTree.getZTreeObj("treeDemo");
          // zTree.checkNode(treeNode, !treeNode.checked, null, true);
          zTree.checkNode(treeNode, !treeNode.checked, true, true); //第二個參數!treeNode.checked和"",省略此參數效果等同,則根據對此節點的勾選狀態進行 toggle 切換,第三個參數設置為true時候進行父子節點的勾選聯動操作 ,第四個參數true 表示執行此方法時觸發 beforeCheck & onCheck 事件回調函數;false 表示執行此方法時不觸發事件回調函數
          return false;
        }
      },
      mounted(){
        $.fn.zTree.init($("#treeDemo"), this.setting, this.zNodes).expandAll(true);
      }
    }
</script>
<style>
    /*@import '../../plugins/ztree/css/zTreeStyle.css';*/
    #areaTree{
        border:1px solid #e5e5e5;    margin-bottom: 2px;border-radius: 4px;overflow: hidden;
    }
    .box-title{
            border-radius: 3px 3px 0 0;background-color: #f5f5f5;
    }
    .box-title a{
            color: #2fa4e7;
             text-decoration: none;font-size:14px;    display: block;
    padding: 8px 15px;cursor: pointer;
    }
    .box-title .fa{
        float:right;line-height: 20px;
    }
</style>
<style>
    /*@import '../../plugins/ztree/css/zTreeStyle.css';*/
    #areaTree{
        border:1px solid #e5e5e5;    margin-bottom: 2px;border-radius: 4px;overflow: hidden;
    }
    .box-title{
            border-radius: 3px 3px 0 0;background-color: #f5f5f5;
    }
    .box-title a{
            color: #2fa4e7;
             text-decoration: none;font-size:14px;    display: block;
    padding: 8px 15px;cursor: pointer;
    }
    .box-title .fa{
        float:right;line-height: 20px;
    }
</style>

  效果如圖所示:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM