//using Cowain.Bake.Common.Service; using Cowain.Bake.BLL; using Cowain.Bake.Common; using Cowain.Bake.Common.Enums; using Cowain.Bake.Common.Interface; using Prism.Commands; using Prism.Ioc; using Prism.Mvvm; using System; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; using Unity; namespace Cowain.Bake.UI.Home.ViewModels { public class LoginViewModel : BindableBase { private readonly IUnityContainer _unityContainer; //private readonly IRegionManager _regionManager; public LoginViewModel(IUnityContainer unityContainer/*, IRegionManager regionManager*/) { //初始化数据库连接池 _unityContainer = unityContainer; //_regionManager = regionManager; //ConfigInfo.InitConfigParm(_unityContainer); Global.STOVE_LAYERS = _unityContainer.Resolve().AllStation.Find(x => x.Type == (int)EStationType.Stove).Layers; } private string _userName = "TEST12132"; 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); } } // 登录命令 public ICommand LoginCommand { get => new DelegateCommand(OnLogin); } public static bool loginFlag = false; private async void OnLogin(object obj) { string msg = ""; try { this.ErrorMsg = "" ; if (string.IsNullOrEmpty(this.UserName)) { this.ErrorMsg = "请输入用户名!"; return; } if (string.IsNullOrEmpty(this.Password)) { this.ErrorMsg = "请输入密码!"; return; } var loginTask = Task.Run(() => _unityContainer.Resolve().Login(this.UserName, this.Password, out msg)); var timeouttask = Task.Delay(8000); var completedTask = await Task.WhenAny(loginTask, timeouttask); if (completedTask == timeouttask) { this.ErrorMsg = "连接数据库超时,请联系管理员!"; } else { var task = await loginTask; if (task == true && !loginFlag) { loginFlag = true; this.ErrorMsg = "登录成功 . . ."; (obj as Window).DialogResult = true; } else if (task == true && loginFlag)//切换用户 { _unityContainer.Resolve().InitWindows(); (obj as Window).DialogResult = true; (obj as Window).Close(); } else { if (!string.IsNullOrEmpty(msg)) { this.ErrorMsg = msg; } else if (!loginFlag) { this.ErrorMsg = "登录失败,用户名或密码错误. . ."; } else { this.ErrorMsg = "切换用户失败,用户名或密码错误. . ."; } } } } catch (Exception ex) { this.ErrorMsg = "登录失败!" + ex.Message; } } } }