531 lines
20 KiB
C#
531 lines
20 KiB
C#
using DevExpress.XtraEditors;
|
||
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
|
||
using HL_FristAidPlatform_DTO;
|
||
using HL_FristAidPlatform_Public;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Data;
|
||
using System.Drawing;
|
||
using System.IO;
|
||
using System.Windows.Forms;
|
||
|
||
namespace HL_FristAidPlatform_SYS
|
||
{
|
||
public partial class Form_MenuMain : XtraForm
|
||
{
|
||
#region 变量
|
||
/// <summary>
|
||
/// 操作标志 1:新增 2:修改
|
||
/// </summary>
|
||
public int Flag = 1;
|
||
/// <summary>
|
||
/// 当前图标文件名
|
||
/// </summary>
|
||
private string Cur_Icon = string.Empty;
|
||
/// <summary>
|
||
/// 当前图标(转换成二进制之后数据)
|
||
/// </summary>
|
||
private string Cur_PicData = string.Empty;
|
||
/// <summary>
|
||
/// 当前图片的位图源
|
||
/// </summary>
|
||
private Bitmap Cur_ImageBitmap;
|
||
/// <summary>
|
||
/// 当前页
|
||
/// </summary>
|
||
public int curPage = 1;
|
||
/// <summary>
|
||
/// 每页大小
|
||
/// </summary>
|
||
public int pageSize = 100;
|
||
/// <summary>
|
||
/// 所有记录条数
|
||
/// </summary>
|
||
public int totalNumber = 0;
|
||
#endregion
|
||
|
||
#region 分页实现
|
||
public void ExportEvents(bool singlePage)//单页,所有
|
||
{
|
||
//导出GridControl代码写在这。
|
||
}
|
||
|
||
public void RefreshGridList()
|
||
{
|
||
FillGridListCtrlQuery(curPage);//自己实现FillGridListCtrlQuery函数。
|
||
}
|
||
|
||
/// <summary>
|
||
/// 绑定数据源
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private void FillGridListCtrlQuery(int curPage)
|
||
{
|
||
try
|
||
{
|
||
string whereStr = string.Empty;
|
||
|
||
string Key = PublicClass.ToString(txt_Key.Text, "");
|
||
if (!string.IsNullOrEmpty(Key))
|
||
{
|
||
whereStr += "&keyWord=" + Key;
|
||
}
|
||
|
||
string systemModuleID = PublicClass.ToString(LUEdit_SelSystemModule.EditValue, "");
|
||
if (!string.IsNullOrEmpty(systemModuleID))
|
||
{
|
||
whereStr += "&systemModuleID=" + systemModuleID;
|
||
}
|
||
|
||
DataTable ResultDT = DBHelpClass.Get(string.Format("api/admin/T_SYS_Menu?pageIndex={0}&pageSize={1}{2}", curPage, pageSize, whereStr));
|
||
grid_Menu.DataSource = ResultDT;//显示分页结果
|
||
totalNumber = DBHelpClass.TotalNumber;
|
||
userControlForPage.RefreshPager(pageSize, totalNumber, curPage);//更新分页控件显示。
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
PublicClass.WriteErrorLog(this.Text, "绑定数据源:\r\n" + ex);
|
||
}
|
||
}
|
||
|
||
private void MyPagerEvents(int curPage, int pageSize)
|
||
{
|
||
this.curPage = curPage;
|
||
this.pageSize = pageSize;
|
||
FillGridListCtrlQuery(curPage);
|
||
}
|
||
|
||
private void userControlForPage_exportEvents(bool singlePage)
|
||
{
|
||
userControlForPage.exportEvents += ExportEvents;
|
||
}
|
||
|
||
private void userControlForPage_myPagerEvents(int curPage, int pageSize)
|
||
{
|
||
userControlForPage.myPagerEvents += MyPagerEvents;
|
||
}
|
||
#endregion
|
||
|
||
public Form_MenuMain()
|
||
{
|
||
InitializeComponent();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 窗体加载
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void Form_MenuMain_Load(object sender, EventArgs e)
|
||
{
|
||
BindSystemModule(1);
|
||
|
||
RefreshGridList();
|
||
|
||
//详情控件初始化
|
||
PublicClass.EnabledControl(this.groupM_Detail, true, false);
|
||
|
||
//筛选条件中所属模块默认当前选择的系统
|
||
LUEdit_SelSystemModule.EditValue = PublicClassForDataBase.Config104;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 窗体快捷键注册
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void Form_MenuMain_KeyDown(object sender, KeyEventArgs e)
|
||
{
|
||
//同时按下 Ctrl+S 时执行保存方法
|
||
if (e.KeyCode == Keys.S && e.Control)
|
||
{
|
||
btn_Save_ItemClick(null, null);
|
||
}
|
||
}
|
||
|
||
private void txt_Key_TextChanged(object sender, EventArgs e)
|
||
{
|
||
//列表分页数据绑定
|
||
RefreshGridList();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 查询
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void btn_Select_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
||
{
|
||
//列表分页数据绑定
|
||
RefreshGridList();
|
||
}
|
||
|
||
private void LUEdit_SelSystemModule_EditValueChanged(object sender, EventArgs e)
|
||
{
|
||
//列表分页数据绑定
|
||
RefreshGridList();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 新增
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void btn_Insert_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
||
{
|
||
BindSystemModule(2);
|
||
PublicClass.EnabledControl(this.groupM_Detail, false, true);
|
||
|
||
//图片置空
|
||
Cur_Icon = string.Empty;
|
||
Cur_PicData = string.Empty;
|
||
|
||
btn_Delete.Enabled = false;
|
||
ckb_DeleteFlag.Checked = true;//新增时默认启用
|
||
pictureEdit_Icon.Image = null;
|
||
Flag = 1;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 修改
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void btn_Update_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
||
{
|
||
BindSystemModule(2);
|
||
BindDetail();
|
||
|
||
PublicClass.EnabledControl(this.groupM_Detail, false, false);
|
||
btn_Delete.Enabled = false;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 删除
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void btn_Delete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
||
{
|
||
try
|
||
{
|
||
#region 删除
|
||
if (grv_Menu.DataRowCount > 0)
|
||
{
|
||
int selectRow = grv_Menu.GetSelectedRows()[0];
|
||
int ID = Convert.ToInt32(grv_Menu.GetRowCellValue(selectRow, "ID").ToString());
|
||
string MenuName = grv_Menu.GetRowCellValue(selectRow, "MenuName").ToString();
|
||
if (ID == 0)
|
||
{
|
||
XtraMessageBox.Show("请先选择要删除的菜单!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
return;
|
||
}
|
||
|
||
if (XtraMessageBox.Show(string.Format("确定要删除菜单【{0}】?", MenuName), "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||
{
|
||
List<T_SYS_MenuDTO> list = new List<T_SYS_MenuDTO>();
|
||
T_SYS_MenuDTO model = new T_SYS_MenuDTO();
|
||
|
||
string Url = "api/admin/T_SYS_Menu/LogicalDelete";
|
||
model.ID = ID;
|
||
model.DeleteFlag = 1;
|
||
list.Add(model);
|
||
|
||
//初始化两个工厂
|
||
ClientFactory<T_SYS_MenuDTO> httpClient = new HttpClientFactory<T_SYS_MenuDTO>();
|
||
Client<T_SYS_MenuDTO> client = httpClient.VisitFactory();
|
||
|
||
//访问
|
||
ListEntity<T_SYS_MenuDTO> t = client.Post(Url, list);
|
||
if (t.Success)
|
||
{
|
||
XtraMessageBox.Show("删除菜单成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
PublicClass.EnabledControl(this.groupM_Detail, true, false);
|
||
Flag = 0;
|
||
//列表分页数据绑定
|
||
RefreshGridList();
|
||
}
|
||
else
|
||
{
|
||
XtraMessageBox.Show("删除菜单失败,请稍后重试!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
PublicClass.WriteErrorLog(this.Text, "删除:\r\n" + ex);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 保存
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void btn_Save_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
||
{
|
||
try
|
||
{
|
||
#region 保存
|
||
if (string.IsNullOrEmpty(txt_MenuName.Text.ToString().Trim()))
|
||
{
|
||
XtraMessageBox.Show("菜单名称不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||
txt_MenuName.Focus();
|
||
return;
|
||
}
|
||
if (PublicClass.ToString(LUEdit_SystemModule.EditValue, "-1") == "-1")
|
||
{
|
||
XtraMessageBox.Show("请选择所属系统模块!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||
LUEdit_SystemModule.Focus();
|
||
return;
|
||
}
|
||
|
||
List<T_SYS_MenuDTO> list = new List<T_SYS_MenuDTO>();
|
||
T_SYS_MenuDTO model = new T_SYS_MenuDTO();
|
||
|
||
string Url = string.Empty;
|
||
if (Flag == 1)
|
||
{
|
||
Url = "api/admin/T_SYS_Menu";
|
||
model.GUID = Guid.NewGuid().ToString();
|
||
}
|
||
else
|
||
{
|
||
Url = "api/admin/T_SYS_Menu/Update";
|
||
model.ID = Convert.ToInt32(txt_MenuName.Tag.ToString());
|
||
model.GUID = txt_ShortName.Tag.ToString();
|
||
}
|
||
|
||
//0为顶级菜单编号
|
||
int ParentID = PublicClass.ToInt32(LUEdit_Parent.EditValue, -1);
|
||
model.ParentID = ParentID == -1 ? 0 : ParentID;
|
||
|
||
model.SystemModuleID = PublicClass.ToInt64(LUEdit_SystemModule.EditValue, 0);
|
||
model.MenuName = txt_MenuName.Text.ToString().Trim();
|
||
model.ShortName = txt_ShortName.Text.ToString().Trim();
|
||
model.DLLName = txt_DLLName.Text.ToString().Trim();
|
||
model.FunctionName = txt_FunctionName.Text.ToString().Trim();
|
||
model.Icon = Cur_Icon;
|
||
model.IconData = Convert.FromBase64String(Cur_PicData);
|
||
model.OrderBy = Convert.ToInt32(txt_OrderBy.Text.ToString().Trim() == "" ? "0" : txt_OrderBy.Text.ToString().Trim());
|
||
model.DeleteFlag = ckb_DeleteFlag.Checked == true ? 0 : 1;
|
||
|
||
list.Add(model);
|
||
|
||
//初始化两个工厂
|
||
ClientFactory<T_SYS_MenuDTO> httpClient = new HttpClientFactory<T_SYS_MenuDTO>();
|
||
Client<T_SYS_MenuDTO> client = httpClient.VisitFactory();
|
||
|
||
//访问
|
||
ListEntity<T_SYS_MenuDTO> t = client.Post(Url, list);
|
||
if (t.Success)
|
||
{
|
||
XtraMessageBox.Show("保存菜单信息成功!\r\n如果您需要使用该菜单功能,请您重新登录系统!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
PublicClass.EnabledControl(this.groupM_Detail, true, false);
|
||
Flag = 0;
|
||
//列表分页数据绑定
|
||
RefreshGridList();
|
||
btn_Delete.Enabled = true;
|
||
|
||
//定位
|
||
PublicClass.LocationForGridView(grv_Menu, model.GUID, 1);
|
||
}
|
||
else
|
||
{
|
||
XtraMessageBox.Show("保存失败,请稍后重试!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
}
|
||
#endregion
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
PublicClass.WriteErrorLog(this.Text, "保存:\r\n" + ex);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 退出
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void btn_Exit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
||
{
|
||
Close();
|
||
}
|
||
|
||
#region 方法
|
||
/// <summary>
|
||
/// 绑定详情
|
||
/// </summary>
|
||
private void BindDetail()
|
||
{
|
||
try
|
||
{
|
||
#region 绑定详情
|
||
if (grv_Menu.DataRowCount > 0)
|
||
{
|
||
int selectRow = grv_Menu.GetSelectedRows()[0];
|
||
long ID = Convert.ToInt64(grv_Menu.GetRowCellValue(selectRow, "ID").ToString());
|
||
DataTable DetailDT = DBHelpClass.GetDataRow(string.Format("api/admin/T_SYS_Menu/{0}", ID));
|
||
if (DetailDT != null && DetailDT.Rows.Count > 0)
|
||
{
|
||
Flag = 2;//修改标识
|
||
|
||
txt_MenuName.Tag = DetailDT.Rows[0]["ID"].ToString();
|
||
txt_MenuName.Text = DetailDT.Rows[0]["MenuName"].ToString();
|
||
|
||
string ParentID = PublicClass.ToString(DetailDT.Rows[0]["ParentID"], "0");
|
||
LUEdit_Parent.EditValue = ParentID == "0" ? "-1" : ParentID;
|
||
|
||
LUEdit_SystemModule.EditValue = PublicClass.ToString(DetailDT.Rows[0]["SystemModuleID"], "-1");
|
||
txt_ShortName.Tag = DetailDT.Rows[0]["GUID"].ToString();
|
||
txt_ShortName.Text = DetailDT.Rows[0]["ShortName"].ToString();
|
||
txt_DLLName.Text = DetailDT.Rows[0]["DLLName"].ToString();
|
||
txt_FunctionName.Text = DetailDT.Rows[0]["FunctionName"].ToString();
|
||
|
||
#region 图片
|
||
if (!string.IsNullOrEmpty(PublicClass.ToString(DetailDT.Rows[0]["IconData"], "")))
|
||
{
|
||
MemoryStream ms = new MemoryStream(Convert.FromBase64String(DetailDT.Rows[0]["IconData"].ToString()));
|
||
Image img = Image.FromStream(ms);
|
||
Cur_ImageBitmap = new Bitmap(img, pictureEdit_Icon.Width, pictureEdit_Icon.Height);
|
||
pictureEdit_Icon.Image = Cur_ImageBitmap;
|
||
Cur_Icon = DetailDT.Rows[0]["Icon"].ToString();
|
||
Cur_PicData = PublicClass.Png2String(Cur_ImageBitmap);
|
||
}
|
||
else
|
||
{
|
||
pictureEdit_Icon.Image = null;
|
||
Cur_ImageBitmap = null;
|
||
Cur_PicData = "";
|
||
}
|
||
#endregion
|
||
|
||
txt_OrderBy.Text = DetailDT.Rows[0]["OrderBy"].ToString();
|
||
ckb_DeleteFlag.Checked = DetailDT.Rows[0]["DeleteFlag"].ToString().Trim() == "0" ? true : false;
|
||
}
|
||
}
|
||
#endregion
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
PublicClass.WriteErrorLog(this.Text, "绑定详情:\r\n" + ex);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 绑定上级菜单
|
||
/// </summary>
|
||
private void BindParent(string systemModuleID)
|
||
{
|
||
try
|
||
{
|
||
DataTable ResultDT = DBHelpClass.Get(string.Format("api/admin/T_SYS_Menu/GetListBySystemModuleID?systemModuleID={0}", systemModuleID));
|
||
PublicClass.SetLookUpList(ref LUEdit_Parent, ResultDT, 0, 3, true, "顶级菜单");
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
PublicClass.WriteErrorLog(this.Text, "绑定数据源:\r\n" + ex);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 绑定所属系统模块
|
||
/// </summary>
|
||
/// <param name="flag">绑定标记:1:绑定查询;2:绑定详情</param>
|
||
private void BindSystemModule(int flag)
|
||
{
|
||
try
|
||
{
|
||
DataTable ResultDT = DBHelpClass.Get("/api/admin/T_SYS_SystemModule?isOpen=0&deleteFlag=0");
|
||
switch (flag)
|
||
{
|
||
case 1:
|
||
PublicClass.SetLookUpList(ref LUEdit_SelSystemModule, ResultDT, 3, 5, false);
|
||
break;
|
||
case 2:
|
||
PublicClass.SetLookUpList(ref LUEdit_SystemModule, ResultDT, 3, 5, false);
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
PublicClass.WriteErrorLog(this.Text, "绑定所属系统模块:\r\n" + ex);
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
/// <summary>
|
||
/// 单击列表绑定详情
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void gridC_Menu_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e)
|
||
{
|
||
GridHitInfo hi = grv_Menu.CalcHitInfo(new Point(e.X, e.Y));
|
||
//单击数据行
|
||
if (hi.InRow)//单击的是列头 hi.InColumn
|
||
{
|
||
PublicClass.EnabledControl(this.groupM_Detail, true, false);
|
||
BindDetail();
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 选择图片
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void btn_SelFlie_Click(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
OpenFileDialog ofd = new OpenFileDialog();
|
||
ofd.Filter = "Image Files(*.PNG)|*.PNG;|All files(*.*)|*.*";
|
||
ofd.RestoreDirectory = true;
|
||
if (ofd.ShowDialog() == DialogResult.OK)
|
||
{
|
||
FileInfo file = new FileInfo(ofd.FileName);
|
||
if (file.Extension == ".png" || file.Extension == ".PNG")
|
||
{
|
||
string Cur_PicAddress = ofd.FileName;
|
||
Image imge = Image.FromFile(Cur_PicAddress);
|
||
Cur_ImageBitmap = new Bitmap(imge, pictureEdit_Icon.Width, pictureEdit_Icon.Height);
|
||
pictureEdit_Icon.Image = Cur_ImageBitmap;
|
||
|
||
Cur_Icon = file.Name;
|
||
//所选图标转换成二进制
|
||
Cur_PicData = PublicClass.Png2String(Cur_ImageBitmap);
|
||
}
|
||
else
|
||
{
|
||
XtraMessageBox.Show("为确保系统美观度,请上传.png格式的图标!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
PublicClass.WriteErrorLog(this.Text, "选择图片:\r\n" + ex);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 筛选上级菜单
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void LUEdit_SystemModule_EditValueChanged(object sender, EventArgs e)
|
||
{
|
||
string SystemModuleID = PublicClass.ToString(LUEdit_SystemModule.EditValue, "-1");
|
||
if (SystemModuleID != "-1")
|
||
{
|
||
//绑定上级菜单
|
||
BindParent(SystemModuleID);
|
||
}
|
||
}
|
||
}
|
||
}
|