前端:
后端:
创建实体类:
public class NavbarTreeQuery
{
/// <summary>
/// 系统编号
/// </summary>
public string? id { get; set; }
/// <summary>
/// 编号
/// </summary>
[Required(ErrorMessage = "Code type is required.")]
public string code { get; set; }
/// <summary>
/// 英文名称
/// </summary>
public string? name_en { get; set; }
/// <summary>
/// 中文名称
/// </summary>
public string? name_cn { get; set; }
/// <summary>
/// 繁体名称
/// </summary>
public string? label { get; set; }
/// <summary>
/// ICON
/// </summary>
public string? icon { get; set; }
/// <summary>
/// 备注
/// </summary>
public string? remark { get; set; }
/// <summary>
/// 类型 0:目录;1:菜单
/// </summary>
public int? type { get; set; }
/// <summary>
/// 功能列表
/// </summary>
public string? functionlist_id { get; set; }
/// <summary>
/// 是否有显示0顯示1不顯示
/// </summary>
public int? display { get; set; }
/// <summary>
/// 是否有下级0,1,2,3 0表示一級,1表示二級,2表示三级,3表示四级
/// </summary>
public int? subordinate { get; set; }
/// <summary>
/// 上级ID
/// </summary>
public string? superior_id { get; set; }
/// <summary>
/// 公司ID
/// </summary>
public string? company_id { get; set; }
/// <summary>
/// 创建者
/// </summary>
public string? create_user { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime? create_date { get; set; }
/// <summary>
/// 修改者
/// </summary>
public string? modify_user { get; set; }
/// <summary>
/// 修改时间
/// </summary>
public DateTime? modify_date { get; set; }
/// <summary>
/// 优先级
/// </summary>
public int priority { get; set; }
public IList<NavbarTreeQuery> children { get; set; } = new List<NavbarTreeQuery>();
}
写下来是代码:
/// <summary>
/// 查询全部树形 导航栏
/// </summary>
/// <param name="bs"></param>
/// <returns></returns>
public async Task<List<NavbarTreeQuery>> QueryAllTree(BaseQuery<BasicSettings> bs)
{
var fidsNode = _sqlSugarClient.Queryable<NavbarModel>()
.Where(navbar => navbar.NO_SUBORDINATE == 0)
.OrderBy(navbar => navbar.NO_PRIORITY, OrderByType.Asc)
.ToList(); //查父级
var tree = new List<NavbarTreeQuery>();
foreach (var item in fidsNode)
{
NavbarTreeQuery model1 = new NavbarTreeQuery
{
id = item.ST_ID,
code = item.ST_CODE,
//name_cn = item.ST_NAME_CN,
//name_en = item.ST_NAME_EN,
//过滤器找到了对应的资源文件,然后用里面的值就行了
label = GetValue(lang.LangType, item.ST_NAME_CN, item.ST_LABEL, item.ST_NAME_EN, ""),
company_id = item.ST_COMPANY_ID,
create_date = item.DT_CREATEDATE,
create_user = item.ST_CREATEUSER,
modify_date = item.DT_MODIFYDATE,
modify_user = item.ST_MODIFYUSER,
remark = item.ST_REMARK,
icon = item.ST_ICON,
subordinate = item.NO_SUBORDINATE,
superior_id = item.ST_SUPERIOR_ID,
display = item.NO_DISPLAY,
functionlist_id = item.ST_FUNCTIONLIST_ID,
type = item.NO_TYPE,
priority = item.NO_PRIORITY
};
AddChildMenu(model1, bs.oData.id);
tree.Add(model1);
}
return tree;
}
/// <summary>
/// 递归构造子节点函数 导航栏
/// </summary>
/// <param name="muenListd">当前节点</param>
private void AddChildMenu(NavbarTreeQuery muenListd, string id)
{
try
{
var childMenu = _sqlSugarClient.Queryable<NavbarModel>()
.Where(p => p.ST_SUPERIOR_ID == muenListd.id)
.OrderBy(navbar => navbar.NO_PRIORITY, OrderByType.Asc)
.ToList();
if (childMenu != null)
{
foreach (var item in childMenu)
{
NavbarTreeQuery model = new NavbarTreeQuery
{
id = item.ST_ID,
code = item.ST_CODE,
//name_cn = item.ST_NAME_CN ,
//name_en = item.ST_NAME_EN ,
label = GetValue(lang.LangType, item.ST_NAME_CN, item.ST_LABEL, item.ST_NAME_EN, ""),
company_id = item.ST_COMPANY_ID,
create_date = item.DT_CREATEDATE,
create_user = item.ST_CREATEUSER,
modify_date = item.DT_MODIFYDATE,
modify_user = item.ST_MODIFYUSER,
remark = item.ST_REMARK,
functionlist_id = item.ST_FUNCTIONLIST_ID,
type = item.NO_TYPE,
icon = item.ST_ICON,
subordinate = item.NO_SUBORDINATE,
superior_id = item.ST_SUPERIOR_ID,
display = item.NO_DISPLAY,
priority = item.NO_PRIORITY
};
muenListd.children.Add(model);
AddChildMenu(model, id); //递归调用,将当前节点作为参数传入子节点
// 添加跳出条件,当子节点的children为空时跳出递归
if (model.children.Count == 0)
{
model.children = null;
}
}
}
}
catch (Exception)
{
throw;
}
}
结果返回树形格式如图:
如何在前端使用 可以看"VUE3+el-tree的使用"这篇文章https://blog.csdn.net/qq_58734875/article/details/134857216?spm=1001.2014.3001.5501