using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using CasunCommon.BaseUI; using Pms.Common.Utility; namespace PMSUI { public partial class PermissionSettingForm : CasunForm { private enum EPermissionShow { Permission, CNFormName, PermissionLevel, //AuditPermissionLevel, Remark, Reserved1, Reserved2, Reserved3 } private int selectRowIndexOfordersDataGridView; // 记录选中的行号 private int selectColumnIndexOfordersDataGridView; // 记录选中的列号 private int scrollingRowIndexOfordersDataGridView; // 记录垂直滚动条位置 private int scrollingColumnIndexOfordersDataGridView; // 记录水平滚动条的位置 /// /// 用于事件重复使用 /// private Dictionary DBNameToShowNameDic = new Dictionary(); /// /// 界面名称 对应 显示名称 /// private Dictionary AllFormNameToShowNameDic = new Dictionary(); /// /// 显示名称 对应 界面名称 与 AllFormNameToShowNameDic 存储内容 的key 和Value 相反 /// private Dictionary AllShowNameToFormNameDic = new Dictionary(); public PermissionSettingForm() { InitializeComponent(); } private void Init() { cbFormName.Items.Clear(); cbFormName.Items.Add(""); foreach (CasunUILib.EForms EForm in Enum.GetValues(typeof(CasunUILib.EForms))) { if (EForm >= CasunUILib.EForms.UserSetting) { if(AllFormNameToShowNameDic.ContainsKey(EForm.ToString())) { cbFormName.Items.Add(AllFormNameToShowNameDic[EForm.ToString()]); } else { string name = CLanguageManager.LanguageChange(EForm.ToString()); if(name == "") { cbFormName.Items.Add(EForm.ToString()); AllFormNameToShowNameDic.Add(EForm.ToString(), EForm.ToString()); AllShowNameToFormNameDic.Add(EForm.ToString(), EForm.ToString()); } else { cbFormName.Items.Add(name); AllFormNameToShowNameDic.Add(name, EForm.ToString()); AllShowNameToFormNameDic.Add(EForm.ToString(), name); } } } } cbPermissionLevel.Items.Clear(); cbPermissionLevel.Items.Add(""); foreach (EPermissionLevel PermissionLev in Enum.GetValues(typeof(EPermissionLevel))) { cbPermissionLevel.Items.Add(PermissionLev.ToString()); } List PermissionList = PmsCoreDB.DBHost.Instance.PermissionSetting.GetPermission(); cbPermission.Items.AddRange(PermissionList.ToArray()); if (PermissionList.Count > 0) { cbPermission.SelectedIndex = 0; } } private void cbPermission_SelectedIndexChanged(object sender, EventArgs e) { loadTable(); } private void ResetControl() { tbPermission.Text = ""; cbFormName.Text = ""; cbPermissionLevel.Text = ""; tbRemark.Text = ""; tbReserved1.Text = ""; tbReserved2.Text = ""; tbReserved3.Text = ""; } /// /// /// /// /// /// public static bool GetColumnsIndex(DataTable dt ,string ColumnName,out int Index) { Index = 0; if (dt.Columns.Count > 0) { int columnNum = 0; columnNum = dt.Columns.Count; for (int i = 0; i < dt.Columns.Count; i++) { if(dt.Columns[i].ColumnName == ColumnName) { Index = i; return true; } } } return false; } private void loadTable() { ResetControl(); string strWhere = string.Format( "Permission = '{0}'", cbPermission.Text.ToString()); if (DGVPermission.CurrentCell != null && DGVPermission.RowCount != 0 && DGVPermission.ColumnCount != 0) { selectRowIndexOfordersDataGridView = DGVPermission.CurrentCell.RowIndex; selectColumnIndexOfordersDataGridView = DGVPermission.CurrentCell.ColumnIndex; scrollingRowIndexOfordersDataGridView = DGVPermission.FirstDisplayedScrollingRowIndex; scrollingColumnIndexOfordersDataGridView = DGVPermission.FirstDisplayedScrollingColumnIndex; } DataTable dt = CFormColumnManager.GetDGVDataSource(this.Name, "PMS_sys_PermissionSetting", "order by Permission,CNFormName", strWhere); if(DBNameToShowNameDic.ContainsKey("CNFormName")) { int Index; if (GetColumnsIndex(dt, DBNameToShowNameDic["CNFormName"], out Index)) { for(int count = dt.Rows.Count -1; count >= 0;count--) { DataRow dw = dt.Rows[count]; if (AllFormNameToShowNameDic.ContainsKey(dw[Index].ToString())) { dw[Index] = AllFormNameToShowNameDic[dw[Index].ToString()]; } else { dt.Rows.RemoveAt(count); } } } } //if (DBNameToShowNameDic.ContainsKey("PermissionLevel")) //{ // int Index; // if (GetColumnsIndex(dt, DBNameToShowNameDic["PermissionLevel"], out Index)) // { // foreach (DataRow dw in dt.Rows) // { // dw[Index] = PerLevIntStrToEnumStr(dw[Index].ToString()); // } // } //} DGVPermission.DataSource = dt; int n = DGVPermission.RowCount; int m = DGVPermission.ColumnCount; if (n != 0 && m != 0) { if (selectRowIndexOfordersDataGridView < n && selectColumnIndexOfordersDataGridView < m && scrollingRowIndexOfordersDataGridView < n && scrollingColumnIndexOfordersDataGridView < m) { DGVPermission.CurrentCell = DGVPermission.Rows[selectRowIndexOfordersDataGridView].Cells[selectColumnIndexOfordersDataGridView]; DGVPermission.FirstDisplayedScrollingRowIndex = scrollingRowIndexOfordersDataGridView; DGVPermission.FirstDisplayedScrollingColumnIndex = scrollingColumnIndexOfordersDataGridView; } } } private void InitLabelShow() { ShowLable(EPermissionShow.Permission, lbSelPermission); ShowLable(EPermissionShow.Permission, lbPermission); ShowLable(EPermissionShow.CNFormName, lbFormName); ShowLable(EPermissionShow.PermissionLevel, lbPermissionLevel); ShowLable(EPermissionShow.Remark, lbRemark); ShowLable(EPermissionShow.Reserved1, lbReserved1); ShowLable(EPermissionShow.Reserved2, lbReserved2); ShowLable(EPermissionShow.Reserved2, lbReserved2); } private void InitFormShow() { foreach (Control con in gp_Opt.Controls) { if (!(con is Button)) { con.Visible = false; } } //主键显示 lbSelPermission.Visible = true; cbPermissionLevel.Visible = true; lbPermission.Visible = true; tbPermission.Visible = true; cbFormName.Visible = true; lbFormName.Visible = true; List InitControlList = CFormColumnManager.GetNeedShowDBList(this.Name); foreach (string str in InitControlList) { switch (str) { case "PermissionLevel": lbPermissionLevel.Visible = true; cbPermissionLevel.Visible = true; break; case "Remark": lbRemark.Visible = true; tbRemark.Visible = true; break; case "Reserved1": lbReserved1.Visible = true; tbReserved1.Visible = true; break; case "Reserved2": lbReserved2.Visible = true; tbReserved2.Visible = true; break; case "Reserved3": lbReserved3.Visible = true; tbReserved3.Visible = true; break; default: break; } } } private void DGVPermission_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) { int DGVCurrentRow = e.RowIndex; ResetControl(); if (DGVCurrentRow != -1 && DGVPermission.Rows[DGVCurrentRow] != null) { ShowText(tbPermission, EPermissionShow.Permission.ToString(), DGVCurrentRow); ShowText(cbFormName, EPermissionShow.CNFormName.ToString(), DGVCurrentRow); ShowText1(cbPermissionLevel, EPermissionShow.PermissionLevel.ToString(), DGVCurrentRow); ShowText(tbRemark, EPermissionShow.Remark.ToString(), DGVCurrentRow); ShowText(tbReserved1, EPermissionShow.Reserved1.ToString(), DGVCurrentRow); ShowText(tbReserved2, EPermissionShow.Reserved2.ToString(), DGVCurrentRow); ShowText(tbReserved3, EPermissionShow.Reserved3.ToString(), DGVCurrentRow); } } private void ShowLable(EPermissionShow Ekey, Label slable) { if (DBNameToShowNameDic.ContainsKey(Ekey.ToString())) slable.Text = DBNameToShowNameDic[Ekey.ToString()]; } private void ShowText1(ComboBox sControl, string strKey, int DGVCurrentRow) { if (DBNameToShowNameDic.ContainsKey(strKey) && DGVPermission.Rows[DGVCurrentRow].Cells[DBNameToShowNameDic[strKey]].Value != null) { string strValue = DGVPermission.Rows[DGVCurrentRow].Cells[DBNameToShowNameDic[strKey]].Value.ToString(); sControl.Text = PerLevIntStrToEnumStr(strValue); } } private void ShowText(Control sControl, string strKey, int DGVCurrentRow) { if (DBNameToShowNameDic.ContainsKey(strKey) && DGVPermission.Rows[DGVCurrentRow].Cells[DBNameToShowNameDic[strKey]].Value != null) { sControl.Text = DGVPermission.Rows[DGVCurrentRow].Cells[DBNameToShowNameDic[strKey]].Value.ToString(); } } private void PermissionSettingForm_Load(object sender, EventArgs e) { if (!InitDBNameToShowNameDic()) { this.Close(); return; } CasunUILib.ButtonHelps(btHelps); gp_Read.Location = new Point(btHelps.Location.X, gp_Read.Location.Y); gp_Opt.Location = new Point(btHelps.Location.X, gp_Opt.Location.Y); gp_Opt1.Location = new Point(btHelps.Location.X, gp_Opt1.Location.Y); CasunUILib.GroupBoxReadModel(gp_Read,PermissionLevel); CasunUILib.GroupBoxReadWriteModel(gp_Opt, PermissionLevel); CasunUILib.GroupBoxReadWriteModel(gp_Opt1, PermissionLevel); CasunUILib.splitContainerModel(splitContainer1); InitFormShow(); InitLabelShow(); CasunUILib.DgvModel(DGVPermission); //CasunUILib.GroupBoxModel(GP_Per, PermissionLevel); Init(); } private bool InitDBNameToShowNameDic() { if (!CFormColumnManager.GetDBNameToShowNameDic(this.Name, out DBNameToShowNameDic)) { MessageBox.Show(CLanguageManager.LanguageChange("加载界面配置失败,请重启尝试恢复。" ) + "-1"); return false; } if(!CFormColumnManager.GetAllFormNameToShowNameDic(out AllFormNameToShowNameDic)) { MessageBox.Show(CLanguageManager.LanguageChange("加载界面配置失败,请重启尝试恢复。" ) + "-2"); return false; } foreach (string strKey in AllFormNameToShowNameDic.Keys) { if (!AllShowNameToFormNameDic.ContainsKey(AllFormNameToShowNameDic[strKey])) { AllShowNameToFormNameDic.Add(AllFormNameToShowNameDic[strKey], strKey); } else { MessageBox.Show(CLanguageManager.LanguageChange("加载界面配置失败,请重启尝试恢复。" ) + "-3"); //MessageBox.Show("加载界面配置失败,有名称重复的界面配置。"); return false; } } return true; } private bool FormatData(out PmsCoreDB.Model.PMS_sys_PermissionSetting sPermission) { sPermission = new PmsCoreDB.Model.PMS_sys_PermissionSetting(); if (!String.IsNullOrEmpty(tbPermission.Text.ToString()) || String.IsNullOrEmpty(cbFormName.Text.ToString()) ) { sPermission.Permission = tbPermission.Text.ToString(); if(AllShowNameToFormNameDic.ContainsKey(cbFormName.Text.ToString())) { sPermission.CNFormName = AllShowNameToFormNameDic[cbFormName.Text.ToString()]; } else { return false; } //sPermission.PermissionLevel = CasunUILib.StringToInt32(); sPermission.PermissionLevel = StringToPermissionLevel(cbPermissionLevel.Text.ToString()); sPermission.Remark = tbRemark.Text; sPermission.Reserved1 = tbReserved1.Text; sPermission.Reserved2 = tbReserved2.Text; sPermission.Reserved3 = tbReserved3.Text; sPermission.AuditPermissionLevel = CasunUILib.AuditPermission( sPermission.CNFormName, "", sPermission.Permission, sPermission.PermissionLevel ); return true; } else { return false; } } private string PerLevIntStrToEnumStr(string PermissionLevel) { EPermissionLevel EPerLev; if(Enum.TryParse(PermissionLevel,out EPerLev)) { return EPerLev.ToString(); } else { return EPermissionLevel.NoPower.ToString(); } } private int StringToPermissionLevel(string PermissionLevel) { EPermissionLevel EPerLev; if (Enum.TryParse(PermissionLevel, out EPerLev)) { return (int)EPerLev; } else { return (int)EPermissionLevel.NoPower; } } private void btAddPermission_Click(object sender, EventArgs e) { PmsCoreDB.Model.PMS_sys_PermissionSetting sPermission; if(!FormatData(out sPermission)) { MessageBox.Show(CLanguageManager.LanguageChange("添加失败") + "!"); return; } else { if(PmsCoreDB.DBHost.Instance.PermissionSetting.Exists(sPermission.Permission, sPermission.CNFormName)) { MessageBox.Show(CLanguageManager.LanguageChange("已存在") + "!"); return; } else { if (PmsCoreDB.DBHost.Instance.PermissionSetting.Add(sPermission)) { MessageBox.Show(CLanguageManager.LanguageChange("添加成功") + "!"); string strOptLog = string.Format("【AddPermission】:Permission={0},Form ={1},Level = {2}" , sPermission.Permission , sPermission.CNFormName , sPermission.PermissionLevel ); COperateLog.Instance.InsertOperaterLogAsync(UserID, strOptLog, DateTime.Now); if(!cbPermission.Items.Contains(sPermission.Permission)) { cbPermission.Items.Add(sPermission.Permission); cbPermission.Text = sPermission.Permission; } } else { MessageBox.Show(CLanguageManager.LanguageChange("添加失败") + "!"); } loadTable(); } } } private void btDelete_Click(object sender, EventArgs e) { PmsCoreDB.Model.PMS_sys_PermissionSetting sPermission; if (!FormatData(out sPermission)) { MessageBox.Show(CLanguageManager.LanguageChange("请重新选择要处理的行") + "!"); return; } else { string strMsg = CLanguageManager.LanguageChange("删除") + ":【" + sPermission.Permission + "】\r\n" + CLanguageManager.LanguageChange("请谨慎操作") + "!"; if (MessageBox.Show(strMsg, CLanguageManager.LanguageChange("删除"), MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK) { return; } else { if (PmsCoreDB.DBHost.Instance.PermissionSetting.Delete(sPermission.Permission,sPermission.CNFormName)) { MessageBox.Show(CLanguageManager.LanguageChange("删除成功") + "!"); string strOptLog = string.Format("【DeletePermission】:Permission={0},Form ={1}" , sPermission.Permission , sPermission.CNFormName ); COperateLog.Instance.InsertOperaterLogAsync(UserID, strOptLog, DateTime.Now); } else { MessageBox.Show(CLanguageManager.LanguageChange("删除失败") + "!"); } loadTable(); } } } private void btModfiyStep_Click(object sender, EventArgs e) { PmsCoreDB.Model.PMS_sys_PermissionSetting sPermission; if (!FormatData(out sPermission)) { MessageBox.Show(CLanguageManager.LanguageChange("请重新选择要处理的行") + "!"); return; } else { if (!PmsCoreDB.DBHost.Instance.PermissionSetting.Exists(sPermission.Permission, sPermission.CNFormName)) { MessageBox.Show(CLanguageManager.LanguageChange("信息不存在") + "!"); return; } else { if (PmsCoreDB.DBHost.Instance.PermissionSetting.Update(sPermission)) { MessageBox.Show(CLanguageManager.LanguageChange("更新成功") + "!"); string strOptLog = string.Format("【ModfiyPermission】:Permission={0},Form = {1},Level={2},remark={3},reserved1={4},reserved2={5},reserved3={6}" , sPermission.Permission , sPermission.CNFormName , sPermission.PermissionLevel , sPermission.Remark , sPermission.Reserved1 , sPermission.Reserved2 , sPermission.Reserved3 ); COperateLog.Instance.InsertOperaterLogAsync(UserID, strOptLog, DateTime.Now); if (!cbPermission.Items.Contains(sPermission.Permission)) { cbPermission.Items.Add(cbPermission.Text); } } else { MessageBox.Show(CLanguageManager.LanguageChange("更新失败") + "!"); } loadTable(); } } } private void btHelps_Click(object sender, EventArgs e) { MessageBox.Show(PMSUI.Config.CConfigManager.gs_FormHelpConfig.GetFormHelp(this.Name)); } private void btDeletePermission_Click(object sender, EventArgs e) { string strPermission = cbPermission.Text.ToString(); string strMsg = CLanguageManager.LanguageChange("删除权限") + ":【" + strPermission + "】\r\n" + CLanguageManager.LanguageChange("请谨慎操作") + "!"; if (MessageBox.Show(strMsg, CLanguageManager.LanguageChange("删除权限"), MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK) { if (PmsCoreDB.DBHost.Instance.PermissionSetting.DeletePermission(strPermission)) { cbPermission.Items.Remove(strPermission); DGVPermission.Rows.Clear(); string strOptLog = string.Format("【DeletePermission】:Permission={0}" , strPermission ); COperateLog.Instance.InsertOperaterLogAsync(UserID, strOptLog, DateTime.Now); } else { } } } } }