334 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			334 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Data;
 | |
| using System.Data.SqlClient;
 | |
| using System.Linq;
 | |
| using BLL;
 | |
| 
 | |
| namespace FineUIPro.Web.SysManage
 | |
| {
 | |
|     public partial class Register : PageBase
 | |
|     {
 | |
|         /// <summary>
 | |
|         /// 
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         protected void Page_Load(object sender, EventArgs e)
 | |
|         {
 | |
|             if (!IsPostBack)
 | |
|             {  ////权限按钮方法
 | |
|                 this.GetButtonPower();
 | |
|                 // 绑定表格
 | |
|                 this.BindGrid();
 | |
|                 ConstValue.InitConstValueCheckBoxList(this.ckMenuType, this.rbMenuType.SelectedValue);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         #region 角色下拉框绑定数据
 | |
|         /// <summary>
 | |
|         /// 绑定数据
 | |
|         /// </summary>
 | |
|         private void BindGrid()
 | |
|         {
 | |
|             string strSql = @"SELECT Roles.RoleId,Roles.RoleName,Roles.RoleCode,Roles.Def,Roles.IsSystemBuilt"
 | |
|                           + @" FROM dbo.Sys_Role AS Roles " 
 | |
|                           + @" WHERE 1=1 ";
 | |
|             if (!string.IsNullOrEmpty(strSql))
 | |
|             {
 | |
|                 List<SqlParameter> listStr = new List<SqlParameter>();
 | |
|                 if (!string.IsNullOrEmpty(this.txtRoleName.Text.Trim()))
 | |
|                 {
 | |
|                     strSql += " AND RoleName LIKE @RoleName";
 | |
|                     listStr.Add(new SqlParameter("@RoleName", "%" + this.txtRoleName.Text.Trim() + "%"));
 | |
|                 }
 | |
|                 if (this.rbIsOfficce.SelectedValue == "1")
 | |
|                 {
 | |
|                     strSql += " AND IsOffice = '1'";
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     strSql += " AND (IsOffice = '0' or IsOffice is null)";
 | |
|                 }
 | |
|                 SqlParameter[] parameter = listStr.ToArray();
 | |
|                 DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
 | |
| 
 | |
|                 Grid1.RecordCount = tb.Rows.Count;
 | |
|                 var table = this.GetPagedDataTable(Grid1, tb);
 | |
|                 Grid1.DataSource = table;
 | |
|                 Grid1.DataBind();
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 Grid1.DataSource = null;
 | |
|                 Grid1.DataBind();
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 角色下拉框查询
 | |
|         /// <summary>
 | |
|         /// 下拉框查询
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         protected void TextBox_TextChanged(object sender, EventArgs e)
 | |
|         {
 | |
|             this.BindGrid();
 | |
|         }
 | |
|         #endregion 
 | |
| 
 | |
|         #region 下拉框选择
 | |
|         /// <summary>
 | |
|         ///  角色下拉框选择
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         protected void drpRoleId_TextChanged(object sender, EventArgs e)
 | |
|         {
 | |
|             this.SelectedIndexChanged();
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         ///  菜单类型选择
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         protected void ckMenuType_OnSelectedIndexChanged(object sender, EventArgs e)
 | |
|         {
 | |
|             this.SelectedIndexChanged();
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 选择变化事件
 | |
|         /// </summary>
 | |
|         private void SelectedIndexChanged()
 | |
|         {
 | |
|             this.InitMenuTree(this.drpRole.Value, String.Join(", ", this.ckMenuType.SelectedValueArray));                  
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 初始化树
 | |
|         /// <summary>
 | |
|         /// 初始化树
 | |
|         /// </summary>
 | |
|         /// <param name="menuList">菜单集合</param>
 | |
|         private void InitMenuTree(string roleId, string menuType)
 | |
|         {
 | |
|             this.tvMenu.Nodes.Clear();
 | |
|             var menus = BLL.SysMenuService.GetIsUsedMenuListByMenuType(menuType);
 | |
|             if (menus.Count() > 0)
 | |
|             {
 | |
|                 TreeNode rootNode = new TreeNode
 | |
|                 {
 | |
|                     Text = "菜单",
 | |
|                     NodeID = "0",
 | |
|                     EnableCheckBox = true,
 | |
|                     EnableCheckEvent = true,
 | |
|                     Expanded = true
 | |
|                 };
 | |
|                 this.tvMenu.Nodes.Add(rootNode);
 | |
|                 this.BoundTree(rootNode.Nodes, menus, rootNode.NodeID, roleId);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 遍历增加子节点
 | |
|         /// </summary>
 | |
|         /// <param name="nodes"></param>
 | |
|         /// <param name="menuId"></param>
 | |
|         private void BoundTree(TreeNodeCollection nodes, List<Model.Sys_Menu> sysMenus, string superMenuId, string roleId)
 | |
|         {
 | |
|             var menus = sysMenus.Where(x => x.SuperMenu == superMenuId).Distinct().OrderBy(x => x.SortIndex);
 | |
|             if (menus.Count() > 0)
 | |
|             {
 | |
|                 foreach (var item in menus)
 | |
|                 {
 | |
|                     TreeNode chidNode = new TreeNode
 | |
|                     {
 | |
|                         Text = item.MenuName,
 | |
|                         NodeID = item.MenuId,
 | |
|                         EnableCheckBox = true,
 | |
|                         EnableCheckEvent = true
 | |
|                     };
 | |
|                     if (BLL.RolePowerService.IsHavePowerByRoleIdMenuId(roleId, chidNode.NodeID))
 | |
|                     {
 | |
|                         chidNode.Checked = true;
 | |
|                         chidNode.Expanded = true;
 | |
|                         chidNode.Selectable = true;
 | |
|                     }
 | |
|                     nodes.Add(chidNode);
 | |
| 
 | |
|                     if (item.IsEnd == true)
 | |
|                     {
 | |
|                         var buttons = BLL.ButtonToMenuService.GetButtonToMenuListByMenuId(item.MenuId);
 | |
|                         if (buttons.Count() > 0)
 | |
|                         {       ///该菜单、角色下按钮集合
 | |
|                             string[] buttonList = BLL.ButtonPowerService.GetButtonPowerList(this.drpRole.Value, item.MenuId);
 | |
|                             foreach (var itemButton in buttons)
 | |
|                             {
 | |
|                                 TreeNode chidButtonNode = new TreeNode
 | |
|                                 {
 | |
|                                     Text = itemButton.ButtonName,
 | |
|                                     NodeID = itemButton.ButtonToMenuId,
 | |
|                                     EnableCheckBox = true,
 | |
|                                     EnableCheckEvent = true
 | |
|                                 };
 | |
| 
 | |
|                                 if (buttonList != null && buttonList.Contains(chidButtonNode.Text))
 | |
|                                 {
 | |
|                                     chidButtonNode.Checked = true;
 | |
|                                     chidButtonNode.Expanded = true;
 | |
|                                 }
 | |
|                                 chidNode.Nodes.Add(chidButtonNode);
 | |
|                             }
 | |
|                         }
 | |
|                     }
 | |
|                     else
 | |
|                     {
 | |
|                         this.BoundTree(chidNode.Nodes, sysMenus, item.MenuId, roleId);
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 全选、全不选
 | |
|         /// <summary>
 | |
|         /// 全选、全不选
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         protected void tvMenu_NodeCheck(object sender, FineUIPro.TreeCheckEventArgs e)
 | |
|         {
 | |
|             if (e.Checked)
 | |
|             {
 | |
|                 this.tvMenu.CheckAllNodes(e.Node.Nodes);               
 | |
|                 SetCheckParentNode(e.Node);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 this.tvMenu.UncheckAllNodes(e.Node.Nodes);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 选中父节点
 | |
|         /// </summary>
 | |
|         /// <param name="node"></param>
 | |
|         private void SetCheckParentNode(TreeNode node)
 | |
|         {
 | |
|             if (node.ParentNode != null && node.ParentNode.NodeID != "0")
 | |
|             {
 | |
|                 node.ParentNode.Checked = true;
 | |
|                 if (node.ParentNode.ParentNode.NodeID != "0")
 | |
|                 {
 | |
|                     SetCheckParentNode(node.ParentNode);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 获取按钮权限
 | |
|         /// <summary>
 | |
|         /// 获取按钮权限
 | |
|         /// </summary>
 | |
|         /// <param name="button"></param>
 | |
|         /// <returns></returns>
 | |
|         private void GetButtonPower()
 | |
|         {
 | |
|             var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.RolePowerMenuId);
 | |
|             if (buttonList.Count() > 0)
 | |
|             {
 | |
|                 if (buttonList.Contains(BLL.Const.BtnSave))
 | |
|                 {
 | |
|                     this.btnSave.Hidden = false;
 | |
|                     this.btnCancel.Hidden = false;
 | |
|                 }
 | |
|             }
 | |
|             if (this.CurrUser.UserId == BLL.Const.sysglyId)
 | |
|             {
 | |
|                 this.btnSave.Hidden = false;
 | |
|                 this.btnCancel.Hidden = false;
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 保存按钮事件
 | |
|         /// <summary>
 | |
|         /// 保存按钮事件
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         protected void btnSave_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             string roleId = this.drpRole.Value;
 | |
|             string menuTyp = String.Join(", ", this.ckMenuType.SelectedValueArray);
 | |
|             if (!String.IsNullOrEmpty(roleId))
 | |
|             {
 | |
|                 BLL.ButtonPowerService.DeleteButtonPowerByRoleIdMenuType(roleId,menuTyp);
 | |
|                 BLL.RolePowerService.DeleteRolePowerByRoleIdMenuType(roleId,menuTyp);
 | |
|                 TreeNode[] nodes = this.tvMenu.GetCheckedNodes();
 | |
|                 if (nodes.Length > 0)
 | |
|                 {
 | |
|                     foreach (TreeNode tn in nodes)
 | |
|                     {
 | |
|                         if (tn.NodeID != "0")
 | |
|                         {
 | |
|                             if (BLL.RolePowerService.IsExistMenu(tn.NodeID))
 | |
|                             {
 | |
|                                 Model.Sys_RolePower newPower = new Model.Sys_RolePower
 | |
|                                 {
 | |
|                                     RoleId = roleId,
 | |
|                                     MenuId = tn.NodeID,
 | |
|                                     MenuType = menuTyp,
 | |
|                                     IsOffice =false,
 | |
|                                 };
 | |
|                                 if (this.rbMenuType.SelectedValue == "MenuType_S")
 | |
|                                 {
 | |
|                                     newPower.IsOffice = true;
 | |
|                                 }
 | |
|                                 BLL.RolePowerService.SaveRolePower(newPower);
 | |
|                             }
 | |
| 
 | |
|                             if (BLL.ButtonPowerService.isExistButtonToMenu(tn.NodeID))
 | |
|                             {
 | |
|                                 Model.Sys_ButtonPower btn = new Model.Sys_ButtonPower
 | |
|                                 {
 | |
|                                     RoleId = roleId,
 | |
|                                     MenuId = tn.ParentNode.NodeID,                                    
 | |
|                                     ButtonToMenuId = tn.NodeID
 | |
|                                 };
 | |
|                                 BLL.ButtonPowerService.SaveButtonPower(btn);
 | |
|                             }
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|                 
 | |
|                 BLL.LogService.AddSys_Log(this.CurrUser, string.Empty, string.Empty, BLL.Const.RolePowerMenuId, Const.BtnModify);
 | |
|                 ShowNotify("保存成功!", MessageBoxIcon.Success);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 ShowNotify("请选择角色!", MessageBoxIcon.Warning);
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 取消按钮事件
 | |
|         /// </summary>
 | |
|         /// <param name="sender"></param>
 | |
|         /// <param name="e"></param>
 | |
|         protected void btnCancel_Click(object sender, EventArgs e)
 | |
|         {
 | |
|             this.SelectedIndexChanged();
 | |
|         }
 | |
| 
 | |
|         protected void rbMenuType_SelectedIndexChanged(object sender, EventArgs e)
 | |
|         {
 | |
|             ConstValue.InitConstValueCheckBoxList(this.ckMenuType, this.rbMenuType.SelectedValue);
 | |
|             this.SelectedIndexChanged();
 | |
|         }
 | |
|     }
 | |
| } |