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();
|
|
}
|
|
}
|
|
} |