modal-user-login-main.component.ts 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import { Component, Input, OnInit } from '@angular/core';
  2. import { IonicModule } from '@ionic/angular';
  3. import { ModalController } from '@ionic/angular/standalone';
  4. import { CloudUser } from 'src/lib/ncloud';
  5. import { addIcons } from 'ionicons';
  6. import { arrowBackOutline, logoTux, logoWechat, phonePortraitOutline } from 'ionicons/icons';
  7. import { FormsModule } from '@angular/forms';
  8. import { HttpClient } from '@angular/common/http';
  9. addIcons({ arrowBackOutline, logoWechat, phonePortraitOutline, logoTux });
  10. @Component({
  11. selector: 'app-modal-user-login-main',
  12. templateUrl: './modal-user-login-main.component.html',
  13. styleUrls: ['./modal-user-login-main.component.scss'],
  14. standalone: true,
  15. imports: [IonicModule, FormsModule],
  16. })
  17. export class ModalUserLoginMainComponent implements OnInit {
  18. phoneNumber: string = "";
  19. verCode: string = "";
  20. isVerCodeEnabled: boolean = false;
  21. isLoginButtonEnabled: boolean = false;
  22. trueVerCode: string = '';
  23. @Input() loginType: string = '';
  24. /**
  25. * @置顶函数
  26. */
  27. constructor(private modalCtrl: ModalController, private http: HttpClient) { }
  28. ngOnInit() { }
  29. goBack() {
  30. this.modalCtrl.dismiss(null, "cancel");
  31. }
  32. /**
  33. * @手机号登录页面功能函数
  34. */
  35. onPhoneNumberChange() {
  36. if (this.phoneNumber.length == 11) {
  37. this.isVerCodeEnabled = true;
  38. console.log("手机号码长度:" + this.phoneNumber.length + ", 成功")
  39. }
  40. else {
  41. this.isVerCodeEnabled = false;
  42. console.log("手机号码长度:" + this.phoneNumber.length + ", 失败")
  43. }
  44. }
  45. onVerCodeChange() {
  46. if (this.verCode.length >= 4) {
  47. this.isLoginButtonEnabled = true;
  48. console.log("验证码长度:" + this.verCode.length + ", 成功")
  49. }
  50. else {
  51. this.isLoginButtonEnabled = false;
  52. console.log("验证码长度:" + this.verCode.length + ", 失败")
  53. }
  54. }
  55. getVerCode() {
  56. //随机生成四位数的验证码
  57. this.trueVerCode = (Math.floor(Math.random() * 9000)+1000).toString();
  58. console.log("获取验证码成功" + this.trueVerCode);
  59. const apiUrl = `http://api.smsbao.com/sms?u=peppa&p=94d5a383c32c4d85bfbfc2599e64a8dc&m=${this.phoneNumber}&c=${encodeURIComponent("【衣靠】您的验证码是" + this.trueVerCode)}`;
  60. console.log("请求地址:" + apiUrl);
  61. this.http.get(apiUrl).subscribe(response => {
  62. if (response === '0') {
  63. console.log("短信发送成功");
  64. // 处理登录成功逻辑
  65. } else {
  66. console.error("短信发送失败", response);
  67. }
  68. }, error => {
  69. console.error("请求失败", error);
  70. });
  71. }
  72. async loginByPhone() {
  73. console.log("登录被点击:手机号登录");
  74. let user: any = new CloudUser();
  75. user = await user.loginByPhone(this.phoneNumber, this.verCode,this.trueVerCode);
  76. if (user?.id) {
  77. console.log("登录成功,关闭模态loginByUsername");
  78. this.modalCtrl.dismiss(user, "confirm")
  79. console.log("loginMain传递信息如下:")
  80. console.log(user)
  81. console.log("已关闭")
  82. } else {
  83. console.log("登录失败");
  84. }
  85. }
  86. /**
  87. * @用户名登录页面功能函数
  88. */
  89. username: string = "";
  90. password: string = "";
  91. async loginByUsername() {
  92. console.log("登录被点击:用户名登录");
  93. if (!this.username || !this.password) {
  94. console.log("请输入完整用户名和密码")
  95. return
  96. }
  97. let user:any = new CloudUser();
  98. user = await user.loginByUsername(this.username, this.password);
  99. if (user?.id) {
  100. console.log("登录成功,关闭模态loginByUsername");
  101. this.modalCtrl.dismiss(user, "confirm")
  102. console.log("loginMain传递信息如下:")
  103. console.log(user)
  104. console.log("已关闭")
  105. } else {
  106. console.log("登录失败");
  107. }
  108. }
  109. }
  110. export async function openUserLoginMainModal(modalCtrl: ModalController, loginType: string): Promise<CloudUser | null> {
  111. const modal = await modalCtrl.create({
  112. component: ModalUserLoginMainComponent,
  113. componentProps: {
  114. loginType: loginType
  115. },
  116. });
  117. await modal.present();
  118. const { data, role } = await modal.onWillDismiss();
  119. if (role === 'confirm') {
  120. return data;
  121. }
  122. return null;
  123. }