424 lines
13 KiB
C#
424 lines
13 KiB
C#
|
using DH.RBAC.Common;
|
|||
|
using DH.RBAC.Logic.Sys;
|
|||
|
using DH.RBAC.Model.Sys;
|
|||
|
using DH.RBAC.Utility.Other;
|
|||
|
using Sunny.UI;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.ComponentModel;
|
|||
|
using System.Data;
|
|||
|
using System.Drawing;
|
|||
|
using System.IO;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using System.Windows.Forms;
|
|||
|
|
|||
|
namespace DH.RBAC.Page.Sys.Permission
|
|||
|
{
|
|||
|
public partial class AddPermissionForm : UIForm
|
|||
|
{
|
|||
|
private SysPermissionLogic permissionLogic;
|
|||
|
|
|||
|
|
|||
|
public AddPermissionForm()
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
permissionLogic = new SysPermissionLogic();
|
|||
|
}
|
|||
|
|
|||
|
#region 标题栏
|
|||
|
private void btnClose_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
FormHelper.subForm = null;
|
|||
|
ParentPage.btnQuery_Click(null, null);
|
|||
|
this.Close();
|
|||
|
}
|
|||
|
private Point mPoint;
|
|||
|
private void titlePanel_MouseDown(object sender, MouseEventArgs e)
|
|||
|
{
|
|||
|
mPoint = new Point(e.X, e.Y);
|
|||
|
}
|
|||
|
|
|||
|
private void titlePanel_MouseMove(object sender, MouseEventArgs e)
|
|||
|
{
|
|||
|
if (e.Button == MouseButtons.Left)
|
|||
|
{
|
|||
|
this.Location = new Point(this.Location.X + e.X - mPoint.X, this.Location.Y + e.Y - mPoint.Y);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void btnClose_MouseEnter(object sender, EventArgs e)
|
|||
|
{
|
|||
|
btnClose.BackColor = Color.FromArgb(231, 231, 231);
|
|||
|
}
|
|||
|
|
|||
|
private void btnClose_MouseLeave(object sender, EventArgs e)
|
|||
|
{
|
|||
|
btnClose.BackColor = Color.Transparent;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
public PermissionPage ParentPage { get; set; }
|
|||
|
public string Id { get; set; }
|
|||
|
|
|||
|
private int symbolIndex;
|
|||
|
|
|||
|
Dictionary<string, TreeNode> nodeDict = new Dictionary<string, TreeNode>();
|
|||
|
/// <summary>
|
|||
|
/// 画面加载,读取用户信息,显示在界面上
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void AddPermissionForm_Load(object sender, EventArgs e)
|
|||
|
{
|
|||
|
txtType.Items.Add("请选择");
|
|||
|
txtType.Items.Add("主菜单");
|
|||
|
txtType.Items.Add("子菜单");
|
|||
|
txtType.Items.Add("按钮");
|
|||
|
txtType.SelectedIndex = 0;
|
|||
|
//获取部门下拉列表的值
|
|||
|
bool flag = GetPermissionCombox();
|
|||
|
if (!flag)
|
|||
|
{
|
|||
|
btnClose_Click(null, null);
|
|||
|
return;
|
|||
|
}
|
|||
|
if (StringHelper.IsNullOrEmpty(Id))
|
|||
|
{
|
|||
|
lblTitle.Text = "新增权限";
|
|||
|
txtEnCode.Enabled = true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
lblTitle.Text = "修改权限";
|
|||
|
txtEnCode.Enabled = false;
|
|||
|
}
|
|||
|
//获取部门下拉列表的值
|
|||
|
if (StringHelper.IsNullOrEmpty(Id))
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
//获得用户信息
|
|||
|
SysPermission entity = permissionLogic.Get(Id);
|
|||
|
if (entity == null)
|
|||
|
{
|
|||
|
AntdUI.Message.warn(this, "权限信息不存在!", autoClose: 3);
|
|||
|
|
|||
|
btnClose_Click(null, null);
|
|||
|
return;
|
|||
|
}
|
|||
|
//给文本框赋值
|
|||
|
txtEnCode.Text = entity.EnCode;
|
|||
|
txtName.Text = entity.Name;
|
|||
|
uiComboTreeView1.SelectedNode = GetNode(entity.ParentId);
|
|||
|
txtType.SelectedIndex = entity.Type.Value == 2 ? 1 : entity.Type.Value == 0 ? 2 : 3;
|
|||
|
txtIcon.Text = entity.Icon;
|
|||
|
symbolIndex = entity.SymbolIndex;
|
|||
|
txtSortCode.Value = entity.SortCode.Value;
|
|||
|
txtRemark.Text = entity.Remark;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 获得节点
|
|||
|
/// </summary>
|
|||
|
/// <param name="parentId"></param>
|
|||
|
/// <returns></returns>
|
|||
|
private TreeNode GetNode(string parentId)
|
|||
|
{
|
|||
|
if (nodeDict.ContainsKey(parentId))
|
|||
|
{
|
|||
|
return nodeDict[parentId];
|
|||
|
}
|
|||
|
return nodeDict.FirstOrDefault().Value;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 获得权限下拉列表
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
private bool GetPermissionCombox()
|
|||
|
{
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
var data = permissionLogic.GetList();
|
|||
|
var treeList = new List<TreeSelect>();
|
|||
|
foreach (SysPermission item in data)
|
|||
|
{
|
|||
|
TreeSelect model = new TreeSelect();
|
|||
|
model.id = item.Id;
|
|||
|
model.text = item.Name;
|
|||
|
model.parentId = item.ParentId;
|
|||
|
treeList.Add(model);
|
|||
|
}
|
|||
|
BindData(uiComboTreeView1, treeList);
|
|||
|
return true;
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
AntdUI.Message.warn(this, "网络或服务器异常,请稍后重试!", autoClose: 3);
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 绑定TreeView数据
|
|||
|
/// </summary>
|
|||
|
/// <param name="treeView"></param>
|
|||
|
/// <param name="list"></param>
|
|||
|
private void BindData(UIComboTreeView treeView, List<TreeSelect> list)
|
|||
|
{
|
|||
|
bool first = true;
|
|||
|
List<TreeSelect> list2 = list.Where(it => it.parentId == "0").ToList();
|
|||
|
foreach (TreeSelect select in list2)
|
|||
|
{
|
|||
|
TreeNode rootNode = new TreeNode();
|
|||
|
rootNode.Name = select.id;
|
|||
|
rootNode.Tag = select.id;
|
|||
|
rootNode.Text = select.text;
|
|||
|
treeView.Nodes.Add(rootNode);
|
|||
|
nodeDict.Add(select.id, rootNode);
|
|||
|
if (first)
|
|||
|
{
|
|||
|
treeView.SelectedNode = rootNode;
|
|||
|
first = false;
|
|||
|
}
|
|||
|
BindChildAreas(rootNode, list);//调用添加子节点的方法
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void BindChildAreas(TreeNode fNode, List<TreeSelect> list)
|
|||
|
{
|
|||
|
string fAreaId = fNode.Name; //父id
|
|||
|
List<TreeSelect> list2 = list.Where(it => it.parentId == fAreaId).ToList();
|
|||
|
if (list2.IsNullOrEmpty()) //递归终止,区域不包含子区域时
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
foreach (TreeSelect select in list2)
|
|||
|
{
|
|||
|
TreeNode node = new TreeNode();
|
|||
|
node.Name = select.id;
|
|||
|
node.Tag = select.id; ;
|
|||
|
node.Text = select.text;
|
|||
|
//添加子节点
|
|||
|
fNode.Nodes.Add(node);
|
|||
|
nodeDict.Add(select.id, node);
|
|||
|
BindChildAreas(node, list);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 确定按钮点击事件
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void btnConfirm_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (StringHelper.IsNullOrEmpty(Id))
|
|||
|
{
|
|||
|
DoAdd();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
DoUpdate();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 执行更新操作
|
|||
|
/// </summary>
|
|||
|
private void DoUpdate()
|
|||
|
{
|
|||
|
bool flag = ChechEmpty();
|
|||
|
if (!flag)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
SysPermission model = new SysPermission();
|
|||
|
model.Id = Id;
|
|||
|
model.ParentId = uiComboTreeView1.SelectedNode.Name;
|
|||
|
model.EnCode = txtEnCode.Text;
|
|||
|
model.Name = txtName.Text;
|
|||
|
model.Icon = txtIcon.Text;
|
|||
|
model.SymbolIndex = symbolIndex;
|
|||
|
model.Remark = txtRemark.Text;
|
|||
|
model.Type = Convert.ToInt32(GetPermissionType());
|
|||
|
model.SortCode = txtSortCode.Value;
|
|||
|
model.ModifyUserId = GlobalConfig.CurrentUser.Id;
|
|||
|
|
|||
|
SysPermissionLogic pLogic = new SysPermissionLogic();
|
|||
|
//当前类型是啥
|
|||
|
if (model.Type == 2)
|
|||
|
{
|
|||
|
model.ParentId = "0";
|
|||
|
}
|
|||
|
else if (model.Type == 0)
|
|||
|
{
|
|||
|
SysPermission permission = pLogic.Get(model.ParentId);
|
|||
|
if (permission.Type != 2)
|
|||
|
{
|
|||
|
AntdUI.Message.warn(this, "当前类型的父级必须为主菜单!", autoClose: 3);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SysPermission permission = pLogic.Get(model.ParentId);
|
|||
|
if (permission.Type != 0)
|
|||
|
{
|
|||
|
AntdUI.Message.warn(this, "当前类型的父级必须为子菜单!", autoClose: 3);
|
|||
|
|
|||
|
return;
|
|||
|
}
|
|||
|
}
|
|||
|
int row = permissionLogic.AppUpdate(model, model.ModifyUserId);
|
|||
|
if (row == 0)
|
|||
|
{
|
|||
|
AntdUI.Message.warn(this, "对不起,操作失败!", autoClose: 3);
|
|||
|
|
|||
|
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
btnClose_Click(null, null);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 数据校验
|
|||
|
/// </summary>
|
|||
|
/// <param name="checkPassword"></param>
|
|||
|
/// <returns></returns>
|
|||
|
private bool ChechEmpty()
|
|||
|
{
|
|||
|
if (StringHelper.IsNullOrEmpty(txtEnCode.Text))
|
|||
|
{
|
|||
|
AntdUI.Message.warn(this, "编码不能为空!", autoClose: 3);
|
|||
|
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
if (StringHelper.IsNullOrEmpty(txtName.Text))
|
|||
|
{
|
|||
|
AntdUI.Message.warn(this, "名称不能为空!", autoClose: 3);
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
if (uiComboTreeView1.SelectedNode == null)
|
|||
|
{
|
|||
|
AntdUI.Message.warn(this, "父级不能为空!", autoClose: 3);
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
if (txtType.SelectedIndex == 0)
|
|||
|
{
|
|||
|
AntdUI.Message.warn(this, "类型不能为空!", autoClose: 3);
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 执行新增操作
|
|||
|
/// </summary>
|
|||
|
private void DoAdd()
|
|||
|
{
|
|||
|
bool flag = ChechEmpty();
|
|||
|
if (!flag)
|
|||
|
return;
|
|||
|
SysPermission model = new SysPermission();
|
|||
|
model.ParentId = uiComboTreeView1.SelectedNode.Name;
|
|||
|
model.EnCode = txtEnCode.Text;
|
|||
|
model.Name = txtName.Text;
|
|||
|
model.Icon = txtIcon.Text;
|
|||
|
model.SymbolIndex = symbolIndex;
|
|||
|
model.Remark = txtRemark.Text;
|
|||
|
model.Type = Convert.ToInt32(GetPermissionType());
|
|||
|
model.SortCode = txtSortCode.Value;
|
|||
|
model.CreateUserId = GlobalConfig.CurrentUser.Id;
|
|||
|
|
|||
|
SysPermissionLogic pLogic = new SysPermissionLogic();
|
|||
|
//当前类型是啥
|
|||
|
if (model.Type == 2)
|
|||
|
{
|
|||
|
model.ParentId = "0";
|
|||
|
}
|
|||
|
else if (model.Type == 0)
|
|||
|
{
|
|||
|
SysPermission permission = pLogic.Get(model.ParentId);
|
|||
|
if (permission.Type != 2)
|
|||
|
{
|
|||
|
AntdUI.Message.warn(this, "当前类型的父级必须为主菜单!", autoClose: 3);
|
|||
|
|
|||
|
|
|||
|
return;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SysPermission permission = pLogic.Get(model.ParentId);
|
|||
|
if (permission.Type != 0)
|
|||
|
{
|
|||
|
AntdUI.Message.warn(this, "当前类型的父级必须为子菜单!", autoClose: 3);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
int row = permissionLogic.AppInsert(model, model.CreateUserId);
|
|||
|
if (row == 0)
|
|||
|
{
|
|||
|
AntdUI.Message.warn(this, "对不起,操作失败!", autoClose: 3);
|
|||
|
;
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
btnClose_Click(null, null);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
private string GetPermissionType()
|
|||
|
{
|
|||
|
if (txtType.SelectedIndex == 1)
|
|||
|
{
|
|||
|
return "2";
|
|||
|
}
|
|||
|
if (txtType.SelectedIndex == 2)
|
|||
|
{
|
|||
|
return "0";
|
|||
|
}
|
|||
|
if (txtType.SelectedIndex == 3)
|
|||
|
{
|
|||
|
return "1";
|
|||
|
}
|
|||
|
return "0";
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 设置图标
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void btnSelectIcon_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
IconForm form = new IconForm();
|
|||
|
if (form.ShowDialog() == DialogResult.OK)
|
|||
|
{
|
|||
|
txtIcon.Text = form.IconName;
|
|||
|
symbolIndex = form.SymbolIndex;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|