using System; using System.Text.RegularExpressions; using System.Threading; using System.Collections.Generic; using HDL_ON.UI.CSS; using Shared; using HDL_ON.Entity; 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(); if (string.IsNullOrEmpty(phoneNumber)) { var tip = new Tip() { Text = Language.StringByID(StringId.PlsEntryPhoneNumber), CloseTime = 3, Direction = AMPopTipDirection.None }; tip.Show(bodyView); btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnAccountViewBottomLine.Height = Application.GetRealHeight(2); return; } if (!Regex.IsMatch(account, @"^[1]+\d{10}") || (account.Length != 11)) { var tip = new Tip() { Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber), CloseTime = 3, Direction = AMPopTipDirection.None }; tip.Show(bodyView); btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnAccountViewBottomLine.Height = Application.GetRealHeight(2); return; } 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(); new Thread(() => { //获取验证码 var result = pm.GetLoginVerCode(phoneNumber); if (result.StateCode.ToUpper() == "SUCCESS") { } //登录失败 else { string tipStr = "Sever erorr"; switch (result.StateCode.ToUpper()) { case "USERNAMEORPWDERROR": tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError); Application.RunOnMainThread(() => { btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnPasswordViewBottomLine.Height = Application.GetRealHeight(2); }); break; case "ACCOUNTNOEXISTS": tipStr = Language.StringByID(StringId.ACCOUNTNOEXISTS); Application.RunOnMainThread(() => { btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnAccountViewBottomLine.Height = Application.GetRealHeight(2); }); break; case "SENDFAIL": tipStr = Language.StringByID(StringId.FailedToSendVerificationCode); Application.RunOnMainThread(() => { btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnAccountViewBottomLine.Height = Application.GetRealHeight(2); }); 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); }); } }) { IsBackground = true }.Start(); } }; } /// /// 切换登录类型 /// void LoadPage_SwitchLoginType() { //选择手机登录 btnPhoneLogin.MouseUpEventHandler = (sender, e) => { if (loginType == 0) return; etAccount.Text = registerPhone; etPassword.Text = ""; #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.PlsEntryPhoneNumber); #endregion #region 切换登录方式及图标 loginType = 0; if (btnAccountIcon.Parent != null) { btnAccountIcon.RemoveFromParent(); } accountView.AddChidren(btnGlobalRoaming); //显示验证码登录方式,手机登录有验证码登录 btnSwitchLoginMode.Visible = true; #endregion #region if (logintMode == 1) { if (Regex.IsMatch(account, @"^[1]+\d{10}") && (account.Length == 11) && btnGetVerificationCode.Text == Language.StringByID(StringId.GetVerificationCode)) { btnGetVerificationCode.IsSelected = true; } btnSwitchLoginMode.TextID = StringId.PasswordLogin; //passwordView.AddChidren(btnGetVerificationCode); btnGetVerificationCode.Visible = true; etPassword.PlaceholderText = Language.StringByID(StringId.PlsEntryVerificationCode); 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; } #endregion }; //选择邮箱登录 btnEmailLogin.MouseUpEventHandler += (sender, e) => { if (loginType == 1) return; etAccount.Text = registerEmail; etPassword.Text = ""; #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 切换登录类型及图标 loginType = 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(); btnGetVerificationCode.Visible = false; //} //隐藏密码 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); etPassword.PlaceholderText = Language.StringByID(StringId.PlsEntryPassword); passwordView.AddChidren(btnForgetPassword); btnPasswordIcon.IsSelected = false; //if (btnGetVerificationCode.Parent != null) //{ //btnGetVerificationCode.RemoveFromParent(); btnGetVerificationCode.Visible = false; //} //隐藏密码 etPassword.SecureTextEntry = true; } //验证码登录 else if (logintMode == 1) { if (Regex.IsMatch(account, @"^[1]+\d{10}") && (account.Length == 11) && btnGetVerificationCode.Text == Language.StringByID(StringId.GetVerificationCode)) { btnGetVerificationCode.IsSelected = true; } btnSwitchLoginMode.TextID = StringId.PasswordLogin; //passwordView.AddChidren(btnGetVerificationCode); btnGetVerificationCode.Visible = true; etPassword.PlaceholderText = Language.StringByID(StringId.PlsEntryVerificationCode); 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); account = etAccount.Text.Trim(); if (loginType == 0) { registerPhone = account; } else { registerEmail = account; } if (account.Length == 0) return; if (loginType == 0) { if (!Regex.IsMatch(account, @"^[1]+\d{10}") || (account.Length != 11)) { var tip = new Tip() { Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber), CloseTime = 3, Direction = AMPopTipDirection.None }; tip.Show(bodyView); btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnAccountViewBottomLine.Height = Application.GetRealHeight(2); } else { if (btnGetVerificationCode.Text == Language.StringByID(StringId.GetVerificationCode)) { btnGetVerificationCode.IsSelected = true; } } } else { if (!Regex.IsMatch(account, "([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,5})+")) { var tip = new Tip() { Text = Language.StringByID(StringId.PlsEntryCorrectEmailAddress), CloseTime = 3, Direction = AMPopTipDirection.None }; tip.Show(bodyView); btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnAccountViewBottomLine.Height = Application.GetRealHeight(2); } } } }; //当焦点在密码文本框时,文本框底线点亮 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 (loginType == 0) { if (!Regex.IsMatch(account, @"^[1]+\d{10}") && account.Length == 11) { var tip = new Tip() { Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber), CloseTime = 3, Direction = AMPopTipDirection.None }; tip.Show(bodyView); return; } } else { if (!Regex.IsMatch(account, "([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,5})+")) { 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 PublicAssmebly().LoadPage_WaitPage(loginThread, bodyView, waitPage); } }; #region 当账号密码都输入时,才能点击登录按钮 etAccount.TextChangeEventHandler = (sender, e) => { account = etAccount.Text.Trim(); if (account.Length > 0 && etPassword.Text.Trim().Length > 0) { btnLogin.IsSelected = true; } else { btnLogin.IsSelected = false; } if (Regex.IsMatch(account, @"^[1]+\d{10}") )//&& account.Length == 11) { btnGetVerificationCode.IsSelected = true; btnGetVerificationCode.TextColor = CSS_Color.MainBackgroundColor; } else { btnGetVerificationCode.IsSelected = false; btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1; } }; 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( !string.IsNullOrEmpty (verAccount))//验证登录账号 { Application.RunOnMainThread(() => { if (verAccount == etPassword.Text.Trim()) { //跳转页面---- MainPage.GoUserPage(); return; } }); } if (loginResult) { //获取住宅信息 var getResidencesResult = LoadMethod_GetResidences(); if (getResidencesResult) { /* * Wait : 推送注册 */ Application.RunOnMainThread(() => { //跳转页面---- MainPage.GoUserPage(); }); } } } catch (Exception ex) { MainPage.Log($"LoginPage : {ex.Message}"); } finally { Application.RunOnMainThread(() => { if (waitPage != null) { waitPage.RemoveFromParent(); waitPage = null; } }); } }) { IsBackground = true }; return loginThread; } /// /// 调用登录接口登录 /// bool LoadMethod_Login() { var result = false; ResponsePack loginResult; if (logintMode == 0 || loginType == 1) { //调用登录接口 loginResult = pm.LoginByPassword(account, password); } else { //调用登录接口 loginResult = pm.LoginValidCode(account, password); } if (loginResult.StateCode.ToUpper() == "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(), userName = loginDataStr.GetValue("Remark").ToString(), }; MainPage.LoginUser.SaveUserInfo(); MainPage.Log("登录成功。"); result = true; //获取用户信息 new Thread(() => { pm.GetUserInfo(); }) { IsBackground = true }.Start(); } //登录失败 else { string tipStr = "Sever erorr"; switch (loginResult.StateCode) { case "ValidCodeAndPhoneNoEqual": tipStr = Language.StringByID(StringId.VerificationCodeError); Application.RunOnMainThread(() => { btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnPasswordViewBottomLine.Height = Application.GetRealHeight(2); }); break; case "USERNAMEORPWDERROR": tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError); Application.RunOnMainThread(() => { btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnPasswordViewBottomLine.Height = Application.GetRealHeight(2); }); break; case "ACCOUNTNOEXISTS": tipStr = Language.StringByID(StringId.ACCOUNTNOEXISTS); Application.RunOnMainThread(() => { btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnAccountViewBottomLine.Height = Application.GetRealHeight(2); }); break; case "NoRecord": tipStr = Language.StringByID(StringId.PlsGetTheVerificationCode); break; case "Self:Net_Error": tipStr = Language.StringByID(StringId.NetworkAnomaly); break; } //账号或者密码错误 Application.RunOnMainThread(() => { waitPage.Hide(); //提示原因 var tip = new Tip() { Text = tipStr, CloseTime = 3, Direction = AMPopTipDirection.None }; tip.Show(bodyView); }); } return result; } /// /// 获取住宅列表 /// bool LoadMethod_GetResidences() { var result = false; var responsePack = pm.GetHomePager(); if (responsePack == "Success") { result = true; } else { var tipStr = "Server erorr"; switch (responsePack) { 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 = () => //{ // Application.RunOnMainThread(() => // { // try // { // } // catch (Exception ex) // { // MainPage.Log($"login callBackAction : {ex.Message}"); // } // }); //}; var registerPage = new RegisterPage(); 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(); }; } } }