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
|
{
|
|
/// <summary>
|
/// 加载事件
|
/// </summary>
|
void LoadEventList()
|
{
|
LoadPage_SwitchLoginType();
|
LoadMethod_VisiblePassword();
|
LoadPage_SwitchLoginMode();
|
LoadEvent_Login();
|
LoadPage_SelectionEditText();
|
LoadPage_RegisterPage();
|
GetVerificationCode();
|
LoadMethod_ForgetPassword();
|
}
|
|
/// <summary>
|
/// 点击按钮获取验证码
|
/// </summary>
|
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}"))
|
{
|
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 = true;
|
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 = false;
|
btnGetVerificationCode.TextID = StringId.GetVerificationCode;
|
});
|
})
|
{ IsBackground = true }.Start();
|
new Thread(() =>
|
{
|
//获取验证码
|
var result = pm.GetPhoneLoginVerCode(phoneNumber);
|
if (result.StateCode == "SUCCESS")
|
{
|
}
|
//登录失败
|
else
|
{
|
Application.RunOnMainThread(() =>
|
{
|
btnGetVerificationCode.IsSelected = false;
|
btnGetVerificationCode.TextID = StringId.GetVerificationCode;
|
});
|
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);
|
btnGetVerificationCode.IsSelected = false;
|
});
|
}
|
})
|
{ IsBackground = true }.Start();
|
}
|
};
|
}
|
|
/// <summary>
|
/// 切换登录类型
|
/// </summary>
|
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.PlsEntryPhoneNumber);
|
#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;
|
};
|
}
|
|
/// <summary>
|
/// 切换登录方式
|
/// 验证码/密码
|
/// </summary>
|
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);
|
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;
|
}
|
};
|
}
|
|
/// <summary>
|
/// 文本框焦点变化事件
|
/// </summary>
|
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 (account.Length == 0)
|
return;
|
if (logintType == 0)
|
{
|
if (!Regex.IsMatch(account, @"^[1]+\d{10}"))
|
{
|
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 (!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;
|
};
|
}
|
|
/// <summary>
|
/// 隐藏/显示密码
|
/// </summary>
|
void LoadMethod_VisiblePassword()
|
{
|
btnVisiblePassword.MouseUpEventHandler += (sender, e) =>
|
{
|
btnVisiblePassword.IsSelected = !btnVisiblePassword.IsSelected;
|
if (btnVisiblePassword.IsSelected)
|
{
|
etPassword.SecureTextEntry = false;
|
}
|
else
|
{
|
etPassword.SecureTextEntry = true;
|
}
|
};
|
}
|
|
/// <summary>
|
/// 登录按钮点击事件
|
/// </summary>
|
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{10}"))
|
{
|
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) =>
|
{
|
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
|
}
|
|
/// <summary>
|
/// 加载登录线程
|
/// </summary>
|
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;
|
}
|
/// <summary>
|
/// 调用登录接口登录
|
/// </summary>
|
bool LoadMethod_Login()
|
{
|
var result = false;
|
ResponsePack loginResult;
|
if (logintMode == 0)
|
{
|
//调用登录接口
|
loginResult = pm.LoginByPassword(account, password);
|
}
|
else
|
{
|
//调用登录接口
|
loginResult = pm.LoginValidCode(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(),
|
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 "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;
|
}
|
|
/// <summary>
|
/// 获取住宅列表
|
/// </summary>
|
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.regionList = new List<RegionInfoRes>();
|
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(),
|
Address = homeJsonStr.GetValue("Address").ToString(),
|
};
|
MainPage.LoginUser.regionList.Add(home);
|
}
|
DB_ResidenceData.residenceData.residecenInfo = MainPage.LoginUser.regionList[0];
|
DB_ResidenceData.residenceData.SaveResidenceData();
|
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;
|
}
|
|
/// <summary>
|
/// 加载注册界面
|
/// </summary>
|
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();
|
};
|
}
|
|
/// <summary>
|
/// 忘记密码
|
/// </summary>
|
void LoadMethod_ForgetPassword()
|
{
|
btnForgetPassword.MouseUpEventHandler += (sender, e) =>
|
{
|
Action<string> 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();
|
|
};
|
}
|
}
|
}
|