ZHJA_HJGL/HJGL_ZH/FineUIPro.Web/common/ProjectSet/ProjectUserPower.aspx.cs

445 lines
15 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
namespace FineUIPro.Web.common.ProjectSet
{
public partial class ProjectUserPower : PageBase
{
/// <summary>
/// 用户主键
/// </summary>
public string UserId
{
get
{
return (string)ViewState["UserId"];
}
set
{
ViewState["UserId"] = value;
}
}
/// <summary>
/// 项目主键
/// </summary>
public string ProjectId
{
get
{
return (string)ViewState["ProjectId"];
}
set
{
ViewState["ProjectId"] = value;
}
}
/// <summary>
/// 菜单模块
/// </summary>
public string MenuModuleId
{
get
{
return (string)ViewState["MenuModuleId"];
}
set
{
ViewState["MenuModuleId"] = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
///加载菜单树
this.InitTreeProjectSystem();
this.InitMenuTree();
}
}
#region
/// <summary>
/// 加载项目系统树
/// </summary>
private void InitTreeProjectSystem()
{
this.tvProjectSystem.Nodes.Clear();
TreeNode rootNode = new TreeNode();
rootNode.Text = "项目系统";
rootNode.NodeID = "0";
rootNode.Expanded = true;
this.tvProjectSystem.Nodes.Add(rootNode);
BoundProjectSystemTree(rootNode.Nodes);
}
/// <summary>
/// 添加项目
/// </summary>
/// <param name="nodes"></param>
/// <param name="parentId"></param>
/// <param name="type"></param>
private void BoundProjectSystemTree(TreeNodeCollection nodes)
{
List<Model.Base_Project> projectLists = (from x in Funs.DB.Base_Project select x).ToList();
if (projectLists.Count() > 0)
{
TreeNode tn = null;
foreach (var q in projectLists)
{
tn = new TreeNode();
tn.Text = q.ProjectName;
tn.NodeID = q.ProjectId;
nodes.Add(tn);
var systems = BLL.CommonService.GetIsMoreProjectSystemList();
TreeNode s = null;
foreach (var sys in systems)
{
s = new TreeNode();
s.Text = sys.Text;
s.NodeID = sys.Value + "|" + q.ProjectId;
s.EnableClickEvent = true;
tn.Nodes.Add(s);
}
}
}
}
#endregion
#region
/// <summary>
/// 初始化树
/// </summary>
private void InitUserTree(string projectId)
{
this.tvUser.Nodes.Clear();
TreeNode rootNode = new TreeNode();//定义根节点
rootNode.Text = "单位用户";
rootNode.NodeID = "0";
rootNode.Expanded = true;
this.tvUser.Nodes.Add(rootNode);
var pUnit = from x in BLL.Funs.DB.Project_Unit
join z in BLL.Funs.DB.Base_Unit on x.UnitId equals z.UnitId // 用于排序
orderby z.UnitCode
where x.ProjectId == projectId
select new { x.UnitId, z.UnitName };
foreach (var q in pUnit)
{
TreeNode tnUnit = new TreeNode();
tnUnit.Text = q.UnitName;
tnUnit.NodeID = q.UnitId;
rootNode.Nodes.Add(tnUnit);
var pUser = from x in BLL.Funs.DB.Project_User
join y in BLL.Funs.DB.Sys_User on x.UserId equals y.UserId // 用于排序
orderby y.UserCode
where x.ProjectId == projectId && y.UnitId==q.UnitId
select new {x.UserId,y.UserName};
foreach (var user in pUser)
{
TreeNode tnUser = new TreeNode();
tnUser.Text = user.UserName;
tnUser.NodeID = user.UserId;
tnUser.EnableClickEvent = true;
tnUnit.Nodes.Add(tnUser);
}
}
}
#endregion
#region ()
/// <summary>
/// 加载菜单树:动态加载
/// </summary>
private void InitMenuTree()
{
this.tvMenu.Nodes.Clear();
TreeNode rootNode = new TreeNode();//定义根节点
rootNode.Text = "系统功能";
rootNode.NodeID = "0";
rootNode.Expanded = true;
rootNode.EnableCheckBox = true;
this.tvMenu.Nodes.Add(rootNode);
// this.GetNodes(rootNode.ChildNodes, null);
}
/// <summary>
/// 加载菜单树:动态加载
/// </summary>
private void MenuBindDataBySystem(string systemId)
{
this.tvMenu.Nodes.Clear();
TreeNode rootNode = new TreeNode();//定义根节点
rootNode.Text = "系统功能";
rootNode.NodeID = "0";
rootNode.Expanded = true;
rootNode.EnableCheckBox = true;
rootNode.EnableCheckEvent = true;
this.tvMenu.Nodes.Add(rootNode);
this.GetNodes(rootNode.Nodes, null, systemId);
}
/// <summary>
/// 遍历节点方法
/// </summary>
/// <param name="nodes">节点集合</param>
/// <param name="parentId">父节点</param>
private void GetNodes(TreeNodeCollection nodes, string parentId, string systemId)
{
List<Model.Sys_Menu> menu = null;
if (parentId == null)
{
menu = (from x in BLL.Funs.DB.Sys_Menu where x.SuperMenu == "0" && x.MenuModule == systemId orderby x.SortIndex select x).ToList();
}
else
{
menu = (from x in BLL.Funs.DB.Sys_Menu where x.SuperMenu == parentId orderby x.SortIndex select x).ToList();
}
foreach (var q in menu)
{
TreeNode newNode = new TreeNode();
newNode.Text = q.MenuName;
newNode.NodeID = q.MenuId;
newNode.EnableCheckEvent = true;
newNode.EnableCheckBox = true;
newNode.Selectable = true;
nodes.Add(newNode);
if (q.SuperMenu != "0")
{
var buttons = (from x in BLL.Funs.DB.ButtonToMenu where x.MenuId == q.MenuId orderby x.SortIndex select x).ToList();
foreach (var b in buttons)
{
TreeNode bt = new TreeNode();
bt.Text = b.ButtonName;
bt.NodeID = b.ButtonToMenuId;
bt.EnableCheckEvent = true;
bt.EnableCheckBox = true;
bt.Selectable = true;
newNode.Nodes.Add(bt);
}
}
}
for (int i = 0; i < nodes.Count; i++)
{
GetNodes(nodes[i].Nodes, nodes[i].NodeID, systemId);
}
}
#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="sender"></param>
/// <param name="e"></param>
protected void tvUser_NodeCommand(object sender, FineUIPro.TreeCommandEventArgs e)
{
UserId = this.tvUser.SelectedNode.NodeID;
lbUserName.Text = "用户名称:" + this.tvUser.SelectedNode.Text.Trim();
if (MenuModuleId != null && MenuModuleId.Length < 3)
{
MenuBindDataBySystem(MenuModuleId);
this.SetPowerToMenu();
}
}
protected void tvProjectSystem_NodeCommand(object sender, FineUIPro.TreeCommandEventArgs e)
{
string pro = this.tvProjectSystem.SelectedNode.NodeID;
MenuModuleId = pro.Split('|')[0];
ProjectId = this.tvProjectSystem.SelectedNode.ParentNode.NodeID;
lbSystemName.Text = "项目系统:" + this.tvProjectSystem.SelectedNode.ParentNode.Text.Trim() + "《" + this.tvProjectSystem.SelectedNode.Text.Trim() + "》";
if (MenuModuleId.Length < 3)
{
this.InitUserTree(ProjectId);
}
}
#endregion
#region
/// <summary>
/// 提交按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
{
if (BLL.CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.ProjectUserPowerMenuId, BLL.Const.BtnSave))
{
if (!String.IsNullOrEmpty(this.UserId) && !string.IsNullOrEmpty(this.ProjectId) && MenuModuleId != "0" && MenuModuleId.Length<3)
{
BLL.Project_UserButtonPowerService.DeleteProject_UserButtonPower(this.UserId, MenuModuleId, this.ProjectId);
BLL.Project_UserPowerService.DeleteUserPower(UserId, MenuModuleId, this.ProjectId);
foreach (TreeNode tn in this.tvMenu.GetCheckedNodes())
{
if (tn.NodeID != "0")
{
if (BLL.CommonService.IsExistMenu(tn.NodeID))
{
Model.Project_UserPower newPower = new Model.Project_UserPower();
newPower.UserId = this.UserId;
newPower.ProjectId = this.ProjectId;
newPower.MenuId = tn.NodeID;
BLL.Project_UserPowerService.SaveProject_UserPower(newPower);
}
if (BLL.CommonService.isExistButtonToMenu(tn.NodeID))
{
Model.Project_UserButtonPower btn = new Model.Project_UserButtonPower();
btn.ProjectId = this.ProjectId;
btn.UserId = this.UserId;
btn.MenuId = tn.ParentNode.NodeID;
btn.ButtonToMenuId = tn.NodeID;
BLL.Project_UserButtonPowerService.SaveProject_UserButtonPower(btn);
}
}
}
BLL.Sys_LogService.AddLog(BLL.Const.System_1, this.CurrUser.LoginProjectId, this.CurrUser.UserId, "提交项目用户菜单授权");
ScriptManager.RegisterStartupScript(this, typeof(string), "_alert", "alert('提交成功!')", true);
}
else
{
ScriptManager.RegisterStartupScript(this, typeof(string), "_alert", "alert('请选择系统、项目、用户!')", true);
}
}
else
{
ShowNotify("您没有这个权限,请与管理员联系!");
}
}
#endregion
/// <summary>
/// 取消按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnCancel_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(UserId))
{
string[] powerToMenuId = BLL.Project_UserPowerService.GetProject_UserPowerMenuIdByUserId(UserId, this.ProjectId);
if (powerToMenuId != null)
{
GetCheckedNodes(this.tvMenu.Nodes[0].Nodes, powerToMenuId);
}
}
}
#region
/// <summary>
/// 设置角色对应菜单权限
/// </summary>
protected void SetPowerToMenu()
{
if (!String.IsNullOrEmpty(UserId))
{
string[] powerToMenuId = BLL.Project_UserPowerService.GetProject_UserPowerMenuIdByUserId(UserId, this.ProjectId);
if (powerToMenuId != null)
{
GetCheckedNodes(this.tvMenu.Nodes[0].Nodes, powerToMenuId);
}
}
}
/// <summary>
/// 遍历获取有权限的节点
/// </summary>
/// <param name="nodes">节点集合</param>
/// <param name="power">权限集合</param>
private void GetCheckedNodes(TreeNodeCollection nodes, string[] powerToMenuId)
{
foreach (TreeNode tn in nodes)
{
tn.Checked = false;
tn.Expanded = false;
if (powerToMenuId.Contains(tn.NodeID))
{
tn.Checked = true;
tn.Expanded = true;
}
if (tn.ParentNode.NodeID != "0")
{
if (powerToMenuId.Contains(tn.ParentNode.NodeID))
{
var btpower = from x in BLL.Funs.DB.Project_UserButtonPower
where x.UserId == UserId && x.MenuId == tn.ParentNode.NodeID && x.ProjectId == this.ProjectId
select x.ButtonToMenuId;
if (btpower.Contains(tn.NodeID))
{
tn.Checked = true;
}
}
}
}
for (int i = 0; i < nodes.Count; i++)
{
GetCheckedNodes(nodes[i].Nodes, powerToMenuId);
}
}
#endregion
}
}