NavagationBar.cs 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Drawing;
  4. using System.Data;
  5. using System.Text;
  6. using System.Windows.Forms;
  7. using UAS_MES_NEW.DataOperate;
  8. using UAS_MES_NEW.Entity;
  9. using DevExpress.XtraNavBar;
  10. using System.Collections;
  11. using System.Reflection;
  12. using UAS_MES_NEW.PublicForm;
  13. namespace UAS_MES_NEW.CustomControl.AccordionMenu
  14. {
  15. public partial class NavagationBar : NavBarControl
  16. {
  17. StringBuilder sql = new StringBuilder();
  18. public static int WinIndex = 0;
  19. /// <summary>
  20. /// 记录当前功能面板中的按钮
  21. /// </summary>
  22. private ArrayList ArrFunButton = new ArrayList();
  23. /// <summary>
  24. /// 记录当前功能面板中的listview
  25. /// </summary>
  26. private ArrayList ArrFunListView = new ArrayList();
  27. /// <summary>
  28. /// 已经打开的Form
  29. /// </summary>
  30. public static Dictionary<string, int> OpenedFormName = new Dictionary<string, int>();
  31. public NavagationBar()
  32. {
  33. InitializeComponent();
  34. DataHelper dh = SystemInf.dh;
  35. if (dh == null)
  36. return;
  37. if (User.UserAccountType == "admin")
  38. {
  39. sql.Clear();
  40. sql.Append("select distinct sn_id,sn_detno,sn_module,sn_modulecode,sn_classname,sn_displayname,sn_caller ugp_caller,1 ugp_ifdelete,1 ugp_ifread,1 ugp_ifspecial,1 ugp_ifall,");
  41. sql.Append("1 ugp_ifwrite from CS$SYSNAVATION left join CS$USERGROUPPOWER on sn_caller=ugp_caller where sn_using=1 order by sn_modulecode,sn_detno");
  42. }
  43. else
  44. {
  45. sql.Clear();
  46. sql.Append("select sn_id,sn_detno,sn_module,sn_displayname,sn_modulecode,sn_classname,ugp_caller,max(ugp_ifdelete)ugp_ifdelete,max(ugp_ifread)ugp_ifread");
  47. sql.Append(",max(ugp_ifspecial)ugp_ifspecial,max(ugp_ifwrite)ugp_ifwrite,max(ugp_ifall)ugp_ifall from CS$USERGROUPPOWER ");
  48. sql.Append("left join CS$SYSNAVATION on sn_caller=ugp_caller where sn_using=1 and ugp_groupcode in ( select eg_groupcode from cs$empgroup ");
  49. sql.Append("left join cs$userresource on ur_groupcode = eg_groupcode where eg_emcode = '" + User.UserCode + "') and (nvl(ugp_ifread,0)<>0 or nvl(ugp_ifall,0)<>0) group by sn_id,sn_caller,sn_detno,sn_modulecode,sn_classname,sn_module,sn_displayname,ugp_caller order by sn_modulecode,sn_detno");
  50. }
  51. DataTable dt = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
  52. if (dt.Rows.Count == 0 && User.UserAccountType != "admin")
  53. {
  54. return;
  55. }
  56. for (int i = 0; i < dt.Rows.Count; i++)
  57. {
  58. bool ContainGroup = false;
  59. string module_name = dt.Rows[i]["sn_module"].ToString();
  60. string caller = dt.Rows[i]["sn_displayname"].ToString();
  61. NavBarItem nbi = new NavBarItem(caller);
  62. nbi.Tag = dt.Rows[i]["sn_classname"].ToString();
  63. nbi.LinkClicked += Nbi_LinkClicked;
  64. nbi.Tag = dt.Rows[i]["sn_classname"].ToString();
  65. nbi.Hint = dt.Rows[i]["ugp_caller"].ToString();
  66. nbi.Name = dt.Rows[i]["sn_id"].ToString();
  67. for (int j = 0; j < Groups.Count; j++)
  68. {
  69. if (Groups[j].Caption == module_name)
  70. {
  71. ContainGroup = true;
  72. if (dt.Rows[i]["ugp_ifread"].ToString() != "0" || dt.Rows[i]["ugp_ifall"].ToString() != "0")
  73. {
  74. Groups[j].ItemLinks.Add(nbi);
  75. }
  76. }
  77. else
  78. {
  79. ContainGroup = false;
  80. }
  81. }
  82. if (!ContainGroup)
  83. {
  84. NavBarGroup nbg = new NavBarGroup(module_name);
  85. //如果加载Icon失败则加载默认图片
  86. try
  87. {
  88. nbg.LargeImage = new Bitmap(@Application.StartupPath + "/Resources/" + dt.Rows[i]["sn_module"].ToString() + ".png");
  89. }
  90. catch (Exception)
  91. {
  92. try
  93. {
  94. nbg.LargeImage = new Bitmap(@Application.StartupPath + "/Resources/defaulticon.png");
  95. }
  96. catch (Exception)
  97. {
  98. nbg.ImageUri = null;
  99. }
  100. }
  101. Groups.Add(nbg);
  102. nbg.ItemLinks.Add(nbi);
  103. }
  104. }
  105. //查询出的用户可见的Caller
  106. //将查询出的数据添加到队列中
  107. for (int i = 0; i < dt.Rows.Count; i++)
  108. {
  109. //添加权限
  110. Dictionary<string, bool> dic = new Dictionary<string, bool>();
  111. dic.Add("IFDELETE", dt.Rows[i]["UGP_IFDELETE"].ToString() != "1" ? false : true);
  112. dic.Add("IFREAD", dt.Rows[i]["UGP_IFREAD"].ToString() != "1" ? false : true);
  113. dic.Add("IFWRITE", dt.Rows[i]["UGP_IFWRITE"].ToString() != "1" ? false : true);
  114. dic.Add("IFSPECIAL", dt.Rows[i]["UGP_IFSPECIAL"].ToString() != "1" ? false : true);
  115. dic.Add("IFALL", dt.Rows[i]["UGP_IFALL"].ToString() != "1" ? false : true);
  116. //之后通过Call来获取页面操作的权限
  117. if (SystemInf.Caller.ContainsKey(dt.Rows[i]["ugp_caller"].ToString()))
  118. {
  119. SystemInf.Caller.Remove(dt.Rows[i]["ugp_caller"].ToString());
  120. }
  121. SystemInf.Caller.Add(dt.Rows[i]["ugp_caller"].ToString(), dic);
  122. }
  123. }
  124. private void Nbi_LinkClicked(object sender, NavBarLinkEventArgs e)
  125. {
  126. NavBarItem nbi = (sender as NavBarItem);
  127. if (nbi.Tag.ToString() == "Make.Make_RePrintLabel")
  128. {
  129. CheckPwd form = new CheckPwd();
  130. form.ShowDialog();
  131. }
  132. Form OpenForm = (Form)Assembly.GetExecutingAssembly().CreateInstance("UAS_MES_NEW." + nbi.Tag.ToString());
  133. //if (nbi.Tag.ToString() != "Query.Query_MacAddress")
  134. //{
  135. // DataTable dt = (DataTable)SystemInf.dh.ExecuteSql("select * from DeviceMacAddress where dma_mac='" + SystemInf.MacAddress + "'", "select");
  136. // if (dt.Rows.Count == 0)
  137. // {
  138. // MessageBox.Show("该设备不在作业设备清单中,请先上传MAC以及设备信息");
  139. // return;
  140. // }
  141. //}
  142. OpenForm.Dock = DockStyle.Fill;
  143. OpenForm.Text = nbi.Caption;
  144. //用Tag保存Caller
  145. OpenForm.Tag = nbi.Hint;
  146. TabControl tc = (TabControl)this.Parent.Controls["MainTabControl"];
  147. //如果窗体不存在进行打开,item.ToolTip是Caller
  148. if (!OpenedFormName.ContainsKey(nbi.Hint))
  149. {
  150. TabPage tb = new TabPage { Name = nbi.Name, Tag = nbi.Hint, Text = OpenForm.Text };
  151. OpenForm.TopLevel = false;
  152. tc.TabPages.Add(tb);
  153. //直接选中新打开的界面
  154. tc.SelectedTab = tb;
  155. tb.Controls.Add(OpenForm);
  156. OpenedFormName.Add(nbi.Hint, WinIndex);
  157. tc.TabIndex = WinIndex;
  158. WinIndex++;
  159. OpenForm.Show();
  160. }
  161. //如果窗体已存在展示该窗体
  162. else
  163. tc.SelectTab(nbi.Name);
  164. }
  165. }
  166. }