革博士程序V1仓库
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.

353 rivejä
15 KiB

  1. using Models;
  2. using Sunny.UI;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.ComponentModel;
  6. using System.Data;
  7. using System.Drawing;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using System.Windows.Forms;
  12. namespace LeatherApp.Page
  13. {
  14. public partial class FSysSetting : UIPage
  15. {
  16. Service.UserService service = new Service.UserService();
  17. private User currEditUserInfo;
  18. public FSysSetting()
  19. {
  20. InitializeComponent();
  21. initData();
  22. #region dataGridView设置
  23. uiDataGridView1.AutoGenerateColumns = false;//自动创建列
  24. uiDataGridView1.AllowUserToAddRows = uiDataGridView1.AllowUserToDeleteRows = false;//用户添加删除行
  25. uiDataGridView1.AllowUserToResizeRows = true;//用户调整行大小
  26. uiDataGridView1.AllowUserToResizeColumns = false;//用户调整列大小
  27. uiDataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;//只可选中整行,不是单元格
  28. //显示行号与列宽度自动调整
  29. uiDataGridView1.RowHeadersVisible = true;
  30. uiDataGridView1.RowHeadersWidth = 30;
  31. uiDataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;//数据量过百绑定太变
  32. uiDataGridView1.RowPostPaint += (sender, e) =>//序号列头
  33. {
  34. Utils.Util.showRowNum_onDataGrid_RowPostPaint(this.uiDataGridView1, sender, e);
  35. };
  36. uiDataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
  37. //for (int i = 0; i < dataGridView1.Columns.Count; i++)//禁止点击列头排序
  38. // uiDataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
  39. //行列交叉处标题
  40. //if (uiDataGridView1.RowHeadersVisible) uiDataGridView1.TopLeftHeaderCell.Value = "SPH/CYL";
  41. //事件
  42. this.uiDataGridView1.DataBindingComplete += this.uiDataGridView1_DataBindingComplete;//bing data时发生,可修改单元格内容
  43. //this.uiDataGridView1.SelectIndexChange += uiDataGridView1_SelectIndexChange;//选择行时发行
  44. this.uiDataGridView1.CellClick += UiDataGridView1_CellClick;
  45. #endregion
  46. #region 分页及页脚合计设置
  47. this.uiPagination1.PageChanged += new Sunny.UI.UIPagination.OnPageChangeEventHandler(this.uiPagination1_PageChanged);
  48. //设置分页控件每页数量
  49. uiPagination1.PageSize = 12;
  50. //设置统计绑定的表格
  51. //uiDataGridViewFooter1.DataGridView = uiDataGridView1;
  52. //激活第1第,触发uiPagination1_PageChanged
  53. uiPagination1.ActivePage = 1;
  54. #endregion
  55. }
  56. private void initData(bool onlySetting = false)
  57. {
  58. if (!onlySetting)
  59. {
  60. cmbRole.ValueMember = "Id";
  61. cmbRole.DisplayMember = "Name";
  62. cmbRole.DataSource = service.GetRoleItems();
  63. }
  64. //DEV
  65. cmbLight_PortName.Items.AddRange(Utils.SSerialPort.getPortNames());
  66. cmbLight_PortName.Text = Config.Light_PortName;
  67. txtIOCard_DeviceNum.Text = Config.IOCard_DeviceNum;
  68. //LIB
  69. numcm2px_x.Text=Config.cm2px_x.ToString();
  70. numcm2px_y.Text = Config.cm2px_y.ToString();
  71. numMarginHoleWidth.Text= Config.MarginHoleWidth.ToString();
  72. numMiddleSuperposition.Text= Config.MiddleSuperposition.ToString();
  73. txtImagePath.Text= Config.ImagePath;
  74. ckbSaveAllImage.Checked = Config.IsSaveAllImage;
  75. ckbSaveDefectSourceImage.Checked = Config.IsSaveDefectSourceImage;
  76. ckbSaveDefectCutImage.Checked = Config.IsSaveDefectCutImage;
  77. //LOG
  78. txtLogPath.Text= Config.LogPath;
  79. }
  80. private void saveConfig()
  81. {
  82. IniFile ini = new IniFile(Config.appBasePath + "\\SysConfig.ini");
  83. //[LOG]
  84. ini.Write("LOG", "LogPath", this.txtLogPath.Text);
  85. //[DEV]
  86. ini.Write("DEV", "IOCard_DeviceNum", this.txtIOCard_DeviceNum.Text.Trim());
  87. ini.Write("DEV", "Light_PortName", this.cmbLight_PortName.Text);
  88. //[LIB]
  89. ini.Write("LIB", "cm2px_x", Convert.ToInt32(this.numcm2px_x.Text));
  90. ini.Write("LIB", "cm2px_y", Convert.ToInt32(this.numcm2px_y.Text));
  91. ini.Write("LIB", "MarginHoleWidth", Convert.ToInt32(this.numMarginHoleWidth.Text));
  92. ini.Write("LIB", "MiddleSuperposition", Convert.ToInt32(this.numMiddleSuperposition.Text));
  93. ini.Write("LIB", "ImagePath", this.txtImagePath.Text.Trim());
  94. ini.Write("LIB", "IsSaveAllImage", this.ckbSaveAllImage.Checked);
  95. ini.Write("LIB", "IsSaveDefectSourceImage", this.ckbSaveDefectSourceImage.Checked);
  96. ini.Write("LIB", "IsSaveDefectCutImage", this.ckbSaveDefectCutImage.Checked);
  97. //
  98. ini.UpdateFile();
  99. }
  100. private void sortBtns()
  101. {
  102. List<Control> ctls = new List<Control>();
  103. foreach (Control item in fpnUserOpBtns.Panel.Controls)
  104. ctls.Add(item);
  105. int w = fpnUserOpBtns.ClientSize.Width;
  106. int marge = (w - ctls.Sum(x => x.Width)) / 2;
  107. Padding oldM = ctls[0].Margin;
  108. ctls.First().Margin = new Padding(marge, oldM.Top, oldM.Right, oldM.Bottom);
  109. ctls.Last().Margin = new Padding(oldM.Left, oldM.Top, oldM.Right, marge);
  110. }
  111. private void resetUserInfo()
  112. {
  113. this.currEditUserInfo = null;
  114. this.uiDataGridView1.CurrentCell = null;
  115. this.txtUserCode.Text = this.txtUserName.Text =this.txtUserNote.Text= this.txtPassword.Text = this.txtPassword2.Text = "";
  116. this.ckbUserState.Checked = true;
  117. this.txtUserCode.Enabled = this.pnlUserPassword.Visible = true;
  118. this.btnUserNew.Visible =this.btnUserDel.Visible= this.btnResetPassword.Visible = false;
  119. //sortBtns();
  120. }
  121. /// <summary>
  122. /// 分页控件页面切换事件
  123. /// </summary>
  124. /// <param name="sender"></param>
  125. /// <param name="pagingSource"></param>
  126. /// <param name="pageIndex"></param>
  127. /// <param name="count"></param>
  128. private void uiPagination1_PageChanged(object sender, object pagingSource, int pageIndex, int count)
  129. {
  130. //未连接数据库,通过模拟数据来实现
  131. //一般通过ORM的分页去取数据来填充
  132. //pageIndex:第几页,和界面对应,从1开始,取数据可能要用pageIndex - 1
  133. //count:单页数据量,也就是PageSize值
  134. int totalCount=0;
  135. var list = service.GetListNav(pageIndex-1, count, ref totalCount, null);
  136. uiDataGridView1.DataSource = list;
  137. uiPagination1.TotalCount= totalCount;
  138. //表脚合计
  139. //uiDataGridViewFooter1.Clear();
  140. //uiDataGridViewFooter1["Column1"] = "合计:";
  141. //uiDataGridViewFooter1["Column2"] = "Column2_" + pageIndex;
  142. //uiDataGridViewFooter1["Column3"] = "Column3_" + pageIndex;
  143. //uiDataGridViewFooter1["Column4"] = "Column4_" + pageIndex;
  144. //
  145. this.uiDataGridView1.CurrentCell = null;
  146. //this.uiDataGridView1.ClearSelection();
  147. this.resetUserInfo();
  148. }
  149. private void uiDataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
  150. {
  151. var list = uiDataGridView1.DataSource as List<User>;
  152. for (int i = 0; i < uiDataGridView1.Rows.Count; i++)
  153. {
  154. if (list[i].RoleInfo != null)
  155. uiDataGridView1.Rows[i].Cells["colRoleName"].Value = list[i].RoleInfo.Name;
  156. }
  157. }
  158. private void UiDataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
  159. {
  160. if (e.RowIndex < 0)
  161. return;
  162. var list = uiDataGridView1.DataSource as List<User>;
  163. currEditUserInfo = list[e.RowIndex];
  164. this.txtUserCode.Text = currEditUserInfo.Code;
  165. this.txtUserName.Text = currEditUserInfo.Name;
  166. this.cmbRole.SelectedValue = currEditUserInfo.RoleId;
  167. this.ckbUserState.Checked = currEditUserInfo.State;
  168. this.txtUserNote.Text = currEditUserInfo.Note;
  169. //
  170. this.txtUserCode.Enabled = this.pnlUserPassword.Visible = false;
  171. this.btnUserNew.Visible = this.btnUserSave.Visible= this.btnUserDel.Visible= this.btnResetPassword.Visible = true;
  172. }
  173. private void btnUserNew_Click(object sender, EventArgs e)
  174. {
  175. resetUserInfo();
  176. }
  177. private void btnUserSave_Click(object sender, EventArgs e)
  178. {
  179. try
  180. {
  181. string szCode = this.txtUserCode.Text.Trim();
  182. string szName = this.txtUserName.Text.Trim();
  183. string szNote = this.txtUserNote.Text.Trim();
  184. int roleId = (int)this.cmbRole.SelectedValue;
  185. if (szCode == "" || szName == "")
  186. throw new Exception("请填写帐号和名称!");
  187. if (currEditUserInfo == null)
  188. {
  189. if (this.txtPassword.Text != this.txtPassword2.Text)
  190. throw new Exception("两次密码不一致!");
  191. currEditUserInfo=new User();
  192. currEditUserInfo.Password = Utils.Util.GetMD5(this.txtPassword.Text);
  193. currEditUserInfo.CreateUserCode = Config.loginUser.Code;
  194. }
  195. currEditUserInfo.Code = szCode;
  196. currEditUserInfo.Name = szName;
  197. currEditUserInfo.RoleId = roleId;
  198. currEditUserInfo.State = this.ckbUserState.Checked;
  199. currEditUserInfo.Note = szNote;
  200. currEditUserInfo.ModifyUserCode = Config.loginUser.Code;
  201. bool result;
  202. if (currEditUserInfo.Id == 0)
  203. {
  204. result = service.Insert(currEditUserInfo);
  205. if (result) uiPagination1.ActivePage = uiPagination1.ActivePage;//刷新
  206. }
  207. else
  208. {
  209. result = service.Update(currEditUserInfo);
  210. if (result) this.uiDataGridView1.Refresh();//刷新更新单元格
  211. }
  212. if (!result)
  213. throw new Exception("保存失败!");
  214. UIMessageTip.ShowOk("保存成功!", 1000);
  215. this.resetUserInfo();
  216. }
  217. catch (Exception ex)
  218. {
  219. UIMessageTip.ShowError( ex.Message, 2000);
  220. }
  221. }
  222. private void btnUserDel_Click(object sender, EventArgs e)
  223. {
  224. try
  225. {
  226. if (currEditUserInfo == null)
  227. return;
  228. if (currEditUserInfo.Code == "admin" || currEditUserInfo.Id==1)
  229. throw new Exception("管理员不可删除!");
  230. if (!service.Delete(currEditUserInfo))
  231. throw new Exception("删除失败!");
  232. uiPagination1.ActivePage = uiPagination1.ActivePage;//刷新
  233. UIMessageTip.ShowOk("删除成功!", 1000);
  234. this.resetUserInfo();
  235. }
  236. catch (Exception ex)
  237. {
  238. UIMessageTip.ShowError(ex.Message, 2000);
  239. }
  240. }
  241. private void btnResetPassword_Click(object sender, EventArgs e)
  242. {
  243. try
  244. {
  245. if (currEditUserInfo == null)
  246. return;
  247. currEditUserInfo.Password = Utils.Util.GetMD5("");
  248. //只更新指定列
  249. if (!service.Update(it => new User() { Password = currEditUserInfo.Password }, it => it.Id == currEditUserInfo.Id))
  250. throw new Exception("重置失败!");
  251. UIMessageTip.ShowOk("重置成功,新密码为空!", 1500);
  252. this.resetUserInfo();
  253. }
  254. catch (Exception ex)
  255. {
  256. UIMessageTip.ShowError(ex.Message, 2000);
  257. }
  258. }
  259. private void txtLogPath_ButtonClick(object sender, EventArgs e)
  260. {
  261. string dir = "";
  262. if (DirEx.SelectDirEx("打开文件夹", ref dir))
  263. txtLogPath.Text = dir;
  264. }
  265. private void txtImagePath_ButtonClick(object sender, EventArgs e)
  266. {
  267. string dir = "";
  268. if (DirEx.SelectDirEx("打开文件夹", ref dir))
  269. txtImagePath.Text = dir;
  270. }
  271. private void fpnUserOpBtns_ClientSizeChanged(object sender, EventArgs e)
  272. {
  273. sortBtns();
  274. }
  275. private void btnConfig_Click(object sender, EventArgs e)
  276. {
  277. try
  278. {
  279. saveConfig();
  280. UIMessageTip.ShowOk("保存成功,重新开启设备后生效!", 1500);
  281. }
  282. catch (Exception ex)
  283. {
  284. UIMessageTip.ShowError(ex.Message, 2000);
  285. }
  286. }
  287. private void btnMinSave_Click(object sender, EventArgs e)
  288. {
  289. try
  290. {
  291. saveConfig();
  292. UIMessageTip.ShowOk("保存成功,重新开启设备后生效!", 1500);
  293. }
  294. catch (Exception ex)
  295. {
  296. UIMessageTip.ShowError(ex.Message, 2000);
  297. }
  298. }
  299. private void btnMinReload_Click(object sender, EventArgs e)
  300. {
  301. initData(true);
  302. }
  303. /// <summary>
  304. /// 只触发一次,第一次切换为显示时触发
  305. /// </summary>
  306. /// <param name="sender"></param>
  307. /// <param name="e"></param>
  308. private void FSysSetting_Shown(object sender, EventArgs e)
  309. {
  310. this.uiDataGridView1.ClearSelection();
  311. }
  312. private void FSysSetting_Paint(object sender, PaintEventArgs e)
  313. {
  314. btnMinSave.Top = btnMinSave1.Top = btnMinSave2.Top = 0;
  315. btnMinReload.Top = btnMinReload1.Top = btnMinReload2.Top = 0;
  316. }
  317. }
  318. }