private void BindRoleFunction(List <sys_menu> menu_list, List <sys_rolemenufunction> trmf_list, List <sys_function> tf_list, List <sys_menufunction> tmf_list, MenuRoleList model, string roleid) { var list = new List <MenuRoleList>(); //找出该菜单下的功能和选中的功能 tf_list.ForEach(a => { if (tmf_list.FindAll(val => val.MenuFunction_FunctionID.Equals(a.Function_ID) && val.MenuFunction_MenuID.Equals(model.id)).Count > 0) { var dic = new MenuRoleList(); dic.id = a.Function_ID; dic.title = a.Function_Name; dic.parentId = model.id; dic.disabled = "true"; dic.basicData = new { menuId = model.id, functionId = a.Function_ID }; CheckArr checkArr = new CheckArr(); checkArr.type = "0"; //判断该功能是否选中 var ischecked = trmf_list.Find(x => x.RoleMenuFunction_FunctionID.Equals(a.Function_ID) && x.RoleMenuFunction_MenuID.Equals(model.id) && x.RoleMenuFunction_RoleID.Equals(roleid)); if (ischecked != null) { checkArr.isChecked = "1"; } else { checkArr.isChecked = "0"; } var clist = new List <CheckArr>(); clist.Add(checkArr); dic.checkArr = clist; list.Add(dic); } }); model.children = list; }
private void BindMenuRoleList(List <sys_menu> menu_list, List <sys_rolemenufunction> trmf_list, List <sys_function> tf_list, List <sys_menufunction> tmf_list, MenuRoleList model, string roleid) { var dic = new MenuRoleList(); var _paret_menu_list = menu_list.FindAll(item => item.Menu_ParentID != null && item.Menu_ParentID.Equals(model.id)); var list = new List <MenuRoleList>(); foreach (var item in _paret_menu_list) { var _child_menu_list = menu_list.FindAll(x => x.Menu_ParentID != null && x.Menu_ParentID.Equals(item.Menu_ID)); //判断是否有子集 if (_child_menu_list.Count > 0) { dic = new MenuRoleList(); dic.id = item.Menu_ID; dic.title = item.Menu_Name + "(" + item.Menu_Num + ")"; dic.parentId = item.Menu_ParentID; dic.basicData = new { menuId = item.Menu_ID, functionId = HaveID }; CheckArr checkArr = new CheckArr(); checkArr.type = "0"; //判断该功能是否选中 var ischecked = trmf_list.Find(p => p.RoleMenuFunction_FunctionID.Equals(HaveID) && p.RoleMenuFunction_MenuID == item.Menu_ID && p.RoleMenuFunction_RoleID.Equals(roleid)); if (ischecked != null) { checkArr.isChecked = "1"; } else { checkArr.isChecked = "0"; } var clist = new List <CheckArr>(); clist.Add(checkArr); dic.checkArr = clist; BindMenuRoleList(menu_list, trmf_list, tf_list, tmf_list, dic, roleid); list.Add(dic); } else { dic = new MenuRoleList(); dic.id = item.Menu_ID; dic.title = item.Menu_Name + "(" + item.Menu_Num + ")"; dic.parentId = item.Menu_ParentID; dic.basicData = new { menuId = item.Menu_ID, functionId = HaveID }; CheckArr checkArr = new CheckArr(); checkArr.type = "0"; //判断该功能是否选中 var ischecked = trmf_list.Find(p => p.RoleMenuFunction_FunctionID.Equals(HaveID) && p.RoleMenuFunction_MenuID == item.Menu_ID && p.RoleMenuFunction_RoleID.Equals(roleid)); if (ischecked != null) { checkArr.isChecked = "1"; } else { checkArr.isChecked = "0"; } var clist = new List <CheckArr>(); clist.Add(checkArr); dic.checkArr = clist; BindRoleFunction(menu_list, trmf_list, tf_list, tmf_list, dic, roleid); list.Add(dic); } model.children = list; } }
///// <summary> ///// 获取角色对应的功能树 ///// </summary> ///// <returns></returns> //public List<Dictionary<string, object>> GetRoleMenuFunctionTree(string roleid) //{ // var dic = new Dictionary<string, object>(); // var menu_list = (List<sys_menu>)_Sys_MenuRepositoryS.FindListByClause(null, "Menu_Num desc"); // var trmf_list = (List<sys_rolemenufunction>)_Sys_RoleMenuFunctionRepository.FindListByClause(p => p.RoleMenuFunction_RoleID == roleid, "RoleMenuFunction_CreateTime asc");//角色菜单功能 // var tf_list = (List<sys_function>)_Sys_FunctionRepositoryS.FindListByClause(null, "Function_Num asc");//功能 // var tmf_list = (List<sys_menufunction>)_Sys_MenuFunctionRepositoryS.FindAll();//菜单功能 // var list = new List<Dictionary<string, object>>(); // var _paret_menu_list = menu_list.FindAll(item => item.Menu_ParentID == null || item.Menu_ParentID == ""); // for (int i = _paret_menu_list.Count - 1; i >= 0; i--) // { // var _child_menu_list = menu_list.FindAll(x => x.Menu_ParentID != null && x.Menu_ParentID.Equals(_paret_menu_list[i].Menu_ID)); // //判断是否有子集 // if (_child_menu_list.Count > 0) // { // dic = new Dictionary<string, object>(); // dic.Add("name", _paret_menu_list[i].Menu_Name + "(" + _paret_menu_list[i].Menu_Num + ")"); // dic.Add("id", _paret_menu_list[i].Menu_ID); // dic.Add("pId", _paret_menu_list[i].Menu_ParentID); // dic.Add("num", _paret_menu_list[i].Menu_Num); // dic.Add("ur", _paret_menu_list[i].Menu_Url); // dic.Add("tag", null); // dic.Add("checkeds", false); // list.Add(dic); // this.FindChildMenu(menu_list, trmf_list, tf_list, tmf_list, _paret_menu_list[i], roleid, list); // } // else // { // if (tmf_list.FindAll(val => val.MenuFunction_MenuID.Equals(_paret_menu_list[i].Menu_ID)).Count == 0)//判断该菜单是否有 勾选了功能 如果没有则删除 // { // _paret_menu_list.RemoveAt(i); // continue; // } // dic = new Dictionary<string, object>(); // dic.Add("name", _paret_menu_list[i].Menu_Name + "(" + _paret_menu_list[i].Menu_Num + ")"); // dic.Add("id", _paret_menu_list[i].Menu_ID); // dic.Add("pId", _paret_menu_list[i].Menu_ParentID); // dic.Add("num", _paret_menu_list[i].Menu_Num); // dic.Add("ur", _paret_menu_list[i].Menu_Url); // dic.Add("tag", null); // dic.Add("checkeds", false); // list.Add(dic); // //找出该菜单下的功能和选中的功能 // foreach (var a in tf_list) // { // if (tmf_list.FindAll(val => val.MenuFunction_FunctionID.Equals(a.Function_ID) // && val.MenuFunction_MenuID.Equals(_paret_menu_list[i].Menu_ID)).Count > 0) // { // dic = new Dictionary<string, object>(); // dic.Add("name", a.Function_Name); // dic.Add("id", a.Function_ID); // dic.Add("pId", _paret_menu_list[i].Menu_ID); // dic.Add("num", a.Function_Num); // dic.Add("ur", null); // dic.Add("tag", "fun"); // //判断该功能是否选中 // var ischecked = trmf_list.Find(x => x.RoleMenuFunction_FunctionID.Equals(a.Function_ID) && x.RoleMenuFunction_MenuID.Equals(_paret_menu_list[i].Menu_ID) && x.RoleMenuFunction_RoleID.Equals(roleid)); // if (ischecked == null) // dic.Add("checkeds", false); // else // dic.Add("checkeds", true); // list.Add(dic); // } // } // } // } // return list; //} //private void FindChildMenu(List<sys_menu> menu_list, List<sys_rolemenufunction> trmf_list, List<sys_function> tf_list, List<sys_menufunction> tmf_list, sys_menu menu, string roleid, List<Dictionary<string, object>> list) //{ // var dic = new Dictionary<string, object>(); // var _paret_menu_list = menu_list.FindAll(item => item.Menu_ParentID != null && item.Menu_ParentID.Equals(menu.Menu_ID)); // for (int i = _paret_menu_list.Count - 1; i >= 0; i--) // { // var _child_menu_list = menu_list.FindAll(x => x.Menu_ParentID != null && x.Menu_ParentID.Equals(_paret_menu_list[i].Menu_ID)); // //判断是否有子集 // if (_child_menu_list.Count > 0) // { // dic = new Dictionary<string, object>(); // dic.Add("name", _paret_menu_list[i].Menu_Name + "(" + _paret_menu_list[i].Menu_Num + ")"); // dic.Add("id", _paret_menu_list[i].Menu_ID); // dic.Add("pId", _paret_menu_list[i].Menu_ParentID); // dic.Add("num", _paret_menu_list[i].Menu_Num); // dic.Add("ur", _paret_menu_list[i].Menu_Url); // dic.Add("tag", null); // dic.Add("checkeds", false); // list.Add(dic); // this.FindChildMenu(menu_list, trmf_list, tf_list, tmf_list, _paret_menu_list[i], roleid, list); // } // else // { // if (tmf_list.FindAll(val => val.MenuFunction_MenuID.Equals(_paret_menu_list[i].Menu_ID)).Count == 0)//判断该菜单是否有 勾选了功能 如果没有则删除 // { // _paret_menu_list.RemoveAt(i); // continue; // } // dic = new Dictionary<string, object>(); // dic.Add("name", _paret_menu_list[i].Menu_Name + "(" + _paret_menu_list[i].Menu_Num + ")"); // dic.Add("id", _paret_menu_list[i].Menu_ID); // dic.Add("pId", _paret_menu_list[i].Menu_ParentID); // dic.Add("num", _paret_menu_list[i].Menu_Num); // dic.Add("ur", _paret_menu_list[i].Menu_Url); // dic.Add("tag", null); // dic.Add("checkeds", false); // list.Add(dic); // //找出该菜单下的功能和选中的功能 // tf_list.ForEach(a => // { // if (tmf_list.FindAll(val => val.MenuFunction_FunctionID.Equals(a.Function_ID) // && val.MenuFunction_MenuID.Equals(_paret_menu_list[i].Menu_ID)).Count > 0) // { // dic = new Dictionary<string, object>(); // dic.Add("name", a.Function_Name); // dic.Add("id", a.Function_ID); // dic.Add("pId", _paret_menu_list[i].Menu_ID); // dic.Add("num", a.Function_Num); // dic.Add("ur", null); // dic.Add("tag", "fun"); // //判断该功能是否选中 // var ischecked = trmf_list.Find(x => x.RoleMenuFunction_FunctionID.Equals(a.Function_ID) && x.RoleMenuFunction_MenuID.Equals(_paret_menu_list[i].Menu_ID) && x.RoleMenuFunction_RoleID.Equals(roleid)); // if (ischecked == null) // dic.Add("checkeds", false); // else // dic.Add("checkeds", true); // list.Add(dic); // } // }); // } // } //} /// <summary> /// 获取角色对应的功能树 /// </summary> /// <returns></returns> public List <MenuRoleList> GetRoleMenuFunctionTree(string roleid) { var dic = new MenuRoleList(); var menu_list = (List <sys_menu>)_Sys_MenuRepositoryS.FindListByClause(null, "Menu_Num asc"); var trmf_list = (List <sys_rolemenufunction>)_Sys_RoleMenuFunctionRepository.FindListByClause(p => p.RoleMenuFunction_RoleID == roleid, "RoleMenuFunction_CreateTime asc"); //角色菜单功能 var tf_list = (List <sys_function>)_Sys_FunctionRepositoryS.FindListByClause(null, "Function_Num asc"); //功能 var tmf_list = (List <sys_menufunction>)_Sys_MenuFunctionRepositoryS.FindAll(); //菜单功能 var list = new List <MenuRoleList>(); foreach (var item in menu_list.FindAll(p => string.IsNullOrEmpty(p.Menu_ParentID))) { var _child_menu_list = menu_list.FindAll(x => x.Menu_ParentID != null && x.Menu_ParentID.Equals(item.Menu_ID)); if (_child_menu_list != null && _child_menu_list.Count > 0) { dic = new MenuRoleList(); dic.id = item.Menu_ID; dic.title = item.Menu_Name + "(" + item.Menu_Num + ")"; dic.parentId = item.Menu_ParentID; dic.basicData = new { menuId = item.Menu_ID, functionId = HaveID }; CheckArr checkArr = new CheckArr(); checkArr.type = "0"; //判断该功能是否选中 var ischecked = trmf_list.Find(p => p.RoleMenuFunction_FunctionID.Equals(HaveID) && p.RoleMenuFunction_MenuID == item.Menu_ID && p.RoleMenuFunction_RoleID.Equals(roleid)); if (ischecked != null) { checkArr.isChecked = "1"; } else { checkArr.isChecked = "0"; } var clist = new List <CheckArr>(); clist.Add(checkArr); dic.checkArr = clist; BindMenuRoleList(menu_list, trmf_list, tf_list, tmf_list, dic, roleid); list.Add(dic); } else { dic = new MenuRoleList(); dic.id = item.Menu_ID; dic.title = item.Menu_Name + "(" + item.Menu_Num + ")"; dic.parentId = item.Menu_ParentID; dic.basicData = new { menuId = item.Menu_ID, functionId = HaveID }; CheckArr checkArr = new CheckArr(); checkArr.type = "0"; //判断该功能是否选中 var ischecked = trmf_list.Find(p => p.RoleMenuFunction_FunctionID.Equals(HaveID) && p.RoleMenuFunction_MenuID == item.Menu_ID && p.RoleMenuFunction_RoleID.Equals(roleid)); if (ischecked != null) { checkArr.isChecked = "1"; } else { checkArr.isChecked = "0"; } var clist = new List <CheckArr>(); clist.Add(checkArr); dic.checkArr = clist; BindRoleFunction(menu_list, trmf_list, tf_list, tmf_list, dic, roleid); list.Add(dic); } } return(list); }