华恒Mes鼎捷代码
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.

596 lines
22 KiB

5 months ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using DevExpress.XtraEditors;
  9. using DevExpress.XtraNavBar;
  10. using ICSSoft.Frame.Menu.BLL;
  11. using ICSSoft.Base.Config.AppConfig;
  12. using ICSSoft.Frame.User.BLL;
  13. using ICSSoft.Base.Language.Tool;
  14. using ICSSoft.Base.UserControl.MessageControl;
  15. using ICSSoft.Frame.Menu.Entity;
  16. using ICSSoft.Frame.Menu.MenuManage;
  17. using System.IO;
  18. using ICSSoft.Base.Config.DBHelper;
  19. using System.Reflection;
  20. using System.Runtime.InteropServices;
  21. namespace ICSSoft.Frame.Main.Entrance
  22. {
  23. public partial class FormMainNew : DevExpress.XtraEditors.XtraForm
  24. {
  25. [DllImport("user32.dll", EntryPoint = "GetWindowLong", CharSet = CharSet.Auto)]
  26. public static extern int GetWindowLong(HandleRef hWnd, int nIndex);
  27. [DllImport("user32.dll", EntryPoint = "SetWindowLong", CharSet = CharSet.Auto)]
  28. public static extern IntPtr SetWindowLong(HandleRef hWnd, int nIndex, int dwNewLong);
  29. public void SetForm()
  30. {
  31. int WS_SYSMENU = 0x00080000; // 系统菜单
  32. int WS_MINIMIZEBOX = 0x20000; // 最大最小化按钮
  33. int windowLong = (GetWindowLong(new HandleRef(this, this.Handle), -16));
  34. SetWindowLong(new HandleRef(this, this.Handle), -16, windowLong | WS_SYSMENU | WS_MINIMIZEBOX);
  35. }
  36. FormTableMenu fMenu = null;
  37. SysMenuBLL menuBll = new SysMenuBLL();
  38. Dictionary<string, TreeView> treeDic = new Dictionary<string, TreeView>();
  39. public FormMainNew()
  40. {
  41. InitializeComponent();
  42. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  43. this.WindowState = FormWindowState.Maximized;
  44. //lblUserName.Text = ;
  45. lblWorkPointName.Text = AppConfig.WorkPointName;
  46. lblRole.Text = (AppConfig.UserCode.ToLower() == "demo" ? "程序开发者" : (AppConfig.AdminFlag == true ? "系统管理员" : "普通用户")) + "/" + AppConfig.UserName;
  47. //lblCompanyName.Text = AppConfig.CompanyName;
  48. BindNav();
  49. SetForm();
  50. }
  51. private void BindNav()
  52. {
  53. navMain.ForeColor = Color.FromArgb(102, 102, 102);
  54. DataTable navData = menuBll.GetSysMenuStruct("", true);
  55. foreach (DataRow dr in navData.Rows)
  56. {
  57. NavBarGroup group = new NavBarGroup(dr["MenuCaption"].ToString());
  58. group.Tag = dr["ID"];
  59. string fileName = Path.GetFileNameWithoutExtension(AppConfig.ImagesPath + dr["TableImage"].ToString());
  60. string forder = dr["TableImage"].ToString().Replace(Path.GetFileName(AppConfig.ImagesPath + dr["TableImage"].ToString()), "");
  61. fileName = forder + fileName + "32" + Path.GetExtension(AppConfig.ImagesPath + dr["TableImage"].ToString());
  62. group.SmallImage = Image.FromFile(AppConfig.ImagesPath + fileName);
  63. // group.SmallImage = Image.FromFile(AppConfig.ResourcePath + dr["TableImage"].ToString());
  64. navMain.Groups.Add(group);
  65. }
  66. FillNavGroup();
  67. }
  68. private void FillNavGroup()
  69. {
  70. foreach (NavBarGroup g in navMain.Groups)
  71. {
  72. NavBarGroupControlContainer gc = new NavBarGroupControlContainer();
  73. TreeView treeMain = null;
  74. // bool isNew = false;
  75. if (treeDic.ContainsKey(g.Tag.ToString()))
  76. {
  77. gc.Controls.Remove(treeDic[g.Tag.ToString()]);
  78. gc.Controls.Add(treeDic[g.Tag.ToString()]);
  79. g.ControlContainer = gc;
  80. }
  81. else
  82. {
  83. treeMain = new TreeView();
  84. treeMain.ShowPlusMinus = false;
  85. treeMain.Name = g.Tag.ToString();
  86. treeMain.StateImageList = AppConfig.NewSysImageList;
  87. treeMain.Dock = DockStyle.Fill;
  88. treeMain.AfterExpand += new TreeViewEventHandler(treeMenu_AfterExpand);
  89. treeMain.AfterCollapse += new TreeViewEventHandler(treeMenu_AfterCollapse);
  90. treeMain.NodeMouseDoubleClick += new TreeNodeMouseClickEventHandler(treeMain_NodeMouseDoubleClick);
  91. treeDic.Add(g.Tag.ToString(), treeMain);
  92. DataTable data = menuBll.GetSysMenuStruct(g.Tag.ToString(), true);
  93. foreach (DataRow obj in data.Rows)
  94. {
  95. TreeNode tn = new TreeNode(obj["MenuCaption"].ToString());
  96. tn.Tag = obj["ID"].ToString();
  97. tn.StateImageIndex = AppConfig.NewSysImageList.Images.IndexOfKey(obj["NExImage"].ToString());
  98. treeMain.Nodes.Add(tn);
  99. BindSonNode(tn);
  100. }
  101. gc.Controls.Add(treeMain);
  102. g.ControlContainer = gc;
  103. }
  104. }
  105. }
  106. private void BindSonNode(TreeNode mainTn)
  107. {
  108. DataTable data = menuBll.GetSysMenuStruct(mainTn.Tag.ToString(), true);
  109. foreach (DataRow obj in data.Rows)
  110. {
  111. TreeNode tn = new TreeNode(obj["MenuCaption"].ToString());
  112. tn.Tag = obj["ID"];
  113. tn.StateImageIndex = AppConfig.NewSysImageList.Images.IndexOfKey(obj["NExImage"].ToString());
  114. mainTn.Nodes.Add(tn);
  115. BindSonNode(tn);
  116. }
  117. }
  118. SysUserBLL userBll = new SysUserBLL();
  119. #region 反射窗体
  120. //通用窗体入口
  121. public struct ChildWinManagement
  122. {
  123. public static string WinCaption(string r) { return r; }
  124. public static bool ExistWin(TabControl tc, string caption)
  125. {
  126. bool R = false;
  127. foreach (TabPage f in tc.TabPages)
  128. {
  129. if (f.Text == caption)
  130. {
  131. R = true;
  132. tc.SelectedTab = f;
  133. break;
  134. }
  135. }
  136. return R;
  137. }
  138. }
  139. //系统入口方法
  140. public void CreateFormShow(string MDll, string MCode, string MName, string MForm, bool IsShowDialog, string FormKeyValue, bool maxFlag)
  141. {
  142. try
  143. {
  144. if (!this.splitContainer1.Panel2.Controls.ContainsKey("MDIForms"))
  145. {
  146. TabControl tc = new TabControl();
  147. tc.Name = "MDIForms";
  148. tc.Parent = this.splitContainer1.Panel2;
  149. tc.Dock = DockStyle.Fill;
  150. }
  151. Form f = new Form();
  152. string typeName = MDll + "." + MForm;
  153. Assembly assembly = Assembly.LoadFrom(Application.StartupPath + @"\" + MDll + ".dll");
  154. // 实例化窗体
  155. Type t = assembly.GetType(typeName);
  156. if (!string.IsNullOrEmpty(FormKeyValue))
  157. {
  158. FormKeyValue = FormKeyValue.Substring(0, FormKeyValue.Length - 1);
  159. object[] strs = FormKeyValue.Split(',');
  160. f = Activator.CreateInstance(t, strs) as Form;
  161. }
  162. else
  163. {
  164. f = Activator.CreateInstance(t) as Form;
  165. }
  166. f.Name = MForm;
  167. f.Tag = MCode;
  168. if (this == null)
  169. {
  170. f.Text = MName;
  171. f.WindowState = (maxFlag == true ? FormWindowState.Maximized : FormWindowState.Normal);
  172. f.Text = MName;
  173. f.Tag = MCode;
  174. f.ShowDialog();
  175. }
  176. else
  177. {
  178. if (!ChildWinManagement.ExistWin((TabControl)this.splitContainer1.Panel2.Controls["MDIForms"], MName))
  179. {
  180. if (IsShowDialog == false)
  181. {
  182. TabPage tab = new TabPage();
  183. tab.Name = MCode;
  184. tab.Text = MName;
  185. f.TopLevel = false;
  186. //f.MdiParent = this;
  187. f.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
  188. f.Dock = DockStyle.Fill;
  189. f.Text = MName;
  190. f.Tag = MCode;
  191. tab.Controls.Add(f);
  192. ((TabControl)this.splitContainer1.Panel2.Controls["MDIForms"]).TabPages.Add(tab);
  193. ((TabControl)this.splitContainer1.Panel2.Controls["MDIForms"]).SelectedTab = tab;
  194. f.Show();
  195. f.BringToFront();
  196. AppConfig.tc = (TabControl)this.splitContainer1.Panel2.Controls["MDIForms"];
  197. }
  198. else
  199. {
  200. f.WindowState = (maxFlag == true ? FormWindowState.Maximized : FormWindowState.Normal);
  201. f.Text = MName;
  202. f.Tag = MCode;
  203. f.ShowDialog();
  204. }
  205. }
  206. }
  207. }
  208. catch (Exception ex)
  209. {
  210. throw ex;
  211. }
  212. }
  213. #endregion
  214. private void treeMain_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
  215. {
  216. var obj = menuBll.GetSingleMenuByID(e.Node.Tag.ToString());
  217. if (obj == null)
  218. return;
  219. if (obj.FormFlag)
  220. {
  221. if (obj.StartFlag == false)
  222. return;
  223. try
  224. {
  225. CreateFormShow(obj.FormAssem, obj.MenuCode, obj.MenuCaption, obj.FormName, obj.DialogFlag, obj.FormParameters,obj.MaxWindow);
  226. userBll.InsertLogin("N", AppConfig.UserCode, "使用"+obj.MenuCaption+"功能");
  227. }
  228. catch (Exception ex)
  229. {
  230. userBll.InsertLogin("N", AppConfig.UserCode, "使用" + obj.MenuCaption + "功能发生异常:"+ex.Message);
  231. List<LangObj> objList = new List<LangObj>();
  232. LangObj mobj = new LangObj();
  233. mobj.LConvertString = ex.Message;
  234. mobj.LParameters = new object[] { };
  235. objList.Add(mobj);
  236. MessageDialog msg = new MessageDialog(2, objList);
  237. msg.ShowDialog();
  238. }
  239. }
  240. }
  241. private void treeMenu_AfterCollapse(object sender, TreeViewEventArgs e)
  242. {
  243. string menuId = e.Node.Tag.ToString();
  244. Sys_Menu menuObj = menuBll.GetSingleMenuByID(menuId);
  245. if (menuObj != null)
  246. {
  247. e.Node.StateImageIndex = AppConfig.NewSysImageList.Images.IndexOfKey(menuObj.NExImage);
  248. // e.Node.SelectedImageIndex = AppConfig.SysImageList.Images.IndexOfKey(menuObj.NExImage);
  249. }
  250. }
  251. private void treeMenu_AfterExpand(object sender, TreeViewEventArgs e)
  252. {
  253. string menuId = e.Node.Tag.ToString();
  254. Sys_Menu menuObj = menuBll.GetSingleMenuByID(menuId);
  255. if (menuObj != null)
  256. {
  257. e.Node.StateImageIndex = AppConfig.NewSysImageList.Images.IndexOfKey(menuObj.ExImage);
  258. //e.Node.SelectedImageIndex = AppConfig.SysImageList.Images.IndexOfKey(menuObj.ExImage);
  259. }
  260. }
  261. private void FormMain_Load(object sender, EventArgs e)
  262. {
  263. LanguageConvert.ChangeLanguage(this, "1");
  264. navMain.Visible = false;
  265. fMenu = new FormTableMenu();
  266. fMenu.TopLevel = false;
  267. fMenu.MdiParent = this;
  268. fMenu.Parent = this.FormShowControl;
  269. fMenu.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
  270. fMenu.Dock = DockStyle.Fill;
  271. fMenu.Show();
  272. fMenu.BringToFront();
  273. string sql = @"SELECT EnumName FROM Sys_EnumKey WHERE EnumKey='00020' AND WorkPointCode='{0}'";
  274. sql = string.Format(sql, AppConfig.WorkPointCode);
  275. string DBName = DBHelper.ExecuteScalar(AppConfig.AppConnectString, CommandType.Text, sql).ToString();
  276. if (!string.IsNullOrWhiteSpace(DBName))
  277. {
  278. lblDBName.Text = DBName;
  279. }
  280. else
  281. lblDBName.Text = "";
  282. }
  283. private void btnExit_Click(object sender, EventArgs e)
  284. {
  285. this.Close();
  286. }
  287. private void FormMain_FormClosing(object sender, FormClosingEventArgs e)
  288. {
  289. if (reStart == 0)
  290. {
  291. List<LangObj> langList = new List<LangObj>();
  292. LangObj obj = new LangObj();
  293. obj.LConvertString = "确定退出管理系统吗?";
  294. obj.LParameters = new object[] { };
  295. langList.Add(obj);
  296. RequestionDialog formRequestion = new RequestionDialog(langList);
  297. if (formRequestion.ShowDialog() == DialogResult.OK)
  298. {
  299. string sql = @"DECLARE @Table NVARCHAR(60)
  300. DECLARE tmpCur CURSOR FOR
  301. SELECT name FROM sys.objects WHERE TYPE='U' AND name LIKE N'TEMP_%'
  302. OPEN tmpCur
  303. FETCH NEXT FROM tmpCur INTO @Table
  304. WHILE @@FETCH_STATUS = 0
  305. BEGIN
  306. DECLARE @sql VARCHAR(200)
  307. SELECT @sql = 'drop table ' + @Table
  308. EXEC(@sql)
  309. FETCH NEXT FROM tmpCur INTO @Table
  310. END
  311. CLOSE tmpCur
  312. DEALLOCATE tmpCur";
  313. DBHelper.ExecuteNonQuery(AppConfig.AppConnectString, CommandType.Text, sql);
  314. e.Cancel = false;
  315. XtraForm formMain = (XtraForm)this.Tag;
  316. formMain.Close();
  317. }
  318. else
  319. {
  320. reStart = 0;
  321. e.Cancel = true;
  322. }
  323. }
  324. }
  325. private void btnModifyPwd_Click(object sender, EventArgs e)
  326. {
  327. List<LangObj> langList = new List<LangObj>();
  328. FormEditPwd feditPwd = new FormEditPwd(AppConfig.WorkPointCode, AppConfig.UserCode,AppConfig.FromMd5( AppConfig.UserPwd));
  329. if (feditPwd.ShowDialog() == DialogResult.OK)
  330. {
  331. LangObj langObj = new LangObj();
  332. langObj.LConvertString = "修改成功";
  333. langObj.LParameters = new object[] { };
  334. langList.Add(langObj);
  335. if (langList.Count > 0)
  336. {
  337. MessageDialog messBox = new MessageDialog(0, langList);
  338. messBox.ShowDialog();
  339. }
  340. }
  341. }
  342. private void btnMyMenu_Click(object sender, EventArgs e)
  343. {
  344. FormUserDefineMenu formUserDefine = new FormUserDefineMenu();
  345. formUserDefine.ShowDialog();
  346. }
  347. private void btnSysMenu_Click(object sender, EventArgs e)
  348. {
  349. if (navMain.Visible == true)
  350. {
  351. navMain.Visible = false;
  352. foreach (Form cform in this.MdiChildren)
  353. {
  354. cform.Close();
  355. }
  356. fMenu = new FormTableMenu();
  357. fMenu.TopLevel = false;
  358. fMenu.MdiParent = this;
  359. fMenu.Parent = this.FormShowControl;
  360. fMenu.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
  361. fMenu.Dock = DockStyle.Fill;
  362. fMenu.Show();
  363. fMenu.BringToFront();
  364. }
  365. else
  366. {
  367. if (fMenu != null)
  368. {
  369. fMenu.Close();
  370. }
  371. navMain.Visible = true;
  372. }
  373. }
  374. private void btnInfoCenter_Click(object sender, EventArgs e)
  375. {
  376. try
  377. {
  378. Sys_Menu obj = menuBll.GetSingleMenuByCode("01.07.03");
  379. AppConfig.CreateFormShow(obj.FormAssem, obj.MenuCode, obj.MenuCaption, obj.FormName, obj.DialogFlag, this, obj.FormParameters, obj.MaxWindow);
  380. }
  381. catch (Exception ex)
  382. {
  383. List<LangObj> objList = new List<LangObj>();
  384. LangObj mobj = new LangObj();
  385. mobj.LConvertString = ex.Message;
  386. mobj.LParameters = new object[] { };
  387. objList.Add(mobj);
  388. MessageDialog msg = new MessageDialog(2, objList);
  389. msg.ShowDialog();
  390. }
  391. }
  392. int reStart = 0;
  393. private void btnLogOut_Click(object sender, EventArgs e)
  394. {
  395. List<LangObj> langList = new List<LangObj>();
  396. LangObj obj = new LangObj();
  397. obj.LConvertString = "确定重新注册系统吗?";
  398. obj.LParameters = new object[] { };
  399. langList.Add(obj);
  400. RequestionDialog formRequestion = new RequestionDialog(langList);
  401. if (formRequestion.ShowDialog() == DialogResult.OK)
  402. {
  403. reStart = 1;
  404. Program.Run.Close();
  405. Application.Restart();
  406. }
  407. reStart = 0;
  408. }
  409. private void btnMinWindow_Click(object sender, EventArgs e)
  410. {
  411. this.WindowState = FormWindowState.Minimized;
  412. }
  413. private void btnExit_MouseHover(object sender, EventArgs e)
  414. {
  415. this.btnExit.BorderStyle = BorderStyle.FixedSingle;
  416. }
  417. private void btnExit_MouseLeave(object sender, EventArgs e)
  418. {
  419. this.btnExit.BorderStyle = BorderStyle.None;
  420. }
  421. private void btnMaxWindow_Click(object sender, EventArgs e)
  422. {
  423. this.WindowState = FormWindowState.Maximized;
  424. }
  425. private void btnMaxWindow_MouseHover(object sender, EventArgs e)
  426. {
  427. this.btnMaxWindow.BorderStyle = BorderStyle.FixedSingle;
  428. }
  429. private void btnMaxWindow_MouseLeave(object sender, EventArgs e)
  430. {
  431. this.btnMaxWindow.BorderStyle = BorderStyle.None;
  432. }
  433. private void btnMinWindow_MouseHover(object sender, EventArgs e)
  434. {
  435. this.btnMinWindow.BorderStyle = BorderStyle.FixedSingle;
  436. }
  437. private void btnMinWindow_MouseLeave(object sender, EventArgs e)
  438. {
  439. this.btnMinWindow.BorderStyle = BorderStyle.None;
  440. }
  441. private void btnLogOut_MouseHover(object sender, EventArgs e)
  442. {
  443. this.btnLogOut.BorderStyle = BorderStyle.FixedSingle;
  444. }
  445. private void btnLogOut_MouseLeave(object sender, EventArgs e)
  446. {
  447. this.btnLogOut.BorderStyle = BorderStyle.None;
  448. }
  449. private void btnModifyPwd_MouseHover(object sender, EventArgs e)
  450. {
  451. this.btnModifyPwd.BorderStyle = BorderStyle.FixedSingle;
  452. }
  453. private void btnModifyPwd_MouseLeave(object sender, EventArgs e)
  454. {
  455. this.btnModifyPwd.BorderStyle = BorderStyle.None;
  456. }
  457. private void btnSysMenu_MouseHover(object sender, EventArgs e)
  458. {
  459. this.btnSysMenu.BackColor = Color.FromArgb(230, 230, 235);
  460. this.picSysMenu.Image = Image.FromFile(Application.StartupPath + "\\Images\\side_nav_1_icon_active.png");
  461. this.lblSysMenu.ForeColor = Color.FromArgb(53, 53, 53);
  462. }
  463. private void btnSysMenu_MouseLeave(object sender, EventArgs e)
  464. {
  465. this.btnSysMenu.BackColor = Color.FromArgb(245, 245, 247);
  466. this.picSysMenu.Image = Image.FromFile(Application.StartupPath + "\\Images\\side_nav_1_icon.png");
  467. this.lblSysMenu.ForeColor = Color.FromArgb(102, 102, 102);
  468. }
  469. private void btnMyMenu_MouseHover(object sender, EventArgs e)
  470. {
  471. this.btnMyMenu.BackColor = Color.FromArgb(230, 230, 235);
  472. this.picMyMenu.Image = Image.FromFile(Application.StartupPath + "\\Images\\side_nav_2_icon_active.png");
  473. this.lblMyMenu.ForeColor = Color.FromArgb(53, 53, 53);
  474. }
  475. private void btnMyMenu_MouseLeave(object sender, EventArgs e)
  476. {
  477. this.btnMyMenu.BackColor = Color.FromArgb(245, 245, 247);
  478. this.picMyMenu.Image = Image.FromFile(Application.StartupPath + "\\Images\\side_nav_2_icon.png");
  479. this.lblMyMenu.ForeColor = Color.FromArgb(102, 102, 102);
  480. }
  481. private void btnInfoCenter_MouseHover(object sender, EventArgs e)
  482. {
  483. this.btnInfoCenter.BackColor = Color.FromArgb(230, 230, 235);
  484. this.picInfoCenter.Image = Image.FromFile(Application.StartupPath + "\\Images\\side_nav_3_icon_active.png");
  485. this.lblInfoCenter.ForeColor = Color.FromArgb(53, 53, 53);
  486. }
  487. private void btnInfoCenter_MouseLeave(object sender, EventArgs e)
  488. {
  489. this.btnInfoCenter.BackColor = Color.FromArgb(245, 245, 247);
  490. this.picInfoCenter.Image = Image.FromFile(Application.StartupPath + "\\Images\\side_nav_3_icon.png");
  491. this.lblInfoCenter.ForeColor = Color.FromArgb(102, 102, 102);
  492. }
  493. private void pictureBox8_Click(object sender, EventArgs e)
  494. {
  495. List<LangObj> langList = new List<LangObj>();
  496. LangObj obj = new LangObj();
  497. obj.LConvertString = "确定重新注册系统吗?";
  498. obj.LParameters = new object[] { };
  499. langList.Add(obj);
  500. RequestionDialog formRequestion = new RequestionDialog(langList);
  501. if (formRequestion.ShowDialog() == DialogResult.OK)
  502. {
  503. reStart = 1;
  504. Program.Run.Close();
  505. Application.Restart();
  506. }
  507. reStart = 0;
  508. }
  509. private void pictureBox6_Click(object sender, EventArgs e)
  510. {
  511. this.Close();
  512. }
  513. }
  514. }