modal-user-login.component.ts 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import { Input, OnInit } from '@angular/core';
  2. import { Component } from '@angular/core';
  3. import { IonHeader, IonToolbar, IonTitle, IonContent, IonCard, IonCardContent, IonButton, IonCardHeader, IonCardTitle, IonCardSubtitle, ModalController, IonInput, IonItem, IonSegment, IonSegmentButton, IonLabel } from '@ionic/angular/standalone';
  4. import { CloudUser } from 'src/lib/ncloud';
  5. @Component({
  6. selector: 'app-modal-user-login',
  7. templateUrl: './modal-user-login.component.html',
  8. styleUrls: ['./modal-user-login.component.scss'],
  9. standalone: true,
  10. imports: [IonHeader, IonToolbar, IonTitle, IonContent,
  11. IonCard,IonCardContent,IonButton,IonCardHeader,IonCardTitle,IonCardSubtitle,
  12. IonInput,IonItem,
  13. IonSegment,IonSegmentButton,IonLabel
  14. ],
  15. })
  16. export class ModalUserLoginComponent implements OnInit {
  17. @Input()
  18. type:"login"|"signup" = "login"
  19. typeChange(ev:any){
  20. this.type = ev?.detail?.value || ev?.value || 'login'
  21. }
  22. username:string = ""
  23. usernameChange(ev:any){
  24. console.log(ev)
  25. this.username = ev?.detail?.value
  26. }
  27. password:string = ""
  28. passwordChange(ev:any){
  29. this.password = ev?.detail?.value
  30. }
  31. password2:string = ""
  32. password2Change(ev:any){
  33. this.password2 = ev?.detail?.value
  34. }
  35. constructor(private modalCtrl:ModalController) { }
  36. ngOnInit() {}
  37. async login(){
  38. if(!this.username || !this.password){
  39. console.log("请输入完整")
  40. return
  41. }
  42. let user:any = new CloudUser();
  43. user = await user.login(this.username,this.password);
  44. if(user?.id){
  45. this.modalCtrl.dismiss(user,"confirm")
  46. }else{
  47. console.log("登录失败")
  48. }
  49. }
  50. async signup(){
  51. if(!this.username || !this.password || !this.password2){
  52. console.log("请输入完整")
  53. return
  54. }
  55. if(this.password!=this.password2){
  56. console.log("两次密码不符,请修改")
  57. return
  58. }
  59. let user:any = new CloudUser();
  60. user = await user.signUp(this.username,this.password);
  61. if(user){
  62. this.type = "login"
  63. console.log("注册成功请登录")
  64. }
  65. }
  66. }
  67. export async function openUserLoginModal(modalCtrl:ModalController,type:"login"|"signup"="login"):Promise<CloudUser|null>{
  68. const modal = await modalCtrl.create({
  69. component: ModalUserLoginComponent,
  70. componentProps:{
  71. type:type
  72. },
  73. breakpoints:[0.5,0.7],
  74. initialBreakpoint:0.5
  75. });
  76. modal.present();
  77. const { data, role } = await modal.onWillDismiss();
  78. if (role === 'confirm') {
  79. return data;
  80. }
  81. return null
  82. }