20230201_145_upperpc/InSituLaboratory/ViewModels/Pages/Dialogs/ModifyMenuViewModel.cs
2024-03-11 13:12:02 +08:00

110 lines
3.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}
}
}