vue 自定义el-tree

Posted wangmj518

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue 自定义el-tree相关的知识,希望对你有一定的参考价值。

先上效果图

<el-tree
    class="camera-tree"
    :props="props"
    show-checkbox
    :data="cameraTree"
    @check="handleCheckChange"
    ref="tree"
  >
    <span
        class="custom-tree-node"
        slot-scope=" node, data "
        style="width: 100%;display: flex;align-items: center;justify-content: space-between;"
      >
       <label>
          <el-tooltip class="item" effect="dark" :content="node.label" placement="top">
             <div class="words"> node.label </div>
          </el-tooltip>
          <span
              v-if="node.childNodes.length===0"
              :class=" 'statusName': node.data.status === 1 "
            >
               node.data.status === 1 ? '在线' : '离线' 
          </span>
        </label>
        <span
            v-if="node.childNodes.length===0"
            class="history"
            @click="jumpHistory(node.data)"
          >查看历史录像
        </span>
    </span>
</el-tree>

el-tree可以通过两种方法进行树节点内容的自定义:render-content和 scoped slot。但我个人还是比较喜欢使用scoped slot,写起来习惯放到template里面了,写法也舒服

export default 
    data() 
        return 
            props: 
                label: 'name',
                isLeaf: 'leaf'
            ,
        
    ,
    methods: 
        // 请求设备列表
        async initTree() 
            const  recode, data  = await getAreaList()
            if (recode === 200) 
                this.cameraTree = data.map((item) => (
                    id: item.id,
                    children: item.cameras,
                    name: item.groupName || item.deviceName
                ))
                // 遍历子节点 及格式
                for (let i = 0; i < this.cameraTree.length; i++) 
                    this.cameraTree[i].children = this.cameraTree[i].children.map((item) => (
                        name: item.deviceName,
                        id: item.deviceCode,
                        status: item.status
                    ))
                
            
        ,
        // el-tree 选择设备
        handleCheckChange(data) 
            console.log('data', data)
            if (this.checkedArr.length === 4) 
                this.$message.error('最多只能勾选4个!')
             else if (data) 
                // 改变时 检测是否存在,存在就删除,不存在就添加
                this.playingList = this.playingList.map((item) => 
                    if (item.id === data.id) 
                          return this.empty()
                     else 
                        return item
                    
                )
                this.checkedArr = this.$refs.tree.getCheckedNodes(true, false)
                if (this.checkedArr.length !== 0) 
                    this.loadingVideo = true
                    this.getUrl()
                 
                 // console.log('checkedArr', this.checkedArr)
                // console.log('playingList', this.playingList)
            
        
    

1人点赞

vue



作者:小小_128
链接:https://www.jianshu.com/p/32f85873d8e1
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

以上是关于vue 自定义el-tree的主要内容,如果未能解决你的问题,请参考以下文章

vue 自定义el-tree

Vue + element ui el-tree 自定义节点内容 checkbox 回显后无法重新勾选问题

Vue + element ui el-tree 自定义节点内容 checkbox 回显后无法重新勾选问题

Vue + element ui el-tree 自定义节点内容 checkbox 回显后无法重新勾选问题

elementui 后台管理系统遇到的问题(二) 树形控件 el-tree

elementui 后台管理系统遇到的问题(二) 树形控件 el-tree