MainVM.cs
4.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
using HHECS.Application.Enums;
using HHECS.Executor;
using HHECS.Infrastructure.Enums;
using HHECS.Infrastructure.Notice;
using HHECS.Model.Entities;
using HHECS.WinClient.View.UserPermission;
using HHECS.WinCommon.ViewModel;
using MySqlX.XDevAPI.Common;
using NLog;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Data;
using MessageBox = HandyControl.Controls.MessageBox;
namespace HHECS.WinClient.View.Main
{
public class MainVM : VMBase
{
/// <summary>
/// 当前用户的所有权限
/// </summary>
public List<Permission> UserPermissions { get; set; }
public string StatusText { get; set; } = $"用户:{App.User.UserName} 登录时间:{DateTime.Now:yyyy-MM-dd HH:mm:ss}";
public string LicenseText { get; set; } = App.LicenseModel.ToString();
public Dictionary<string, Window> ChildrenWin { get; set; } = new Dictionary<string, Window>();
public EquipmentExecutor EquipmentExecutor { get; set; }
public WinMain Owner { get; set; }
public MainVM()
{
App.PermissionService.Combine(App.UserPermissions.Where(t => t.Parent?.PermissionCode == App.Module && t.PermissionType == PermissionType.Catalog.ToString()).ToList(), App.PermissionService.GetAllPermission("WCS").Data.Where(t => (t.PermissionType == PermissionType.Catalog.ToString()
|| t.PermissionType == PermissionType.Menu.ToString()) && App.UserPermissions.Count(a => a.Id == t.Id) > 0).ToList());
UserPermissions = App.UserPermissions.Where(t => t.PermissionType == PermissionType.Catalog.ToString()).OrderBy(t => t.OrderNum).ToList();
}
/// <summary>
/// 菜单单击
/// </summary>
/// <param name="permission"></param>
public void MenuClick(Permission permission)
{
try
{
var win = ChildrenWin.FirstOrDefault(t => t.Key == permission.Url).Value;
if (String.IsNullOrWhiteSpace(permission?.Url) || permission.Url == "#" || permission.Url == "/" || permission.Url == "\\")
{
return;
}
if (win == null)
{
win = (Window)Activator.CreateInstance(null, permission.Url).Unwrap();
win.Owner = Owner;
win.WindowStartupLocation = WindowStartupLocation.CenterScreen;
ChildrenWin.Add(permission.Url, win);
}
win.Show();
if (win.WindowState == WindowState.Minimized)
win.WindowState = WindowState.Normal;
win.Activate();
}
catch (Exception ex)
{
MessageBox.Show($"打开菜单出现异常:{ex.Message}");
}
}
internal void Init()
{
EquipmentExecutor = new EquipmentExecutor() { User = App.User, DestinationArea = App.DestinationArea };
var result = EquipmentExecutor.Init();
if (!result.Success)
{
MessageBox.Show(result.ErrorCode + ":" + result.Msg);
Owner.Btn_BeginExcute.IsEnabled = false;
Owner.Btn_EndExecute.IsEnabled = false;
return;
}
NoticeBus.NoticeEvent += NoticeBus_NoticeEvent;
}
/// <summary>
/// 授权单击
/// </summary>
public void LicensesClick()
{
WinLicense winLicense = new WinLicense();
var result = winLicense.ShowDialog();
if (result == true)
{
App.LicenseModel = App.PermissionService.GetLicense().Data;
LicenseText = App.LicenseModel.ToString();
}
}
private void NoticeBus_NoticeEvent(object sender, NoticeEventArgs args)
{
App.Current.Dispatcher.Invoke(() =>
{
App.Logger.Log(args.NoticeLevel switch
{
Level.Exception => LogLevel.Error,
_ => LogLevel.Info
}, args.Exception, args.Content);
Owner.LogInfo.AddLogs(args.Content, args.NoticeLevel);
});
}
internal void BeginExecute()
{
EquipmentExecutor.StartExcute();
Owner.Btn_BeginExcute.IsEnabled = false;
Owner.Btn_EndExecute.IsEnabled = true;
}
internal void EndExecute()
{
EquipmentExecutor.StopExcute();
Owner.Btn_BeginExcute.IsEnabled = true;
Owner.Btn_EndExecute.IsEnabled = false;
}
}
}