el-tree全选父结点、半选当前结点获取
需求:全选时,只取父节点Id,半选时,只取当前选中节点id
思路:获取到当前所有选中节点的node,然后按照父级Id整合数据,过滤掉半选结点的node
// 根据parentNodeId,将相同父级id的数据放到一起
function listToTree(data:any) {
let arr = JSON.parse(JSON.stringify(data))
const listChildren = (obj:any, filter:any) => {
[arr, obj.children] = arr.reduce((res:any, val:any) => {
if (filter(val)) res[1].push(val)
else res[0].push(val)
return res
}, [
[],
[]
])
obj.children.forEach((val:any )=> {
if (arr.length) listChildren(val, (obj:any) => obj.parentNodeId === val.templateId)
})
}
const tree = {} as any;
listChildren(tree, (val:any) => arr.findIndex((i:any) => i.templateId === val.parentNodeId) === -1)
return tree.children;
}
function checkChangeFun() {
state.checkedArr = [];
state.a1Arr = [];
// 获取所有选中的节点
let getCheckedNodesArr = (reportTreeRef as any).value.getCheckedNodes(false,true);
// 获取半选节点数据
let getHalfCheckedNodesArr= (reportTreeRef as any).value.getHalfCheckedNodes();
getCheckedNodesArr.forEach((item:any)=>{
// 取出需要数据
state.checkedArr.push({
parentNodeId:item.parentNodeId,
templateId:item.templateId,
titleName:item.titleName || item.templateTitle
})
})
getHalfCheckedNodesArr.forEach((item2:any)=>{
// 取出需要数据
state.a1Arr.push({
parentNodeId:item2.parentNodeId,
templateId:item2.templateId,
titleName:item2.titleName || item2.templateTitle
})
})
if(state.a1Arr.length != 0) {
state.a1Arr.forEach((item3:any)=>{
// 过滤掉半选结点数据
state.checkedArr=state.checkedArr.filter((item4:any)=>{
return item4.templateId != item3.templateId
})
})
}
// 根据parentNodeId整合数据
state.moveIdArr = listToTree(state.checkedArr);
}
以上是目前水平能够想到的方法了,希望有大佬指点一二
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhiegbjj
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22