|
|
|
|
using Aucma.Scada.UI.Page.AssemblyPlan;
|
|
|
|
|
using Aucma.Scada.UI.Page.InStoreInfo;
|
|
|
|
|
using Aucma.Scada.UI.Page.InventoryInfo;
|
|
|
|
|
using Aucma.Scada.UI.Page.OutStoreInfo;
|
|
|
|
|
using Aucma.Scada.UI.Page.TaskInfo;
|
|
|
|
|
using GalaSoft.MvvmLight;
|
|
|
|
|
using GalaSoft.MvvmLight.Command;
|
|
|
|
|
using HighWayIot.Log4net;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Diagnostics;
|
|
|
|
|
using System.Windows;
|
|
|
|
|
|
|
|
|
|
namespace Aucma.Scada.UI.viewModel
|
|
|
|
|
{
|
|
|
|
|
public class MainViewModel : ViewModelBase
|
|
|
|
|
{
|
|
|
|
|
private LogHelper logHelper = LogHelper.Instance;
|
|
|
|
|
private readonly LogInfoControl logInfoControl = new LogInfoControl();
|
|
|
|
|
private readonly InStoreInfoControl inStoreInfoControl = new InStoreInfoControl();
|
|
|
|
|
private readonly OutStoreInfoControl outStoreInfoControl = new OutStoreInfoControl();
|
|
|
|
|
private readonly TaskInfoControl taskInfoControl = new TaskInfoControl();
|
|
|
|
|
private readonly InventoryInfoControl inventoryInfoControl = new InventoryInfoControl();
|
|
|
|
|
private readonly AssemblyPlanControl assemblyPlanControl = new AssemblyPlanControl();
|
|
|
|
|
|
|
|
|
|
public MainViewModel()
|
|
|
|
|
{
|
|
|
|
|
ControlOnClickCommand = new RelayCommand<object>(obj => ControlOnClick(obj));
|
|
|
|
|
|
|
|
|
|
OpenSystemKeyboardCommand = new RelayCommand(OpenSystemKeyboard);
|
|
|
|
|
|
|
|
|
|
FormControlCommand = new RelayCommand<object>(obj => FormControl(obj));
|
|
|
|
|
|
|
|
|
|
UserContent = inStoreInfoControl;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 参数定义
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// PLC设备状态
|
|
|
|
|
/// </summary>
|
|
|
|
|
private int _PlcStatus = 0;
|
|
|
|
|
public int PlcStatus
|
|
|
|
|
{
|
|
|
|
|
get { return _PlcStatus; }
|
|
|
|
|
set { _PlcStatus = value; RaisePropertyChanged(nameof(PlcStatus)); }
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 箱壳扫码器状态
|
|
|
|
|
/// </summary>
|
|
|
|
|
private int _ShellScannerStatus = 0;
|
|
|
|
|
public int ShellScannerStatus
|
|
|
|
|
{
|
|
|
|
|
get { return _ShellScannerStatus; }
|
|
|
|
|
set { _ShellScannerStatus = value; RaisePropertyChanged(nameof(ShellScannerStatus)); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 内胆扫码器状态
|
|
|
|
|
/// </summary>
|
|
|
|
|
private int _BoldScannerStatus = 0;
|
|
|
|
|
public int BoldScannerStatus
|
|
|
|
|
{
|
|
|
|
|
get { return _BoldScannerStatus; }
|
|
|
|
|
set { _BoldScannerStatus = value; RaisePropertyChanged(nameof(BoldScannerStatus)); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public System.Windows.Controls.UserControl _content;
|
|
|
|
|
|
|
|
|
|
public System.Windows.Controls.UserControl UserContent
|
|
|
|
|
{
|
|
|
|
|
get { return _content; }
|
|
|
|
|
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
_content = value;
|
|
|
|
|
RaisePropertyChanged(nameof(UserContent));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 事件定义
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 界面跳转按钮事件
|
|
|
|
|
/// </summary>
|
|
|
|
|
public RelayCommand<object> ControlOnClickCommand { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 打开系统键盘
|
|
|
|
|
/// </summary>
|
|
|
|
|
public RelayCommand OpenSystemKeyboardCommand { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 窗体控制
|
|
|
|
|
/// </summary>
|
|
|
|
|
public RelayCommand<object> FormControlCommand { get; set; }
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 界面跳转
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void ControlOnClick(object obj)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string info = obj as string;
|
|
|
|
|
switch (info)
|
|
|
|
|
{
|
|
|
|
|
case "instoreInfo":
|
|
|
|
|
UserContent = inStoreInfoControl;
|
|
|
|
|
break;
|
|
|
|
|
case "outstoreInfo":
|
|
|
|
|
UserContent = outStoreInfoControl;
|
|
|
|
|
break;
|
|
|
|
|
case "taskInfo":
|
|
|
|
|
UserContent = taskInfoControl;
|
|
|
|
|
break;
|
|
|
|
|
case "inventoryInfo":
|
|
|
|
|
UserContent = inventoryInfoControl;
|
|
|
|
|
break;
|
|
|
|
|
case "assemblyPlan":
|
|
|
|
|
UserContent = assemblyPlanControl;
|
|
|
|
|
break;
|
|
|
|
|
case "logInfo":
|
|
|
|
|
UserContent = logInfoControl;
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
UserContent = inStoreInfoControl;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
logHelper.Error("界面跳转逻辑异常", ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 打开系统键盘
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void OpenSystemKeyboard()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Process proc = new Process();
|
|
|
|
|
proc.StartInfo.FileName = @"C:\Windows\System32\osk.exe";
|
|
|
|
|
proc.StartInfo.UseShellExecute = true;
|
|
|
|
|
proc.StartInfo.Verb = "runas";
|
|
|
|
|
proc.Start();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
logHelper.Error("打开系统键盘逻辑异常", ex);
|
|
|
|
|
|
|
|
|
|
MessageBox.Show($"系统键盘打开异常:{ex.Message}", "提示", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 窗体控制
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="obj"></param>
|
|
|
|
|
private void FormControl(object obj)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string controlType = obj as string;
|
|
|
|
|
switch (controlType)
|
|
|
|
|
{
|
|
|
|
|
// 关闭当前窗口
|
|
|
|
|
case "Exit":
|
|
|
|
|
//Environment.Exit(0);
|
|
|
|
|
Application.Current.Shutdown();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
// 还原 或者 最大化当前窗口
|
|
|
|
|
case "Normal":
|
|
|
|
|
if (Application.Current.MainWindow.WindowState == WindowState.Normal)
|
|
|
|
|
{
|
|
|
|
|
Application.Current.MainWindow.WindowState = WindowState.Maximized;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if (Application.Current.MainWindow.WindowState == WindowState.Maximized)
|
|
|
|
|
{
|
|
|
|
|
Application.Current.MainWindow.WindowState = WindowState.Normal;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
// 最小化当前窗口
|
|
|
|
|
case "Minimized":
|
|
|
|
|
Application.Current.MainWindow.WindowState = WindowState.Minimized;
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
logHelper.Error("窗体控制逻辑异常", ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|