using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using CommonLib.data; using CommonLib; using System.Data.SqlClient; using DevExpress.XtraEditors; namespace Lskj.Main { public partial class FrmSetDesktop : FormBase { private DataTable dtAllTable = new DataTable(); private DataTable dtDesktopTable = new DataTable(); private SqlDataAdapter adapter = new SqlDataAdapter(); private DataSet dataSet = new DataSet(); public int userid; public FrmSetDesktop() { InitializeComponent(); } private void FrmSetDesktop_Load(object sender, EventArgs e) { dtAllTable = getpurviewmenus(); dtDesktopTable = getdesktopmenus(); gvMain.GridControl.DataSource = dtAllTable; gvSelected.GridControl.DataSource = dtDesktopTable; } /// /// 获取我的桌面 /// /// private DataTable getdesktopmenus() { string sqlValue = string.Format("SELECT * FROM P_SystemDesktopTab where OperatorId='{0}'", userid); adapter = SqlHelper.ExecuteAdapter(CommandType.Text, sqlValue); if (dataSet != null && dataSet.Tables.Count > 0) dataSet.Clear(); adapter.Fill(dataSet); SqlCommandBuilder sb = new SqlCommandBuilder(adapter); return dataSet.Tables[0]; } /// /// 获取有权限的模块 /// /// private DataTable getpurviewmenus() { string sqlValue = string.Format(@"SELECT a.menuid,a.MenuCaption,SUBSTRING(menustruct,1,2) menuparent,a.menustruct, ISNULL(a.DllFileName,'') dllname,ISNULL(a.UrlParams,'') moduleid, ISNULL(a.MobileIcon,'') url,a.purview,a.SubSysId subid,a.SubSysName subname,ISNULL(a.dirid,'') dirid,ISNULL(a.bmpspec,'') bmpspec,ISNULL(TRCReport,0) menumode FROM ( SELECT DISTINCT 0 AS purview,b.SubSysName,c.dirid,c.bmpSpec,a.* FROM p_formMenuConfigTab a INNER JOIN P_SubSystemTab b ON a.subsysid = b.SubSysId LEFT JOIN p_systemdlltab c ON a.UrlParams = c.DllCoid WHERE b.MobileShow=1 AND a.ShowPlatform=1 AND isnull(b.UseEd,0) = 1 ) a INNER JOIN ( {1} ) b ON CHARINDEX(CAST(a.menuid AS VARCHAR)+',',b.KcPurview)>0 OR CHARINDEX(CAST(a.menuid AS VARCHAR)+'|,',b.KcPurview)>0 WHERE LEN(MenuStruct)=4 and ISNULL(a.UrlParams,'')<>'' and LOWER(a.DllFileName) IN ('lskj.pubmodule.dll','lskj.pubmoduledetail.dll','lskj.report.dll','lskj.pubmoduletd.dll') and ISNULL(a.UrlParams,'') not in (select MenuId from P_SystemDesktopTab where OperatorId='{0}')", userid, getpurviews()); DataTable dtTable = SqlHelper.ExecuteDataSet(sqlValue).Tables[0]; return dtTable; } /// /// 获取权限动态sql /// /// private string getpurviews() { string purviewSql = string.Format("select isnull(wmsPurview,'')+isnull(KcPurview,'')+ISNULL(crmPurview,'')+ISNULL(bomPurview,'')+ISNULL(mrpPurview,'')+ISNULL(scmPurview,'')+ISNULL(sellPurview,'')+ISNULL(RdmPurview,'')+ISNULL(hrPurview,'')+ISNULL(costPurview,'')+ISNULL(eamPurview,'')+ISNULL(FmPurview,'')+ISNULL(oaPurview,'')+ISNULL(BiPurview,'')+isnull(QmsPurview,'') as KcPurview from p_SubsysPurviewTab where employeeid={0}", userid); string tempSql = string.Empty; string sqlValue = "select SubsysCode code from P_SubSystemTab where ISNULL(SubsysCode,'')<>'' and mobileshow=1"; DataTable dtTable = SqlHelper.ExecuteDataSet(sqlValue).Tables[0]; foreach (DataRow item in dtTable.Rows) { tempSql += string.Format(" isnull({0}Purview,'')+", (item["code"] + "").Trim()); } if (!string.IsNullOrEmpty(tempSql)) { purviewSql = string.Format("select {0} as KcPurview from p_SubsysPurviewTab where employeeid={1}", tempSql.Trim('+'), userid); } return purviewSql; } /// /// 双击添加 /// /// /// private void gvMain_DoubleClick(object sender, EventArgs e) { int[] rows = gvMain.GetSelectedRows(); if (rows.Count() > 0) { DataRow s_row = gvMain.GetDataRow(rows[0]); DataRow row = dtDesktopTable.NewRow(); row["MenuName"] = s_row["MenuCaption"]; row["MenuId"] = s_row["moduleid"]; row["OrderId"] = dtDesktopTable.Rows.Count + 1; row["OperatorId"] = userid; dtDesktopTable.Rows.Add(row); dtAllTable.Rows.Remove(s_row); } } /// /// 保存 /// /// /// private void btnSave_Click(object sender, EventArgs e) { try { adapter.Update(gvSelected.GridControl.DataSource as DataTable); (gvSelected.GridControl.DataSource as DataTable).AcceptChanges(); XtraMessageBox.Show("保存成功"); this.DialogResult = DialogResult.OK; } catch (Exception ex) { XtraMessageBox.Show("保存失败" + ex.Message); } } /// /// 删除模块 /// /// /// private void tsmiDel_Click(object sender, EventArgs e) { int[] rows = gvSelected.GetSelectedRows(); if (rows.Length > 0) { DataRow row = gvSelected.GetDataRow(rows[0]); int result = SqlHelper.ExecuteNonQuery(string.Format("delete P_SystemDesktopTab where id='{0}'", row["id"])); XtraMessageBox.Show("删除成功"); FrmSetDesktop_Load(sender, e); } } /// /// 重排序号 /// /// /// private void tsmiReset_Click(object sender, EventArgs e) { int index = 1; foreach (DataRow item in dtDesktopTable.Rows) { item["OrderId"] = index++; } try { adapter.Update(gvSelected.GridControl.DataSource as DataTable); (gvSelected.GridControl.DataSource as DataTable).AcceptChanges(); XtraMessageBox.Show("重置成功"); } catch (Exception ex) { XtraMessageBox.Show("重置失败" + ex.Message); } } private void btnClose_Click(object sender, EventArgs e) { this.Close(); } } }