新增设置支付密码
This commit is contained in:
@ -12,6 +12,7 @@
|
|||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
import { RouterModule, Routes } from '@angular/router';
|
import { RouterModule, Routes } from '@angular/router';
|
||||||
import { AccountComponentsCenterComponent } from './components/center/center.component';
|
import { AccountComponentsCenterComponent } from './components/center/center.component';
|
||||||
|
import { AccountComponentsEditPayPasswordComponent } from './components/edit-paypassword/edit-paypassword.component'
|
||||||
|
|
||||||
const routes: Routes = [
|
const routes: Routes = [
|
||||||
{ path: '', redirectTo: 'center', pathMatch: 'full' },
|
{ path: '', redirectTo: 'center', pathMatch: 'full' },
|
||||||
@ -21,7 +22,16 @@ const routes: Routes = [
|
|||||||
data: {
|
data: {
|
||||||
title: '账户中心'
|
title: '账户中心'
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
path: 'edit-paypassword',
|
||||||
|
component: AccountComponentsEditPayPasswordComponent,
|
||||||
|
data: {
|
||||||
|
title: '修改支付密码',
|
||||||
|
titleI18n: 'app.my.edit.paypassword',
|
||||||
|
// guard: {ability: ['accountcenter-editpaypassword']}
|
||||||
|
},
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
|
|||||||
@ -15,11 +15,13 @@ import { AccountRoutingModule } from './account-routing.module';
|
|||||||
import { AccountComponentsCenterComponent } from './components/center/center.component';
|
import { AccountComponentsCenterComponent } from './components/center/center.component';
|
||||||
import { AccountComponentsEditNameComponent } from './components/edit-name/edit-name.component';
|
import { AccountComponentsEditNameComponent } from './components/edit-name/edit-name.component';
|
||||||
import { AccountComponentsCenterEditComponent } from './components/edit-password/edit-password.component';
|
import { AccountComponentsCenterEditComponent } from './components/edit-password/edit-password.component';
|
||||||
|
import { AccountComponentsEditPayPasswordComponent } from './components/edit-paypassword/edit-paypassword.component'
|
||||||
|
|
||||||
const COMPONENTS = [
|
const COMPONENTS = [
|
||||||
AccountComponentsCenterComponent,
|
AccountComponentsCenterComponent,
|
||||||
AccountComponentsEditNameComponent,
|
AccountComponentsEditNameComponent,
|
||||||
AccountComponentsCenterEditComponent
|
AccountComponentsCenterEditComponent,
|
||||||
|
AccountComponentsEditPayPasswordComponent
|
||||||
];
|
];
|
||||||
const COMPONENTS_NOROUNT = [AccountComponentsEditNameComponent];
|
const COMPONENTS_NOROUNT = [AccountComponentsEditNameComponent];
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,7 @@
|
|||||||
<span class="icon iconfont icon-shoujihao" style="color: #aaa"></span> 手机号码/账号
|
<span class="icon iconfont icon-shoujihao" style="color: #aaa"></span> 手机号码/账号
|
||||||
</div>
|
</div>
|
||||||
<div nz-col [nzSpan]="10">{{ infoData.phone }}</div>
|
<div nz-col [nzSpan]="10">{{ infoData.phone }}</div>
|
||||||
<div nz-col [nzSpan]="10">
|
<div nz-col [nzSpan]="5">
|
||||||
<span *ngIf="infoData.phone; else elsePhone"><i nz-icon [nzType]="'check-circle'" [nzTheme]="'fill'"
|
<span *ngIf="infoData.phone; else elsePhone"><i nz-icon [nzType]="'check-circle'" [nzTheme]="'fill'"
|
||||||
style="color: #52c41a"></i> 已绑定</span>
|
style="color: #52c41a"></i> 已绑定</span>
|
||||||
<ng-template #elsePhone><i nz-icon [nzType]="'question-circle'" [nzTheme]="'fill'"
|
<ng-template #elsePhone><i nz-icon [nzType]="'question-circle'" [nzTheme]="'fill'"
|
||||||
@ -30,18 +30,43 @@
|
|||||||
</div>
|
</div>
|
||||||
<div nz-col [nzSpan]="10">定期更换密码有助于账号安全</div>
|
<div nz-col [nzSpan]="10">定期更换密码有助于账号安全</div>
|
||||||
<div nz-col [nzSpan]="10">
|
<div nz-col [nzSpan]="10">
|
||||||
<span *ngIf="infoData.isPwd; else elsePwd"
|
<span *ngIf="infoData.isPwd; else elsePwd"><i nz-icon [nzType]="'check-circle'" [nzTheme]="'fill'"
|
||||||
><i nz-icon [nzType]="'check-circle'" [nzTheme]="'fill'" style="color: #52c41a"></i> 已设置</span
|
style="color: #52c41a"></i> 已设置</span>
|
||||||
>
|
<ng-template #elsePwd><i nz-icon [nzType]="'question-circle'" [nzTheme]="'fill'"
|
||||||
<ng-template #elsePwd
|
style="color: #ccc"></i> 未设置</ng-template>
|
||||||
><i nz-icon [nzType]="'question-circle'" [nzTheme]="'fill'" style="color: #ccc"></i> 未设置</ng-template
|
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nz-list-item-meta-title>
|
</nz-list-item-meta-title>
|
||||||
</nz-list-item-meta>
|
</nz-list-item-meta>
|
||||||
<div class="item-btn"><a (click)="edit('password')">修改</a></div>
|
<div class="item-btn"><a (click)="edit('password')">修改</a></div>
|
||||||
</nz-list-item>
|
</nz-list-item>
|
||||||
|
<nz-list-item *ngIf="!defaultCompany.enterpriseId">
|
||||||
|
<nz-list-item-meta>
|
||||||
|
<nz-list-item-meta-title>
|
||||||
|
<div nz-row [nzGutter]="16">
|
||||||
|
<div nz-col [nzSpan]="4" class="li-label">
|
||||||
|
<!-- <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" version="1.1"
|
||||||
|
width="19px" height="23px">
|
||||||
|
<g transform="matrix(1 0 0 1 -345 -324 )">
|
||||||
|
<path
|
||||||
|
d="M 15.6123766269722 8.00244105491571 C 15.6119034283768 8.00244105491571 15.6114302297875 8.00244117202714 15.61095703125 8.00244140625 L 15.197197265625 8.00244140625 C 15.1815563889208 8.00244140625 15.168876953125 7.98976197045419 15.168876953125 7.97412109375 L 15.168876953125 5.885498046875 C 15.1737779288544 4.39846216264915 14.595081789561 2.96885593837806 13.55716796875 1.9039453125 C 12.7321123508105 1.05143460529325 11.655620403345 0.485695706108903 10.485546875 0.2896875 C 6.987421875 -0.313818359375 3.801953125 2.4227734375 3.801953125 5.97130859375 L 3.801953125 7.97412109375 C 3.801953125 7.98976197045419 3.78927368920419 8.00244140625 3.7736328125 8.00244140625 L 3.407451171875 8.00244140625 C 1.80531036111513 8.00259780422134 0.50660155486636 9.3014334003565 0.506601562499998 10.90357421875 L 0.506601562499998 19.88734375 C 0.506601562499998 21.489282355869 1.80522937670661 22.7879101700756 3.40716796875 22.7879101700756 L 15.579521484375 22.78791015625 C 17.1817432795434 22.7879101700756 18.48037109375 21.489282355869 18.48037109375 19.8873437638256 L 18.48037109375 10.874970703125 C 18.4803734804811 10.8734601705268 18.4803746738472 10.8719496362745 18.4803746738472 10.8704391017907 C 18.4803746738472 9.28648751795714 17.1963282108058 8.00244105491571 15.6123766269722 8.00244105491571 Z M 5.165859375 7.97412109375 L 5.16416015625 5.885498046875 C 5.16416015625 3.28484375 6.8866015625 1.56580078125 9.484140625 1.56580078125 C 10.7585546875 1.56580078125 11.718046875 1.963984375 12.583798828125 2.85494140625 C 13.430859375 3.72720703125 13.8035546875 4.66234375 13.8035546875 5.88521484375 L 13.8035546875 7.97412109375 C 13.8035546875 7.98976197045419 13.7908752517042 8.00244140625 13.775234375 8.00244140625 L 5.1941796875 8.00244140625 C 5.17853881079581 8.00244140625 5.165859375 7.98976197045419 5.165859375 7.97412109375 Z M 17.1215625 19.9156640625 L 17.1249609375 19.9156640625 C 17.1249609375 20.926982421875 16.622275390625 21.429384765625 15.61095703125 21 L 3.4111328125 21 C 2.55948707595672 21.429384765625 1.869091796875 20.7389894865433 1.869091796875 19.88734375 L 1.869091796875 11.115126953125 C 1.869091796875 10.1483643640389 2.65280772341387 9.3646484375 3.6195703125 9.3646484375 L 15.579521484375 9.3646484375 C 16.4311672209183 9.3646484375 17.1215625 10.0550437165817 17.1215625 10.906689453125 L 17.1215625 19.9156640625 Z "
|
||||||
|
fill-rule="nonzero" fill="#3370ff" stroke="none" transform="matrix(1 0 0 1 345 324 )" />
|
||||||
|
</g>
|
||||||
|
</svg> -->
|
||||||
|
<span class="icon iconfont icon-mima" style="color: #aaa"></span> 支付密码
|
||||||
|
</div>
|
||||||
|
<div nz-col [nzSpan]="10">定期更换支付密码有助于账号安全</div>
|
||||||
|
<div nz-col [nzSpan]="10">
|
||||||
|
<span *ngIf="ifHasPayPw; else elsePwd"><i nz-icon [nzType]="'check-circle'" [nzTheme]="'fill'"
|
||||||
|
style="color: #52c41a"></i> 已设置</span>
|
||||||
|
<ng-template #elsePwd><i nz-icon [nzType]="'question-circle'" [nzTheme]="'fill'"
|
||||||
|
style="color: #ccc"></i> 未设置</ng-template>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nz-list-item-meta-title>
|
||||||
|
</nz-list-item-meta>
|
||||||
|
<div class="item-btn"><a (click)="edit('payPassword')">设置</a></div>
|
||||||
|
</nz-list-item>
|
||||||
</nz-list>
|
</nz-list>
|
||||||
|
|
||||||
</nz-card>
|
</nz-card>
|
||||||
|
|||||||
@ -17,7 +17,7 @@
|
|||||||
right: 20px;
|
right: 20px;
|
||||||
}
|
}
|
||||||
.item-btn {
|
.item-btn {
|
||||||
width: 28px;
|
width: 36px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.li-label {
|
.li-label {
|
||||||
|
|||||||
@ -53,6 +53,8 @@ export class AccountComponentsCenterComponent implements OnInit {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
idx: any = 0;
|
idx: any = 0;
|
||||||
|
defaultCompany: any = {};
|
||||||
|
ifHasPayPw = false;
|
||||||
constructor(public service: AccountService, private modal: ModalHelper, private http: _HttpClient, private router: Router, private modalService: NzModalService,) {}
|
constructor(public service: AccountService, private modal: ModalHelper, private http: _HttpClient, private router: Router, private modalService: NzModalService,) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
@ -136,9 +138,31 @@ export class AccountComponentsCenterComponent implements OnInit {
|
|||||||
getInfo() {
|
getInfo() {
|
||||||
this.service.http.post(this.service.$api_get_current_user_info).subscribe((res) => {
|
this.service.http.post(this.service.$api_get_current_user_info).subscribe((res) => {
|
||||||
this.infoData = res.data;
|
this.infoData = res.data;
|
||||||
|
this.getDeafaultCompany();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getDeafaultCompany() {
|
||||||
|
this.service.request(this.service.$api_getUserDefaultEnterpriseProject).subscribe(res => {
|
||||||
|
if (res === null) {
|
||||||
|
this.router.navigate(['/changeproject']);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.defaultCompany = res
|
||||||
|
if (res.projectId) {
|
||||||
|
this.getPayPw()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
getPayPw() {
|
||||||
|
this.service.request(this.service.$api_isUserVerifyPassword, {}).subscribe(res => {
|
||||||
|
this.ifHasPayPw = res
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
edit(tpye: string) {
|
edit(tpye: string) {
|
||||||
if (tpye === 'phone') {
|
if (tpye === 'phone') {
|
||||||
const modalRef = this.modalService.create({
|
const modalRef = this.modalService.create({
|
||||||
@ -170,6 +194,10 @@ export class AccountComponentsCenterComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tpye === 'payPassword') {
|
||||||
|
this.router.navigate(['/account/edit-paypassword']);
|
||||||
|
}
|
||||||
// if (tpye === 'info') {
|
// if (tpye === 'info') {
|
||||||
// this.router.navigate(['/account/editInfo'], {
|
// this.router.navigate(['/account/editInfo'], {
|
||||||
// queryParams: { realName: this.infoData.realName, certificateNumber: this.infoData.certificateNumber },
|
// queryParams: { realName: this.infoData.realName, certificateNumber: this.infoData.certificateNumber },
|
||||||
|
|||||||
@ -0,0 +1,171 @@
|
|||||||
|
<page-header-wrapper [title]="''" [logo]="logo">
|
||||||
|
<ng-template #logo>
|
||||||
|
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
|
||||||
|
<i nz-icon nzType="left" nzTheme="outline"></i>
|
||||||
|
</button>
|
||||||
|
</ng-template>
|
||||||
|
</page-header-wrapper>
|
||||||
|
<nz-card>
|
||||||
|
<div class="container">
|
||||||
|
<div>
|
||||||
|
<div style="display: flex; align-items: center; min-height: 150px">
|
||||||
|
<nz-steps [nzCurrent]="step" style="display: contents" [nzProgressDot]="progressTemplate">
|
||||||
|
<nz-step nzTitle="安全验证"></nz-step>
|
||||||
|
<nz-step nzTitle="重设密码"></nz-step>
|
||||||
|
<nz-step nzTitle="完成"></nz-step>
|
||||||
|
</nz-steps>
|
||||||
|
<ng-template #progressTemplate let-dot let-status="status" let-index="index">
|
||||||
|
<ng-container *ngIf="status === 'finish'; else finshTemplate">
|
||||||
|
<i nz-icon nzType="check" nzTheme="outline" style="color: #fff"></i>
|
||||||
|
</ng-container>
|
||||||
|
<ng-template #finshTemplate>
|
||||||
|
{{ index + 1 }}
|
||||||
|
</ng-template>
|
||||||
|
</ng-template>
|
||||||
|
</div>
|
||||||
|
<nz-card [nzBordered]="false">
|
||||||
|
<div style="width: 480px; margin: 0 auto" [ngSwitch]="step.toString()">
|
||||||
|
<div *ngSwitchCase="0">
|
||||||
|
<sf #step1sf *ngIf="step1Schema" [schema]="step1Schema" button="none" [layout]="'horizontal'">
|
||||||
|
<ng-template sf-template="smsVerifyCode" let-smsVerifyCode let-ui="ui" let-schema="schema">
|
||||||
|
<nz-input-group [nzSuffix]="suffixTemplateInfo">
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
maxlength="6"
|
||||||
|
nz-input
|
||||||
|
placeholder="请输入验证码"
|
||||||
|
[ngModel]="smsVerifyCode.formProperty.value"
|
||||||
|
(ngModelChange)="smsVerifyCode.setValue($event)"
|
||||||
|
/>
|
||||||
|
</nz-input-group>
|
||||||
|
</ng-template>
|
||||||
|
<div nz-col [nzPush]="5">
|
||||||
|
<button
|
||||||
|
nz-button
|
||||||
|
type="submit"
|
||||||
|
nzType="primary"
|
||||||
|
(click)="nextStep()"
|
||||||
|
[disabled]="!step1sf.valid"
|
||||||
|
[nzLoading]="service.http.loading"
|
||||||
|
>
|
||||||
|
下一步
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</sf>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div *ngSwitchCase="1">
|
||||||
|
<form nz-form [formGroup]="formGroup3" class="myForm">
|
||||||
|
<nz-form-item>
|
||||||
|
<nz-form-label nzSpan="6" nzRequired nzFor="passWord">设置支付密码</nz-form-label>
|
||||||
|
<nz-form-control nzSpan="18" [nzErrorTip]="passwordErrorTpl">
|
||||||
|
<nz-input-group [nzSuffix]="pwdIconEye">
|
||||||
|
<input
|
||||||
|
nz-input
|
||||||
|
[type]="isShowPwd ? 'text' : 'password'"
|
||||||
|
formControlName="passWord"
|
||||||
|
minlength="6"
|
||||||
|
maxlength="6"
|
||||||
|
(ngModelChange)="validateConfirmPassword()"
|
||||||
|
placeholder="请输入支付密码"
|
||||||
|
/>
|
||||||
|
</nz-input-group>
|
||||||
|
<ng-template #pwdIconEye>
|
||||||
|
<span (click)="isShowPwd = !isShowPwd">
|
||||||
|
<ng-container *ngIf="isShowPwd; else showPwdTempalte">
|
||||||
|
<i nz-icon nzType="eye" nzTheme="outline"></i>
|
||||||
|
</ng-container>
|
||||||
|
<ng-template #showPwdTempalte>
|
||||||
|
<i nz-icon nzType="eye-invisible" nzTheme="outline"></i>
|
||||||
|
</ng-template>
|
||||||
|
</span>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template #passwordErrorTpl let-control>
|
||||||
|
<ng-container *ngIf="control.hasError('required')"> 请输入支付密码! </ng-container>
|
||||||
|
<ng-container *ngIf="control.hasError('minlength') || control.hasError('pattern') || control.hasError('confirm')">
|
||||||
|
6位数字,不能为连续数字或者相同数字(如123456、111111)
|
||||||
|
</ng-container>
|
||||||
|
</ng-template>
|
||||||
|
</nz-form-control>
|
||||||
|
</nz-form-item>
|
||||||
|
<nz-form-item>
|
||||||
|
<nz-form-label nzSpan="6" nzRequired nzFor="passWordTo">重复支付密码</nz-form-label>
|
||||||
|
<nz-form-control nzSpan="18" nzDisableAutoTips [nzErrorTip]="confirmPasswordErrorTpl">
|
||||||
|
<nz-input-group [nzSuffix]="confirmPwdIconEye">
|
||||||
|
<input
|
||||||
|
nz-input
|
||||||
|
[type]="isShowConfirmPwd ? 'text' : 'password'"
|
||||||
|
formControlName="passWordTo"
|
||||||
|
minlength="6"
|
||||||
|
maxlength="6"
|
||||||
|
(ngModelChange)="validateConfirmPassword()"
|
||||||
|
placeholder="请输入支付密码"
|
||||||
|
/>
|
||||||
|
</nz-input-group>
|
||||||
|
<ng-template #confirmPwdIconEye>
|
||||||
|
<span (click)="isShowConfirmPwd = !isShowConfirmPwd">
|
||||||
|
<ng-container *ngIf="isShowConfirmPwd; else showConfirmPwdTempalte">
|
||||||
|
<i nz-icon nzType="eye" nzTheme="outline"></i>
|
||||||
|
</ng-container>
|
||||||
|
<ng-template #showConfirmPwdTempalte>
|
||||||
|
<i nz-icon nzType="eye-invisible" nzTheme="outline"></i>
|
||||||
|
</ng-template>
|
||||||
|
</span>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template #confirmPasswordErrorTpl let-control>
|
||||||
|
<ng-container *ngIf="control.hasError('required')"> 请输入确认密码! </ng-container>
|
||||||
|
<ng-container *ngIf="control.hasError('passWordTo')"> 两次输入的密码不一致! </ng-container>
|
||||||
|
</ng-template>
|
||||||
|
</nz-form-control>
|
||||||
|
</nz-form-item>
|
||||||
|
<nz-form-item>
|
||||||
|
<nz-form-control nzSpan="18" nzOffset="6">
|
||||||
|
<button
|
||||||
|
[disabled]="!formGroup3.valid"
|
||||||
|
[nzLoading]="service.http.loading"
|
||||||
|
nz-button
|
||||||
|
nzType="primary"
|
||||||
|
(click)="formSubmit()"
|
||||||
|
style="width: 74px"
|
||||||
|
>
|
||||||
|
确认
|
||||||
|
</button>
|
||||||
|
</nz-form-control>
|
||||||
|
</nz-form-item>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div *ngSwitchCase="2" class="success-card">
|
||||||
|
<div class="card-icon">
|
||||||
|
<i nz-icon nzType="check" nzTheme="outline" style="color: #fff; font-size: 20px"></i>
|
||||||
|
</div>
|
||||||
|
<p class="card-title">密码设置成功</p>
|
||||||
|
<p class="card-descr">请牢记您的新支付密码,3秒后自动跳转至个人中心...</p>
|
||||||
|
<!-- <button
|
||||||
|
nz-button
|
||||||
|
type="button"
|
||||||
|
nzType="primary"
|
||||||
|
nzSize="large"
|
||||||
|
class="mt-lg"
|
||||||
|
style="font-size: 14px"
|
||||||
|
[routerLink]="['/passport/login']"
|
||||||
|
>
|
||||||
|
立即登录
|
||||||
|
</button> -->
|
||||||
|
</div>
|
||||||
|
<div *ngSwitchDefault></div>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nz-card>
|
||||||
|
|
||||||
|
<ng-template #suffixTemplateInfo>
|
||||||
|
<ng-container *ngIf="count < 1; else intervalTemplate">
|
||||||
|
<span class="msg-btn" style="color: #3370ff; cursor: pointer" (click)="getMsgCode()">获取验证码</span>
|
||||||
|
</ng-container>
|
||||||
|
<ng-template #intervalTemplate>
|
||||||
|
<!-- {{ count > 0 ? '请等待' + count + 's' : ('app.register.get-verification-code' | translate) }} -->
|
||||||
|
{{ count > 0 ? '请等待' + count + 's' : ('app.register.get-verification-code') }}
|
||||||
|
</ng-template>
|
||||||
|
</ng-template>
|
||||||
|
<app-captcha #dun [phone]="phone" (done)="captchaDone($event)"></app-captcha>
|
||||||
@ -0,0 +1,93 @@
|
|||||||
|
:host {
|
||||||
|
::ng-deep {
|
||||||
|
page-grid {
|
||||||
|
background-color: #f0f3f7;
|
||||||
|
|
||||||
|
div.container {
|
||||||
|
width: 80%;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 30px 1rem 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-steps-item-process .ant-steps-item-icon {
|
||||||
|
background-color: #3370ff;
|
||||||
|
border-color: #3370ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-icon {
|
||||||
|
background: #3370ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-steps-dot .ant-steps-item-icon,
|
||||||
|
.ant-steps-dot.ant-steps-small .ant-steps-item-icon {
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
margin-left: 55px;
|
||||||
|
line-height: 32px;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 文本
|
||||||
|
.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 连接线
|
||||||
|
.ant-steps-dot .ant-steps-item-tail,
|
||||||
|
.ant-steps-dot.ant-steps-small .ant-steps-item-tail {
|
||||||
|
top: 12px;
|
||||||
|
margin: 0 0 0 90px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-tail::after {
|
||||||
|
background-color: rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-steps-dot .ant-steps-item-process .ant-steps-item-icon,
|
||||||
|
.ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-item-icon {
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-tail::after {
|
||||||
|
background-color: rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-steps-dot .ant-steps-item-tail::after,
|
||||||
|
.ant-steps-dot.ant-steps-small .ant-steps-item-tail::after {
|
||||||
|
width: calc(100% - 62px);
|
||||||
|
height: 1.5px;
|
||||||
|
margin-left: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.success-card {
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.card-icon {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
margin: auto;
|
||||||
|
background-color: #52c41a;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-title {
|
||||||
|
margin: 14px 0 0;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 16px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-descr {
|
||||||
|
margin: 8px 0 0;
|
||||||
|
font-size: 14px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { AccountComponentsEditPayPasswordComponent } from './edit-paypassword.component';
|
||||||
|
|
||||||
|
describe('AccountComponentsEditPayPasswordComponent', () => {
|
||||||
|
let component: AccountComponentsEditPayPasswordComponent;
|
||||||
|
let fixture: ComponentFixture<AccountComponentsEditPayPasswordComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [AccountComponentsEditPayPasswordComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(AccountComponentsEditPayPasswordComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,237 @@
|
|||||||
|
import { AfterViewInit, Component, Inject, OnInit, Optional, ViewChild } from '@angular/core';
|
||||||
|
import { FormBuilder, FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { ReuseTabService } from '@delon/abc/reuse-tab';
|
||||||
|
import { DA_SERVICE_TOKEN, ITokenService } from '@delon/auth';
|
||||||
|
import { SFComponent, SFSchema, SFTextareaWidgetSchema, SFTextWidgetSchema, SFUISchema } from '@delon/form';
|
||||||
|
import { SettingsService } from '@delon/theme';
|
||||||
|
import { CaptchaComponent } from 'src/app/shared/components/captcha';
|
||||||
|
|
||||||
|
import { AccountService } from '../../services/account.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-account-components-edit-password',
|
||||||
|
templateUrl: './edit-paypassword.component.html',
|
||||||
|
styleUrls: ['./edit-paypassword.component.less'],
|
||||||
|
})
|
||||||
|
export class AccountComponentsEditPayPasswordComponent implements OnInit, AfterViewInit {
|
||||||
|
@ViewChild('dun', { static: false })
|
||||||
|
private dun!: CaptchaComponent;
|
||||||
|
|
||||||
|
step: 0 | 1 | 2 = 0;
|
||||||
|
|
||||||
|
step1Schema!: SFSchema;
|
||||||
|
ui!: SFUISchema;
|
||||||
|
@ViewChild('step1sf', { static: false })
|
||||||
|
step1sf!: SFComponent;
|
||||||
|
|
||||||
|
phone: string;
|
||||||
|
|
||||||
|
formGroup3!: FormGroup;
|
||||||
|
confirmPasswordValidator!: ValidatorFn;
|
||||||
|
|
||||||
|
isShowPwd = false;
|
||||||
|
isShowConfirmPwd = false;
|
||||||
|
|
||||||
|
count = 0;
|
||||||
|
interval$: any;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private fb: FormBuilder,
|
||||||
|
public service: AccountService,
|
||||||
|
private route: ActivatedRoute,
|
||||||
|
private settingService: SettingsService,
|
||||||
|
private router: Router,
|
||||||
|
@Inject(ReuseTabService)
|
||||||
|
private reuseTabService: ReuseTabService,
|
||||||
|
@Optional()
|
||||||
|
@Inject(DA_SERVICE_TOKEN)
|
||||||
|
private tokenService: ITokenService,
|
||||||
|
) {
|
||||||
|
this.phone = route.snapshot.queryParams.phone;
|
||||||
|
}
|
||||||
|
|
||||||
|
ngAfterViewInit(): void {
|
||||||
|
this.dun.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
if (this.phone) {
|
||||||
|
this.initStep1SF();
|
||||||
|
} else {
|
||||||
|
this.service.http.post(this.service.$api_get_current_user_info).subscribe((res) => {
|
||||||
|
if (res) {
|
||||||
|
this.phone = res.data?.phone;
|
||||||
|
this.initStep1SF();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
this.confirmPasswordValidator = (control) => {
|
||||||
|
if (!control.value) {
|
||||||
|
return { error: true, required: true };
|
||||||
|
} else if (control.value !== this.formGroup3.controls.passWord.value) {
|
||||||
|
return { passWordTo: true, error: true };
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
};
|
||||||
|
|
||||||
|
this.formGroup3 = this.fb.group({
|
||||||
|
passWord: [
|
||||||
|
null,
|
||||||
|
[
|
||||||
|
Validators.required,
|
||||||
|
Validators.maxLength(6),
|
||||||
|
Validators.minLength(6),
|
||||||
|
Validators.pattern('([\\d]){6,6}'),
|
||||||
|
this.blurTestPw
|
||||||
|
|
||||||
|
],
|
||||||
|
],
|
||||||
|
passWordTo: [null, [this.confirmPasswordValidator, Validators.required, Validators.maxLength(6), Validators.minLength(6)]],
|
||||||
|
voucher: [null, [Validators.required]],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
initStep1SF() {
|
||||||
|
this.step1Schema = {
|
||||||
|
properties: {
|
||||||
|
phone: {
|
||||||
|
title: '手机号',
|
||||||
|
type: 'string',
|
||||||
|
ui: {
|
||||||
|
widget: 'text',
|
||||||
|
defaultText: this.phone.toString(),
|
||||||
|
} as SFTextWidgetSchema,
|
||||||
|
},
|
||||||
|
smsVerifyCode: {
|
||||||
|
type: 'string',
|
||||||
|
title: '验证码',
|
||||||
|
ui: {
|
||||||
|
widget: 'custom',
|
||||||
|
errors: {
|
||||||
|
required: '请输入验证码',
|
||||||
|
},
|
||||||
|
} as SFTextareaWidgetSchema,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
required: ['smsVerifyCode'],
|
||||||
|
};
|
||||||
|
|
||||||
|
this.ui = {
|
||||||
|
'*': { spanLabelFixed: 90, grid: { span: 16, gutter: 4 } },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
nextStep() {
|
||||||
|
if (this.step1sf.valid) {
|
||||||
|
this.service.request(this.service.$api_get_verifyPhone, this.step1sf.value).subscribe((res) => {
|
||||||
|
if (res) {
|
||||||
|
this.formGroup3.patchValue(res, { onlySelf: true });
|
||||||
|
this.step = 1;
|
||||||
|
this.count = 0;
|
||||||
|
clearInterval(this.interval$);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
formSubmit() {
|
||||||
|
for (const i in this.formGroup3.controls) {
|
||||||
|
if (true) {
|
||||||
|
this.formGroup3.controls[i].markAsDirty();
|
||||||
|
this.formGroup3.controls[i].updateValueAndValidity();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.formGroup3.valid) {
|
||||||
|
const param = Object.assign({}, this.formGroup3.value);
|
||||||
|
this.service.http.post(this.service.$api_voucherUpdatePayPassword, param).subscribe((res) => {
|
||||||
|
if (res.success === true) {
|
||||||
|
this.step++;
|
||||||
|
setTimeout(() => {
|
||||||
|
// this.settingService.setUser({});
|
||||||
|
// // 清空路由复用信息
|
||||||
|
// this.reuseTabService.clear();
|
||||||
|
// // 设置用户Token信息
|
||||||
|
// this.tokenService.clear();
|
||||||
|
this.router.navigate(['/account/center']);
|
||||||
|
}, 3000);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getMsgCode() {
|
||||||
|
if (this.phone) {
|
||||||
|
this.getCode(`${this.service.$api_get_msg_code}`);
|
||||||
|
} else {
|
||||||
|
this.service.request(this.service.$api_get_current_user_info).subscribe((res) => {
|
||||||
|
this.phone = res.phone;
|
||||||
|
this.getCode(`${this.service.$api_get_msg_code}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
goBack() {
|
||||||
|
window.history.go(-1);
|
||||||
|
}
|
||||||
|
getCode(url: string, params?: any) {
|
||||||
|
this.service.http.post(url, null, params).subscribe((res) => {
|
||||||
|
// code==503046 弹出网易盾
|
||||||
|
if (res.success && res.data.code === '1') {
|
||||||
|
this.service.msgSrv.success('发送成功');
|
||||||
|
this.codeCountDown();
|
||||||
|
} else if (res.data.code === '503046') {
|
||||||
|
this.dun.popUp();
|
||||||
|
} else {
|
||||||
|
this.service.msgSrv.success(res.sendResult);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/* code倒计时 */
|
||||||
|
codeCountDown() {
|
||||||
|
this.count = 59;
|
||||||
|
this.interval$ = setInterval(() => {
|
||||||
|
this.count -= 1;
|
||||||
|
if (this.count <= 0) {
|
||||||
|
clearInterval(this.interval$);
|
||||||
|
}
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
/* 网易盾验证通过 */
|
||||||
|
captchaDone(validate: any) {
|
||||||
|
this.codeCountDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
validateConfirmPassword(): void {
|
||||||
|
|
||||||
|
setTimeout(() => this.formGroup3.controls.passWordTo.updateValueAndValidity());
|
||||||
|
}
|
||||||
|
// blurTestPw(){
|
||||||
|
// const reg = /[^\d]/g
|
||||||
|
// const val: any = this.formGroup3.controls.passWord.value
|
||||||
|
// if(val.length === 6) {
|
||||||
|
// const pattern = /([\d])\1{2,}/g
|
||||||
|
// const pattern2 = /(?:(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){5}|(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){5})\d/g
|
||||||
|
// if(pattern.test(val) || pattern2.test(val)){
|
||||||
|
// return false
|
||||||
|
// } else {
|
||||||
|
// return true
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// return false
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
blurTestPw = (control: FormControl): { [s: string]: boolean } => {
|
||||||
|
if (!control.value) {
|
||||||
|
return { required: true };
|
||||||
|
} else if (control.value.length === 6) {
|
||||||
|
const pattern = /([\d])\1{2,}/g
|
||||||
|
const pattern2 = /(?:(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){5}|(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){5})\d/g
|
||||||
|
if(pattern.test(control.value) || pattern2.test(control.value)){
|
||||||
|
return { confirm: true, error: true };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -36,6 +36,15 @@ export class AccountService extends BaseService {
|
|||||||
$api_set_voucherUpdatePhone = `/api/mdc/cuc/userBasicInfo/forgetPassword/voucherUpdatePhone`;
|
$api_set_voucherUpdatePhone = `/api/mdc/cuc/userBasicInfo/forgetPassword/voucherUpdatePhone`;
|
||||||
// 凭证修改密码
|
// 凭证修改密码
|
||||||
$api_set_phoneUpdatePassword = `/api/mdc/cuc/userBasicInfo/phoneUpdatePassword`;
|
$api_set_phoneUpdatePassword = `/api/mdc/cuc/userBasicInfo/phoneUpdatePassword`;
|
||||||
|
// 凭证修改设置身份密码
|
||||||
|
$api_voucherUpdatePayPassword = '/api/mdc/cuc/userVerify/forgetPassword/voucherUpdatePassword';
|
||||||
|
// 根据当前登录用户绑定的手机号码获取短信验证码
|
||||||
|
public $api_get_msg_code = `/api/mdc/pbc/smsSend/getSmVerificationCodeByToken`;
|
||||||
|
// 用户下默认企业项目
|
||||||
|
$api_getUserDefaultEnterpriseProject = '/api/mdc/cuc/enterpriseProject/getUserDefaultEnterpriseProject';
|
||||||
|
// 当前登录用户是否设置用户验证密码
|
||||||
|
$api_isUserVerifyPassword = '/api/mdc/cuc/userVerify/isUserVerifyPassword';
|
||||||
|
|
||||||
constructor(public injector: Injector) {
|
constructor(public injector: Injector) {
|
||||||
super(injector);
|
super(injector);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,7 +24,7 @@
|
|||||||
</ng-template>
|
</ng-template>
|
||||||
</nz-drawer>
|
</nz-drawer>
|
||||||
|
|
||||||
<nz-modal [(nzVisible)]="isVisible" [nzTitle]="isEdit?'编辑':'新增'" (nzOnCancel)="handleCancel()" (nzOnOk)="handleOk()">
|
<nz-modal [(nzVisible)]="isVisible" [nzTitle]="!isEdit?'新增':'编辑'" (nzOnCancel)="handleCancel()" (nzOnOk)="handleOk()" [nzOkDisabled]="!sfEdit?.valid">
|
||||||
<ng-container *nzModalContent>
|
<ng-container *nzModalContent>
|
||||||
<sf #sfEdit [formData]="tempData" [schema]="editSchema" [ui]="{ '*': { spanLabelFixed: 90,grid: { span: 24 } }}" [compact]="true"
|
<sf #sfEdit [formData]="tempData" [schema]="editSchema" [ui]="{ '*': { spanLabelFixed: 90,grid: { span: 24 } }}" [compact]="true"
|
||||||
[button]="'none'"></sf>
|
[button]="'none'"></sf>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
import { Component, OnInit, ViewChild } from '@angular/core';
|
import { AfterViewInit, ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';
|
||||||
import { ActivatedRoute } from '@angular/router';
|
import { ActivatedRoute } from '@angular/router';
|
||||||
import { STColumn, STComponent, STRequestOptions } from '@delon/abc/st';
|
import { STColumn, STComponent, STRequestOptions } from '@delon/abc/st';
|
||||||
import { SFComponent, SFSchema } from '@delon/form';
|
import { SFComponent, SFSchema } from '@delon/form';
|
||||||
@ -18,6 +18,7 @@ export class SmsTemplateComponent implements OnInit {
|
|||||||
sf!: SFComponent;
|
sf!: SFComponent;
|
||||||
@ViewChild('sfEdit', { static: false })
|
@ViewChild('sfEdit', { static: false })
|
||||||
sfEdit!: SFComponent;
|
sfEdit!: SFComponent;
|
||||||
|
editSchema!: SFSchema;
|
||||||
visible = false;
|
visible = false;
|
||||||
isVisible = false;
|
isVisible = false;
|
||||||
tempData = {};
|
tempData = {};
|
||||||
@ -43,24 +44,27 @@ export class SmsTemplateComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
editSchema: SFSchema = {
|
initSF() {
|
||||||
|
this.editSchema = {
|
||||||
properties: {
|
properties: {
|
||||||
templateName: {
|
templateName: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
title: '模板名称',
|
title: '模板名称',
|
||||||
ui: { placeholder: '请输入模板名称' }
|
ui: { placeholder: '请输入模板名称', errors: { require: '必填项'} }
|
||||||
},
|
},
|
||||||
templateCode: {
|
templateCode: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
title: '模板编码',
|
title: '模板编码',
|
||||||
readOnly: this.isEdit,
|
readOnly: this.isEdit,
|
||||||
ui: { placeholder: '请输入模板编码', }
|
ui: { placeholder: '请输入模板编码', errors: { require: '必填项'} }
|
||||||
},
|
},
|
||||||
templateContent: {
|
templateContent: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
title: '模板内容',
|
title: '模板内容',
|
||||||
ui: { placeholder: '请输入模板内容' }
|
ui: { placeholder: '请输入模板内容', errors: { require: '必填项'} }
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
required: ['templateName','templateCode','templateContent']
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,7 +95,9 @@ export class SmsTemplateComponent implements OnInit {
|
|||||||
constructor(public service: SystemService, private nzModalService: NzModalService, private route: ActivatedRoute) {
|
constructor(public service: SystemService, private nzModalService: NzModalService, private route: ActivatedRoute) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit(): void { }
|
ngOnInit(): void {
|
||||||
|
this.initSF();
|
||||||
|
}
|
||||||
|
|
||||||
beforeReq = (requestOptions: STRequestOptions) => {
|
beforeReq = (requestOptions: STRequestOptions) => {
|
||||||
if (this.sf) {
|
if (this.sf) {
|
||||||
@ -132,7 +138,7 @@ export class SmsTemplateComponent implements OnInit {
|
|||||||
|
|
||||||
handleOk(): void {
|
handleOk(): void {
|
||||||
const value = this.sfEdit.value;
|
const value = this.sfEdit.value;
|
||||||
const { id, templateCode, templateName, templateContent } = value
|
const { id, templateCode, templateName, templateContent } = value;
|
||||||
const params = {
|
const params = {
|
||||||
id,
|
id,
|
||||||
templateCode,
|
templateCode,
|
||||||
|
|||||||
@ -53,6 +53,6 @@
|
|||||||
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据
|
<strong class="text-red">{{ selectedRows.length }}</strong> 条数据
|
||||||
</div>
|
</div>
|
||||||
<button *ngIf="selectedIndex === '1' || selectedIndex === '4'" nz-button nzType="primary" (click)="upload()">上传</button>
|
<button *ngIf="selectedIndex === '1' || selectedIndex === '4'" nz-button nzType="primary" (click)="upload()">上传</button>
|
||||||
<button *ngIf="selectedIndex === '2' || selectedIndex === '3'" nz-button nzType="primary" (click)="recall()">撤回</button>
|
<button *ngIf="selectedIndex === '3'" nz-button nzType="primary" (click)="recall()">撤回</button>
|
||||||
</div>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
|
|||||||
@ -217,7 +217,7 @@ export class TaxManagementInvoiceReportingComponent implements OnInit {
|
|||||||
width: '150px',
|
width: '150px',
|
||||||
type: 'link',
|
type: 'link',
|
||||||
click: item => {
|
click: item => {
|
||||||
window.open(`/#/ticket/invoice-list/detail/${item.invoiceno}`, '_blank', 'noopener')
|
window.open(`/#/ticket/invoice-list/detail/${item.vatinvHId}?type=${item.invoiceType}`, '_blank', 'noopener')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ title: '发票代码', index: 'invoiceno2', className: 'text-center', width: '150px', },
|
{ title: '发票代码', index: 'invoiceno2', className: 'text-center', width: '150px', },
|
||||||
|
|||||||
11
src/app/shared/components/captcha/captcha.module.ts
Normal file
11
src/app/shared/components/captcha/captcha.module.ts
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
|
||||||
|
import { CaptchaComponent } from './captcha.component';
|
||||||
|
|
||||||
|
const COMPONENTS = [CaptchaComponent];
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
declarations: COMPONENTS,
|
||||||
|
exports: COMPONENTS
|
||||||
|
})
|
||||||
|
export class CaptchaModule {}
|
||||||
@ -1,2 +1,3 @@
|
|||||||
export * from './captcha.component';
|
export * from './captcha.component';
|
||||||
export * from './dun.helper';
|
export * from './dun.helper';
|
||||||
|
export * from './captcha.module';
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import { apiConf } from '@conf/api.conf';
|
|||||||
import { NgxTinymceModule } from 'ngx-tinymce';
|
import { NgxTinymceModule } from 'ngx-tinymce';
|
||||||
import { environment } from '@env/environment';
|
import { environment } from '@env/environment';
|
||||||
|
|
||||||
|
|
||||||
const TinyMce = NgxTinymceModule.forRoot({
|
const TinyMce = NgxTinymceModule.forRoot({
|
||||||
baseURL: 'assets/tinymce/',
|
baseURL: 'assets/tinymce/',
|
||||||
config: {
|
config: {
|
||||||
|
|||||||
@ -37,6 +37,7 @@ import { ImageListModule } from './components/imagelist';
|
|||||||
import { DictSelectComponent } from './components/dict-select';
|
import { DictSelectComponent } from './components/dict-select';
|
||||||
import { PipeModule } from './pipes';
|
import { PipeModule } from './pipes';
|
||||||
import { AccountDetailComponent } from './components/account-detail/account-detail.component';
|
import { AccountDetailComponent } from './components/account-detail/account-detail.component';
|
||||||
|
import { CaptchaModule } from './components/captcha';
|
||||||
import { rebateTableModule } from './components/rebate-table';
|
import { rebateTableModule } from './components/rebate-table';
|
||||||
|
|
||||||
const MODULES = [
|
const MODULES = [
|
||||||
@ -53,6 +54,7 @@ const MODULES = [
|
|||||||
ImageListModule,
|
ImageListModule,
|
||||||
PipeModule,
|
PipeModule,
|
||||||
rebateTableModule,
|
rebateTableModule,
|
||||||
|
CaptchaModule,
|
||||||
...PRO_SHARED_MODULES
|
...PRO_SHARED_MODULES
|
||||||
];
|
];
|
||||||
// #endregion
|
// #endregion
|
||||||
|
|||||||
Reference in New Issue
Block a user