【el-tree】外层多选,某个属性内层单选

js 复制代码
<el-tree ref="treeLocation" id="treeLocation" show-checkbox check-strictly default-expand-all :data="treeData.location"
    node-key="virtualOBJID" :props="{
                                        children: 'childModels',
                                        label: 'returnOBJName'
                                    }"
    :expand-on-click-node="false" @check-change="handleCheckChange">
    <span class="custom-tree-node" slot-scope="{ node, data }">
        <span :class="'class'+data.returnOBJType">{{ node.label }}</span>
    </span>
</el-tree>

//js
data() {
  return {
      treeData: {
          location: []
      },
      sixLevelSelectedKey: null,
      returnOBJType: 0,
  }
},
mounted() {
    this.getJson()
    setTimeout(()=>{
            var lists = document.getElementsByClassName('class6')
            for(var i=0;i<lists.length;i++){
            var parent = lists[i].parentNode.parentNode;
            // 获取父元素的所有子元素
            var siblings = Array.from(parent.children);
            // 找到特定的兄弟元素,例如通过类名或者ID
            var specificSibling = siblings.find(sibling => sibling.className === "el-checkbox");
            var childElement = specificSibling.querySelector('.el-checkbox__inner');
            childElement.style = "border-radius: 50% !important;";
            }
    },500)
},
methods: {
    handleCheckChange(data, checked, indeterminate) {
        if (checked) {
            this.returnOBJType = data.returnOBJType;
            //支路
            if (data.returnOBJType === 6) {
                this.sixLevelSelectedKey = data.returnOBJID;
                // 更新当前选中的第returnOBJType=6层节点
                this.$refs.treeLocation.setCheckedKeys([data.returnOBJID]);
            } else {
                // 如果之前已有第returnOBJType=6层节点被选中,先取消其选中状态
                if (this.sixLevelSelectedKey !== null && this.sixLevelSelectedKey !== data.returnOBJID) {
                    this.$refs.treeLocation.setChecked(this.sixLevelSelectedKey, false);
                }
                // 取消选中时清空记录
                this.sixLevelSelectedKey = null;
            }
        }
    },
    filterNode(value, data) {
        if (!value) return true;
        return data.label.indexOf(value) !== -1;
    },
    getJson() {
        fetch('./mock/elTree.json')
            .then(response => response.json())
            .then(res => {
                this.treeData.location = res.data
            })
            .catch(error => console.error('Error:', error))
    }
},

elTree.json

json 复制代码
{
    "msg": "执行成功",
    "code": 200,
    "data": [
        {
            "virtualOBJID": "508100_50000001",
            "returnOBJID": "50000001",
            "returnOBJName": "A区",
            "returnOBJType": 2,
            "childModels": [
                {
                    "virtualOBJID": "50000001_321505",
                    "returnOBJID": "321505",
                    "returnOBJName": "综合楼建筑",
                    "returnOBJType": 3,
                    "childModels": [
                        {
                            "virtualOBJID": "5000000101",
                            "returnOBJID": "5000000101",
                            "returnOBJName": "A区工商管理大楼",
                            "returnOBJType": 4,
                            "childModels": [
                                {
                                    "virtualOBJID": "500000010110001",
                                    "returnOBJID": "500000010110001",
                                    "returnOBJName": "建筑总用电",
                                    "returnOBJType": 6,
                                    "childModels": [
                                        {
                                            "virtualOBJID": "500000010110002",
                                            "returnOBJID": "500000010110002",
                                            "returnOBJName": "六楼",
                                            "returnOBJType": 6,
                                            "childModels": []
                                        },
                                        {
                                            "virtualOBJID": "500000010110003",
                                            "returnOBJID": "500000010110003",
                                            "returnOBJName": "三楼",
                                            "returnOBJType": 6,
                                            "childModels": []
                                        }
                                    ]
                                },
                                {
                                    "virtualOBJID": "500000010110024",
                                    "returnOBJID": "500000010110024",
                                    "returnOBJName": "A区工商管理大楼灯饰工程",
                                    "returnOBJType": 6,
                                    "childModels": []
                                }
                            ]
                        },
                        {
                            "virtualOBJID": "5000000197",
                            "returnOBJID": "5000000197",
                            "returnOBJName": "A区综合大楼本楼",
                            "returnOBJType": 4,
                            "childModels": []
                        },
                        {
                            "virtualOBJID": "5000000901",
                            "returnOBJID": "5000000901",
                            "returnOBJName": "A区研究生院",
                            "returnOBJType": 4,
                            "childModels": []
                        }
                    ]
                }
            ]
        }
    ]
}
相关推荐
橙子家7 小时前
浏览器缓存之【身份与会话管理】:Cookies 和 Private state tokens
前端
To_OC8 小时前
LC 49 字母异位词分组:想到哈希表很简单,选对 key 才是精髓
javascript·算法·leetcode
最新资讯动态8 小时前
HDC 2026 | 对话鲸鸿动能:存量时代,品牌如何夺回营销“主动权”?
前端
最新资讯动态8 小时前
游戏出海,从产品走向体系
前端
最新资讯动态8 小时前
20人团队跑出百万DAU、大厂也来抢量:谁在鸿蒙生态跑出加速度
前端
最新资讯动态8 小时前
千万开发者背后,鸿蒙商业化的B面
前端
爱勇宝10 小时前
AI 时代:智商决定起点,情商决定走多远
前端·ai编程
kyriewen10 小时前
用了半年 Claude Code 后,我尝试关掉它写了一周代码——结果比想象中严重
前端·javascript·ai编程
IT_陈寒11 小时前
Vite的静态资源打包让我熬夜到三点,这坑千万别跳
前端·人工智能·后端
山河木马12 小时前
矩阵专题0-webGL中的矩阵
javascript·webgl·计算机图形学