using System; using System.Text.RegularExpressions; using System.Threading; using System.Collections.Generic; using HDL_ON.UI.CSS; using Shared; namespace HDL_ON.UI.UI1Login { public partial class LoginPage { /// /// 加载事件 /// void LoadEventList() { LoadPage_SwitchLoginType(); LoadMethod_VisiblePassword(); LoadPage_SwitchLoginMode(); LoadEvent_Login(); LoadPage_SelectionEditText(); LoadPage_RegisterPage(); GetVerificationCode(); LoadMethod_ForgetPassword(); } /// /// 点击按钮获取验证码 /// void GetVerificationCode() { btnGetVerificationCode.MouseUpEventHandler += (sender, e) => { if (btnGetVerificationCode.IsSelected) { string phoneNumber = etAccount.Text.Trim(); btnGetVerificationCode.IsSelected = false; btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1; int time = 60; new Thread(() => { while (time < 0) { time--; Application.RunOnMainThread(() => { btnGetVerificationCode.Text = time.ToString() + "s"; }); Thread.Sleep(1000); } Application.RunOnMainThread(() => { btnGetVerificationCode.IsSelected = true; btnGetVerificationCode.TextID = StringId.GetVerificationCode; }); }) { IsBackground = true }.Start(); //获取验证码 pm.GetPhoneLoginVerCode(phoneNumber); } }; } /// /// 切换登录类型 /// void LoadPage_SwitchLoginType() { //选择手机登录 btnPhoneLogin.MouseUpEventHandler += (sender, e) => { #region 切换选中按钮 btnEmailLogin.TextColor = CSS_Color.PromptingColor1; btnEmailLogin.TextSize = CSS_FontSize.TextFontSize; btnPhoneLogin.TextColor = CSS_Color.MainColor; btnPhoneLogin.TextSize = CSS_FontSize.EmphasisFontSize_Secondary; etAccount.PlaceholderText = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber); #endregion #region 切换登录方式及图标 logintType = 0; if (btnAccountIcon.Parent != null) { btnAccountIcon.RemoveFromParent(); } accountView.AddChidren(btnGlobalRoaming); //显示验证码登录方式,手机登录有验证码登录 btnSwitchLoginMode.Visible = true; #endregion }; //选择邮箱登录 btnEmailLogin.MouseUpEventHandler += (sender, e) => { #region 切换选中按钮 btnPhoneLogin.TextColor = CSS_Color.PromptingColor1; btnPhoneLogin.TextSize = CSS_FontSize.TextFontSize; btnEmailLogin.TextColor = CSS_Color.MainColor; btnEmailLogin.TextSize = CSS_FontSize.EmphasisFontSize_Secondary; etAccount.PlaceholderText = Language.StringByID(StringId.PlsEntryEmailAddress); #endregion #region 切换登录类型及图标 logintType = 1; if (btnGlobalRoaming.Parent != null) { btnGlobalRoaming.RemoveFromParent(); } accountView.AddChidren(btnAccountIcon); #endregion //邮箱只有密码登录模式 logintMode = 0; //密码登录 btnSwitchLoginMode.TextID = StringId.VerificationCodeLogin; passwordView.AddChidren(btnVisiblePassword); passwordView.AddChidren(btnDividingLineVertical_PasswordView2); passwordView.AddChidren(btnForgetPassword); btnPasswordIcon.IsSelected = false; if (btnGetVerificationCode.Parent != null) { btnGetVerificationCode.RemoveFromParent(); } //隐藏密码 etPassword.SecureTextEntry = true; //隐藏验证码登录方式,邮箱登录没有验证码登录 btnSwitchLoginMode.Visible = false; }; } /// /// 切换登录方式 /// 验证码/密码 /// void LoadPage_SwitchLoginMode() { btnSwitchLoginMode.MouseUpEventHandler += (sender, e) => { logintMode = logintMode == 0 ? 1 : 0; //清除密码框文本数据 etPassword.Text = ""; //密码登录 if (logintMode == 0) { btnSwitchLoginMode.TextID = StringId.VerificationCodeLogin; passwordView.AddChidren(btnVisiblePassword); passwordView.AddChidren(btnDividingLineVertical_PasswordView2); passwordView.AddChidren(btnForgetPassword); btnPasswordIcon.IsSelected = false; if (btnGetVerificationCode.Parent != null) { btnGetVerificationCode.RemoveFromParent(); } //隐藏密码 etPassword.SecureTextEntry = true; } //验证码登录 else if (logintMode == 1) { btnSwitchLoginMode.TextID = StringId.PasswordLogin; passwordView.AddChidren(btnGetVerificationCode); btnPasswordIcon.IsSelected = true; if (btnVisiblePassword.Parent != null) { btnVisiblePassword.RemoveFromParent(); } if (btnDividingLineVertical_PasswordView2.Parent != null) { btnDividingLineVertical_PasswordView2.RemoveFromParent(); } if (btnForgetPassword.Parent != null) { btnForgetPassword.RemoveFromParent(); } //验证码不需要隐藏 etPassword.SecureTextEntry = false; } }; } /// /// 文本框选中事件 /// void LoadPage_SelectionEditText() { //当焦点在账号文本框时,文本框底线点亮 etAccount.FoucsChanged += (sender, e) => { if (etAccount.Foucs) { btnAccountViewBottomLine.BackgroundColor = CSS_Color.MainColor; btnAccountViewBottomLine.Height = Application.GetRealHeight(2); } else { btnAccountViewBottomLine.BackgroundColor = CSS_Color.DividingLineColor; btnAccountViewBottomLine.Height = Application.GetRealHeight(1); } }; //当焦点在密码文本框时,文本框底线点亮 etPassword.FoucsChanged += (sender, e) => { if (etPassword.Foucs) { btnPasswordViewBottomLine.BackgroundColor = CSS_Color.MainColor; btnPasswordViewBottomLine.Height = Application.GetRealHeight(2); } else { btnPasswordViewBottomLine.BackgroundColor = CSS_Color.DividingLineColor; btnPasswordViewBottomLine.Height = Application.GetRealHeight(1); } }; //当焦点在账号文本框时,点击键盘回撤按键,触发的事件 etAccount.EditorEnterAction += (obj) => { etPassword.Foucs = true; }; //当焦点在密码文本框时,点击键盘回撤按键,触发的事件 etPassword.EditorEnterAction += (obj) => { etPassword.Foucs = false; }; } /// /// 隐藏/显示密码 /// void LoadMethod_VisiblePassword() { btnVisiblePassword.MouseUpEventHandler += (sender, e) => { btnVisiblePassword.IsSelected = !btnVisiblePassword.IsSelected; if (btnVisiblePassword.IsSelected) { etPassword.SecureTextEntry = false; } else { etPassword.SecureTextEntry = true; } }; } /// /// 登录按钮点击事件 /// void LoadEvent_Login() { btnLogin.MouseUpEventHandler += (sender, e) => { if (btnLogin.IsSelected) { account = etAccount.Text.Trim(); password = etPassword.Text.Trim(); if (logintType == 0) { if (!Regex.IsMatch(account, @"^[1]+\d{9}")) { var tip = new Tip() { Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber), CloseTime = 3, Direction = AMPopTipDirection.None }; tip.Show(bodyView); return; } } else { if (!Regex.IsMatch(account, "^[\\w-]+@[\\w-]+\\.(com|net|org|edu|mil|tv|biz|info)$")) { var tip = new Tip() { Text = Language.StringByID(StringId.PlsEntryCorrectEmailAddress), CloseTime = 3, Direction = AMPopTipDirection.None }; tip.Show(bodyView); return; } } //创建登录线程 var loginThread = LoadThread_Login(); waitPage = new Loading(); new WaitPageMothed().LoadPage_WaitPage(loginThread, bodyView, waitPage); } }; #region 当账号密码都输入时,才能点击登录按钮 etAccount.TextChangeEventHandler += (sender, e) => { if (etAccount.Text.Trim().Length > 0 && etPassword.Text.Trim().Length > 0) { btnLogin.IsSelected = true; } else { btnLogin.IsSelected = false; } }; etPassword.TextChangeEventHandler += (sender, e) => { if (etAccount.Text.Trim().Length > 0 && etPassword.Text.Trim().Length > 0) { btnLogin.IsSelected = true; } else { btnLogin.IsSelected = false; } }; #endregion } /// /// 加载登录线程 /// Thread LoadThread_Login() { var loginThread = new Thread(() => { try { //登录 var loginResult = LoadMethod_Login(); if (loginResult) { //获取住宅信息 var getResidencesResult = LoadMethod_GetResidences(); if (getResidencesResult) { /* * Wait : 推送注册 */ Application.RunOnMainThread(() => { waitPage.RemoveFromParent(); waitPage = null; //跳转页面---- MainPage.GoUserPage(); }); } } } catch (Exception ex) { MainPage.Log($"LoginPage : {ex.Message}"); } }) { IsBackground = true }; return loginThread; } /// /// 调用登录接口登录 /// bool LoadMethod_Login() { var result = false; //调用登录接口 var loginResult = pm.LoginByPassword(account, password); if (loginResult.StateCode == "SUCCESS") { var loginDataStr = Newtonsoft.Json.Linq.JObject.FromObject(loginResult.ResponseData); //记录用户数据 MainPage.LoginUser = new UserInfo { ID = (int)loginDataStr.GetValue("UserID"), MasterID = (int)loginDataStr.GetValue("MainUserID"), AccountType = (int)loginDataStr.GetValue("UserType"), AccountString = account, Password = password, LastTime = DateTime.Now, SIP_Account = loginDataStr.GetValue("AllVisionRegisterDevUserNameGuid").ToString(), }; MainPage.LoginUser.SaveUserInfo(); MainPage.Log("登录成功。"); result = true; } //登录失败 else { string tipStr = "Sever erorr"; switch (loginResult.StateCode) { case "USERNAMEORPWDERROR": tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError); break; case "Self:Net_Error": tipStr = Language.StringByID(StringId.NetworkAnomaly); break; } //账号或者密码错误 Application.RunOnMainThread(() => { //提示原因 var tip = new Tip() { Text = tipStr, CloseTime = 3, Direction = AMPopTipDirection.None }; tip.Show(bodyView); btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnPasswordViewBottomLine.Height = Application.GetRealHeight(2); }); } return result; } /// /// 获取住宅列表 /// bool LoadMethod_GetResidences() { var result = false; var responsePack = pm.GetHomePager(); if (responsePack.StateCode == "Success") { var dataStr = Newtonsoft.Json.Linq.JObject.FromObject(responsePack.ResponseData); //没有住宅 if (dataStr.GetValue("PageData").ToString() == "[]") { } else { MainPage.LoginUser.HomeLists = new List(); foreach (var jsonData in dataStr.GetValue("PageData")) { var homeJsonStr = Newtonsoft.Json.Linq.JObject.FromObject(jsonData); var home = new RegionInfoRes() { RegionID = homeJsonStr.GetValue("Id").ToString(), RegionName = homeJsonStr.GetValue("RegionName").ToString(), Name = homeJsonStr.GetValue("Name").ToString(), }; MainPage.LoginUser.HomeLists.Add(home); } UserConfig.Instance.CurrentRegion = MainPage.LoginUser.HomeLists[0]; UserConfig.Instance.SaveUserConfig(); MainPage.LoginUser.SaveUserInfo(); } result = true; } else { var tipStr = "Server erorr"; switch (responsePack.StateCode) { case "NoLogin": tipStr = Language.StringByID(StringId.InvalidLoginCertificate); break; } Application.RunOnMainThread(() => { //提示原因 var tip = new Tip() { Text = tipStr, CloseTime = 3, Direction = AMPopTipDirection.None }; tip.Show(bodyView); }); } return result; } /// /// 加载注册界面 /// void LoadPage_RegisterPage() { btnRegister.MouseUpEventHandler += (sender, e) => { //回调事件 Action callBackAction = (callBackPar_Action) => { Application.RunOnMainThread(() => { try { etAccount.Text = callBackPar_Action; } catch (Exception ex) { MainPage.Log($"login callBackAction : {ex.Message}"); } }); }; var registerPage = new RegisterPage(callBackAction); registerPage.Show(); registerPage.ShowDialog(); }; } /// /// 忘记密码 /// void LoadMethod_ForgetPassword() { btnForgetPassword.MouseUpEventHandler += (sender, e) => { Action callBackAction = (callBackPar_Action) => { Application.RunOnMainThread(() => { try { etAccount.Text = callBackPar_Action; } catch (Exception ex) { MainPage.Log($"login callBackAction : {ex.Message}"); } }); }; var forgetPasswordDialog = new ForgetPasswordPage(callBackAction); forgetPasswordDialog.Show(); forgetPasswordDialog.ShowDialog(); }; } } }