• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

el-tree全选父结点、半选当前结点获取

武飞扬头像
兜小糖的小秃毛
帮助1

需求:全选时,只取父节点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
系列文章
更多 icon
同类精品
更多 icon
继续加载