标签:
在权限管理系统中,数据权限是比较难的,在我们通用权限系统中,数据权限指的是用户基于某个权限域对某些基础数据的操作权限,如上图,公司管理这个菜单被定义是数据权限,表示某些人在公司管理是可指定访问哪些基础数据,这个要与应用结合。如下图,可以限制该9999xudeng003用户在公司管理页面只能管理其中的几个公司。
目前基于用户的数据权限BS的管理功能已完成,这个是权限系统最难开发的一部分。
下面是MVC控制器调的通用权限管理系统底层的方法:
//----------------------------------------------------------------------- // <copyright file="PermissionController.cs" company="Hairihan TECH, Ltd."> // Copyright (c) 2015 , All rights reserved. // </copyright> //----------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web.Mvc; namespace DotNet.MVC.Controllers { using DotNet.Business; using DotNet.MVC.Attributes; using DotNet.MVC.Infrastructure; using DotNet.Utilities; using DotNet.Model; using DotNet.MVC.Models; /// <summary> /// PermissionController /// 权限服务 /// /// 修改纪录 /// /// 2016-01-17 版本:1.0 SongBiao 创建文件。 /// /// <author> /// <name>SongBiao</name> /// <date>2016-01-17</date> /// </author> /// </summary> [CheckLogin] public class PermissionController : BaseController { // // GET: /Permission/ public ActionResult Index() { return View(); } /// <summary> /// 授予用户权限 /// </summary> /// <param name="userIds"></param> /// <param name="permissionIds"></param> /// <param name="systemCode"></param> /// <returns></returns> public ActionResult GrantUserPermissions(string userIds, string permissionIds, string systemCode = null) { if (string.IsNullOrWhiteSpace(systemCode)) { systemCode = BaseSystemInfo.SystemCode; } string tableName = systemCode + "Permission"; var manager = new BaseUserPermissionManager(UserCenterDbHelper, OperateContext.Current.UserInfo, tableName); // 小心异常,检查一下参数的有效性 int result = 0; string[] grantUserIds = userIds.Split(‘,‘); string[] grantPermissionIds = permissionIds.Split(‘,‘); if (grantUserIds.Any() && grantPermissionIds.Any()) { result = manager.Grant(systemCode, grantUserIds, grantPermissionIds); } BaseResult baseResult = new BaseResult(); if (result > 0) { baseResult.Status = true; baseResult.StatusMessage = "授权成功。"; } else { baseResult.Status = false; baseResult.StatusMessage = "没有授权。"; } return Json(baseResult, JsonRequestBehavior.AllowGet); } /// <summary> /// 撤消用户操作权限 /// </summary> /// <param name="userIds"></param> /// <param name="permissionIds"></param> /// <param name="systemCode"></param> /// <returns></returns> public ActionResult RevokeUserPermissions(string userIds, string permissionIds, string systemCode = null) { if (string.IsNullOrWhiteSpace(systemCode)) { systemCode = BaseSystemInfo.SystemCode; } string tableName = systemCode + "Permission"; var manager = new BaseUserPermissionManager(UserCenterDbHelper, OperateContext.Current.UserInfo, tableName); // 小心异常,检查一下参数的有效性 int result = 0; string[] grantUserIds = userIds.Split(‘,‘); string[] grantPermissionIds = permissionIds.Split(‘,‘); if (grantUserIds.Any() && grantPermissionIds.Any()) { result = manager.Revoke(systemCode, grantUserIds, grantPermissionIds); } BaseResult baseResult = new BaseResult(); if (result > 0) { baseResult.Status = true; baseResult.StatusMessage = "撤消用户操作权限成功。"; } else { baseResult.Status = false; baseResult.StatusMessage = "没有授撤消用户操作权限。"; } return Json(baseResult, JsonRequestBehavior.AllowGet); } /// <summary> /// 角色授权 /// </summary> /// <param name="roleIds"></param> /// <param name="permissionIds"></param> /// <param name="systemCode"></param> /// <returns></returns> public ActionResult GrantRolePermissions(string roleIds, string permissionIds, string systemCode = null) { if (string.IsNullOrWhiteSpace(systemCode)) { systemCode = BaseSystemInfo.SystemCode; } string tableName = systemCode + "Permission"; var manager = new BaseRolePermissionManager(UserCenterDbHelper, OperateContext.Current.UserInfo, tableName); // 小心异常,检查一下参数的有效性 int result = 0; string[] grantroleIds = roleIds.Split(‘,‘); string[] grantPermissionIds = permissionIds.Split(‘,‘); if (grantroleIds.Any() && grantPermissionIds.Any()) { result = manager.Grant(systemCode, grantroleIds, grantPermissionIds); } BaseResult baseResult = new BaseResult(); if (result > 0) { baseResult.Status = true; baseResult.StatusMessage = "授权成功。"; } else { baseResult.Status = false; baseResult.StatusMessage = "没有授权。"; } return Json(baseResult, JsonRequestBehavior.AllowGet); } /// <summary> /// 撤消角色的权限 /// </summary> /// <param name="roleIds"></param> /// <param name="permissionIds"></param> /// <param name="systemCode"></param> /// <returns></returns> public ActionResult RevokeRolePermissions(string roleIds, string permissionIds, string systemCode = null) { if (string.IsNullOrWhiteSpace(systemCode)) { systemCode = BaseSystemInfo.SystemCode; } string tableName = systemCode + "Permission"; var manager = new BaseRolePermissionManager(UserCenterDbHelper, OperateContext.Current.UserInfo, tableName); // 小心异常,检查一下参数的有效性 int result = 0; string[] grantroleIds = roleIds.Split(‘,‘); string[] grantPermissionIds = permissionIds.Split(‘,‘); if (grantroleIds.Any() && grantPermissionIds.Any()) { result = manager.Revoke(systemCode, grantroleIds, grantPermissionIds); } BaseResult baseResult = new BaseResult(); if (result > 0) { baseResult.Status = true; baseResult.StatusMessage = "撤销成功。"; } else { baseResult.Status = false; baseResult.StatusMessage = "没有撤销。"; } return Json(baseResult, JsonRequestBehavior.AllowGet); } /// <summary> /// 组织机构授权 /// </summary> /// <param name="organizeIds"></param> /// <param name="permissionIds"></param> /// <param name="systemCode"></param> /// <returns></returns> public ActionResult GrantOrganizePermissions(string organizeIds, string permissionIds, string systemCode = null) { if (string.IsNullOrWhiteSpace(systemCode)) { systemCode = BaseSystemInfo.SystemCode; } string tableName = systemCode + "Permission"; var manager = new BaseOrganizePermissionManager(UserCenterDbHelper, OperateContext.Current.UserInfo, tableName); // 小心异常,检查一下参数的有效性 int result = 0; string[] grantorganizeIds = organizeIds.Split(‘,‘); string[] grantPermissionIds = permissionIds.Split(‘,‘); if (grantorganizeIds.Any() && grantPermissionIds.Any()) { result = manager.Grant(systemCode, grantorganizeIds, grantPermissionIds); } BaseResult baseResult = new BaseResult(); if (result > 0) { baseResult.Status = true; baseResult.StatusMessage = "授权成功。"; } else { baseResult.Status = false; baseResult.StatusMessage = "没有授权。"; } return Json(baseResult, JsonRequestBehavior.AllowGet); } /// <summary> /// 撤销组织机构授权 /// </summary> /// <param name="organizeIds"></param> /// <param name="permissionIds"></param> /// <param name="systemCode"></param> /// <returns></returns> public ActionResult RevokeOrganizePermissions(string organizeIds, string permissionIds, string systemCode = null) { if (string.IsNullOrWhiteSpace(systemCode)) { systemCode = BaseSystemInfo.SystemCode; } string tableName = systemCode + "Permission"; var manager = new BaseOrganizePermissionManager(UserCenterDbHelper, OperateContext.Current.UserInfo, tableName); // 小心异常,检查一下参数的有效性 int result = 0; string[] grantorganizeIds = organizeIds.Split(‘,‘); string[] grantPermissionIds = permissionIds.Split(‘,‘); if (grantorganizeIds.Any() && grantPermissionIds.Any()) { result = manager.Revoke(systemCode, grantorganizeIds, grantPermissionIds); } BaseResult baseResult = new BaseResult(); if (result > 0) { baseResult.Status = true; baseResult.StatusMessage = "撤销成功。"; } else { baseResult.Status = false; baseResult.StatusMessage = "没有撤销。"; } return Json(baseResult, JsonRequestBehavior.AllowGet); } /// <summary> /// 撤销用户的组织机构范围权限 /// </summary> /// <param name="userId"></param> /// <param name="organizeIds"></param> /// <param name="systemCode"></param> /// <param name="permissionCode"></param> /// <returns></returns> public ActionResult RevokeUserOrganizeScopes(string userId, string organizeIds, string systemCode = null, string permissionCode = "Resource.ManagePermission") { BaseResult baseResult = new BaseResult(); try { if (string.IsNullOrWhiteSpace(systemCode)) { systemCode = BaseSystemInfo.SystemCode; } string[] revokeOrganizeIds = organizeIds.Split(‘,‘); string tableName = systemCode + "PermissionScope"; var manager = new BaseUserScopeManager(UserCenterDbHelper, OperateContext.Current.UserInfo, tableName); // 小心异常,检查一下参数的有效性 if (revokeOrganizeIds != null) { baseResult.RecordCount = manager.RevokeOrganizes(systemCode, userId, revokeOrganizeIds, permissionCode); } baseResult.StatusMessage = "用户对组织机构的数据权限已被撤销。"; baseResult.Status = true; } catch (Exception ex) { baseResult.Status = false; baseResult.StatusMessage = "设置用户对组织机构的数据权限出现异常:" + ex.Message; } return Json(baseResult, JsonRequestBehavior.AllowGet); } /// <summary> /// 数据权限 /// 设置用户的某个权限域的组织范围 用户可以操作那些网点 /// </summary> /// <param name="userId"></param> /// <param name="organizeIds"></param> /// <param name="systemCode"></param> /// <param name="permissionCode"></param> /// <returns></returns> public ActionResult GrantUserOrganizeScopes(string userId, string organizeIds, string systemCode = null, string permissionCode = "Resource.ManagePermission") { BaseResult baseResult = new BaseResult(); try { if (string.IsNullOrWhiteSpace(systemCode)) { systemCode = BaseSystemInfo.SystemCode; } string[] grantOrganizeIds = organizeIds.Split(‘,‘); string tableName = systemCode + "PermissionScope"; var manager = new BaseUserScopeManager(UserCenterDbHelper, OperateContext.Current.UserInfo, tableName); // 小心异常,检查一下参数的有效性 if (!grantOrganizeIds.Any()) { baseResult.RecordCount = manager.RevokeOrganize(OperateContext.Current.UserInfo.SystemCode, userId, permissionCode); baseResult.StatusMessage = "用户对组织机构的数据权限已被撤销。"; } else { baseResult.RecordCount = manager.GrantOrganizes(OperateContext.Current.UserInfo.SystemCode, userId, grantOrganizeIds, permissionCode); baseResult.StatusMessage = "已成功授予用户的组织机构数据权限。"; } baseResult.Status = true; } catch (Exception ex) { baseResult.Status = false; baseResult.StatusMessage = "用户对组织机构的数据权限设置异常:" + ex.Message; } return Json(baseResult, JsonRequestBehavior.AllowGet); } /// <summary> /// 设置用户的某个权限域的用户范围 /// </summary> /// <param name="userId"></param> /// <param name="userIds"></param> /// <param name="systemCode"></param> /// <param name="permissionId"></param> /// <returns></returns> public ActionResult GrantUserUserScopes(string userId, string userIds, string permissionId, string systemCode = null)//string permissionCode = "Resource.ManagePermission" { BaseResult baseResult = new BaseResult(); try { if (string.IsNullOrWhiteSpace(systemCode)) { systemCode = BaseSystemInfo.SystemCode; } string[] grantUserIds = userIds.Split(‘,‘); string tableName = systemCode + "PermissionScope"; var manager = new BaseUserScopeManager(UserCenterDbHelper, OperateContext.Current.UserInfo, tableName); // 小心异常,检查一下参数的有效性 if (grantUserIds.Any()) { baseResult.RecordCount = manager.GrantUsers(userId, grantUserIds, permissionId, systemCode); } baseResult.Status = true; baseResult.StatusMessage = "成功设置用户的用户范围权限域。"; } catch (Exception ex) { baseResult.Status = false; baseResult.StatusMessage = "设置用户的权限域的用户范围出现异常:" + ex.Message; } return Json(baseResult, JsonRequestBehavior.AllowGet); } /// <summary> /// 撤销用户的某个权限域的用户范围 /// </summary> /// <param name="userId"></param> /// <param name="userIds"></param> /// <param name="permissionId"></param> /// <param name="systemCode"></param> /// <returns></returns> public ActionResult RevokeUserUserScopes(string userId, string userIds, string permissionId, string systemCode)//string permissionCode = "Resource.ManagePermission" { BaseResult baseResult = new BaseResult(); try { if (string.IsNullOrWhiteSpace(systemCode)) { systemCode = BaseSystemInfo.SystemCode; } string[] revokeUserIds = userIds.Split(‘,‘); string tableName = systemCode + "PermissionScope"; var manager = new BaseUserScopeManager(UserCenterDbHelper, OperateContext.Current.UserInfo, tableName); // 小心异常,检查一下参数的有效性 if (revokeUserIds.Any()) { baseResult.RecordCount = manager.RevokeUsers(userId, revokeUserIds, permissionId); } baseResult.Status = true; baseResult.StatusMessage = "成功撤销用户的权限域的用户范围。"; } catch (Exception ex) { baseResult.Status = false; baseResult.StatusMessage = "撤销用户的某个权限域的用户范围出现异常:" + ex.Message; } return Json(baseResult, JsonRequestBehavior.AllowGet); } /// <summary> /// 设置用户的某个权限域的角色范围 /// </summary> /// <param name="userId"></param> /// <param name="roleIds"></param> /// <param name="permissionId"></param> /// <param name="systemCode"></param> /// <returns></returns> public ActionResult GrantUserRoleScopes(string userId, string roleIds, string permissionId, string systemCode = null) //string permissionCode = "Resource.ManagePermission" { BaseResult baseResult = new BaseResult(); try { if (string.IsNullOrWhiteSpace(systemCode)) { systemCode = BaseSystemInfo.SystemCode; } string tableNameModule = systemCode + "Module"; BaseModuleManager moduleManager = new BaseModuleManager(tableNameModule); BaseModuleEntity moduleEntity = moduleManager.GetObject(permissionId); string permissionCode = moduleEntity.Code; string[] grantRoleIds = roleIds.Split(‘,‘); string tableName = systemCode + "PermissionScope"; var manager = new BaseUserScopeManager(UserCenterDbHelper, OperateContext.Current.UserInfo, tableName); // 小心异常,检查一下参数的有效性 if (grantRoleIds.Any()) { baseResult.RecordCount = manager.GrantRoles(systemCode, userId, grantRoleIds, permissionCode); } baseResult.Status = true; baseResult.StatusMessage = "成功设置用户的角色范围权限域。"; } catch (Exception ex) { baseResult.Status = false; baseResult.StatusMessage = "设置用户的某个权限域的角色范围出现异常:" + ex.Message; } return Json(baseResult, JsonRequestBehavior.AllowGet); } /// <summary> /// 撤销用户的某个权限域的角色范围 /// </summary> /// <param name="userId"></param> /// <param name="roleIds"></param> /// <param name="permissionId"></param> /// <param name="systemCode"></param> /// <returns></returns> public ActionResult RevokeUserRoleScopes(string userId, string roleIds, string permissionId, string systemCode)//string permissionCode = "Resource.ManagePermission" { BaseResult baseResult = new BaseResult(); try { if (string.IsNullOrWhiteSpace(systemCode)) { systemCode = BaseSystemInfo.SystemCode; } string tableNameModule = systemCode + "Module"; BaseModuleManager moduleManager = new BaseModuleManager(tableNameModule); BaseModuleEntity moduleEntity = moduleManager.GetObject(permissionId); string permissionCode = moduleEntity.Code; string[] revokeRoleIds = roleIds.Split(‘,‘); string tableName = systemCode + "PermissionScope"; var manager = new BaseUserScopeManager(UserCenterDbHelper, OperateContext.Current.UserInfo, tableName); // 小心异常,检查一下参数的有效性 if (revokeRoleIds.Any()) { baseResult.RecordCount = manager.RevokeRoles(systemCode, userId, revokeRoleIds, permissionCode); } baseResult.Status = true; baseResult.StatusMessage = "成功撤销用户的角色范围权限域。"; } catch (Exception ex) { baseResult.Status = false; baseResult.StatusMessage = "撤销用户的某个权限域的角色范围出现异常:" + ex.Message; } return Json(baseResult, JsonRequestBehavior.AllowGet); } /// <summary> /// 获取用户的某个权限域的组织范围 /// </summary> /// <param name="userId">用户主键</param> /// <param name="systemCode"></param> /// <param name="permissionCode">权限编号</param> /// <returns>主键数组</returns> private string[] GetUserScopeOrganizeIds(string userId, string systemCode = null, string permissionCode = "Resource.ManagePermission") { string[] result = null; if (string.IsNullOrWhiteSpace(systemCode)) { systemCode = BaseSystemInfo.SystemCode; } string tableName = systemCode + "PermissionScope"; var manager = new BaseUserScopeManager(UserCenterDbHelper, OperateContext.Current.UserInfo, tableName); result = manager.GetOrganizeIds(systemCode, userId, permissionCode); return result; } /// <summary> /// 获取用户的某个权限域的组织范围 用户组织机构数据权限 /// </summary> /// <param name="userId"></param> /// <param name="direction"></param> /// <param name="systemCode"></param> /// <param name="permissionCode"></param> /// <param name="sort"></param> /// <returns></returns> public ActionResult GetUserScopeOrganizeList(string userId, Pager pager, string sort, string direction, string systemCode = null, string permissionCode = "Resource.ManagePermission") { string[] organizeIds = GetUserScopeOrganizeIds(userId, systemCode, permissionCode); List<BaseOrganizeEntity> list = new List<BaseOrganizeEntity>(); int recordCount = 0; if (organizeIds != null && organizeIds.Any()) { string whereClause = " (" + BaseOrganizeEntity.TableName + "." + BaseOrganizeEntity.FieldId + " IN (" + BaseBusinessLogic.ObjectsToList(organizeIds, "‘") + ")) "; //list = new BaseOrganizeManager().GetList2<BaseOrganizeEntity>(whereClause); string orderby = sort + " " + direction; IDataReader dr = DbLogic.ExecuteReaderByPage(UserCenterDbHelper, out recordCount, BaseOrganizeEntity.TableName, "*", pager.pageNo, pager.pageSize, whereClause, null, orderby); list = BaseEntity.GetList<BaseOrganizeEntity>(dr); } return JsonPager(pager, list, recordCount, sort, direction, BeginTime); } /// <summary> /// 获取用户的某个权限域的用户范围 数据权限 /// </summary> /// <param name="userId"></param> /// <param name="direction"></param> /// <param name="systemCode"></param> /// <param name="permissionId"></param> /// <param name="sort"></param> /// <returns></returns> public ActionResult GetUserScopeUserList(string userId, Pager pager, string sort, string direction, string permissionId, string systemCode = null)//string permissionCode = "Resource.ManagePermission" { if (string.IsNullOrWhiteSpace(systemCode)) { systemCode = BaseSystemInfo.SystemCode; } string tableName = systemCode + "PermissionScope"; var manager = new BaseUserScopeManager(UserCenterDbHelper, OperateContext.Current.UserInfo, tableName); string[] userIds = manager.GetUserIds(userId, permissionId); List<BaseUserEntity> list = new List<BaseUserEntity>(); int recordCount = 0; if (userIds != null && userIds.Any()) { string whereClause = " (" + BaseUserEntity.TableName + "." + BaseUserEntity.FieldId + " IN (" + BaseBusinessLogic.ObjectsToList(userIds, "‘") + ")) "; //list = new BaseOrganizeManager().GetList2<BaseOrganizeEntity>(whereClause); string orderby = sort + " " + direction; IDataReader dr = DbLogic.ExecuteReaderByPage(UserCenterDbHelper, out recordCount, BaseUserEntity.TableName, "*", pager.pageNo, pager.pageSize, whereClause, null, orderby); list = BaseEntity.GetList<BaseUserEntity>(dr); } return JsonPager(pager, list, recordCount, sort, direction, BeginTime); } /// <summary> /// 获取用户的某个权限域的角色范围 数据权限 /// </summary> /// <param name="userId"></param> /// <param name="direction"></param> /// <param name="systemCode"></param> /// <param name="permissionId"></param> /// <param name="sort"></param> /// <returns></returns> public ActionResult GetUserScopeRoleList(string userId, Pager pager, string sort, string direction, string permissionId, string systemCode = null)//string permissionCode = "Resource.ManagePermission" { if (string.IsNullOrWhiteSpace(systemCode)) { systemCode = BaseSystemInfo.SystemCode; } string tableName = systemCode + "PermissionScope"; var manager = new BaseUserScopeManager(UserCenterDbHelper, OperateContext.Current.UserInfo, tableName); string[] roleIds = manager.GetRoleIds(systemCode,userId, permissionId); List<BaseRoleEntity> list = new List<BaseRoleEntity>(); int recordCount = 0; string roleTable = systemCode + "Role"; if (roleIds != null && roleIds.Any()) { string whereClause = " (" + roleTable + "." + BaseRoleEntity.FieldId + " IN (" + BaseBusinessLogic.ObjectsToList(roleIds, "‘") + ")) "; //list = new BaseOrganizeManager().GetList2<BaseOrganizeEntity>(whereClause); string orderby = sort + " " + direction; IDataReader dr = DbLogic.ExecuteReaderByPage(UserCenterDbHelper, out recordCount, roleTable, "*", pager.pageNo, pager.pageSize, whereClause, null, orderby); list = BaseEntity.GetList<BaseRoleEntity>(dr); } return JsonPager(pager, list, recordCount, sort, direction, BeginTime); } } }
前段最难设计的权限配置界面Views视图代码,如果没有很好的利用第三方前端控件,几乎是无法实现的。
@using DotNet.Model @using DotNet.MVC.Infrastructure @{ ViewBag.Title = "用户数据权限设置"; // 控制用户对那些数据有权限 Layout = "~/Views/QUILayout/MainContent.cshtml"; BaseUserEntity userEntity = ViewBag.userEntity; BaseModuleEntity moduleEntity = ViewBag.moduleEntity; var systemCode = ViewBag.systemCode; } @section Head { <!--数据表格start--> <script src="@BusinessSystemInfo.QuiPath/libs/js/table/quiGrid.js" type="text/javascript"></script> <!--数据表格end--> <!--布局控件start--> <script type="text/javascript" src="@BusinessSystemInfo.QuiPath/libs/js/nav/layout.js"></script> <!--布局控件end--> <!--基本选项卡start--> <script type="text/javascript" src="@BusinessSystemInfo.QuiPath/libs/js/nav/basicTab.js"></script> <!--基本选项卡end--> <script type="text/javascript"> function initComplete() { var layout = $("#layout1").layout({ leftWidth: 150, topHeight: 34, bottomHeight: 30, onEndResize: function () { triggerCustomHeightSet(); } }); layout.setRightCollapse(true); // 数据权限范围选中事件 $("input:radio[name=‘dataScope‘]").change(function () { var permissionOrganizeScope = $("input:radio[name=‘dataScope‘]:checked").val(); $.ajax({ type: ‘POST‘, url: "/UserPermissionScope/SetUserOrganizeScope", data: { "targetUserId": "@userEntity.Id", "permissionOrganizeScope": permissionOrganizeScope, "permissionCode": "@moduleEntity.Code", "systemCode": "@systemCode" }, dataType: ‘json‘, success: function (result) { if (result.Status) { top.Dialog.alert("设置成功!"); } else { top.Dialog.alert(result.StatusMessage); } }, error: function (a) { top.Dialog.alert("出错了!"); } }); }); } function customHeightSet(contentHeight) { $(".layout_content").height(contentHeight - 94); } </script> } <div id="layout1"> <div position="top" id="topCon" style=""> <div class="box_tool_min padding_top0 padding_bottom6 padding_right5"> <div class="center"> <div class="left"> <div class="right"> <div class="padding_top3 padding_left10 padding_right10"> <div style="float: left"> 设置用户【 @userEntity.RealName】在【@moduleEntity.FullName】上的数据权限 </div> <div style="float: right"> @*<div style="float: left"> <a href="javascript:;" onclick="addUnit()"><span class="icon_add">区域权明细...</span></a> </div>*@ <div style="float: right"> <a href="javascript:;" onclick="addUnit()"><span class="icon_add">添加...</span></a> <a href="javascript:;" onclick="removeUnit()"><span class="icon_delete">移除</span></a> <a href="javascript:;" onclick="top.Dialog.close();"><span class="icon_exit">关闭</span></a> </div> </div> <div class="clear"></div> </div> </div> </div> </div> <div class="clear"></div> </div> </div> @*<div position="left" style="" paneltitle="数据权限范围"> <div class="layout_content"> <input type="radio" id="rdbAllData" name="dataScope" value="AllData" /><label for="rdbAllData" class="hand">所有数据</label><br /> <input type="radio" id="rdbProvince" name="dataScope" value="Province" /><label for="rdbProvince" class="hand">所在省</label><br /> <input type="radio" id="rdbCity" name="dataScope" value="City" /><label for="rdbCity" class="hand">所在市</label><br /> <input type="radio" id="rdbDistrict" name="dataScope" value="District" /><label for="rdbDistrict" class="hand">所在市</label><br /> <input type="radio" id="rdbStreet" name="dataScope" value="Street" /><label for="rdbStreet" class="hand">所在市</label><br /> <input type="radio" id="rdbUserCompany" name="dataScope" value="UserCompany" /><label for="rdbUserCompany" class="hand">所在市</label><br /> <input type="radio" id="rdbUserSubCompany" name="dataScope" value="UserSubCompany" /><label for="rdbUserSubCompany" class="hand">所在市</label><br /> <input type="radio" id="rdbUserDepartment" name="dataScope" value="UserDepartment" /><label for="rdbUserDepartment" class="hand">所在部门</label><br /> <input type="radio" id="rdbUserSubDepartment" name="dataScope" value="UserSubDepartment" /><label for="rdbUserSubDepartment" class="hand">所在子部门</label><br /> <input type="radio" id="rdbUserWorkgroup" name="dataScope" value="UserWorkgroup" /><label for="rdbUserWorkgroup" class="hand">所在工作组</label><br /> <input type="radio" id="rdbOnlyOwnData" name="dataScope" value="OnlyOwnData" /><label for="rdbOnlyOwnData" class="hand">仅本人</label><br /> <input type="radio" id="rdbByDetails" name="dataScope" value="ByDetails" /><label for="rdbByDetails" class="hand">按明细设置</label><br /> <input type="radio" id="rdbNotAllowed" name="dataScope" value="NotAllowed" /><label for="rdbNotAllowed" class="hand">无</label><br /> </div> </div>*@ <div position="center" style="" id="centerCon"> <div class="basicTab" id="tabView" selectedidx="1"> <div name="区域" itemdisabled="false"> <div id="dataBasicByArea"> </div> </div> <div name="网点" itemdisabled="false"> <div id="dataBasicByOrganize"> </div> </div> <div name="用户" itemdisabled="false"> <div id="dataBasicByUser"> </div> </div> <div name="角色" itemdisabled="false"> <div id="dataBasicByRole"> </div> </div> </div> </div> <div position="bottom" id="bottomCon" style=""> </div> </div> @section Footer { <script type="text/javascript"> var userId = "@userEntity.Id"; var systemCode = "@ViewBag.SystemCode"; var permissionId = "@moduleEntity.Id"; var gridArea, gridOrganize, gridUser, gridRole; var id = "#dataBasicByArea"; var currentTabId = 0; // tab切换事件处理 function InitPage(iTab) { if (iTab === 0) { id = "#dataBasicByArea"; gridArea = $(id).quiGrid({ columns: [ { display: ‘编号‘, name: ‘Code‘, align: ‘center‘, width: 100 }, { display: ‘名称‘, name: ‘FullName‘, align: ‘center‘, width: 100 }, { display: ‘所属公司‘, name: ‘ParentName‘, align: ‘center‘, width: 100 }, { display: ‘省份‘, name: ‘Province‘, align: ‘center‘, wdith: 120 }, { display: ‘城市‘, name: ‘City‘, align: ‘center‘, wdith: 120 }, { display: ‘区县‘, name: ‘District‘, align: ‘center‘, wdith: 120 } ], url: ‘/Permission/GetUserScopeOrganizeList?systemCode=‘ + systemCode + "&userId=" + userId + "&permissionId=" + permissionId, sortName: ‘Id‘, rownumbers: true, checkbox: true, height: ‘100%‘, width: ‘100%‘, pageSizeOptions: [30, 50, 100], pageSize: 50, showPageInfo: true, onLoading: gridonLoading, onLoaded: gridonLoaded, onBeforeShowData: gridOnBeforeShowData, // onSuccess: gridOnSuccess, onError: gridOnError }); } else if (iTab === 1) { id = "#dataBasicByOrganize"; gridOrganize = $(id).quiGrid({ columns: [ { display: ‘编号‘, name: ‘Code‘, align: ‘center‘, width: 100 }, { display: ‘名称‘, name: ‘FullName‘, align: ‘center‘, width: 100 }, { display: ‘所属公司‘, name: ‘ParentName‘, align: ‘center‘, width: 100 }, { display: ‘省份‘, name: ‘Province‘, align: ‘center‘, wdith: 120 }, { display: ‘城市‘, name: ‘City‘, align: ‘center‘, wdith: 120 }, { display: ‘区县‘, name: ‘District‘, align: ‘center‘, wdith: 120 } ], url: ‘/Permission/GetUserScopeOrganizeList?systemCode=‘ + systemCode + "&userId=" + userId + "&permissionId=" + permissionId, sortName: ‘Id‘, rownumbers: true, checkbox: true, height: ‘100%‘, width: ‘100%‘, pageSizeOptions: [30, 50, 100], pageSize: 50, showPageInfo: true, onLoading: gridonLoading, onLoaded: gridonLoaded, onBeforeShowData: gridOnBeforeShowData, // onSuccess: gridOnSuccess, onError: gridOnError }); } else if (iTab === 2) { id = "#dataBasicByUser"; gridUser = $(id).quiGrid({ columns: [ { display: ‘编号‘, name: ‘Code‘, align: ‘center‘, width: 100 }, { display: ‘登录账号‘, name: ‘NickName‘, align: ‘center‘, width: 100 }, { display: ‘姓名‘, name: ‘RealName‘, align: ‘center‘, width: 100 }, { display: ‘公司‘, name: ‘CompanyName‘, align: ‘center‘, width: 100 }, { display: ‘部门‘, name: ‘DepartmentName‘, align: ‘center‘, width: 100 } ], url: ‘/Permission/GetUserScopeUserList?systemCode=‘ + systemCode + "&userId=" + userId + "&permissionId=" + permissionId, sortName: ‘Id‘, //params: $("#queryForm").formToArray(), rownumbers: true, height: ‘100%‘, width: ‘100%‘, pageSizeOptions: [30, 50, 100], pageSize: 50, checkbox: true, showPageInfo: true, onLoading: gridonLoading, onLoaded: gridonLoaded, onBeforeShowData: gridOnBeforeShowData, onSuccess: gridOnSuccess, onError: gridOnError }); } else if (iTab === 3) { id = "#dataBasicByRole"; gridRole = $(id).quiGrid({ columns: [ { display: ‘编号‘, name: ‘Code‘, align: ‘center‘, width: 100 }, { display: ‘名称‘, name: ‘RealName‘, align: ‘center‘, width: 100 }, { display: ‘备注‘, name: ‘Description‘, align: ‘center‘, width: 300 } ], url: ‘/Permission/GetUserScopeRoleList?systemCode=‘ + systemCode + "&userId=" + userId + "&permissionId=" + permissionId, sortName: ‘Id‘, rownumbers: true, height: ‘100%‘, width: ‘100%‘, pageSizeOptions: [30, 50, 100], pageSize: 50, showPageInfo: true, checkbox: true, onLoading: gridonLoading, onLoaded: gridonLoaded, onBeforeShowData: gridOnBeforeShowData, // onSuccess: gridOnSuccess, onError: gridOnError }); } currentTabId = iTab; objGrid = id; } function initComplete() { // 绑定Tab点击事件 $("#tabView").bind("actived", function (e, i) { if (i === 0) { id = "#dataBasicByArea"; if (gridArea == null) { InitPage(0); } gridArea.resetHeight(); } else if (i === 1) { id = "#dataBasicByOrganize"; if (gridOrganize == null) { InitPage(1); } gridOrganize.resetHeight(); } else if (i === 2) { id = "#dataBasicByUser"; if (gridUser == null) { InitPage(2); } gridUser.resetHeight(); } else if (i === 3) { id = "#dataBasicByRole"; if (gridRole == null) { InitPage(3); } gridRole.resetHeight(); } currentTabId = i; // 设置grid下方统计信息时使用 objGrid = id; //$(id + " .l-bar-text:first").show(); //$(id).unmask(); //$("#queryForm").unmask(); }); InitPage(1); } // 添加 function addUnit() { if (currentTabId === 0) { top.Dialog.open({ URL: "/Area/ChooseArea?systemCode=" + systemCode + "&from=userpermissionscope", Title: "请选择", Width: 800, Height: 600 }); } else if (currentTabId === 1) { top.Dialog.open({ URL: "/Organize/ChooseOrganize?systemCode=" + systemCode + "&from=userpermissionscope", Title: "请选择", Width: 800, Height: 600 }); } else if (currentTabId === 2) { top.Dialog.open({ URL: "/User/ChooseUser?systemCode=" + systemCode + "&from=userpermissionscope", Title: "请选择", Width: 800, Height: 600 }); } else if (currentTabId === 3) { top.Dialog.open({ URL: "/Role/ChooseRole?systemCode=" + systemCode + "&from=userpermissionscope", Title: "请选择", Width: 800, Height: 600 }); } }; // 设置用户的某个权限域的组织范围 用户可以操作那些网点 function grantUserOrganizeScopes(ids) { $("#container").mask("系统处理中..."); $.ajax({ type: ‘POST‘, url: ‘/Permission/GrantUserOrganizeScopes‘, data: { "userId": userId, "organizeIds": ids, "permissionId": permissionId, "systemCode": systemCode }, dataType: ‘json‘, success: function (result) { if (result.Status) { top.Dialog.alert("操作成功:" + result.StatusMessage, function () { refreshGrid(currentTabId); top.Dialog.close(); }); } else { top.Dialog.alert("添加失败:" + result.StatusMessage); } $("#container").unmask(); }, error: function (a) { top.Dialog.alert("访问服务器端出错!"); $("#container").unmask(); } }); }; // 设置用户的某个权限域的用户范围 function grantUserUserScopes(ids) { $("#container").mask("系统处理中..."); $.ajax({ type: ‘POST‘, url: ‘/Permission/GrantUserUserScopes‘, data: { "userId": userId, "userIds": ids, "permissionId": permissionId, "systemCode": systemCode }, dataType: ‘json‘, success: function (result) { if (result.Status) { top.Dialog.alert("操作成功:" + result.StatusMessage, function () { refreshGrid(currentTabId); top.Dialog.close(); }); } else { top.Dialog.alert("添加失败:" + result.StatusMessage); } $("#container").unmask(); }, error: function (a) { top.Dialog.alert("访问服务器端出错!"); $("#container").unmask(); } }); }; // 设置用户的某个权限域的角色范围 function grantUserRoleScopes(ids) { $("#container").mask("系统处理中..."); $.ajax({ type: ‘POST‘, url: ‘/Permission/GrantUserRoleScopes‘, data: { "userId": userId, "roleIds": ids, "permissionId": permissionId, "systemCode": systemCode }, dataType: ‘json‘, success: function(result) { if (result.Status) { top.Dialog.alert("操作成功:" + result.StatusMessage, function() { refreshGrid(currentTabId); top.Dialog.close(); }); } else { top.Dialog.alert("添加失败:" + result.StatusMessage); } $("#container").unmask(); }, error: function(a) { top.Dialog.alert("访问服务器端出错!"); $("#container").unmask(); } }); }; // 移除 function removeUnit() { if (currentTabId === 0) { // revokeUserAreaScopes(gridUser); } else if (currentTabId === 1) { revokeUserOrganizeScopes(gridOrganize); } else if (currentTabId === 2) { revokeUserUserScopes(gridUser); } else if (currentTabId === 3) { revokeUserRoleScopes(gridRole); } }; // 移除用户某个权限于的组织机构范围权限 function revokeUserOrganizeScopes(grid) { var rows = grid.getSelectedRows(); var rowsLength = rows.length; if (rowsLength === 0) { top.Dialog.alert("请选中一条记录。"); } else { top.Dialog.confirm("确定要移除这些公司吗?", function () { $("#container").mask("系统处理中..."); $.ajax({ type: ‘POST‘, url: ‘/Permission/RevokeUserOrganizeScopes‘, data: { "userId": userId, "organizeIds": getSelectIds(grid), "permissionId": permissionId, "systemCode": systemCode }, dataType: ‘json‘, success: function (result) { if (result.Status) { top.Dialog.alert("操作成功:" + result.StatusMessage, function () { //top.document.getElementById("_DialogFrame_selectWin").contentWindow.refreshGrid(currentTabId); }); } else { top.Dialog.alert("操作失败:" + result.StatusMessage); } refreshGrid(currentTabId); $("#container").unmask(); }, error: function (a) { top.Dialog.alert("访问服务器端出错!"); $("#container").unmask(); } }); }); } }; // 移除用户某个权限于的用户范围权限 function revokeUserUserScopes(grid) { var rows = grid.getSelectedRows(); var rowsLength = rows.length; if (rowsLength === 0) { top.Dialog.alert("请选中一条记录。"); } else { top.Dialog.confirm("确定要移除这些用户吗?", function () { $("#container").mask("系统处理中..."); $.ajax({ type: ‘POST‘, url: ‘/Permission/RevokeUserUserScopes‘, data: { "userId": userId, "userIds": getSelectIds(grid), "permissionId": permissionId, "systemCode": systemCode }, dataType: ‘json‘, success: function (result) { if (result.Status) { top.Dialog.alert("操作成功:" + result.StatusMessage, function () { //top.document.getElementById("_DialogFrame_selectWin").contentWindow.refreshGrid(currentTabId); }); } else { top.Dialog.alert("操作失败:" + result.StatusMessage); } refreshGrid(currentTabId); $("#container").unmask(); }, error: function (a) { top.Dialog.alert("访问服务器端出错!"); $("#container").unmask(); } }); }); } }; // 移除用户某个权限于的角色范围权限 function revokeUserRoleScopes(grid) { var rows = grid.getSelectedRows(); var rowsLength = rows.length; if (rowsLength === 0) { top.Dialog.alert("请选中一条记录。"); } else { top.Dialog.confirm("确定要移除这些角色吗?", function() { $("#container").mask("系统处理中..."); $.ajax({ type: ‘POST‘, url: ‘/Permission/RevokeUserRoleScopes‘, data: { "userId": userId, "roleIds": getSelectIds(grid), "permissionId": permissionId, "systemCode": systemCode }, dataType: ‘json‘, success: function(result) { if (result.Status) { top.Dialog.alert("操作成功:" + result.StatusMessage, function() { //top.document.getElementById("_DialogFrame_selectWin").contentWindow.refreshGrid(1); }); } else { top.Dialog.alert("操作失败:" + result.StatusMessage); } refreshGrid(currentTabId); $("#container").unmask(); }, error: function(a) { top.Dialog.alert("访问服务器端出错!"); $("#container").unmask(); } }); }); } }; // 获取所有选中行获取选中行的id function getSelectIds(objGrid) { var selectedRows = objGrid.getSelectedRows(); var selectedRowsLength = selectedRows.length; var ids = ""; for (var i = 0; i < selectedRowsLength; i++) { if (selectedRows[i].Id == null) continue; ids += selectedRows[i].Id + ","; } ids = ids.substring(0, ids.length - 1); return ids; }; // 刷新用户选择 function refreshGrid(iTab) { InitPage(iTab); } //function customHeightSet(contentHeight) { // $("#centerCon").height(contentHeight - 100); //}; </script> }
另外提供一个选择角色的界面
@using DotNet.Model @using DotNet.MVC.Infrastructure @{ ViewBag.Title = "为角色选择添加用户"; Layout = "~/Views/QUILayout/MainContent.cshtml"; BaseOrganizeEntity organizeEntity = ViewBag.OrganizeEntity; if (organizeEntity == null) { organizeEntity = new BaseOrganizeEntity(); } BaseRoleEntity roleEntity = ViewBag.RoleEntity; } @section head{ <!--数据表格start--> <script src="@BusinessSystemInfo.QuiPath/libs/js/table/quiGrid.js" type="text/javascript"></script> <!--数据表格end--> <!-- 表单start --> <script src="@BusinessSystemInfo.QuiPath/libs/js/form/form.js" type="text/javascript"></script> <!-- 表单end --> <!--自动提示框start--> <script src=‘@BusinessSystemInfo.QuiPath/libs/js/form/suggestion.js‘ type=‘text/javascript‘> </script> <!--自动提示框end--> } <form action="" id="queryForm" method="post"> <input type="hidden" id="showEnableUse" name="showEnableUse" value="true" /> <table> <tr> <td> 公司: </td> <td> @if (OperateContext.Current.UserInfo.IsAdministrator) { <div style="position: relative; width: 125px;"> <div id="companyId" name="entity.BaseUser.CompanyId" class="suggestion" url="/Organize/GetOrganizesByCharKey?type=3" minchars="2" delay="1000" reltext="@organizeEntity.FullName" relvalue="@organizeEntity.Id" suggestmode="remote" style="float: left; width: 50px;"> </div> </div> } else { @OperateContext.Current.UserInfo.CompanyName <input type="hidden" name="entity.BaseUser.CompanyId" value="@OperateContext.Current.UserInfo.CompanyId" /> } </td> <td> <select name="chooseType" selwidth="90" data=‘{"list":[{"value":"nickName","key":"登录账号"},{"value":"realName","key":"姓名"},{"value":"Id","key":"Id"},{"value":"simplePinYing","key":"简拼"},{"value":"fullPinYing","key":"全拼"}]}‘></select> </td> <td> <select name="chooseCompare" selwidth="80" data=‘{"list":[{"value":"equals","key":"相等于"},{"value":"like","key":"相似于"}]}‘></select> </td> <td> <input type="text" name="searchKey" /> </td> <td> <button type="button" id="souSuo" onclick="UserList.Query()"> <span class="icon_find">搜索</span> </button> </td> <td> <button type="button" onclick="resetSearch()"> <span class="icon_reload">重置</span> </button> </td> </tr> </table> </form> <div class="padding_right5"> <div id="dataBasic"> </div> </div> @section Footer { <script type="text/javascript"> var grid = null; function initComplete() //初始化函数 { //top.Dialog.close(); //当提交表单刷新本页面时关闭弹窗 //window.setTimeout(function () { // initGrid(); //延迟初始化grid组件 //}, 100); try { UserList.InitGrid(); } catch (e) { alert(e.message); } } var systemCode = "@ViewBag.SystemCode"; var roleId = "@roleEntity.Id"; var UserList = { InitGrid: function () { grid = $("#dataBasic").quiGrid({ columns: [ { display: ‘公司名称‘, name: ‘CompanyName‘, width: 160 }, //{ display: ‘部门名称‘, name: ‘DepartmentName‘, width: 160 }, { display: ‘登录账号‘, name: ‘NickName‘, width: 120 }, { display: ‘真实姓名‘, name: ‘RealName‘, width: 120 }, { display: ‘编号‘, name: ‘Code‘, width: 90 } ], url: ‘/User/GetList‘, params: $("#queryForm").formToArray(), sortName: ‘CompanyName‘, rownumbers: true, checkbox: true, height: ‘100%‘, width: ‘100%‘, pageSizeOptions: [10, 15, 20, 30, 50], pageSize: 15, toolbar: { //工具栏配置 items: [ { text: ‘批量添加‘, click: UserList.addUnit, iconClass: ‘icon_add‘ } ] }, onLoading: function () { $("#dataBasic").mask("加载中..."); $(".l-bar-text:first").hide(); }, onLoaded: function () { $("#dataBasic").unmask(); }, onError: gridOnError, onSuccess: gridOnSuccess //加载完成之后,不管数据有没有正确加载 }); }, //获取所有选中行 GetSelectId: function (grid) { var selectedRows = grid.getSelectedRows(); var selectedRowsLength = selectedRows.length; var listId = ""; for (var i = 0; i < selectedRowsLength; i++) { listId += selectedRows[i].Id + ","; } if (listId != "") { listId = listId.substring(0, listId.length - 1); } return listId; }, // 重置; ResetPageHandler: function () { var url = window.location.href; Utilities.ResetHandler(url); }, // 添加 addUnit: function () { var rows = grid.getSelectedRows(); var rowsLength = rows.length; if (rowsLength === 0) { top.Dialog.alert("请选中要添加的用户。"); return; } top.Dialog.confirm("确定要添加选中的用户吗?", function () { var userIds = UserList.GetSelectId(grid); $("#dataBasic").mask("系统处理中..."); $.post("/Role/UpdateRoleUser", { "action": "addToRole", "roleIds": roleId, "userIds": userIds, "systemCode": systemCode }, function (result) { if (result.Status) { top.Dialog.alert("操作成功:" + result.StatusMessage, function () { top.document.getElementById("_DialogFrame_selectWin").contentWindow.refresh(); }); } else { top.Dialog.alert("添加失败:" + result.StatusMessage); } $("#dataBasic").unmask(); }, "json"); }); }, // 查询 Query: function () { try { var queryArray = $("#queryForm").formToArray(); grid.setOptions({ params: queryArray, url: ‘/User/GetList‘ }); grid.setNewPage(1); //grid.loadData(); } catch (e) { alert(e); } } }; </script> }
标签:
原文地址:http://www.cnblogs.com/hnsongbiao/p/5668674.html