锐腾搅拌上料功能
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.

574 lines
21 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. if (caption == "产品报工(新)")
  127. {
  128. return false;
  129. }
  130. bool R = false;
  131. foreach (TabPage f in tc.TabPages)
  132. {
  133. if (f.Text == caption)
  134. {
  135. R = true;
  136. tc.SelectedTab = f;
  137. break;
  138. }
  139. }
  140. return R;
  141. }
  142. }
  143. //系统入口方法
  144. public void CreateFormShow(string MDll, string MCode, string MName, string MForm, bool IsShowDialog, string FormKeyValue, bool maxFlag)
  145. {
  146. try
  147. {
  148. bool canEnterFlag = AppConfig.GetUserExcuteRight(MCode, "see");
  149. if (canEnterFlag == false)
  150. {
  151. throw new Exception("对不起,您无权限使用该功能!");
  152. }
  153. if (!this.splitContainer1.Panel2.Controls.ContainsKey("MDIForms"))
  154. {
  155. TabControl tc = new TabControl();
  156. tc.Name = "MDIForms";
  157. tc.Parent = this.splitContainer1.Panel2;
  158. tc.Dock = DockStyle.Fill;
  159. }
  160. Form f = new Form();
  161. string typeName = MDll + "." + MForm;
  162. Assembly assembly = Assembly.LoadFrom(Application.StartupPath + @"\" + MDll + ".dll");
  163. // 实例化窗体
  164. Type t = assembly.GetType(typeName);
  165. if (!string.IsNullOrEmpty(FormKeyValue))
  166. {
  167. FormKeyValue = FormKeyValue.Substring(0, FormKeyValue.Length - 1);
  168. object[] strs = FormKeyValue.Split(',');
  169. f = Activator.CreateInstance(t, strs) as Form;
  170. }
  171. else
  172. {
  173. f = Activator.CreateInstance(t) as Form;
  174. }
  175. f.Name = MForm;
  176. f.Tag = MCode;
  177. if (this == null)
  178. {
  179. f.Text = MName;
  180. f.WindowState = (maxFlag == true ? FormWindowState.Maximized : FormWindowState.Normal);
  181. f.Text = MName;
  182. f.Tag = MCode;
  183. f.ShowDialog();
  184. }
  185. else
  186. {
  187. if (!ChildWinManagement.ExistWin((TabControl)this.splitContainer1.Panel2.Controls["MDIForms"], MName))
  188. {
  189. if (IsShowDialog == false)
  190. {
  191. TabPage tab = new TabPage();
  192. tab.Name = MCode;
  193. tab.Text = MName;
  194. f.TopLevel = false;
  195. //f.MdiParent = this;
  196. f.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
  197. f.Dock = DockStyle.Fill;
  198. f.Text = MName;
  199. f.Tag = MCode;
  200. tab.Controls.Add(f);
  201. ((TabControl)this.splitContainer1.Panel2.Controls["MDIForms"]).TabPages.Add(tab);
  202. ((TabControl)this.splitContainer1.Panel2.Controls["MDIForms"]).SelectedTab = tab;
  203. f.Show();
  204. f.BringToFront();
  205. AppConfig.tc = (TabControl)this.splitContainer1.Panel2.Controls["MDIForms"];
  206. }
  207. else
  208. {
  209. f.WindowState = (maxFlag == true ? FormWindowState.Maximized : FormWindowState.Normal);
  210. f.Text = MName;
  211. f.Tag = MCode;
  212. f.ShowDialog();
  213. }
  214. }
  215. }
  216. }
  217. catch (Exception ex)
  218. {
  219. throw ex;
  220. }
  221. }
  222. #endregion
  223. private void treeMain_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
  224. {
  225. var obj = menuBll.GetSingleMenuByID(e.Node.Tag.ToString());
  226. if (obj == null)
  227. return;
  228. if (obj.FormFlag)
  229. {
  230. if (obj.StartFlag == false)
  231. return;
  232. try
  233. {
  234. CreateFormShow(obj.FormAssem, obj.MenuCode, obj.MenuCaption, obj.FormName, obj.DialogFlag, obj.FormParameters, obj.MaxWindow);
  235. userBll.InsertLogin("N", AppConfig.UserCode, "使用" + obj.MenuCaption + "功能");
  236. }
  237. catch (Exception ex)
  238. {
  239. userBll.InsertLogin("N", AppConfig.UserCode, "使用" + obj.MenuCaption + "功能发生异常:" + ex.Message);
  240. List<LangObj> objList = new List<LangObj>();
  241. LangObj mobj = new LangObj();
  242. mobj.LConvertString = ex.Message;
  243. mobj.LParameters = new object[] { };
  244. objList.Add(mobj);
  245. MessageDialog msg = new MessageDialog(2, objList);
  246. msg.ShowDialog();
  247. }
  248. }
  249. }
  250. private void treeMenu_AfterCollapse(object sender, TreeViewEventArgs e)
  251. {
  252. string menuId = e.Node.Tag.ToString();
  253. Sys_Menu menuObj = menuBll.GetSingleMenuByID(menuId);
  254. if (menuObj != null)
  255. {
  256. e.Node.StateImageIndex = AppConfig.NewSysImageList.Images.IndexOfKey(menuObj.NExImage);
  257. // e.Node.SelectedImageIndex = AppConfig.SysImageList.Images.IndexOfKey(menuObj.NExImage);
  258. }
  259. }
  260. private void treeMenu_AfterExpand(object sender, TreeViewEventArgs e)
  261. {
  262. string menuId = e.Node.Tag.ToString();
  263. Sys_Menu menuObj = menuBll.GetSingleMenuByID(menuId);
  264. if (menuObj != null)
  265. {
  266. e.Node.StateImageIndex = AppConfig.NewSysImageList.Images.IndexOfKey(menuObj.ExImage);
  267. //e.Node.SelectedImageIndex = AppConfig.SysImageList.Images.IndexOfKey(menuObj.ExImage);
  268. }
  269. }
  270. private void FormMain_Load(object sender, EventArgs e)
  271. {
  272. LanguageConvert.ChangeLanguage(this, "1");
  273. navMain.Visible = false;
  274. fMenu = new FormTableMenu();
  275. fMenu.TopLevel = false;
  276. fMenu.MdiParent = this;
  277. fMenu.Parent = this.FormShowControl;
  278. fMenu.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
  279. fMenu.Dock = DockStyle.Fill;
  280. fMenu.Show();
  281. fMenu.BringToFront();
  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. }
  494. }