前台:
使用 scoped slot
:data="data"
ref="rootTree"
show-checkbox
node-key="NodeId"
default-expand-all
:expand-on-click-node="false"
@node-click="handleNodeClick"
>
{{ node.label }}
append(data)">Append
remove(node, data)">Delete
let NodeId = "";
import { treeDataGetnode, getRandomCode } from "@/api/tree";
import { getList } from "@/api/MenuTable";
export default {
data() {
var data = [];
return {
form: {},
data: JSON.parse(JSON.stringify(data)),
};
},
created() {
this.fetchData();
},
methods: {
fetchData() {
let param = {};
getList().then((response) => {
this.data = response.Data;
var gg = JSON.stringify(this.data).myReplace("childList", "children");
this.data = JSON.parse(gg);
});
},
},
};
.custom-tree-node {
flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 14px;
padding-right: 8px;
}
后台:
实体类:
public class DbMenuTable
{
public string ID { get; set; }
public string NodeId { get; set; }
public string label { get; set; }
public string ParentId { get; set; }
public List childList;
}
using Kexinruida.IntegrationPlatform.ServiceModels;
using Microsoft.AspNetCore.Mvc;
using Models;
using Models.DbEntities;
using Repositories.MenuTableF;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
namespace IntegrationPlatform.Systems.SR_LZ.Controllers
{
[Route("api/MenuTable")]
[ApiController]
public class MenuTableController : ControllerBase
{
private readonly IMenuTableStore _IMenuTableStore;
public MenuTableController(IMenuTableStore IMenuTableStores)
{
_IMenuTableStore = IMenuTableStores;
}
[HttpPost("Add")]
public async Task Add([FromBody] DbMenuTable model)
{
if (!ModelState.IsValid)
{
return IpResponse.Create(false, "100", ModelState.GetModelErrors());
}
var (result, message) = await _IMenuTableStore.Add(model);
string code = CommonClass.GetReturnCode(message, "添加");
return IpResponse.Create(result, code, message);
}
[HttpPut("Edit")]
public async Task Edit([FromBody] DbMenuTable model)
{
if (!ModelState.IsValid)
{
return IpResponse.Create(false, "101", ModelState.GetModelErrors());
}
var (result, message) = await _IMenuTableStore.Edit(model.ID, model);
string code = CommonClass.GetReturnCode(message, "修改");
return IpResponse.Create(result, code, message);
}
[HttpDelete("Delete")]
public async Task Delete(string id)
{
var (result, message) = await _IMenuTableStore.Delete(id);
string code = CommonClass.GetReturnCode(message, "删除");
return IpResponse.Create(result, code, message);
}
[HttpGet("GetMenuTable")]
public async Task GetMenuTable()
{
List MenuTableList = new List();
var MenuTable = await _IMenuTableStore.GetMenuTable();
List listAll = MenuTable.Where(i => i.NodeId != null).ToList();
var list = listAll.Where(i => i.ParentId == "root");
foreach(var item in list)
{
item.childList = GetChilds(listAll,item.NodeId);
}
return IpResponse.Create(true, "0", "查询成功", list);
}
public List GetChilds(List DbMenuTableList,string ParentId)
{
if(ParentId == "YMei5G6xYxW4tBVFIvvSXNGeb2KRWnXc")
{
string ss = "";
}
List list = DbMenuTableList.Where(i=>i.ParentId== ParentId).ToList();
foreach (var item in list)
{
var item2= GetChilds(DbMenuTableList, item.NodeId);
if (item2.Count > 0)
{
item.childList = item2;
}
}
return list;
}
[HttpGet("Detail")]
public async Task Detail(string id)
{
var MenuTable = await _IMenuTableStore.Detail(id);
return IpResponse.Create(true, "0", "查询成功", MenuTable);
}
}
}