20230201_145_upperpc/InSituLaboratory/ViewModels/Pages/Dialogs/ModifyMenuViewModel.cs

110 lines
3.8 KiB
C#
Raw Normal View History

2024-03-11 05:12:02 +00:00
using InSituLaboratory.Entities;
using InSituLaboratory.IService;
using InSituLaboratory.Models;
using Prism.Commands;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace InSituLaboratory.ViewModels.Pages.Dialogs
{
public class ModifyMenuViewModel : DialogViewModelBase
{
public MenuItemModel MenuModel { get; set; } = new MenuItemModel();
public List<SysMenu> ParentNodes { get; set; } = new List<SysMenu>();
public DelegateCommand SaveCommand { get; set; }
IMenuService _menuService;
public ModifyMenuViewModel(IMenuService menuService)
{
_menuService = menuService;
SaveCommand = new DelegateCommand(DoSave);
}
public override void OnDialogOpened(IDialogParameters parameters)
{
var model = parameters.GetValue<MenuItemModel>("model");
if (model == null)
{
Title = "新增菜单项";
MenuModel.ParentId = 0;// 默认新增一个一级菜单
MenuModel.MenuType = 1;// 默认新增一个集合类型的节点
}
else
{
Title = "编辑菜单项";
var sm = _menuService.Find<SysMenu>(model.MenuId);
MenuModel.MenuId = sm.MenuId;
MenuModel.MenuHeader = sm.MenuHeader;
MenuModel.ParentId = sm.ParentId;
MenuModel.TargetView = sm.TargetView;
MenuModel.MenuIcon = sm.MenuIcon;
MenuModel.MenuType = sm.MenuType;
}
//查询父节点
ParentNodes = _menuService.Query<SysMenu>(m => m.MenuType == 1).ToList();
//初始化一个顶级菜单
ParentNodes.Insert(0, new SysMenu { MenuHeader = "ROOT", MenuId = 0 });
/// 1、将model直接作为数据源提供给页面显示。
/// 问题:子窗口修改的每一个动作,都会反馈到 主窗口
///
/// 2、根据model中的MenuId进行数据检索后进行显示
/// 数据更新完成后,提交到了数据库,需要主窗口进行同步操作
}
/// <summary>
/// 编辑和新增
/// </summary>
public override void DoSave()
{
try
{
if (MenuModel.MenuId == 0)
{
//新增
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
uint key = Convert.ToUInt32(ts.TotalSeconds);
_menuService.Insert<SysMenu>(new SysMenu
{
MenuId = (int)key,//新增ID
MenuHeader = MenuModel.MenuHeader,
MenuIcon = MenuModel.MenuIcon,
TargetView = MenuModel.TargetView,
ParentId = MenuModel.ParentId,
MenuType = MenuModel.MenuType,
State = 1
});
}
else
{
//编辑
var entity = _menuService.Find<SysMenu>(MenuModel.MenuId);
entity.MenuHeader = MenuModel.MenuHeader;
entity.MenuIcon = MenuModel.MenuIcon;
entity.TargetView = MenuModel.TargetView;
entity.ParentId = MenuModel.ParentId;
entity.MenuType = MenuModel.MenuType;
_menuService.Update<SysMenu>(entity);
}
base.DoSave();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}