You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
204 lines
6.4 KiB
C#
204 lines
6.4 KiB
C#
using Prism.Commands;
|
|
using Prism.Events;
|
|
using Prism.Ioc;
|
|
using Prism.Mvvm;
|
|
using Prism.Services.Dialogs;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Security.Principal;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Input;
|
|
using System.Windows;
|
|
using System.Windows.Shapes;
|
|
using Txgy.EWS.Client.Common.Extensions;
|
|
using Txgy.EWS.Client.Entity;
|
|
using Txgy.EWS.Client.Models;
|
|
using Txgy.EWS.Client.IBLL;
|
|
using Txgy.EWS.Client.Common.MessageEvents;
|
|
using System.Windows.Threading;
|
|
using Txgy.EWS.Client.Common;
|
|
using Txgy.EWS.Client.ILog;
|
|
|
|
namespace Txgy.EWS.Client.Start.ViewModels
|
|
{
|
|
public class LoginViewModel : BindableBase
|
|
{
|
|
#region 属性
|
|
ILogHelper _logHelper;
|
|
public DelegateCommand CancelLoadingCommand { get => new DelegateCommand(() => IsLoading = false); }
|
|
private bool _isLoading;
|
|
|
|
public bool IsLoading
|
|
{
|
|
get { return _isLoading; }
|
|
set { SetProperty(ref _isLoading, value); }
|
|
}
|
|
private bool _isCanLoading = false;
|
|
|
|
public bool IsCanLoading
|
|
{
|
|
get { return _isCanLoading; }
|
|
set
|
|
{
|
|
SetProperty(ref _isCanLoading, value);
|
|
|
|
}
|
|
}
|
|
|
|
private string _loadingMessage;
|
|
|
|
public string LoadingMessage
|
|
{
|
|
get { return _loadingMessage; }
|
|
set { SetProperty(ref _loadingMessage, value); }
|
|
}
|
|
|
|
private string _userName = "yuwu";
|
|
|
|
public string UserName
|
|
{
|
|
get { return _userName; }
|
|
set { SetProperty(ref _userName, value); }
|
|
}
|
|
|
|
private string _password = "123456";
|
|
|
|
public string Password
|
|
{
|
|
get { return _password; }
|
|
set { SetProperty(ref _password, value); }
|
|
}
|
|
|
|
private string _errorMsg;
|
|
|
|
public string ErrorMsg
|
|
{
|
|
get { return _errorMsg; }
|
|
set { SetProperty(ref _errorMsg, value); }
|
|
}
|
|
#endregion
|
|
private DelegateCommand<object> _loginCommand;
|
|
public ICommand LoginCommand
|
|
{
|
|
get
|
|
{
|
|
if (_loginCommand == null)
|
|
{
|
|
_loginCommand = new DelegateCommand<object>(OnLogin, CanLogin);
|
|
}
|
|
return _loginCommand;
|
|
}
|
|
}
|
|
|
|
private bool CanLogin(object arg)
|
|
{
|
|
return IsCanLoading;
|
|
}
|
|
|
|
private async void OnLogin(object obj)
|
|
{
|
|
if (IsCanLoading)
|
|
{
|
|
try
|
|
{
|
|
IsCanLoading = false;
|
|
RaisePropertyChanged(nameof(IsCanLoading));
|
|
this.ErrorMsg = "";
|
|
if (string.IsNullOrEmpty(this.UserName))
|
|
{
|
|
this.ErrorMsg = "请输入用户名";
|
|
return;
|
|
}
|
|
if (string.IsNullOrEmpty(this.Password))
|
|
{
|
|
this.ErrorMsg = "请输入密码";
|
|
return;
|
|
}
|
|
this.IsLoading = true;
|
|
this.LoadingMessage = "正在登录";
|
|
// 请求WebAPI
|
|
await Task.Delay(1000);
|
|
if (await _loginBLL.Login(this.UserName, this.Password))
|
|
{
|
|
_logHelper.Debug(this, $"{this.UserName}登录");
|
|
(obj as Window).DialogResult = true;
|
|
}
|
|
else
|
|
{
|
|
// 提示错误
|
|
this.ErrorMsg = "用户名或密码错误,请重新输入";
|
|
this.IsLoading = false;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logHelper.Error(this, ex.Message);
|
|
//ex.StackTrace;
|
|
//ex.Message;
|
|
// 消息提示
|
|
MessageBox.Show("登录失败!");
|
|
}
|
|
}
|
|
|
|
}
|
|
//GlobalEntity _globalEntity = null;
|
|
IUpgradeFileBLL _systemBLL = null;
|
|
ILoginBLL _loginBLL = null;
|
|
public LoginViewModel(
|
|
IContainerProvider containerProvider,
|
|
IEventAggregator ea,
|
|
IUpgradeFileBLL systemBLL,
|
|
ILoginBLL loginBLL,ILogHelper logHelper)
|
|
{
|
|
if (GlobalConfig.IsDesign)
|
|
{
|
|
this.UserName = "admin";
|
|
this.Password = "123";
|
|
}
|
|
//_globalEntity = containerProvider.Resolve<GlobalEntity>();
|
|
_systemBLL = systemBLL;
|
|
_loginBLL = loginBLL;
|
|
_logHelper = logHelper;
|
|
|
|
// 应用启动时开始检查程序版本
|
|
this.IsLoading = true;
|
|
this.LoadingMessage = "正在检查软件版本";
|
|
Task.Run(async () =>
|
|
{
|
|
await Task.Delay(2000);
|
|
try
|
|
{
|
|
var result = await _systemBLL.DiffFileListAsync();
|
|
if (result.Count > 0)
|
|
{
|
|
// 需要更新的时候,启动更新程序,关闭主程序
|
|
this.LoadingMessage = "发现新版本";
|
|
Process process = Process.Start(
|
|
"Txgy.EWS.Client.Upgrade.exe",
|
|
string.Join(" ", result.ToArray())
|
|
);
|
|
process.WaitForInputIdle();
|
|
|
|
ea.GetEvent<CloseWindowEvent>().Publish();
|
|
}
|
|
this.LoadingMessage = "已是最新版本";
|
|
//CommandManager.InvalidateRequerySuggested();
|
|
// 否则的话开始执行登录
|
|
this.IsLoading = false;
|
|
this.IsCanLoading = true;
|
|
_loginCommand.RaiseCanExecuteChanged();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
MessageBox.Show("系统检查更新失败!");
|
|
}
|
|
});
|
|
|
|
|
|
}
|
|
}
|
|
}
|