using Sinvo.EplanHpD.Plugin.Service; using Sinvo.EplanHpD.Plugin.WPFUI.ViewModel; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace Sinvo.EplanHpD.Plugin.WPFUI.View { /// /// LoginWindow.xaml 的交互逻辑 /// public partial class LoginWindow : Window { /// /// 展开更多的时候,窗口的高度增加的固定值 /// private double expandFixedHeight = 100; private LoginViewModel viewModel; public LoginWindow() { InitializeComponent(); this.DataContext = viewModel = new LoginViewModel(); } /// /// 强制显示为模态窗口 /// public new void Show() { this.ShowDialog(); } #region 事件处理 private void Expander_Expanded(object sender, RoutedEventArgs e) { if (sender is Expander expander) { this.Height += expandFixedHeight; } } private void Expander_Collapsed(object sender, RoutedEventArgs e) { if (sender is Expander expander) { this.Height -= expandFixedHeight; } } private void Window_Loaded(object sender, RoutedEventArgs e) { _ = LoadData(); } private async Task LoadData() { //if (viewModel.User != null) //{ // viewModel.GetGroup(); //} //if (viewModel.IsRemember) //{ // var groupIndex = viewModel.Groups.IndexOf(viewModel.Groups.FirstOrDefault(x => x.ID == viewModel.User.UserGroupId)); // this.groupCbx.SelectedIndex = groupIndex; // var roleIndex = viewModel.Roles.IndexOf(viewModel.Roles.FirstOrDefault(x => x.ID == viewModel.User.UserRoleId)); // this.roleCbx.SelectedIndex = roleIndex; //} //if (EplSession.Current.Config != null) //{ // var serverIndex = viewModel.Servers.IndexOf(viewModel.Servers.FirstOrDefault(x => x.ServerUrl == EplSession.Current.Config.CurrentServer.ServerUrl)); // this.serverCbx.SelectedIndex = serverIndex; //} } private void loginBtn_Click(object sender, RoutedEventArgs e) { this.viewModel.User.UserPassword = PasswordTxt.Password; if (string.IsNullOrWhiteSpace(this.viewModel.User.UserName)) { this.msgTxt.Text = "请输入用户名!"; this.msgTxt.Foreground = System.Windows.Media.Brushes.Red; return; } if (string.IsNullOrWhiteSpace(this.viewModel.User.UserPassword)) { this.msgTxt.Text = "请输入密码!"; this.msgTxt.Foreground = System.Windows.Media.Brushes.Red; return; } if (string.IsNullOrWhiteSpace(this.groupCbx.SelectedValue as string)) { this.msgTxt.Text = "请选择部门!"; this.msgTxt.Foreground = System.Windows.Media.Brushes.Red; return; } if (string.IsNullOrWhiteSpace(this.roleCbx.SelectedValue as string)) { this.msgTxt.Text = "请选择角色!"; this.msgTxt.Foreground = System.Windows.Media.Brushes.Red; return; } viewModel.User.UserGroup = this.groupCbx.SelectedValue as string; viewModel.User.UserRole = this.roleCbx.SelectedValue as string; //try //{ var result = viewModel.Login(); if(result != null && !string.IsNullOrEmpty(result.GUID)) { PluginServices.user = new Service.Model.UserInfo { Group = viewModel.User.UserGroup, Role = viewModel.User.UserRole, //ServerUrl = viewModel.User.ServerUrl, GUID = result.GUID, ID = result.ID, Name = result.Name }; this.DialogResult = true; this.Close(); } else { MessageBox.Show("登录失败,请检查用户名和密码是否正确!"); } // if (result) // { // //MessageBox.Show("") // var serverItem = this.serverCbx.SelectedItem as ServerItemModel; // //new UserInfo().ShowInfo(viewModel.User.userNickName, serverItem); // //EplSession.Current.CurServer = serverItem; // EplSession.Current.SetUser(viewModel.User); // EplSession.Current.Config.CurrentServer = serverItem; // EplSession.Current.Config.RememberAccount = this.rememberChk.IsChecked ?? false; // if (this.rememberChk.IsChecked ?? false) // { // viewModel.RememberUser(); // } // else // { // viewModel.ForgetUser(); // } // // 登录成功,弹出用户信息小窗口 // WindowRouter.ShowWindow("UserInfo", keepAlive: true); // this.DialogResult = true; // this.Close(); // } //} //catch (System.Exception ex) //{ // // ERROR 是扩展方法,用于输出错误信息 // ex.ToString().Error(); // //MessageBox.Show(ex.Message); // msgTxt.Text = ex.Message; //} } private void UsernameTxt_LostFocus(object sender, RoutedEventArgs e) { if (string.IsNullOrWhiteSpace(UsernameTxt.Text)) { return; } viewModel.User.UserName = UsernameTxt.Text; LoadGroupAndRole(); } private void cancelBtn_Click(object sender, RoutedEventArgs e) { this.Close(); } private async void groupCbx_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { viewModel.User.UserGroup = this.groupCbx.SelectedValue as string; await viewModel.GetRolesByCurrentSelect(); if (viewModel.Roles?.Count > 0) { await this.Dispatcher.BeginInvoke(() => { this.roleCbx.SelectedIndex = 0; }); } } catch (System.Exception ex) { MessageBox.Show(ex.Message); } } #endregion private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { } private void serverCbx_SelectionChanged(object sender, SelectionChangedEventArgs e) { //var serverItem = this.serverCbx.SelectedItem as ServerItemModel; //if (serverItem != null) //{ // viewModel.ChangeService(serverItem); // LoadGroupAndRole(); //} } private void LoadGroupAndRole() { var task = viewModel.GetUserGroup(); task.ContinueWith(x => { this.Dispatcher.InvokeAsync(() => { this.groupCbx.SelectedIndex = 0; }); }); } } }