日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

elementui获取所有树节点_element-ui tree获取子节点全选的父节点信息

發布時間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 elementui获取所有树节点_element-ui tree获取子节点全选的父节点信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

公司服務升級確定了新的架構,假如當前部門是二級部門,二級部門下的三級部門全部已選擇,那么后端接口要求只需要傳二級部門的id,并且操作符傳參為 like;如果某一個部門已選擇,切父級部門沒有選擇,那么就需要傳參為具體子部門的id,操作符為 in

① 只要所選部門中包含一個或一個以上的父級部門(父級部門標識 isParent 為true),

傳參:將屬于該父級部門中的子級部門全部去除,并保留該父級部門

操作符: like

② 只要所選部門中不包含任何一個父級部門(父級部門標識 isParent 為true),

傳參: 所有已選部門的id

操作符: in

這個之前我翻了好多的elementUI tree的文檔,都沒有找到合適的解決方案,上次看到了一個解決方法,但是對性能不是很好,所以我優化了一下

思路: 可以使用 getCheckedNodes() 獲取到所有已選的數據(包括所有的父子部門),根據父部門的特點isParent === true 來去除所有的父級部門,并且樹綁定的treePos,是有特殊規律的,根據當前樹的層級來的

解決方案一:

let treeNodes = this.$refs.tree.getCheckedNodes()

let treeKeys = this.$refs.tree.getCheckedKeys()

this.checkPos = []

this.operatorType = this.scope.dataScope.operatorType || 'like'

let parentNodes = treeNodes.filter((item) => {

return item.isParent === true

})

if (parentNodes.length !== 0) {

let parentPos = parentNodes.map(it => {

return it.treePos

})

this.operatorType = 'like'

this.checkPos = treeKeys.filter(elem => {

let isBottom = parentPos.every((el) => {

return elem.includes(el) && elem !== el

})

if (!isBottom) {

return elem

}

})

} else {

this.operatorType = 'in'

this.checkPos = treeKeys

}

解決方案二:循環遍歷樹結構,找到上一級或者最后一級已選中的data

findParents(store) {

const checkedNodes = [];

const filterNodes = function(node) {

const treeNodes = node.root ? node.root.childNodes : node.childNodes;

treeNodes.forEach(child => {

if (child.checked) { // 已找到選中的上一級或者當前最后一級

checkedNodes.push(child);

}

if (child.indeterminate) { // 節點的子樹中是否有被選中的節點

filterNodes(child);

}

});

};

filterNodes(store)

return checkedNodes;

}

findParents(this.$refs.tree.store) // 輸出樹數據

總結

以上是生活随笔為你收集整理的elementui获取所有树节点_element-ui tree获取子节点全选的父节点信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。