项目要求更改

This commit is contained in:
2026-03-27 12:39:12 +08:00
parent f40086a0b0
commit 2262c2a1db
16 changed files with 162 additions and 31 deletions

View File

@@ -23,6 +23,7 @@ namespace CapMachine.Wpf.ViewModels
FreeSql = freeSql;
this.Mapper = mapper;
MachineRtDataService = machineRtDataService;
UserLevelOptions = new ObservableCollection<string> { "操作员", "管理员" };
}
@@ -54,6 +55,11 @@ namespace CapMachine.Wpf.ViewModels
/// </summary>
public MachineRtDataService MachineRtDataService { get; }
/// <summary>
/// 用户等级可选项
/// </summary>
public ObservableCollection<string> UserLevelOptions { get; }
private UserDto _CurSelectedItem;
/// <summary>
@@ -136,6 +142,7 @@ namespace CapMachine.Wpf.ViewModels
UserDtoItems.Add(new UserDto()
{
IsEnable = true,
Level = "操作员"
});
}
@@ -269,6 +276,11 @@ namespace CapMachine.Wpf.ViewModels
MessageBox.Show("请确认等级是否正确", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
return;
}
if (!UserLevelOptions.Contains(item.Level))
{
MessageBox.Show("等级仅支持【操作员】或【管理员】", "提示", MessageBoxButton.OK, MessageBoxImage.Hand);
return;
}
}
//检查数据是否正常

View File

@@ -6,24 +6,28 @@ using CapMachine.Wpf.Services;
using Prism.Commands;
using Prism.Events;
using Prism.Regions;
using System;
using System.Windows;
using System.Windows.Input;
namespace CapMachine.Wpf.ViewModels
{
public class MainViewModel : NavigationViewModel
{
public MainViewModel(IRegionManager region, INavigationMenuService menuService, SysRunService sysService, IEventAggregator eventAggregator)
public MainViewModel(IRegionManager region, INavigationMenuService menuService, SysRunService sysService, IEventAggregator eventAggregator, ConfigService configService)
{
this.region = region;
MenuService = menuService;
SysService = sysService;
EventAggregator = eventAggregator;
ConfigService = configService;
NavigateCommand = new DelegateCommand<NavigationItem>(Navigate);
}
public INavigationMenuService MenuService { get; }
public SysRunService SysService { get; }
public IEventAggregator EventAggregator { get; }
public ConfigService ConfigService { get; }
public DelegateCommand<NavigationItem> NavigateCommand { get; private set; }
private int selectedIndex = -1;
@@ -59,11 +63,43 @@ namespace CapMachine.Wpf.ViewModels
return;
}
if (!CanNavigate(item.PageName))
{
IsTopDrawerOpen = false;
return;
}
NavigatePage(item.PageName);
IsTopDrawerOpen = false;
}
/// <summary>
/// 校验当前页面是否允许导航
/// </summary>
/// <param name="pageName">目标页面名称</param>
/// <returns>true允许导航false禁止导航</returns>
private bool CanNavigate(string pageName)
{
if (string.IsNullOrWhiteSpace(pageName))
{
return false;
}
if (pageName.Equals("UserManageView", StringComparison.OrdinalIgnoreCase))
{
return true;
}
if (ConfigService.IsUserLoggedIn)
{
return true;
}
MessageBox.Show("请先登录用户,再切换到其他界面!", "提示");
return false;
}
private DelegateCommand<string> _TopDrawerCmd;
/// <summary>
/// 顶部弹窗按钮命令

View File

@@ -5,6 +5,7 @@ using CapMachine.Wpf.Services;
using Masuit.Tools;
using Prism.Commands;
using Prism.Events;
using Prism.Regions;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
@@ -17,19 +18,21 @@ namespace CapMachine.Wpf.ViewModels
{
public class UserManageViewModel : NavigationViewModel
{
public UserManageViewModel(IEventAggregator eventAggregator, IFreeSql freeSql, ConfigService configService, IDialogService dialogService)
public UserManageViewModel(IEventAggregator eventAggregator, IFreeSql freeSql, ConfigService configService, IDialogService dialogService, IRegionManager regionManager)
{
//事件服务
_EventAggregator = eventAggregator;
FreeSql = freeSql;
ConfigService = configService;
DialogService = dialogService;
RegionManager = regionManager;
CurUserDto = new UserDto() { IsEnable = true };
}
private IEventAggregator _EventAggregator { get; set; }
public IFreeSql FreeSql { get; }
public ConfigService ConfigService { get; }
public IDialogService DialogService { get; }
public IRegionManager RegionManager { get; }
@@ -81,18 +84,30 @@ namespace CapMachine.Wpf.ViewModels
if (ListUser.FirstOrDefault().Password == CurUserDto.Password.Trim())
{
MessageBox.Show("登录成功!", "提示");
CurUserDto.Level = ListUser.FirstOrDefault().Level;
var loginUser = ListUser.FirstOrDefault();
CurUserDto.Id = loginUser.Id;
CurUserDto.Name = loginUser.Name;
CurUserDto.Level = loginUser.Level;
CurUserDto.IsEnable = loginUser.IsEnable;
CurUserDto.Password = "";
ConfigService.CurUserDto = CurUserDto;
ConfigService.IsUserLoggedIn = true;
_UserManageCmd?.RaiseCanExecuteChanged();
RegionManager.RequestNavigate("MainViewContentRegion", "MonitorView");
}
else
{
ConfigService.IsUserLoggedIn = false;
_UserManageCmd?.RaiseCanExecuteChanged();
MessageBox.Show("密码错误!", "提示");
}
}
else
{
ConfigService.IsUserLoggedIn = false;
_UserManageCmd?.RaiseCanExecuteChanged();
MessageBox.Show("当前用户不存在!", "提示");
}
@@ -115,19 +130,36 @@ namespace CapMachine.Wpf.ViewModels
{
if (_UserManageCmd == null)
{
_UserManageCmd = new DelegateCommand(() => UserManageCmdMethod());
_UserManageCmd = new DelegateCommand(() => UserManageCmdMethod(), () => CanUserManage());
}
return _UserManageCmd;
}
}
/// <summary>
/// 判断当前用户是否可以进行用户管理
/// </summary>
/// <returns>true可管理false不可管理</returns>
private bool CanUserManage()
{
return ConfigService.IsUserLoggedIn &&
ConfigService.CurUserDto != null &&
ConfigService.CurUserDto.Level == "管理员";
}
/// <summary>
/// 用户管理
/// </summary>
/// <exception cref="NotImplementedException"></exception>
private void UserManageCmdMethod()
{
if (CurUserDto != null && CurUserDto.Level == "管理员")
if (!ConfigService.IsUserLoggedIn)
{
MessageBox.Show("请先登录后再进行用户管理!", "提示");
return;
}
if (ConfigService.CurUserDto != null && ConfigService.CurUserDto.Level == "管理员")
{
ShowDialogExpInfo();
}
@@ -157,5 +189,15 @@ namespace CapMachine.Wpf.ViewModels
});
}
/// <summary>
/// 导航到当前页面时刷新用户管理按钮状态
/// </summary>
/// <param name="navigationContext">导航上下文</param>
public override void OnNavigatedTo(NavigationContext navigationContext)
{
_UserManageCmd?.RaiseCanExecuteChanged();
base.OnNavigatedTo(navigationContext);
}
}
}