@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<link href="~/Scripts/layui/css/layui.css" rel="stylesheet" />
<script src="~/Scripts/layui/layui.js"></script>
<script src="~/Scripts/jquery-3.4.1.js"></script>
<style>
body {
padding: 10px 20px 20px 20px;
width: 90%
}
.editInfo {
display: none;
}
.addeditInfo {
display: none;
}
.editnewInfo {
display: none;
}
</style>
</head>
<body>
<fieldset class="layui-elem-field">
<legend>
<span class="layui-breadcrumb">
<a href="/Home/Index">首页</a>
<a href="/JobManagem/Index">菜单管理</a>
</span>
</legend>
<div class="layui-field-box">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label" style="width:90px;">菜单名称</label>
<div class="layui-input-block" style="margin-left:120px">
<input type="text" name="eumname" id="name" autocomplete="off" class="layui-input">
</div>
</div>
<button type="button" class="layui-btn layui-btn but" style=" margin-bottom: 4px;" id="searchButton" onclick="Search()"><i class="layui-icon layui-icon-search"></i>查询</button>
<button type="button" class="layui-btn layui-bg-blue but" style=" margin-bottom: 4px;" onclick="Add()"><i class="layui-icon layui-icon-addition"></i>添加</button>
</div>
</div>
</fieldset>
<table class="layui-hide" id="ID-treeTable-demo" lay-filter="test"></table>
<script type="text/html" id="TPL-treeTable-demo-tools">
<div class="layui-btn-container">
<a class="layui-btn layui-btn-warm layui-btn-xs" lay-event="add"><i class="layui-icon layui-icon-add-circle"></i>新增</a>
<a class="layui-btn layui-bg-blue layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
<a class="layui-btn layui-bg-red layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
</div>
</script>
<div class="editInfo">
<form class="layui-form layui-form-pane addorgfrom" action="" lay-filter="demo-val-filter">
<input type="hidden" name="ID" />
<div class="layui-form-item">
<label class="layui-form-label" style="width:130px">模块名称</label>
<div class="layui-input-block">
<input type="text" name="menuname" autocomplete="off" placeholder="请输入组织模块名称" lay-verify="required" class="layui-input" style="width:87%">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" style="width:130px">模块代码</label>
<div class="layui-input-block">
<input type="text" name="menucode" autocomplete="off" placeholder="请输入组织模块代码" lay-verify="required" class="layui-input" style="width:87%">
</div>
</div>
<div class="layui-form-item" style="text-align:center" id="but">
<div class="layui-input-block" style="margin-left:-53px;padding:10px">
<button type="submit" class="layui-btn" lay-submit lay-filter="demo1" style="margin:10px">保存</button>
<button type="reset" class="layui-btn layui-btn-primary" style="margin-left:30px;">重置</button>
</div>
</div>
</form>
</div>
@*表格内的新增,编辑*@
<div class="addeditInfo">
<form class="layui-form layui-form-pane addform" action="" lay-filter="demo-val-filter">
<input type="hidden" name="ID" />
<input type="hidden" name="ParentId" />
<div class="layui-form-item">
<label class="layui-form-label" style="width:130px">上一级菜单名称</label>
<div class="layui-input-block">
<input type="text" name="modulename" autocomplete="off" disabled="disabled" placeholder="请输入模块名称" lay-verify="required" class="layui-input" style="width:87%">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" style="width:130px">上一级菜单代码</label>
<div class="layui-input-block">
<input type="text" name="modulecode" autocomplete="off" disabled="disabled" placeholder="请输入模块代码" lay-verify="required" class="layui-input" style="width:87%">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" style="width:120px">当前级别</label>
<div class="layui-input-block" style="margin-left: 121px;width:289px">
<select name="Type" lay-verify="required" disabled="disabled">
<option value="">请选择级别</option>
<option value="0">菜单</option>
<option value="1">其他</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" style="width:120px">模块名称</label>
<div class="layui-input-block">
<input type="text" name="newname" autocomplete="off" placeholder="请输入模块名称" lay-verify="required" class="layui-input" style="width:90%">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" style="width:120px">模块代码</label>
<div class="layui-input-block">
<input type="text" name="newcode" autocomplete="off" placeholder="请输入模块代码" lay-verify="required" class="layui-input" style="width:90%">
</div>
</div>
<div class="layui-form-item" style="text-align:center" id="but">
<div class="layui-input-block" style="margin-left:-53px;padding:10px">
<button type="submit" class="layui-btn" lay-submit lay-filter="demo2" style="margin:10px">保存</button>
<button type="reset" class="layui-btn layui-btn-primary" style="margin-left:30px;">重置</button>
</div>
</div>
</form>
</div>
<script>
var SearchtreeTable;
layui.use(['form', 'table'], function () {
var table = layui.table;
var treeTable = layui.treeTable;
var layer = layui.layer;
var form = layui.form;
// 渲染
var inst = treeTable.render({
elem: '#ID-treeTable-demo',
url: '/ResourceManage/GetList', // 此处为静态模拟数据,实际使用时需换成真实接口
cols: [[
{ type: 'checkbox', },
{ field: 'ID', title: 'ID', hide: true }, // 隐藏但保留数据
{ field: 'ParentId', title: '父ID', hide: true }, // 隐藏但保留数据
{ field: 'name', title: '模块名称', width: '20%', },
{ field: 'ModuleCode', title: '模块代码', width: '20%', sort: true },
{
field: 'Type', title: '级别', width: '20%', sort: true, templet: function (d) {
switch (d.Type) {
case 0:
return "菜单";
break;
case 1:
return "其他";
break;
default:
return "其他";
break;
}
}
},
{ field: 'Url', title: '链接', width: '15%', sort: true },
{ title: "操作", width: '21.5%', align: "center", toolbar: "#TPL-treeTable-demo-tools" }
]],
tree: {
iconIndex: 1, // 图标显示在第 2 列(对应“组织机构名称”列,索引从 0 开始)
isParent: 'isParent', // 绑定后台的 `isParent` 字段(标识是否有子节点)
// 删除 async 配置!后台已返回完整 children 数组,无需异步加载
},
page: true
});
SearchtreeTable = inst;
//新增,编辑,删除
table.on('tool(test)', function (obj) { // 双击 toolDouble
var data = obj.data; // 获得当前行数据
// console.log(obj)
if (obj.event === 'add') {
//新增子集
layer.open({
type: 1, // page 层类型
area: ['550px', '480px'],
title: '新增资源模块',
shade: 0.6, // 遮罩透明度
shadeClose: false, // 点击遮罩区域,关闭弹层
maxmin: false, // 允许全屏最小化
anim: 0, // 0-6 的动画形式,-1 不开启
content: $(".addeditInfo").html()
});
//赋值
form.val('demo-val-filter', {
"modulename": data.name,
"modulecode": data.ModuleCode,
"Type": data.Type,
"ID": null,
"ParentId": data.ID
});
} else if (obj.event === 'edit') {
//编辑
//修改编辑职位
layer.open({
type: 1,
area: ['550px', '480px'],
title: '编辑资源模块',
shade: 0.6, // 遮罩透明度
shadeClose: false, // 点击遮罩区域,关闭弹层
maxmin: false, // 允许全屏最小化
anim: 0, // 0-6 的动画形式,-1 不开启
content: $('.addeditInfo').html(),
success: function () {
$.ajax({
url: '/ResourceManage/GetEditData',
data: { nodeId: data.ID },
success: function (res) {
// 填充数据,处理父节点不存在的情况
form.val('demo-val-filter', {
"modulename": res.parentName || data.name, // 父节点不存在时显示自身名称
"modulecode": res.parentCode || data.ModuleCode, // 父节点不存在时显示自身代码
"Type": data.Type,
"newname": data.name,
"newcode": data.ModuleCode,
"ID": res.ID,
"ParentId": res.parentID
});
}
});
}
});
} else {
layer.confirm('真的删除行 [' + data.name + '] 么', function (index) {
obj.del(); // 删除对应行(tr)的DOM结构
layer.close(index);
// 向服务端发送删除指令
$.ajax({
url: '/ResourceManage/DelInfo',
type: 'post',
data: { id: data.ID },
success: function (res) {
if (res.code == 0) {
layer.msg(res.msg, { icon: 6, time: 1500 }, function () {
Search();
})
} else {
layer.msg(res.msg, { icon: 5, time: 1500 })
}
}
})
});
}
});
// 提交事件
form.on('submit(demo1)', function (data) {
var field = data.field; // 获取表单字段值
// 此处可执行 Ajax 等操作
$.ajax({
url: '/ResourceManage/Add',
type: 'post',
data: field,
success: function (res) {
if (res.code == 0) {
layer.msg(res.msg, { icon: 6, time: 3000 }, function () {
layer.closeAll(); // 关闭所有类型的层
Search();
});
} else {
layer.msg(res.msg, { icon: 5, time: 2000 });
}
}
})
return false; // 阻止默认 form 跳转
});
// 提交事件
form.on('submit(demo2)', function (data) {
var field = data.field; // 获取表单字段值
var leve = data.leve;
var ID = data.ID;
var ParentId = data.ParentId;
// 此处可执行 Ajax 等操作
$.ajax({
url: '/ResourceManage/AddTreeInfo',
type: 'post',
data: { newname: field.newname, newcode: field.newcode, Type: field.Type, ID: field.ID, pid: field.ParentId },
success: function (res) {
if (res.code == 0) {
layer.msg(res.msg, { icon: 6, time: 3000 }, function () {
layer.closeAll(); // 关闭所有类型的层
Search();
});
} else {
layer.msg(res.msg, { icon: 5, time: 2000 });
}
}
})
return false; // 阻止默认 form 跳转
});
});
//重载,模糊查询
//重载,模糊查询
function Search() {
var nameVal = $('input[name="eumname"]').val().trim();
// 完整重载 - 所有属性属性(options)均可参与到重载中
SearchtreeTable.reload({
where: { // 传递数据异步请求时携带的字段
eumname: nameVal,
},
});
}
//添加
function Add() {
// 在此处输入 layer 的任意代码
layer.open({
type: 1, // page 层类型
area: ['550px', '350px'],
title: '新增资源模块',
shade: 0.6, // 遮罩透明度
shadeClose: true, // 点击遮罩区域,关闭弹层
maxmin: true, // 允许全屏最小化
anim: 0, // 0-6 的动画形式,-1 不开启
content: $(".editInfo").html()
});
}
</script>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication1.Models;
namespace WebApplication1.Controllers
{
[LoginActionFitter]
public class ResourceManageController : Controller
{
AoutEntities1 db = new AoutEntities1();
ReturnJsonData jsonData = new ReturnJsonData();
ReturnListJsonData orgTreeList = new ReturnListJsonData();
// GET:
public ActionResult Index()
{
return View();
}
#region 查询
/// <summary>
/// 模糊查询
/// </summary>
/// <param name="page"></param>
/// <param name="limit"></param>
/// <param name="orgname"></param>
/// <returns></returns>
public ActionResult GetList(int page, int limit, string eumname)
{
//返回树形表格
List<object> retultlist = new List<object>();
//第一步 查找所有的一级菜单
var list = db.SystemResourceModule.Where(a => a.ParentId == Guid.Empty).ToList();
if (!string.IsNullOrEmpty(eumname))
{
list = db.SystemResourceModule.Where(a => a.ModuleName.Contains(eumname)).ToList();
foreach (var itme in list)
{
ReturnMenuListData obj = new ReturnMenuListData();
obj.ID = itme.ID;
obj.ParentId = itme.ParentId;
obj.name = itme.ModuleName;
obj.ModuleCode = itme.ModuleCode;
obj.Url = itme.Url;
obj.Type = itme.Type;
obj.CreateDate = itme.CreateDate;
obj.ModifyDate = itme.ModifyDate;
//验证是否还有有子集
obj.isParent = false;
obj.children = null;
retultlist.Add(obj);
}
}
else
{
list = db.SystemResourceModule.Where(a => a.ParentId == Guid.Empty).ToList();
//循环
foreach (var itme in list)
{
ReturnMenuListData obj = new ReturnMenuListData();
obj.ID = itme.ID;
obj.ParentId = itme.ParentId;
obj.name = itme.ModuleName;
obj.ModuleCode = itme.ModuleCode;
obj.Url = itme.Url;
obj.Type = itme.Type;
obj.CreateDate = itme.CreateDate;
obj.ModifyDate = itme.ModifyDate;
//验证是否还有有子集
obj.isParent = db.SystemResourceModule.Where(a => a.ParentId == itme.ID).ToList().Count > 0 ? true : false;
if (obj.isParent == true)
{
//查找所以子集
obj.children = BuildTree(list, itme.ID);
}
retultlist.Add(obj);
}
}
orgTreeList.code = 0;
orgTreeList.count = list.Count;
orgTreeList.data = retultlist;
return Json(orgTreeList, JsonRequestBehavior.AllowGet);
}
#endregion
#region 递归调用
/// <summary>
/// 递归调用
/// </summary>
/// <param name="list"></param>
/// <param name="ID"></param>
/// <returns></returns>
private List<object> BuildTree(List<SystemResourceModule> list, Guid ID)
{
List<object> Treelist = new List<object>();
List<SystemResourceModule> childList = db.SystemResourceModule.Where(a => a.ParentId == ID).ToList();
//循环
foreach (var itme in childList)
{
ReturnMenuListData obj = new ReturnMenuListData();
obj.ID = itme.ID;
obj.ParentId = itme.ParentId;
obj.name = itme.ModuleName;
obj.ModuleCode = itme.ModuleCode;
obj.Url = itme.Url;
obj.CreateDate = itme.CreateDate;
obj.ModifyDate = itme.ModifyDate;
obj.isParent = db.SystemResourceModule.Where(a => a.ParentId == itme.ID).ToList().Count > 0 ? true : false;
obj.children = BuildTree(childList, itme.ID);
Treelist.Add(obj);
}
return Treelist;
}
#endregion
#region 查询父级及子集信息
public ActionResult GetEditData(Guid nodeId)
{
var current = db.SystemResourceModule.Find(nodeId);
if (current == null) return Json(new { success = false });
// 总公司的ParentId为null或自身(假设总公司ParentId=0或null)
var isRoot = current.ParentId == null || current.ParentId == Guid.Empty;
var parent = isRoot ? current : db.SystemResourceModule.Find(current.ParentId);
return Json(new
{
parentName = parent.ModuleName,
parentCode = parent.ModuleCode,
Type = current.Type,
orgName = current.ModuleName,
orgCode = current.ModuleCode,
ID = current.ID,
parentID = current.ParentId,
}, JsonRequestBehavior.AllowGet);
}
#endregion
#region 删除
/// <summary>
/// 删除操作
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public ActionResult DelInfo(Guid? id)
{
if (id == null)
{
jsonData.code = 1;
jsonData.msg = "删除失败,未找到当行数据";
}
else
{
//删除
var entity = db.SystemResourceModule.Find(id);
if (entity == null)
{
jsonData.code = 1;
jsonData.msg = "删除失败,未找到当前行数据";
}
else
{
db.SystemResourceModule.Remove(entity);
var result = db.SaveChanges();
if (result > 0)
{
jsonData.code = 0;
jsonData.msg = "删除成功";
}
else
{
jsonData.code = 1;
jsonData.msg = "删除失败,请联系管理员";
}
}
}
return Json(jsonData, JsonRequestBehavior.AllowGet);
}
#endregion
#region 新增菜单
/// <summary>
/// 新增,修改
/// </summary>
/// <returns></returns>
public ActionResult Add(SystemResourceModule org, string menuname, string menucode)
{
org.ModuleName = menuname;
org.ModuleCode = menucode;
org.ID = Guid.NewGuid();
org.Type = 0;
org.ParentId = Guid.Empty;
org.CreateDate = DateTime.Now;
org.ModifyDate = DateTime.Now;
db.SystemResourceModule.Add(org);
var result = db.SaveChanges();
if (result > 0)
{
jsonData.code = 0;
jsonData.msg = "新增资源模块成功";
}
else
{
jsonData.code = 1;
jsonData.msg = "新增失败,请联系管理员";
}
return Json(jsonData, JsonRequestBehavior.AllowGet);
}
#endregion
#region 新增修改
/// <summary>
/// 新增,修改
/// </summary>
/// <returns></returns>
public ActionResult AddTreeInfo(string newname, string newcode, int? Type, Guid? ID, Guid pid)
{
if (ID == null || ID == Guid.Empty)
{
// 新增逻辑:parentId为父节点ID(新增时需传递)
var newOrg = new SystemResourceModule
{
ID = Guid.NewGuid(),
ParentId = pid,
ModuleName = newname,
ModuleCode = newcode,
Type = Type + 1,
CreateDate = DateTime.Now,
ModifyDate = DateTime.Now
};
db.SystemResourceModule.Add(newOrg);
}
else
{
// 编辑逻辑:通过ID查找当前行(确保是当前行,而非总公司,依赖ID唯一性)
var entity = db.SystemResourceModule.Find(ID);
if (entity != null)
{
entity.ModuleName = newname;
entity.ModuleCode = newcode;
entity.ModifyDate = DateTime.Now;
db.Entry(entity).State = EntityState.Modified;
}
}
var result = db.SaveChanges();
if (result > 0)
{
jsonData.code = 0;
jsonData.msg = "保存成功";
}
else
{
jsonData.code = 1;
jsonData.msg = "保存失败,请联系管理员";
}
return Json(jsonData, JsonRequestBehavior.AllowGet);
}
#endregion
}
}数据展示不出来
最新发布