项目初始化

This commit is contained in:
Taric Xin
2021-11-26 16:34:35 +08:00
parent 66644bcf0a
commit 5287578452
354 changed files with 45736 additions and 0 deletions

View File

@ -0,0 +1,84 @@
import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';
import { ComponentPortal } from '@angular/cdk/portal';
import { ComponentRef, Injectable } from '@angular/core';
import { Observable, Subject } from 'rxjs';
import { CaptchaComponent } from './captcha.component';
@Injectable({
providedIn: 'root',
})
export class DunHelper {
captchacontainerRef!: ComponentRef<CaptchaComponent>;
userInfo;
constructor(private overlay: Overlay) {
this.userInfo = JSON.parse(localStorage.getItem('user') || '');
}
/**
* 组件初始化
* @param phone 手机号
* @param url 发送验证码请求地址
*/
init(phone: string, url?: string): Subject<any> {
const overlayRef = this.createOverlay();
const containerPortal = new ComponentPortal(CaptchaComponent);
this.captchacontainerRef = overlayRef.attach<CaptchaComponent>(containerPortal);
this.captchacontainerRef.instance.phone = phone;
this.captchacontainerRef.instance.url = url || '';
return this.captchacontainerRef.instance.init();
}
/**
* 弹出滑块验证
* @param phone 手机号
* @param url 发送验证码请求地址
*/
popUp(phone?: string, url?: string): Observable<any> {
if (this.captchacontainerRef) {
this.destory();
}
this.init(phone || this.userInfo?.phone, url).subscribe((instance) => {
if (instance) {
this.captchacontainerRef.instance.popUp();
}
});
/* if (!this.captchacontainerRef) {
this.init(phone || this.userInfo?.phone, url).subscribe(instance => {
if (instance) {
this.captchacontainerRef.instance.popUp();
}
});
} else {
if (!!phone && !!url) {
this.init(phone || this.userInfo?.phone, url).subscribe(instance => {
if (instance) {
this.captchacontainerRef.instance.popUp();
}
});
} else {
this.captchacontainerRef.instance.popUp();
}
} */
return this.captchacontainerRef.instance.done;
}
/** 组件销毁 */
destory() {
this.captchacontainerRef.destroy();
}
private createOverlay(): OverlayRef {
const overlayConfig = new OverlayConfig({
hasBackdrop: false,
scrollStrategy: this.overlay.scrollStrategies.block(),
positionStrategy: this.overlay.position().global(),
backdropClass: 'captcha-back-drop',
panelClass: 'captcha-overlay',
});
return this.overlay.create(overlayConfig);
}
}