1.修改权限
@{ ViewBag.Title = "修改模块功能"; Layout = "~/m_admin/views/shared/_Layout.cshtml"; } @model SYS.Authority.Model.RoleInfo @section Header{ <link href="~/Content/Plug/zTree_v3/css/zTreeStyle/zTreeStyle.css" rel="stylesheet" /> <style> tr th { text-align: right; } </style> } <form method="post"> <input type="hidden" name="roleid" value="@Model.Id"/> <input type="hidden" name="appid" value="@Model.AppId" /> <table> <tr><th>名称:</th><td>@Model.Name</td></tr> <tr> <th>权限:</th> <td><ul class="ztree" id="treeDemo"></ul></td> </tr> <tr><td colspan="2" style="text-align:center"><button class="btn btn-primary" type="button" onclick="Edit()">确定</button></td></tr> </table> </form> @section Footer{ <script src="~/Content/Plug/zTree_v3/js/jquery.ztree.all-3.5.js"></script> <script type="text/javascript"> var setting = { view: { selectedMulti: false }, check: { enable: true, chkboxType: { "Y": "p", "N": "s" } }, data: { keep: { parent: true, leaf: true }, simpleData: { enable: true } }, callback: {} }; function Edit() { var treeObj = $.fn.zTree.getZTreeObj("treeDemo"); var node = treeObj.getCheckedNodes(true); var fIds = []; if (node.length) { $.each(node, function () { fIds.push(this.id); }); } artDialog.ajax({ url: "/admin/role/EditFunc", data: { appId: $('[name="appid"]').val(), id: $('[name="roleid"]').val(), functionIds: fIds.join(',') }, success: function (result) { artDialog.tips(result.Message); setTimeout(function () { art.artDialog.close(); }, 1000); } }); } function SetSelect() { artDialog.ajax({ url: "/admin/role/getrolefunction", data: { roleid: $('[name="roleid"]').val() }, success: function (result) { var treeObj = $.fn.zTree.getZTreeObj("treeDemo"); $.each(result.Data, function () { var node = treeObj.getNodeByParam("id", this.Id); if (node != null) { treeObj.checkNode(node, true, true); } }); } }); } $(function () { $.ajax({ async: false, cache: false, type: 'POST', dataType: "text", url: "/admin/function/getjson", error: function () { artDialog.alert(null, null, "请求失败"); }, success: function (data) { var zNodes = eval("(" + data + ")"); $.fn.zTree.init($("#treeDemo"), setting, zNodes); SetSelect(); } }); }); </script> }
2.控制器
public Json GetJson() { protected StringBuilder sb = new StringBuilder(); public string FunctionGetJson() { sb.Clear(); List<FunctionInfo> dv = Filter().Where(c => c.ParentId == 0).OrderBy(f => f.Sort).ToList(); List<FunctionInfo> dvs = null; sb.Append("["); int count = dv.Count; for (int i = 0; i < dv.Count; i++) { var pid = dv[i].Id; sb.Append("{name:\"" + dv[i].Name + "\",pId:" + dv[i].ParentId + ",id:" + dv[i].Id + ""); dvs = Filter().Where(c => c.ParentId == pid).OrderBy(f => f.Sort).ToList(); if (dvs.Count > 0) { sb.Append(","); GetParent(dvs); } sb.Append("}"); if (count > i + 1) { sb.Append(","); } } sb.Append("]"); return sb.ToString(); } protected void GetParent(List<FunctionInfo> dv) { List<FunctionInfo> dvs = null; sb.Append("children:["); for (int i = 0; i < dv.Count; i++) { var pid = dv[i].Id; sb.Append("{name:\"" + dv[i].Name + "\",pId:" + dv[i].ParentId + ",id:" + dv[i].Id + ""); dvs = Filter().Where(c => c.ParentId == pid).ToList(); if (dvs.Count > 0) { sb.Append(","); GetParent(dvs); } sb.Append("}"); if (dv.Count > i + 1) { sb.Append(","); } } sb.Append("]"); } }
#region 该角色的权限(Ztree选中) +JsonResult GetRoleFunction(int roleId) /// <summary> /// 该角色的权限(Ztree选中) /// </summary> /// <param name="roleId"></param> /// <returns></returns> public JsonResult GetRoleFunction(int roleId) { var res = AuthorityManager.Instance(1001) .roleFunctionManager.Filter(" and RoleId=@RoleId", new { RoleId = roleId }) .Select(m => new { Id = m.FunctionId }); return Json(new { Data = res }); } #endregion