update:treenode remove empty children
This commit is contained in:
@@ -176,9 +176,9 @@ namespace Ewide.Core.Service
|
|||||||
if (isExist) throw Oops.Oh(ErrorCode.D1003);
|
if (isExist) throw Oops.Oh(ErrorCode.D1003);
|
||||||
|
|
||||||
var user = input.Adapt<SysUser>();
|
var user = input.Adapt<SysUser>();
|
||||||
await user.UpdateIncludeAsync(new[] {
|
await user.UpdateIncludeAsync(new[] {
|
||||||
nameof(SysUser.Account),
|
nameof(SysUser.Account),
|
||||||
nameof(SysUser.NickName),
|
nameof(SysUser.NickName),
|
||||||
nameof(SysUser.Name),
|
nameof(SysUser.Name),
|
||||||
nameof(SysUser.Birthday),
|
nameof(SysUser.Birthday),
|
||||||
nameof(SysUser.Sex),
|
nameof(SysUser.Sex),
|
||||||
@@ -671,13 +671,13 @@ namespace Ewide.Core.Service
|
|||||||
[HttpPost("/sysUser/GetOrgUserTree")]
|
[HttpPost("/sysUser/GetOrgUserTree")]
|
||||||
public async Task<dynamic> GetOrgUserTree(OrgUserInput input)
|
public async Task<dynamic> GetOrgUserTree(OrgUserInput input)
|
||||||
{
|
{
|
||||||
var list = await (from u in _sysUserRep.DetachedEntities
|
var list = await (from u in _sysUserRep.DetachedEntities
|
||||||
join e in _sysEmpRep.DetachedEntities on u.Id equals e.Id
|
join e in _sysEmpRep.DetachedEntities on u.Id equals e.Id
|
||||||
select new OrgUserTreeNode { Id = u.Id, ParentId = e.OrgId,Type=1,Name=u.Name }).Union(
|
select new OrgUserTreeNode { Id = u.Id, ParentId = e.OrgId, Type = 1, Name = u.Name }).Union(
|
||||||
from o in _sysOrgRep.DetachedEntities
|
from o in _sysOrgRep.DetachedEntities
|
||||||
select new OrgUserTreeNode { Id = o.Id, ParentId = o.Pid ,Type=0,Name=o.Name}).ToListAsync();
|
select new OrgUserTreeNode { Id = o.Id, ParentId = o.Pid, Type = 0, Name = o.Name }).ToListAsync();
|
||||||
|
|
||||||
return new TreeBuildUtil<OrgUserTreeNode>().DoTreeBuild(list);
|
return new TreeBuildUtil<OrgUserTreeNode>(new TreeBuildSetting { AddEmptyChildren = false }).DoTreeBuild(list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,10 @@ namespace Ewide.Core
|
|||||||
/// <param name="children"></param>
|
/// <param name="children"></param>
|
||||||
void SetChildren(IList children);
|
void SetChildren(IList children);
|
||||||
}
|
}
|
||||||
|
public class TreeBuildSetting
|
||||||
|
{
|
||||||
|
public bool AddEmptyChildren { get; set; } = true;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 递归工具类,用于遍历有父子关系的节点,例如菜单树,字典树等等
|
/// 递归工具类,用于遍历有父子关系的节点,例如菜单树,字典树等等
|
||||||
@@ -34,10 +38,15 @@ namespace Ewide.Core
|
|||||||
/// <typeparam name="T"></typeparam>
|
/// <typeparam name="T"></typeparam>
|
||||||
public class TreeBuildUtil<T> where T : ITreeNode
|
public class TreeBuildUtil<T> where T : ITreeNode
|
||||||
{
|
{
|
||||||
|
TreeBuildSetting _setting;
|
||||||
|
public TreeBuildUtil(TreeBuildSetting setting = null)
|
||||||
|
{
|
||||||
|
_setting = setting ?? new TreeBuildSetting();
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 顶级节点的父节点Id(默认0)
|
/// 顶级节点的父节点Id(默认0)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly List<string> _rootParentIds = new List<string> {string.Empty,Guid.Empty.ToString() };
|
private readonly List<string> _rootParentIds = new List<string> { string.Empty, Guid.Empty.ToString() };
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 构造树节点
|
/// 构造树节点
|
||||||
@@ -59,7 +68,8 @@ namespace Ewide.Core
|
|||||||
if (results.Count < 1)
|
if (results.Count < 1)
|
||||||
{
|
{
|
||||||
var ids = new List<string>();
|
var ids = new List<string>();
|
||||||
nodes.ForEach(u => {
|
nodes.ForEach(u =>
|
||||||
|
{
|
||||||
ids.Add(u.GetId());
|
ids.Add(u.GetId());
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -89,7 +99,10 @@ namespace Ewide.Core
|
|||||||
});
|
});
|
||||||
nodeSubLists.ForEach(u => BuildChildNodes(totalNodes, u, new List<T>()));
|
nodeSubLists.ForEach(u => BuildChildNodes(totalNodes, u, new List<T>()));
|
||||||
childNodeLists.AddRange(nodeSubLists);
|
childNodeLists.AddRange(nodeSubLists);
|
||||||
node.SetChildren(childNodeLists);
|
if (childNodeLists.Count > 0 || _setting.AddEmptyChildren)
|
||||||
|
{
|
||||||
|
node.SetChildren(childNodeLists);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user