【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": []
                        }
                    ]
                }
            ]
        }
    ]
}
相关推荐
meilindehuzi_a17 分钟前
从零理解并实现 RAG:用 LangChain.js 构建语义检索问答系统
开发语言·javascript·langchain
世界哪有真情1 小时前
拿人类意识卡 AI?等于用 bug 验收正式产品
前端·人工智能·后端
鱼樱前端2 小时前
别再自己拼凑了!这款 Vue 3.5+ 严肃产品级组件库,把 AI 对话、工作流和复杂数据全包了!
javascript·vue.js·github
Listen·Rain2 小时前
Vue3:setup详解
前端·javascript·vue.js
Patrick_Wilson3 小时前
修好 bug 只是开始:一次由监控需求反向重构日志结构的复盘
前端·监控·数据可视化
kyriewen3 小时前
面试官让我优化一个卡死的表格,我打开 Claude 五秒重写,他放下咖啡问我要不要来当组长
前端·javascript·面试
小粉粉hhh4 小时前
React(二)——dom、组件间通信、useEffect
前端·javascript·react.js
Csvn4 小时前
🤖 AI 生成前端代码的 5 个典型翻车现场及修复指南
前端
IT_陈寒5 小时前
SpringBoot自动装配坑了我一天,原来问题出在这
前端·人工智能·后端
索西引擎6 小时前
【React】key 属性:协调算法中的元素标识机制与最佳实践
前端·javascript·react.js