1、首页 Default.aspx
首页是用的LigerUI 来控制的布局
前台代码(从后台得到菜单的JSon格式)
var _menus = {
"menus":<% =MenuList %>
};
后台代码:
/// <summary>
/// 用户菜单接口,用户菜单自定义,必须按格式输出。
/// </summary>
public string MenuList
{
get
{
//测试用
//return BP.DA.DataType.ReadTextFile(Server.MapPath("doc/DefaultMenu.txt"));
//使用GPM后删除上面一句
string userName = BP.Web.WebUser.No;
DataTable dtMenu = BP.OA.GPM.GetUserMenuOfDatatable(userName);
//转化成可用的DataTable,此数据从GPM来
if (dtMenu != null)
{
dtMenu.Columns["FK_Menu"].ColumnName = "menuid";
dtMenu.Columns["Name"].ColumnName = "menuname";
dtMenu.Columns["ParentNo"].ColumnName = "parentid";
dtMenu.Columns["Url"].ColumnName = "url";
dtMenu.Columns["WebPath"].ColumnName = "icon";
dtMenu.Columns["MenuType"].ColumnName = "degree";
}
foreach (DataRow dr in dtMenu.Rows)
{
string icon = String.Format("{0}", dr["icon"]);
if (!String.IsNullOrEmpty(icon) && icon.StartsWith("//")) icon = icon.Substring(2);
icon = String.Format("{0}{1}", this.GPM_HomePage, icon);
dr["icon"] = string.IsNullOrEmpty(icon) ? BP.WF.Glo.CCFlowAppPath + "WF/Img/FileType/ie.gif" : icon;
//string icon = String.Format("{0}", dr["icon"]);
//if (!String.IsNullOrEmpty(icon) && icon.StartsWith("//")) icon = icon.Substring(2);
//icon = String.Format("{0}{1}", this.GPM_HomePage, icon);
//dr["icon"] = icon;
}
//return dtMenu.Rows.Count.ToString();
//进入面板,得转化成面板的规则
return new BuildUserMenus(dtMenu).GetUserMenu(AppMenuNo);
}
}
3 、数据库
表(视图):
V_GPM_EmpMenu
视图数据从被集成的系统影射(下面两个表)
gpm_menu 系统菜单
gpm_usermenu 菜单的用户权限
添加菜单
webconfig 默认设置的菜单的开始ID 是2002
<!--系统菜单编号开始值:-->
<add key="AppMenuNo" value="2002" />
添加菜单时,给gpm_menu 表添加一条记录
ParentNo 设为2002 如果有子菜单 MenuType设为3 否则设为4 FK_App 是系统,如果是OA就填CCOA,是权限管理填GPM,是url是要跳转到的页面
为用户添加这个菜单的权限gpm_usermenu
(可以在gpm里改,也可以直接在数据库里加)
FK_MENU 为菜单ID
4、为OA系统加上权限管理菜单
OA系统默认是不带权限管理的,是两个分开的系统,权限管理和组织结构都放在了GPM里,需要跳到这个系统,才能设置。为了操作方便,我将权限管理直接放到OA菜单里
gpm的菜单是从CCOA\WF\DATA\XML\menu.xml文件里设置的
所以将menu.xml里的数据加到gpm_menu表里即可
<Item No="02" Name="权限管理" Url="" Img="../Images/Btn/Help.gif" ForUser="" DESC="" DFor="" Enable="">
<Item No="0200" Name="系统类别" Url="/Comm/SearchEUI.aspx?EnsName=BP.GPM.AppSorts" Img="/Images/Btn/Card.gif" />
<!--<Item No="0201" Name="系统与菜单" Url="/Comm/Search.aspx?EnsName=BP.GPM.Apps"
Img="/GPM/Images/Menu/application.png" />-->
<Item No="0201" Name="系统与菜单" Url="AppList.aspx" Img="/GPM/Images/Menu/application.png" />
<Item No="0202" Name="权限组" Url="/Comm/SearchEUI.aspx?EnsName=BP.GPM.Groups" Img="/Images/Btn/Group.gif" />
<Item No="0202" Name="按菜单分配权限" Url="AppMenuToEmp.aspx" Img="/Images/Btn/Menu.gif" />
<Item No="0203" Name="按用户分配权限" Url="EmpForMenus.aspx" Img="/Images/Btn/User.gif" />
<Item No="0204" Name="按岗位分配权限" Url="StationForMenus.aspx" Img="/Images/Btn/Users.gif" />
<Item No="0205" Name="按权限组分配权限" Url="EmpGroupForMenus.aspx" Img="/Images/Btn/Users.gif" />
注:菜单的MenuType如果设为3,就必须为此菜单加上下级菜单,否则无法正常显示