锐腾搅拌上料功能
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

575 lines
21 KiB

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraNavBar;
using ICSSoft.Frame.Menu.BLL;
using ICSSoft.Base.Config.AppConfig;
using ICSSoft.Frame.User.BLL;
using ICSSoft.Base.Language.Tool;
using ICSSoft.Base.UserControl.MessageControl;
using ICSSoft.Frame.Menu.Entity;
using ICSSoft.Frame.Menu.MenuManage;
using System.IO;
using ICSSoft.Base.Config.DBHelper;
using System.Reflection;
using System.Runtime.InteropServices;
namespace ICSSoft.Frame.Main.Entrance
{
public partial class FormMainNew : DevExpress.XtraEditors.XtraForm
{
[DllImport("user32.dll", EntryPoint = "GetWindowLong", CharSet = CharSet.Auto)]
public static extern int GetWindowLong(HandleRef hWnd, int nIndex);
[DllImport("user32.dll", EntryPoint = "SetWindowLong", CharSet = CharSet.Auto)]
public static extern IntPtr SetWindowLong(HandleRef hWnd, int nIndex, int dwNewLong);
public void SetForm()
{
int WS_SYSMENU = 0x00080000; // 系统菜单
int WS_MINIMIZEBOX = 0x20000; // 最大最小化按钮
int windowLong = (GetWindowLong(new HandleRef(this, this.Handle), -16));
SetWindowLong(new HandleRef(this, this.Handle), -16, windowLong | WS_SYSMENU | WS_MINIMIZEBOX);
}
FormTableMenu fMenu = null;
SysMenuBLL menuBll = new SysMenuBLL();
Dictionary<string, TreeView> treeDic = new Dictionary<string, TreeView>();
public FormMainNew()
{
InitializeComponent();
this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
this.WindowState = FormWindowState.Maximized;
//lblUserName.Text = ;
lblWorkPointName.Text = AppConfig.WorkPointName;
lblRole.Text = (AppConfig.UserCode.ToLower() == "demo" ? "程序开发者" : (AppConfig.AdminFlag == true ? "系统管理员" : "普通用户")) + "/" + AppConfig.UserName;
//lblCompanyName.Text = AppConfig.CompanyName;
BindNav();
SetForm();
}
private void BindNav()
{
navMain.ForeColor = Color.FromArgb(102, 102, 102);
DataTable navData = menuBll.GetSysMenuStruct("", true);
foreach (DataRow dr in navData.Rows)
{
NavBarGroup group = new NavBarGroup(dr["MenuCaption"].ToString());
group.Tag = dr["ID"];
string fileName = Path.GetFileNameWithoutExtension(AppConfig.ImagesPath + dr["TableImage"].ToString());
string forder = dr["TableImage"].ToString().Replace(Path.GetFileName(AppConfig.ImagesPath + dr["TableImage"].ToString()), "");
fileName = forder + fileName + "32" + Path.GetExtension(AppConfig.ImagesPath + dr["TableImage"].ToString());
group.SmallImage = Image.FromFile(AppConfig.ImagesPath + fileName);
// group.SmallImage = Image.FromFile(AppConfig.ResourcePath + dr["TableImage"].ToString());
navMain.Groups.Add(group);
}
FillNavGroup();
}
private void FillNavGroup()
{
foreach (NavBarGroup g in navMain.Groups)
{
NavBarGroupControlContainer gc = new NavBarGroupControlContainer();
TreeView treeMain = null;
// bool isNew = false;
if (treeDic.ContainsKey(g.Tag.ToString()))
{
gc.Controls.Remove(treeDic[g.Tag.ToString()]);
gc.Controls.Add(treeDic[g.Tag.ToString()]);
g.ControlContainer = gc;
}
else
{
treeMain = new TreeView();
treeMain.ShowPlusMinus = false;
treeMain.Name = g.Tag.ToString();
treeMain.StateImageList = AppConfig.NewSysImageList;
treeMain.Dock = DockStyle.Fill;
treeMain.AfterExpand += new TreeViewEventHandler(treeMenu_AfterExpand);
treeMain.AfterCollapse += new TreeViewEventHandler(treeMenu_AfterCollapse);
treeMain.NodeMouseDoubleClick += new TreeNodeMouseClickEventHandler(treeMain_NodeMouseDoubleClick);
treeDic.Add(g.Tag.ToString(), treeMain);
DataTable data = menuBll.GetSysMenuStruct(g.Tag.ToString(), true);
foreach (DataRow obj in data.Rows)
{
TreeNode tn = new TreeNode(obj["MenuCaption"].ToString());
tn.Tag = obj["ID"].ToString();
tn.StateImageIndex = AppConfig.NewSysImageList.Images.IndexOfKey(obj["NExImage"].ToString());
treeMain.Nodes.Add(tn);
BindSonNode(tn);
}
gc.Controls.Add(treeMain);
g.ControlContainer = gc;
}
}
}
private void BindSonNode(TreeNode mainTn)
{
DataTable data = menuBll.GetSysMenuStruct(mainTn.Tag.ToString(), true);
foreach (DataRow obj in data.Rows)
{
TreeNode tn = new TreeNode(obj["MenuCaption"].ToString());
tn.Tag = obj["ID"];
tn.StateImageIndex = AppConfig.NewSysImageList.Images.IndexOfKey(obj["NExImage"].ToString());
mainTn.Nodes.Add(tn);
BindSonNode(tn);
}
}
SysUserBLL userBll = new SysUserBLL();
#region 反射窗体
//通用窗体入口
public struct ChildWinManagement
{
public static string WinCaption(string r) { return r; }
public static bool ExistWin(TabControl tc, string caption)
{
if (caption == "产品报工(新)")
{
return false;
}
bool R = false;
foreach (TabPage f in tc.TabPages)
{
if (f.Text == caption)
{
R = true;
tc.SelectedTab = f;
break;
}
}
return R;
}
}
//系统入口方法
public void CreateFormShow(string MDll, string MCode, string MName, string MForm, bool IsShowDialog, string FormKeyValue, bool maxFlag)
{
try
{
bool canEnterFlag = AppConfig.GetUserExcuteRight(MCode, "see");
if (canEnterFlag == false)
{
throw new Exception("对不起,您无权限使用该功能!");
}
if (!this.splitContainer1.Panel2.Controls.ContainsKey("MDIForms"))
{
TabControl tc = new TabControl();
tc.Name = "MDIForms";
tc.Parent = this.splitContainer1.Panel2;
tc.Dock = DockStyle.Fill;
}
Form f = new Form();
string typeName = MDll + "." + MForm;
Assembly assembly = Assembly.LoadFrom(Application.StartupPath + @"\" + MDll + ".dll");
// 实例化窗体
Type t = assembly.GetType(typeName);
if (!string.IsNullOrEmpty(FormKeyValue))
{
FormKeyValue = FormKeyValue.Substring(0, FormKeyValue.Length - 1);
object[] strs = FormKeyValue.Split(',');
f = Activator.CreateInstance(t, strs) as Form;
}
else
{
f = Activator.CreateInstance(t) as Form;
}
f.Name = MForm;
f.Tag = MCode;
if (this == null)
{
f.Text = MName;
f.WindowState = (maxFlag == true ? FormWindowState.Maximized : FormWindowState.Normal);
f.Text = MName;
f.Tag = MCode;
f.ShowDialog();
}
else
{
if (!ChildWinManagement.ExistWin((TabControl)this.splitContainer1.Panel2.Controls["MDIForms"], MName))
{
if (IsShowDialog == false)
{
TabPage tab = new TabPage();
tab.Name = MCode;
tab.Text = MName;
f.TopLevel = false;
//f.MdiParent = this;
f.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
f.Dock = DockStyle.Fill;
f.Text = MName;
f.Tag = MCode;
tab.Controls.Add(f);
((TabControl)this.splitContainer1.Panel2.Controls["MDIForms"]).TabPages.Add(tab);
((TabControl)this.splitContainer1.Panel2.Controls["MDIForms"]).SelectedTab = tab;
f.Show();
f.BringToFront();
AppConfig.tc = (TabControl)this.splitContainer1.Panel2.Controls["MDIForms"];
}
else
{
f.WindowState = (maxFlag == true ? FormWindowState.Maximized : FormWindowState.Normal);
f.Text = MName;
f.Tag = MCode;
f.ShowDialog();
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
private void treeMain_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
var obj = menuBll.GetSingleMenuByID(e.Node.Tag.ToString());
if (obj == null)
return;
if (obj.FormFlag)
{
if (obj.StartFlag == false)
return;
try
{
CreateFormShow(obj.FormAssem, obj.MenuCode, obj.MenuCaption, obj.FormName, obj.DialogFlag, obj.FormParameters, obj.MaxWindow);
userBll.InsertLogin("N", AppConfig.UserCode, "使用" + obj.MenuCaption + "功能");
}
catch (Exception ex)
{
userBll.InsertLogin("N", AppConfig.UserCode, "使用" + obj.MenuCaption + "功能发生异常:" + ex.Message);
List<LangObj> objList = new List<LangObj>();
LangObj mobj = new LangObj();
mobj.LConvertString = ex.Message;
mobj.LParameters = new object[] { };
objList.Add(mobj);
MessageDialog msg = new MessageDialog(2, objList);
msg.ShowDialog();
}
}
}
private void treeMenu_AfterCollapse(object sender, TreeViewEventArgs e)
{
string menuId = e.Node.Tag.ToString();
Sys_Menu menuObj = menuBll.GetSingleMenuByID(menuId);
if (menuObj != null)
{
e.Node.StateImageIndex = AppConfig.NewSysImageList.Images.IndexOfKey(menuObj.NExImage);
// e.Node.SelectedImageIndex = AppConfig.SysImageList.Images.IndexOfKey(menuObj.NExImage);
}
}
private void treeMenu_AfterExpand(object sender, TreeViewEventArgs e)
{
string menuId = e.Node.Tag.ToString();
Sys_Menu menuObj = menuBll.GetSingleMenuByID(menuId);
if (menuObj != null)
{
e.Node.StateImageIndex = AppConfig.NewSysImageList.Images.IndexOfKey(menuObj.ExImage);
//e.Node.SelectedImageIndex = AppConfig.SysImageList.Images.IndexOfKey(menuObj.ExImage);
}
}
private void FormMain_Load(object sender, EventArgs e)
{
LanguageConvert.ChangeLanguage(this, "1");
navMain.Visible = false;
fMenu = new FormTableMenu();
fMenu.TopLevel = false;
fMenu.MdiParent = this;
fMenu.Parent = this.FormShowControl;
fMenu.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
fMenu.Dock = DockStyle.Fill;
fMenu.Show();
fMenu.BringToFront();
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
private void FormMain_FormClosing(object sender, FormClosingEventArgs e)
{
if (reStart == 0)
{
List<LangObj> langList = new List<LangObj>();
LangObj obj = new LangObj();
obj.LConvertString = "确定退出管理系统吗?";
obj.LParameters = new object[] { };
langList.Add(obj);
RequestionDialog formRequestion = new RequestionDialog(langList);
if (formRequestion.ShowDialog() == DialogResult.OK)
{
string sql = @"DECLARE @Table NVARCHAR(60)
DECLARE tmpCur CURSOR FOR
SELECT name FROM sys.objects WHERE TYPE='U' AND name LIKE N'TEMP_%'
OPEN tmpCur
FETCH NEXT FROM tmpCur INTO @Table
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @sql VARCHAR(200)
SELECT @sql = 'drop table ' + @Table
EXEC(@sql)
FETCH NEXT FROM tmpCur INTO @Table
END
CLOSE tmpCur
DEALLOCATE tmpCur";
DBHelper.ExecuteNonQuery(AppConfig.AppConnectString, CommandType.Text, sql);
e.Cancel = false;
XtraForm formMain = (XtraForm)this.Tag;
formMain.Close();
}
else
{
reStart = 0;
e.Cancel = true;
}
}
}
private void btnModifyPwd_Click(object sender, EventArgs e)
{
List<LangObj> langList = new List<LangObj>();
FormEditPwd feditPwd = new FormEditPwd(AppConfig.WorkPointCode, AppConfig.UserCode, AppConfig.FromMd5(AppConfig.UserPwd));
if (feditPwd.ShowDialog() == DialogResult.OK)
{
LangObj langObj = new LangObj();
langObj.LConvertString = "修改成功";
langObj.LParameters = new object[] { };
langList.Add(langObj);
if (langList.Count > 0)
{
MessageDialog messBox = new MessageDialog(0, langList);
messBox.ShowDialog();
}
}
}
private void btnMyMenu_Click(object sender, EventArgs e)
{
FormUserDefineMenu formUserDefine = new FormUserDefineMenu();
formUserDefine.ShowDialog();
}
private void btnSysMenu_Click(object sender, EventArgs e)
{
if (navMain.Visible == true)
{
navMain.Visible = false;
foreach (Form cform in this.MdiChildren)
{
cform.Close();
}
fMenu = new FormTableMenu();
fMenu.TopLevel = false;
fMenu.MdiParent = this;
fMenu.Parent = this.FormShowControl;
fMenu.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
fMenu.Dock = DockStyle.Fill;
fMenu.Show();
fMenu.BringToFront();
}
else
{
if (fMenu != null)
{
fMenu.Close();
}
navMain.Visible = true;
}
}
private void btnInfoCenter_Click(object sender, EventArgs e)
{
try
{
Sys_Menu obj = menuBll.GetSingleMenuByCode("01.07.03");
AppConfig.CreateFormShow(obj.FormAssem, obj.MenuCode, obj.MenuCaption, obj.FormName, obj.DialogFlag, this, obj.FormParameters, obj.MaxWindow);
}
catch (Exception ex)
{
List<LangObj> objList = new List<LangObj>();
LangObj mobj = new LangObj();
mobj.LConvertString = ex.Message;
mobj.LParameters = new object[] { };
objList.Add(mobj);
MessageDialog msg = new MessageDialog(2, objList);
msg.ShowDialog();
}
}
int reStart = 0;
private void btnLogOut_Click(object sender, EventArgs e)
{
List<LangObj> langList = new List<LangObj>();
LangObj obj = new LangObj();
obj.LConvertString = "确定重新注册系统吗?";
obj.LParameters = new object[] { };
langList.Add(obj);
RequestionDialog formRequestion = new RequestionDialog(langList);
if (formRequestion.ShowDialog() == DialogResult.OK)
{
reStart = 1;
Program.Run.Close();
Application.Restart();
}
reStart = 0;
}
private void btnMinWindow_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
private void btnExit_MouseHover(object sender, EventArgs e)
{
this.btnExit.BorderStyle = BorderStyle.FixedSingle;
}
private void btnExit_MouseLeave(object sender, EventArgs e)
{
this.btnExit.BorderStyle = BorderStyle.None;
}
private void btnMaxWindow_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Maximized;
}
private void btnMaxWindow_MouseHover(object sender, EventArgs e)
{
this.btnMaxWindow.BorderStyle = BorderStyle.FixedSingle;
}
private void btnMaxWindow_MouseLeave(object sender, EventArgs e)
{
this.btnMaxWindow.BorderStyle = BorderStyle.None;
}
private void btnMinWindow_MouseHover(object sender, EventArgs e)
{
this.btnMinWindow.BorderStyle = BorderStyle.FixedSingle;
}
private void btnMinWindow_MouseLeave(object sender, EventArgs e)
{
this.btnMinWindow.BorderStyle = BorderStyle.None;
}
private void btnLogOut_MouseHover(object sender, EventArgs e)
{
this.btnLogOut.BorderStyle = BorderStyle.FixedSingle;
}
private void btnLogOut_MouseLeave(object sender, EventArgs e)
{
this.btnLogOut.BorderStyle = BorderStyle.None;
}
private void btnModifyPwd_MouseHover(object sender, EventArgs e)
{
this.btnModifyPwd.BorderStyle = BorderStyle.FixedSingle;
}
private void btnModifyPwd_MouseLeave(object sender, EventArgs e)
{
this.btnModifyPwd.BorderStyle = BorderStyle.None;
}
private void btnSysMenu_MouseHover(object sender, EventArgs e)
{
this.btnSysMenu.BackColor = Color.FromArgb(230, 230, 235);
this.picSysMenu.Image = Image.FromFile(Application.StartupPath + "\\Images\\side_nav_1_icon_active.png");
this.lblSysMenu.ForeColor = Color.FromArgb(53, 53, 53);
}
private void btnSysMenu_MouseLeave(object sender, EventArgs e)
{
this.btnSysMenu.BackColor = Color.FromArgb(245, 245, 247);
this.picSysMenu.Image = Image.FromFile(Application.StartupPath + "\\Images\\side_nav_1_icon.png");
this.lblSysMenu.ForeColor = Color.FromArgb(102, 102, 102);
}
private void btnMyMenu_MouseHover(object sender, EventArgs e)
{
this.btnMyMenu.BackColor = Color.FromArgb(230, 230, 235);
this.picMyMenu.Image = Image.FromFile(Application.StartupPath + "\\Images\\side_nav_2_icon_active.png");
this.lblMyMenu.ForeColor = Color.FromArgb(53, 53, 53);
}
private void btnMyMenu_MouseLeave(object sender, EventArgs e)
{
this.btnMyMenu.BackColor = Color.FromArgb(245, 245, 247);
this.picMyMenu.Image = Image.FromFile(Application.StartupPath + "\\Images\\side_nav_2_icon.png");
this.lblMyMenu.ForeColor = Color.FromArgb(102, 102, 102);
}
private void btnInfoCenter_MouseHover(object sender, EventArgs e)
{
this.btnInfoCenter.BackColor = Color.FromArgb(230, 230, 235);
this.picInfoCenter.Image = Image.FromFile(Application.StartupPath + "\\Images\\side_nav_3_icon_active.png");
this.lblInfoCenter.ForeColor = Color.FromArgb(53, 53, 53);
}
private void btnInfoCenter_MouseLeave(object sender, EventArgs e)
{
this.btnInfoCenter.BackColor = Color.FromArgb(245, 245, 247);
this.picInfoCenter.Image = Image.FromFile(Application.StartupPath + "\\Images\\side_nav_3_icon.png");
this.lblInfoCenter.ForeColor = Color.FromArgb(102, 102, 102);
}
}
}