123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389 |
- import { Component, OnInit, ViewChild } from '@angular/core';
- import { AuthService } from '../../../services/auth.service';
- import * as Parse from 'parse';
- import { ActivatedRoute } from '@angular/router';
- import { HttpClient, HttpHeaders } from '@angular/common/http';
- import { catchError } from 'rxjs/operators';
- import { AgreementComponent } from '.././agreement/agreement.component';
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
- import { CommonModule } from '@angular/common';
- import {
- ionicStandaloneModules,
- AlertController,
- ToastController,
- ModalController,
- // LoadingController,
- } from '../../ionic-standalone.modules';
- import { Platform } from '@ionic/angular';
- @Component({
- selector: 'app-invite',
- templateUrl: './invite.component.html',
- styleUrls: ['./invite.component.scss'],
- standalone: true,
- imports: [
- CommonModule,
- FormsModule,
- ReactiveFormsModule,
- ...ionicStandaloneModules,
- ],
- })
- export class InviteComponent implements OnInit {
- constructor(
- private toastController: ToastController,
- public authServ: AuthService,
- // private router: Router,
- private activatedRoute: ActivatedRoute,
- private http: HttpClient,
- private modalCtrl: ModalController,
- private alertController: AlertController,
- // private loadingCtrl: LoadingController
- private platform: Platform
- ) {
- this.company = authServ.company;
- }
- inviteUser?:Parse.Object
- company: string = '';
- inputType: string = 'password';
- // 注册
- agreement: boolean = false;
- registerAgreement: any;
- registerInfo: any = {
- mobile: '',
- code: '',
- password: '',
- confirmPassword: '',
- invite: '',
- nickname: '',
- };
- isRegister: boolean = false; //是否注册成功
- app:Parse.Object
- nicknameArr = [
- "星辰",
- "月夜夜影",
- "花儿阳光",
- "彩虹颜色",
- "云朵天空",
- "凤凰火焰",
- "龙呼吸",
- "鹰翅膀",
- "狼族群",
- "虎爪子",
- "狮咆哮",
- "熊拥抱",
- "狐狸尾巴",
- "鹿鹿角",
- "马奔跑",
- "兔跳跃",
- "松鼠坚果",
- "猴子香蕉",
- "熊猫竹子",
- "长颈鹿脖子"
- ]
- ngOnInit() {
- if (this.platform.is('hybrid')) {
- this.authServ.logout();
- return;
- }
- this.registerInfo.nickname = this.nicknameArr[Math.floor(Math.random() * 20)] + new Date().getMilliseconds()
- let invite = localStorage.getItem('invite');
- // console.log('invite:', invite);
- if (invite) this.registerInfo.invite = invite;
- this.activatedRoute.paramMap.subscribe(async (param) => {
- let id = param?.get('id');
- if(!invite) invite = id
- if (invite) {
- let query = new Parse.Query('User');
- query.equalTo('invite', invite);
- query.select('mobile', 'username', 'nickname');
- this.inviteUser = await query.first();
- this.registerInfo.invite = invite;
- }else{
- window.location.href = '';
- }
- localStorage.setItem('APP_DEFAULT_COMPANY', 'Qje9D4bqol');
- localStorage.setItem('company', this.company);
- if (this.company) {
- let App = new Parse.Query('App');
- App.equalTo('company', this.company);
- this.app = await App.first();
- }
- this.getAgreement();
- });
- }
- // 获取验证码
- wait: number = 60;
- waitStatus: boolean = false;
- time() {
- if (this.wait == 0) {
- this.waitStatus = false;
- this.wait = 60;
- } else {
- this.waitStatus = true;
- this.wait--;
- setTimeout(() => {
- this.time();
- }, 1000);
- }
- }
- // 获取验证码
- vcode: string = '';
- mobile: string = '';
- loginToken: string = '';
- timer: boolean = false;
- async sendVerifyCode(mobile: string) {
- if (this.timer) {
- return;
- }
- this.timer = true;
- let a = /^1[3456789]\d{9}$/;
- if (mobile == undefined || !String(mobile).match(a)) {
- const toast = await this.toastController.create({
- message: '请填写正确手机号',
- color: 'warning',
- duration: 1000,
- });
- toast.present();
- this.timer = false;
- return;
- }
- this.http
- .post('https://server.fmode.cn/api/apig/message', {
- company: this.company,
- mobile: mobile,
- })
- .subscribe((res: any) => {
- this.waitStatus = true;
- this.time();
- this.vcode = res.data.code;
- this.timer = false;
- });
- }
- togglePassword() {
- if (this.inputType == 'password') {
- this.inputType = 'text';
- } else {
- this.inputType = 'password';
- }
- }
- // 注册账号
- agree() {
- this.agreement = !this.agreement;
- }
- getAgreement() {
- let Agreement = new Parse.Query('ContractAgreement');
- Agreement.equalTo('company', this.company);
- Agreement.equalTo('type', 'register');
- Agreement.first().then((res) => {
- console.log(res);
- this.registerAgreement = res;
- });
- }
- async showAgreement() {
- const modal = await this.modalCtrl.create({
- component: AgreementComponent,
- cssClass: 'my-custom-class',
- componentProps: {
- agreement: this.registerAgreement,
- },
- });
- return await modal.present();
- }
- async registerUser() {
- let a = /^1[3456789]\d{9}$/;
- if (
- this.registerInfo.mobile == undefined ||
- !String(this.registerInfo.mobile).match(a)
- ) {
- const toast = await this.toastController.create({
- message: '请填写正确的手机号',
- color: 'warning',
- duration: 1000,
- });
- toast.present();
- return;
- }
- if (this.registerInfo.code == undefined || this.registerInfo.code == '') {
- const toast = await this.toastController.create({
- message: '请输入验证码',
- color: 'warning',
- duration: 1000,
- });
- toast.present();
- return;
- }
- if (
- this.registerInfo.password == undefined ||
- this.registerInfo.password.trim() == ''
- ) {
- const toast = await this.toastController.create({
- message: '请输入密码',
- color: 'warning',
- duration: 1000,
- });
- toast.present();
- return;
- }
- if (
- this.registerInfo.password.length < 6 ||
- this.registerInfo.password.length.length > 20
- ) {
- const toast = await this.toastController.create({
- message: '密码长度不得小于6位或大于20位',
- color: 'warning',
- duration: 1000,
- });
- toast.present();
- return;
- }
- if (
- this.registerInfo.confirmPassword == undefined ||
- this.registerInfo.confirmPassword.trim() == ''
- ) {
- const toast = await this.toastController.create({
- message: '请确认密码',
- color: 'warning',
- duration: 1000,
- });
- toast.present();
- return;
- }
- if (
- this.registerInfo.password.trim() !=
- this.registerInfo.confirmPassword.trim()
- ) {
- const toast = await this.toastController.create({
- message: '两次输入密码不一致',
- color: 'warning',
- duration: 1000,
- });
- toast.present();
- return;
- }
- this.registerInfo.nickname = this.registerInfo.nickname?.trim()
- if(!this.registerInfo.nickname){
- const toast = await this.toastController.create({
- message: '请输入昵称',
- color: 'warning',
- duration: 1000,
- });
- toast.present();
- return;
- }
- if (!this.agreement) {
- const alert = await this.alertController.create({
- cssClass: 'my-custom-class',
- header: '提示',
- message: `请先勾选${this.registerAgreement?.get('title')}`,
- buttons: [
- {
- text: '取消',
- role: 'cancel',
- cssClass: 'secondary',
- handler: (blah) => {
- console.log('Confirm Cancel: blah');
- },
- },
- {
- text: '同意',
- handler: () => {
- this.agreement = true;
- },
- },
- ],
- });
- await alert.present();
- return;
- }
- let data = this.registerInfo.invite
- ? {
- company: this.company,
- code: this.registerInfo.code,
- mobile: this.registerInfo.mobile,
- password: this.registerInfo.password,
- invite: this.registerInfo.invite,
- nickname:this.registerInfo.nickname,
- }
- : {
- company: this.company,
- code: this.registerInfo.code,
- mobile: this.registerInfo.mobile,
- password: this.registerInfo.password,
- nickname:this.registerInfo.nickname,
- };
- this.http
- .post(`https://server.fmode.cn/api/auth/register`, data)
- .pipe(
- catchError(async (e) => {
- // 显示报错
- const toast = await this.toastController.create({
- message: e.error.mess,
- color: 'danger',
- duration: 1000,
- });
- toast.present();
- console.log(e);
- return;
- })
- )
- .subscribe(async (res: any) => {
- console.log(res);
- if (res && res.code == 200) {
- const toast = await this.toastController.create({
- message: res.msg,
- color: 'success',
- duration: 1000,
- });
- toast.present();
- const alert = await this.alertController.create({
- cssClass: 'my-custom-class',
- header: '注册成功',
- message: `恭喜你,注册成功`,
- backdropDismiss: false,
- buttons: [
- {
- text: '确认',
- handler: () => {
- this.registerInfo = {
- mobile: '',
- code: '',
- password: '',
- confirmPassword: '',
- invite: '',
- };
- this.isRegister = true
- },
- },
- ],
- });
- await alert.present();
- } else {
- // const toast = await this.toastController.create({
- // // 接口返回的错误,提示用户
- // message: res.mess,
- // color: 'danger',
- // duration: 1000,
- // });
- // toast.present();
- }
- });
- }
- downImg(url:string) {
- let dlLink: any = document.createElement('a');
- if ('download' in dlLink) {
- dlLink.style.visibility = 'hidden';
- dlLink.href = url;
- dlLink.download = 'hey聊';
- document.body.appendChild(dlLink);
- dlLink.click();
- document.body.removeChild(dlLink);
- } else {
- location.href = url;
- }
- }
- }
|