前端:
$scope.init = function () {
//一次性加载树
//$scope.getTree();
//懒加载树
$scope.getTreeAsync('');
}
$scope.initTree = function (result) {
if ($scope.LeftTree == null) {
$scope.LeftTree = result;
}
layui.use(['tree', 'util'], function () {
$scope.tree = layui.tree
, layer = layui.layer
, util = layui.util
, beforeTreeId = ''
$scope.tree.render({
elem: '#test13'
,id:'test13'
, data: $scope.LeftTree
, accordion: true
, onlyTextControl:true
//, data: data1
//, id: 'Name'
, showLine: false //是否开启连接线
, click: function (obj) {
$scope.currTree = obj.data;
var currTreeId = obj.data.id; //当前点击的树节点
beforeTreeId = $('#tree_id').val() == '' ? beforeTreeId : $('#tree_id').val(); //上一次点击的树节点id
//对比前后id,不相同时移除上一个节点的样式,并设置当前点击的节点样式
if (currTreeId != beforeTreeId) {
$('div [data-id="' + currTreeId + '"] div').eq(0).last().css('background-color', '#EEEEEE');
$('div [data-id="' + beforeTreeId + '"] div').eq(0).last().css('background-color', '');
$('#tree_id').val(obj.data.id);
}
if (obj.state == 'close') {
$scope.getTreeAsync(obj.data.code);
}
//显示右边详情信息
$scope.showDetail(obj.data.id);
}
});
});
}
$scope.getTreeAsync = function (UpperCode) {
var layindex = layer.load(0, { shade: [0.2, '#000'] });//0.2透明度的黑色背景
$.post('@Url.Action("FileDirectoryMain_list", "Configuration")', { UpperCode: UpperCode}, function (data) {
layer.close(layindex);
if (data.ResultCode == '1') {
let result = JSON.parse(json_obj(data.LeftTreeList));
if (UpperCode == '') {
$scope.initTree(result);
}
else {
let curNode = getCurNode($scope.LeftTree, $scope.currTree.id);
curNode.children = result;
curNode.spread = true;
// 重载
$scope.tree.reload('test13', { // options
data: $scope.LeftTree
});
}
}
});
}
$scope.getTree = function () {
$.post('@Url.Action("FileDirectoryMain_tree", "Configuration")', { }, function (data) {
if (data.ResultCode == '1') {
scope.LeftTree = JSON.parse(json_obj(data.LeftTreeList));
layui.use(['tree', 'util'], function () {
var tree = layui.tree
, layer = layui.layer
, util = layui.util
, beforeTreeId = ''
tree.render({
elem: '#test13'
, data: $scope.LeftTree
, accordion: true
//, data: data1
//, id: 'Name'
, showLine: false //是否开启连接线
, click: function (obj) {
console.log(obj.data); //得到当前点击的节点数据
console.log(obj.state); //得到当前节点的展开状态:open、close、normal
console.log(obj.elem); //得到当前节点元素
console.log(obj.data.children); //当前节点下是否有子节点
var currTreeId = obj.data.id; //当前点击的树节点
beforeTreeId = $('#tree_id').val() == '' ? beforeTreeId : $('#tree_id').val(); //上一次点击的树节点id
//对比前后id,不相同时移除上一个节点的样式,并设置当前点击的节点样式
if (currTreeId != beforeTreeId) {
$('div [data-id="' + currTreeId + '"] div').eq(0).last().css('background-color', '#EEEEEE');
$('div [data-id="' + beforeTreeId + '"] div').eq(0).last().css('background-color', '');
$('#tree_id').val(obj.data.id);
}
//显示右边详情信息
$scope.showDetail(obj.data.id);
}
});
});
}
});
}
后台
[Description("电子文件目录 初始化树")]
[PFAuthorize, HttpPost]
public JsonResult FileDirectoryMain_list(string UpperCode)
{
try
{
List<ElectronicDocumentCatalogEntity> allList= ElectronicDocumentCatalog.GetByCondition("Status=1 order by Sort");
List<ElectronicDocumentCatalogEntity> list = null;
if (string.IsNullOrEmpty(UpperCode))
list = allList.Where(a => string.IsNullOrEmpty(a.Uppercode)).OrderBy(a => a.Sort).ToList();
else
list = allList.Where(a => a.Uppercode == UpperCode).OrderBy(a => a.Sort).ToList();
List<Dnode> nodeList = new List<Dnode>();
if (list != null && list.Count > 0)
{
foreach (ElectronicDocumentCatalogEntity item in list)
{
Dnode node = new Dnode();
node.id = item.Id.ToString();
node.code = item.Code;
node.title = item.Name;
node.spread = false;
var children = allList.Where(a => a.Uppercode == item.Code).OrderBy(a=>a.Sort).ToList();
if (children != null && children.Count() > 0)
{
List<Dnode> childNodeList = new List<Dnode>();
foreach (var child in children)
{
Dnode childNode = new Dnode();
childNode.id = child.Id.ToString();
childNode.code = child.Code;
childNode.title = child.Name;
childNode.spread = false;
childNodeList.Add(childNode);
}
node.children = childNodeList;
}
nodeList.Add(node);
}
}
return Json(new
{
ResultCode = "1",
LeftTreeList = JsonHelper.ListToJson(nodeList),
});
}
catch (Exception ex)
{
PFPageHelper.LogException(CurrentModuleId, ex);
return Json(new { ResultCode = "0", ResultMessage = "获取数据失败!" });
}
}
[Description("电子文件目录 初始化树")]
[PFAuthorize, HttpPost]
public JsonResult FileDirectoryMain_tree()
{
try
{
List<Dnode> treedata = ElectronicDocumentCatalog.GetElectronicDocumentCatalogTree();
return Json(new
{
ResultCode = "1",
LeftTreeList = JsonHelper.ListToJson(treedata),
});
}
catch (Exception ex)
{
PFPageHelper.LogException(CurrentModuleId, ex);
return Json(new { ResultCode = "0", ResultMessage = "获取数据失败!" });
}
}
/// <summary>
/// 获取电子文件目录树
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static List<Dnode> GetElectronicDocumentCatalogTree()
{
List<Dnode> tree = new List<Dnode>();
List<ElectronicDocumentCatalogEntity> alllist = ElectronicDocumentCatalogDA.GetByCondition("Status=1 Order By Sort");
foreach (ElectronicDocumentCatalogEntity item in alllist.Where(a => string.IsNullOrEmpty(a.Uppercode)))
{
Dnode rootNode = new Dnode();
rootNode.id = item.Id.ToString();
rootNode.code = item.Code;
rootNode.title = item.Name;
rootNode.path.Add(rootNode.code);
GetChildren(rootNode, alllist);
tree.Add(rootNode);
}
void GetChildren(Dnode nodel, List<ElectronicDocumentCatalogEntity> list)
{
var children = list.Where(a => a.Uppercode == nodel.code);
if (children != null && children.Count() > 0)
{
nodel.children = new List<Dnode>();
foreach (ElectronicDocumentCatalogEntity item in children)
{
Dnode childNode = new Dnode();
childNode.id = item.Id.ToString();
childNode.code = item.Code;
childNode.title = item.Name;
childNode.path.AddRange(nodel.path);
childNode.path.Add(childNode.code);
GetChildren(childNode, list);
nodel.children.Add(childNode);
}
}
}
return tree;
}