using Prism.Commands; using Prism.Ioc; using Prism.Mvvm; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input; using Txgy.EWS.Client.Common; using Txgy.EWS.Client.Entity; using Txgy.EWS.Client.IBLL; using Txgy.EWS.Client.Models; namespace Txgy.EWS.Client.SysModule.ViewModels { public class AddMenuDialogViewModel : BindableBase, IDialogAware { string _title = "系统菜单"; public string Title => _title; public event Action RequestClose; public bool CanCloseDialog() { return true; } public void OnDialogClosed() { } public void OnDialogOpened(IDialogParameters parameters) { int _type = 0; if (parameters.ContainsKey("type")) { _type = parameters.GetValue("type"); _title = (_type == 0 ? "新增" : "修改") + _title; } if (parameters.ContainsKey("menu")) { var menu = parameters.GetValue("menu"); if (_type == 0)// 新增的时候 CurrentParentMenu = ParentNodes.First(m => m.MenuId == menu.MenuId); else// 修改的时候 { CurrentParentMenu = ParentNodes.First(m => m.MenuId == menu.ParentId); MenuModel = menu; } MenuModel.ParentId = menu.ParentId; } } public MenuItemModel MenuModel { get; set; } = new MenuItemModel(); public ObservableCollection Icons { get; set; } = new ObservableCollection(); public ObservableCollection ParentNodes { get; set; } = new ObservableCollection(); private MenuItemModel _currentParentMenu; public MenuItemModel CurrentParentMenu { get => _currentParentMenu; set { SetProperty(ref _currentParentMenu, value); } } public ICommand ConfirmCommand { get => new DelegateCommand(() => { _menuBLL.SaveMenu(new MenuEntity { MenuId = MenuModel.MenuId, MenuHeader = MenuModel.MenuHeader, TargetView = MenuModel.TargetView, ParentId = CurrentParentMenu.MenuId, MenuIcon = MenuModel.MenuIcon,// 字体图标 Index = MenuModel.Index, MenuType = MenuModel.MenuType }); RequestClose?.Invoke(new DialogResult(ButtonResult.OK)); }); } public ICommand CancelCommand { get => new DelegateCommand(() => { RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel)); }); } IMenuBLL _menuBLL; public AddMenuDialogViewModel(IContainerProvider containerProvider, IMenuBLL menuBLL) { _menuBLL = menuBLL; MenuModel.MenuType = 1; if (GlobalData.CurrentUserInfo == null) return; // 初始化父节点 var origMenus = GlobalData.CurrentUserInfo.Menus; this.ParentNodes.Add(new MenuItemModel { MenuId = 0, MenuHeader = "根节点" }); origMenus.ForEach(item => { if (item.MenuType == 1) { MenuItemModel mode = new MenuItemModel { MenuId = item.MenuId, MenuHeader = item.MenuHeader }; this.ParentNodes.Add(mode); } }); // 初始化图标列表 var icons = menuBLL.GetIcons(); for (int i = 0; i < icons.Count; i++) { Icons.Add(((char)int.Parse(icons[i], System.Globalization.NumberStyles.HexNumber)).ToString()); } } } }