123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- using BizService;
- using BlankApp1.Models;
- using Model.Entities;
- using PLCTool.Common;
- using Prism.Regions;
- using SqlSugar;
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using static System.Windows.Forms.VisualStyles.VisualStyleElement;
- namespace BlankApp1.ViewModels
- {
- public class TreeMenuViewModel
- {
- public List<MenuItemModel> Menus { get; set; } = new List<MenuItemModel>();
- // 列表,没有树型结构
- private List<Model.Entities.Menu> origMenus = new List<Model.Entities.Menu>();
- private string basePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Images");
- IRegionManager _regionManager;
- public TreeMenuViewModel(IRegionManager regionManager, IMenuService menuService,IRoleMenuService iRoleMenuService)
- {
- _regionManager = regionManager;
- // 需要获取菜单数据
- try
- {
- //查找这个角色的菜单
- var allMenus = menuService.QueryList();
- var roleMenus= iRoleMenuService.FindAllByRoleId(Appsession.RoleId);
- foreach(var menu in roleMenus)
- {
- var findMenu= allMenus.FirstOrDefault(x=>x.MenuId== menu.MenuId);
- if(findMenu != null)
- {
- origMenus.Add(findMenu);
- }
-
- }
- this.FillMenus(Menus, 0);
- }
- catch(Exception ex)
- {
- MessageBoxResult boxResult = MessageBox.Show("初始化失败,请检查与数据库的链接!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
- return;
- }
- }
- public string EscapeUnicode( string str) // 将字符串编码为unicode转义序列(\uxxxx)
- {
- StringBuilder tmp = new StringBuilder();
- for (int i = 0; i < str.Length; i++)
- {
- ushort uxc = (ushort)str[i];
- tmp.Append(@"\u" + uxc.ToString("x4"));
- }
- return (tmp.ToString());
- }
- public static string String2Unicode(string source)
- {
- var bytes = Encoding.Unicode.GetBytes(source);
- var stringBuilder = new StringBuilder();
- for (var i = 0; i < bytes.Length; i += 2)
- {
- stringBuilder.AppendFormat("\\u{0:x2}{1:x2}", bytes[i + 1], bytes[i]);
- }
- return stringBuilder.ToString();
- }
- ///递归
- ///
- private void FillMenus(List<MenuItemModel> menus, int parentId)
- {
- var sub = origMenus.Where(m => m.ParentId == parentId).OrderBy(o => o.Index);
- //查找roleID对应的菜单
- if (sub.Count() > 0)
- {
- foreach (var item in sub)
- {
- string icon = string.Empty;
- if (!string.IsNullOrEmpty(item.MenuIcon))
- {
- icon = System.IO.Path.Combine(basePath, item.MenuIcon);
- }
- MenuItemModel mm = new MenuItemModel(_regionManager)
- {
- MenuHeader = item.MenuHeader,
- MenuIcon = icon,
- TargetView = item.TargetView
- };
- menus.Add(mm);
- FillMenus(mm.Children = new List<MenuItemModel>(), item.MenuId);
- }
- }
- }
- }
- }
|