ST_MainForm.cs 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. using Common;
  2. using Infragistics.Win.UltraWinTabControl;
  3. using MeterPlugInLibrary;
  4. using Oracle.ManagedDataAccess.Client;
  5. using System;
  6. using System.Collections;
  7. using System.Configuration;
  8. using System.Data;
  9. using System.Linq;
  10. using System.Reflection;
  11. using System.Windows.Forms;
  12. namespace JC_MeasuringSystem
  13. {
  14. /// <summary>
  15. /// 子窗体在Load事件中若要关闭主窗体则会出现异常,此时我们可以通过委托的方式来处理
  16. /// </summary>
  17. //public delegate void EventChildCloseForm(string e);
  18. public partial class ST_MainForm : Form
  19. {
  20. private Hashtable hMenuItem = new Hashtable();
  21. private string userID = "";
  22. private string userName = "";
  23. private CoreAppUser userInfo = null;
  24. public string UserID
  25. {
  26. get { return userID; }
  27. }
  28. public string UserName
  29. {
  30. get { return userName; }
  31. }
  32. public CoreAppUser AppUser
  33. {
  34. get { return userInfo; }
  35. }
  36. public ST_MainForm(CoreAppUser _userInfo)
  37. {
  38. userInfo = _userInfo;
  39. userID = userInfo.userid;
  40. userName = userInfo.username;
  41. userInfo.joindate = DateTime.Now; //loginTime.ToString("yyyy-MM-dd HH:mm:ss:fff");
  42. InitializeComponent();
  43. LoadMenuConfig();
  44. }
  45. private void LoadMenuConfig()
  46. {
  47. string MenuItems = "";
  48. string roleType = ConfigurationManager.AppSettings["roleType"].ToString().Trim();
  49. if (roleType == "1")
  50. {
  51. #region 通过数据库权限配置来获取值
  52. try
  53. {
  54. DataSet ds = new DataSet();
  55. //测试数据库:192.168.102.45 lims ;正式数据库:192.168.185.183 limsdb;;;pid 890325369868128256表示父级菜单为远程计量
  56. string connString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.185.183)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=JGJLDB)));Persist Security Info=True;User ID=sso;Password=sso#2021;";
  57. string sql = string.Format(@"select distinct m.MENU_LABEL, m.MENU_URL, m.seq
  58. from SYS_MENU m, sys_user_role r, SYS_AUTHORIZE a
  59. where m.p_id = '890325369868128256'
  60. and m.status = '1'
  61. and m.menu_id=a.resource_id
  62. and r.role_id=a.role_id
  63. and r.user_id='{0}' order by m.seq asc", userID); // 原为and r.user_code='{0}'", userID);2021年4月9日调整
  64. using (OracleDataAdapter oadapter = new OracleDataAdapter(sql, connString))
  65. {
  66. oadapter.Fill(ds);
  67. if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
  68. {
  69. //汽车衡监控:CarMonitor:frmMonitor,
  70. foreach (DataRow dr in ds.Tables[0].Rows)
  71. {
  72. MenuItems += dr["MENU_LABEL"].ToString() + ":" + dr["MENU_URL"].ToString() + ",";
  73. }
  74. MenuItems = MenuItems.Substring(0, MenuItems.Length - 1);
  75. }
  76. else
  77. {
  78. MessageBox.Show("当前用户未配置权限");
  79. }
  80. }
  81. }
  82. catch (Exception ex)
  83. {
  84. MessageBox.Show("获取权限配置信息失败,请联系管理员" + ex);
  85. }
  86. #endregion 通过数据库权限配置来获取值
  87. }
  88. else
  89. {
  90. MenuItems = ConfigurationManager.AppSettings["MenuItem"].ToString().Trim();
  91. }
  92. try
  93. {
  94. if (!string.IsNullOrEmpty(MenuItems))
  95. {
  96. string[] mis = MenuItems.Split(new string[] { ",", "," }, StringSplitOptions.RemoveEmptyEntries);
  97. if (mis.Count() > 0)
  98. {
  99. foreach (string mi in mis)
  100. {
  101. string[] mics = mi.Split(new string[] { ":", ":" }, StringSplitOptions.RemoveEmptyEntries);
  102. if (mics.Count() >= 3)
  103. {
  104. ToolStripMenuItem mItem = new System.Windows.Forms.ToolStripMenuItem();
  105. mItem.Text = mics[0];
  106. mItem.Tag = new ArrayList() { mics[0], mics[1], mics[2] };
  107. mItem.Click += new EventHandler(SysMenuItem_Click);
  108. this.SystemMainMenu.DropDownItems.Add(mItem);
  109. }
  110. }
  111. }
  112. }
  113. ToolStripMenuItem xItem = new System.Windows.Forms.ToolStripMenuItem();
  114. xItem.Text = "退出";
  115. xItem.Click += new EventHandler(CloseApp);
  116. this.SystemMainMenu.DropDownItems.Add(xItem);
  117. }
  118. catch { }
  119. }
  120. public void SysMenuItem_Click(object sender, EventArgs e)
  121. {
  122. try
  123. {
  124. if (!TabForm.Tabs.Exists(sender.GetHashCode().ToString()))
  125. {
  126. ArrayList mt = (ArrayList)((ToolStripMenuItem)sender).Tag;
  127. string assemblyName = mt[1].ToString();
  128. string className = mt[2].ToString();
  129. Assembly baseFormAssembly = Assembly.Load(assemblyName);
  130. Type type = baseFormAssembly.GetType(assemblyName + "." + className);
  131. System.Diagnostics.Debug.Assert(type.IsSubclassOf(typeof(Form)));
  132. Form form = Activator.CreateInstance(type, true) as Form;
  133. form.MdiParent = this;
  134. form.Text = mt[0].ToString();
  135. //form.WindowState = FormWindowState.Maximized;
  136. //form.Size = this.Size;
  137. form.Dock = DockStyle.Fill;
  138. form.Show();
  139. if (!hMenuItem.ContainsKey(sender.GetHashCode()))
  140. {
  141. hMenuItem.Add(sender.GetHashCode(), form);
  142. }
  143. UltraTab ut = TabForm.Tabs.Add(sender.GetHashCode().ToString(), mt[0].ToString());
  144. ut.Active = true;
  145. ut.Selected = true;
  146. ut.Tag = form;
  147. }
  148. else
  149. {
  150. UltraTab ut = TabForm.Tabs[sender.GetHashCode().ToString()];
  151. ut.Active = true;
  152. ut.Selected = true;
  153. ((Form)(ut.Tag)).Activate();
  154. }
  155. }
  156. catch (Exception exp)
  157. {
  158. MessageBox.Show(exp.Message, "打开界面出错");
  159. }
  160. }
  161. private void CloseApp(object sender, EventArgs e)
  162. {
  163. Application.Exit();
  164. }
  165. private void menuStrip1_ItemAdded(object sender, ToolStripItemEventArgs e)
  166. {
  167. if (e.Item.Text.Length == 0 || e.Item.Text == "还原(&R)" || e.Item.Text == "最小化(&N)" || e.Item.Text == "关闭(&C)")
  168. {
  169. e.Item.Visible = false;
  170. }
  171. }
  172. private void ST_MainForm_MdiChildActivate(object sender, EventArgs e)
  173. {
  174. foreach (UltraTab ut in TabForm.Tabs)
  175. {
  176. if (ut.Tag == sender)
  177. {
  178. ut.Selected = true;
  179. ut.Active = true;
  180. }
  181. }
  182. }
  183. private void TabForm_TabClosing(object sender, TabClosingEventArgs e)
  184. {
  185. if (e.Tab.Tag != null)
  186. {
  187. ((Form)(e.Tab.Tag)).Close();
  188. TabForm.Tabs.Remove(e.Tab);
  189. }
  190. }
  191. private void timer1_Tick(object sender, EventArgs e)
  192. {
  193. try
  194. {
  195. if (TabForm.Tabs.Count > 0)
  196. {
  197. foreach (UltraTab ut in TabForm.Tabs)
  198. {
  199. if (ut.Tag == null)
  200. {
  201. ut.Dispose();
  202. }
  203. else if (ut.Tag == this.ActiveMdiChild && !ut.Active)
  204. {
  205. ut.Active = true;
  206. ut.Selected = true;
  207. }
  208. }
  209. }
  210. }
  211. catch { }
  212. }
  213. private void TabForm_ActiveTabChanged(object sender, ActiveTabChangedEventArgs e)
  214. {
  215. UltraTabControl ut = (UltraTabControl)sender;
  216. if (ut.ActiveTab.Tag != null)
  217. {
  218. ((Form)(ut.ActiveTab.Tag)).Focus();
  219. }
  220. }
  221. private void ST_MainForm_Load(object sender, EventArgs e)
  222. {
  223. timer1.Start();
  224. imageControl.Start();
  225. }
  226. //图片控制器含图片压缩及上传sftp
  227. private ImageControl imageControl = new ImageControl();
  228. private void ST_MainForm_FormClosing(object sender, FormClosingEventArgs e)
  229. {
  230. try
  231. {
  232. imageControl.Stop();
  233. }
  234. catch { }
  235. timer1.Stop();
  236. Application.Exit();
  237. //System.Environment.Exit(0);
  238. }
  239. }
  240. }