You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
4.1 KiB
C#

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<IDialogResult> RequestClose;
public bool CanCloseDialog()
{
return true;
}
public void OnDialogClosed()
{
}
public void OnDialogOpened(IDialogParameters parameters)
{
int _type = 0;
if (parameters.ContainsKey("type"))
{
_type = parameters.GetValue<int>("type");
_title = (_type == 0 ? "新增" : "修改") + _title;
}
if (parameters.ContainsKey("menu"))
{
var menu = parameters.GetValue<MenuItemModel>("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<string> Icons { get; set; } = new ObservableCollection<string>();
public ObservableCollection<MenuItemModel> ParentNodes { get; set; } = new ObservableCollection<MenuItemModel>();
private MenuItemModel _currentParentMenu;
public MenuItemModel CurrentParentMenu
{
get => _currentParentMenu;
set { SetProperty<MenuItemModel>(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());
}
}
}
}