Commit 16ff06a5 by Sweet Zhang

电子告知书

parent eb33475f
<div class="guidePageContainer" (click)="closeGuidePage()"> <div class="guidePageContainer" (click)="closeGuidePage()">
<div class="guideTips"> <div class="guideTips">
<p>请点击右上角菜单</p> <p>请点击右上角菜单</p>
<p>分享给朋友</p> <p>{{tips ? tips :'分享给朋友'}}</p>
</div> </div>
<i class="iconfont icon-yindaojiantou"></i> <i class="iconfont icon-yindaojiantou"></i>
</div> </div>
import { Component, OnInit } from '@angular/core'; import { Component, Input, OnInit } from '@angular/core';
import { LifeCommonService } from "../life-common.service"; import { LifeCommonService } from "../life-common.service";
@Component({ @Component({
...@@ -7,6 +7,7 @@ import { LifeCommonService } from "../life-common.service"; ...@@ -7,6 +7,7 @@ import { LifeCommonService } from "../life-common.service";
styleUrls: ['./guide-page.component.scss'] styleUrls: ['./guide-page.component.scss']
}) })
export class GuidePageComponent implements OnInit { export class GuidePageComponent implements OnInit {
@Input() tips:string;
constructor(private lifeCommonService: LifeCommonService) { constructor(private lifeCommonService: LifeCommonService) {
} }
......
...@@ -25,7 +25,8 @@ export class BusinessQuery { ...@@ -25,7 +25,8 @@ export class BusinessQuery {
public leadsAssignedId?: any, public leadsAssignedId?: any,
public expertType?: any, public expertType?: any,
public expertPractitionerId?: any, public expertPractitionerId?: any,
public expertPractitionerName?: any public expertPractitionerName?: any,
public mdDropOptionName?: any
) { ) {
......
<div class="wrapper"> <div class="wrapper">
<img src="assets/images/pass.png" alt="通过" /> <img src="assets/images/pass.png" alt="通过" />
<div style="font-size: 22px;font-weight: bold;margin: 15px auto;">您已经成功提交,谢谢!</div> <div style="font-size: 22px;font-weight: bold;margin: 15px auto;">{{type=='eNotice_submit' ? '您已提交成功': '您已经成功提交,谢谢!'}}</div>
<div class="before"> <div class="before" *ngIf="type == 'eNotice_submit'">
<p>感谢您的理解与配合</p>
</div>
<div class="footer" *ngIf="type == 'eNotice_submit'">
<div class="eQrocde">
<img src="assets/images/ydOnline.jpg" alt="银盾在线">
</div>
<div>请扫码关注“银盾在线”</div>
</div>
<div class="before" *ngIf="type!='eNotice_submit'">
<p>我们将在3个工作日完成报聘审核。</p> <p>我们将在3个工作日完成报聘审核。</p>
<p>一旦审核完成,将以短信方式通知您成功报聘,</p> <p>一旦审核完成,将以短信方式通知您成功报聘,</p>
<p>请注意查看。</p> <p>请注意查看。</p>
</div> </div>
<div class="after"> <div class="after" *ngIf="type!='eNotice_submit'">
<div style="margin-bottom: 15px;font-size: 16px;">通知您报聘成功后:</div> <div style="margin-bottom: 15px;font-size: 16px;">通知您报聘成功后:</div>
<ul> <ul>
<li>你可以关注“银盾保险经纪”的微信服务号</li> <li>你可以关注“银盾保险经纪”的微信服务号</li>
<li>在服务号里,用手机号登录我们的银盾经纪平台,可查看您经纪合同和公司相关资料。</li> <li>在服务号里,用手机号登录我们的银盾经纪平台,可查看您经纪合同和公司相关资料。</li>
...@@ -15,11 +24,11 @@ ...@@ -15,11 +24,11 @@
<li>运营人员将给您公司和相关介绍</li> <li>运营人员将给您公司和相关介绍</li>
</ul> </ul>
</div> </div>
<!-- <img src="assets/images/login_logo.png" alt="logo" style="width: 50%;position: absolute;left: 0;right: 0;margin: 0 auto;bottom: 20px;"> --> <!-- <img src="assets/images/login_logo.png" alt="logo" style="width: 50%;position: absolute;left: 0;right: 0;margin: 0 auto;bottom: 20px;"> -->
</div> </div>
<ydlife-alert *ngIf="isNeedAlert" [dialogInfo]="dialogInfo" (popInfo)="getPopInfo()"></ydlife-alert> <ydlife-alert *ngIf="isNeedAlert" [dialogInfo]="dialogInfo" (popInfo)="getPopInfo()"></ydlife-alert>
...@@ -12,6 +12,8 @@ export class EmployeeSubmitComponent implements OnInit { ...@@ -12,6 +12,8 @@ export class EmployeeSubmitComponent implements OnInit {
approveStatus:any; approveStatus:any;
isNeedAlert: boolean; isNeedAlert: boolean;
dialogInfo: any; dialogInfo: any;
// 判断是哪个成功页面
type:string;
constructor(private activatedRoute: ActivatedRoute, constructor(private activatedRoute: ActivatedRoute,
public lifeCommonService:LifeCommonService, public lifeCommonService:LifeCommonService,
private myService:MyService) { } private myService:MyService) { }
...@@ -22,8 +24,11 @@ export class EmployeeSubmitComponent implements OnInit { ...@@ -22,8 +24,11 @@ export class EmployeeSubmitComponent implements OnInit {
this.lifeCommonService.setTitle(title); this.lifeCommonService.setTitle(title);
this.hiringBasicInfoId = this.activatedRoute.snapshot.queryParams.hiringBasicInfoId?this.activatedRoute.snapshot.queryParams.hiringBasicInfoId:null; this.hiringBasicInfoId = this.activatedRoute.snapshot.queryParams.hiringBasicInfoId?this.activatedRoute.snapshot.queryParams.hiringBasicInfoId:null;
this.approveStatus = this.activatedRoute.snapshot.queryParams.status?this.activatedRoute.snapshot.queryParams.status:null; this.approveStatus = this.activatedRoute.snapshot.queryParams.status?this.activatedRoute.snapshot.queryParams.status:null;
if(this.approveStatus == null || this.approveStatus == '-1'){ this.type = this.activatedRoute.snapshot.routeConfig.path;
this.hiringSubmit(); if(this.type!='eNotice_submit'){
if(this.approveStatus == null || this.approveStatus == '-1'){
this.hiringSubmit();
}
} }
} }
......
<div class="register_wrapper"> <div class="register_wrapper">
<img class="logo" src="assets/images/register_logo.png" alt="logo" /> <img class="logo" src="assets/images/register_logo.png" alt="logo" />
<div *ngIf="type=='identify'" style="font-size:14px;color:#666;margin-top:32px;letter-spacing:1px;">
<p>感谢您选择银盾保险经纪</p>
<p>耽搁您一分钟完成客户告知书和委托协议的阅读和签署</p>
</div>
<div class="weui-form__control-area"> <div class="weui-form__control-area">
<div class="weui-cells__group weui-cells__group_form"> <div class="weui-cells__group weui-cells__group_form">
<div class="weui-cells weui-cells_form"> <div class="weui-cells weui-cells_form">
<div class="weui-cell" style="padding:10px 0px" *ngIf="type=='identify'">
<div class="weui-cell__bd">
<input autofocus="" class="weui-input" type="tel" maxlength="11" pattern="[0-9]*" placeholder="请输入您的姓名"
name="mobileNo" [(ngModel)]="userInfo.name" [disabled]="type=='identify'" (blur)="inputBlur()">
</div>
</div>
<div class="weui-cell" style="padding:10px 0px"> <div class="weui-cell" style="padding:10px 0px">
<div class="weui-cell__bd"> <div class="weui-cell__bd">
<input autofocus="" class="weui-input" type="tel" maxlength="11" pattern="[0-9]*" placeholder="请输入您的真实手机" <input autofocus="" class="weui-input" type="tel" maxlength="11" pattern="[0-9]*" placeholder="请输入您的真实手机"
name="mobileNo" [(ngModel)]="userInfo.mobileNo" (blur)="inputBlur()"> name="mobileNo" [(ngModel)]="userInfo.mobileNo" (blur)="inputBlur()" [disabled]="type=='identify'">
</div> </div>
</div> </div>
<div class="weui-cell weui-cell_vcode" style="padding:12px 0px"> <div class="weui-cell weui-cell_vcode" style="padding:12px 0px">
......
...@@ -2,22 +2,28 @@ import { Component, OnInit } from "@angular/core"; ...@@ -2,22 +2,28 @@ import { Component, OnInit } from "@angular/core";
import { AuthService } from '../../../auth/auth.service'; import { AuthService } from '../../../auth/auth.service';
import { ActivatedRoute,Router } from "@angular/router"; import { ActivatedRoute,Router } from "@angular/router";
import { LifeCommonService } from "../../../common/life-common.service"; import { LifeCommonService } from "../../../common/life-common.service";
import { MyService } from "../../my.service";
import { THIS_EXPR } from "@angular/compiler/src/output/output_ast";
@Component({ @Component({
selector: "ydlife-register", selector: "ydlife-register",
templateUrl: "./register.component.html", templateUrl: "./register.component.html",
styleUrls: ["./register.component.scss"], styleUrls: ["./register.component.scss"],
}) })
export class RegisterComponent implements OnInit { export class RegisterComponent implements OnInit {
constructor(public authService: AuthService, constructor(public authService: AuthService,
private activatedRoute: ActivatedRoute, private activatedRoute: ActivatedRoute,
private router: Router, private router: Router,
public lifeCommonService: LifeCommonService) {} private myService: MyService,
public lifeCommonService: LifeCommonService) {
}
MOBILE_REGEXP = /^(1)\d{10}$/; MOBILE_REGEXP = /^(1)\d{10}$/;
sendCodeHtml: string = '获取验证码'; sendCodeHtml: string = '获取验证码';
timer: any; timer: any;
remainTimes: number = 60; remainTimes: number = 60;
disabledSendBtn: boolean = false; disabledSendBtn: boolean = false;
userInfo: any = { userInfo: any = {
name:null,
mobileNo: null, mobileNo: null,
verificationCode: null verificationCode: null
}; };
...@@ -28,10 +34,21 @@ export class RegisterComponent implements OnInit { ...@@ -28,10 +34,21 @@ export class RegisterComponent implements OnInit {
toastDialog: boolean; toastDialog: boolean;
toastInfo: any; toastInfo: any;
hiringBasicInfoId:any; hiringBasicInfoId:any;
// 判断是哪个注册页面
type:string;
// 分享电子告知书ID
eNoticeId:string;
ngOnInit() { ngOnInit() {
const title = this.activatedRoute.snapshot.data[0]['title']; const title = this.activatedRoute.snapshot.data[0]['title'];
this.lifeCommonService.setTitle(title); this.lifeCommonService.setTitle(title);
this.hiringBasicInfoId = this.activatedRoute.snapshot.queryParams.hiringBasicInfoId?this.activatedRoute.snapshot.queryParams.hiringBasicInfoId:null; this.hiringBasicInfoId = this.activatedRoute.snapshot.queryParams.hiringBasicInfoId?this.activatedRoute.snapshot.queryParams.hiringBasicInfoId:null;
this.eNoticeId = this.activatedRoute.snapshot.queryParams.eNoticeId?this.activatedRoute.snapshot.queryParams.eNoticeId:null;
sessionStorage.setItem('eNoticeId',this.eNoticeId);
this.type = this.activatedRoute.snapshot.routeConfig.path;
console.log(this.type)
if(this.type=='identify'){
this.queryInformedSheetById();
}
} }
inputBlur() { inputBlur() {
...@@ -56,7 +73,7 @@ export class RegisterComponent implements OnInit { ...@@ -56,7 +73,7 @@ export class RegisterComponent implements OnInit {
this.openPopInfo('手机号不正确'); this.openPopInfo('手机号不正确');
} }
} }
// 倒计时 // 倒计时
countDown() { countDown() {
this.disabledSendBtn = true; this.disabledSendBtn = true;
...@@ -115,7 +132,27 @@ export class RegisterComponent implements OnInit { ...@@ -115,7 +132,27 @@ export class RegisterComponent implements OnInit {
}; };
this.authService.compare(compareCodeObj).subscribe((res)=>{ this.authService.compare(compareCodeObj).subscribe((res)=>{
if(res['success']){ if(res['success']){
this.router.navigate(['/employee_info'],{ queryParams: { hiringBasicInfoId:this.hiringBasicInfoId,mobileNo:this.userInfo.mobileNo} }); if(this.type=='identify'){
this.router.navigate(['/eNoticeSign']);
}else{
this.router.navigate(['/employee_info'],{ queryParams: { hiringBasicInfoId:this.hiringBasicInfoId,mobileNo:this.userInfo.mobileNo} });
}
}else{
this.openPopInfo(res['message']);
}
})
}
// 通过ID获取用户信息
queryInformedSheetById(){
this.myService.queryInformedSheetById({'id':this.eNoticeId}).subscribe(res=>{
console.log(res);
if(res['success']){
const informed = res['data']['informed'];
this.userInfo = {
name:informed.customerName,
mobileNo: informed.customerMobile
};
}else{ }else{
this.openPopInfo(res['message']); this.openPopInfo(res['message']);
} }
......
...@@ -4,20 +4,26 @@ ...@@ -4,20 +4,26 @@
<div> <div>
电子签名<span style="font-size: 10px;font-weight: normal;">(请书写工整,字迹清晰)</span> 电子签名<span style="font-size: 10px;font-weight: normal;">(请书写工整,字迹清晰)</span>
</div> </div>
<span class="page_mark"> 8/8</span> <span class="page_mark" *ngIf="type!='eNotice'"> 8/8</span>
</div> </div>
<div class="signatureContent"> <div class="signatureContent">
<signature-pad *ngIf="!isSignatureShow" #signaturePad [options]="signaturePadOptions" (onBeginEvent)="drawStart()" (onEndEvent)="drawComplete()"> <signature-pad *ngIf="!isSignatureShow" #signaturePad [options]="signaturePadOptions" (onBeginEvent)="drawStart()" (onEndEvent)="drawComplete()">
</signature-pad> </signature-pad>
<img [src]="imgStr" alt="签名" *ngIf="isSignatureShow"> <img [src]="imgStr" alt="签名" *ngIf="isSignatureShow">
</div> </div>
<div *ngIf="type == 'eNotice'" style="margin-left: 13px;color: #666;">
<p>签署日期:{{todayDate | date:'yyyy-MM-dd'}}</p>
</div>
<div class="signature_action" *ngIf="approveStatus == null || approveStatus == '-1'"> <div class="signature_action" *ngIf="approveStatus == null || approveStatus == '-1'">
<img src="assets/images/clear.png" alt="清除" (click)="clearSignature();"/> <img src="assets/images/clear.png" alt="清除" (click)="clearSignature();"/>
<img src="assets/images/revoke.png" *ngIf="!isSignatureShow" alt="上一步" (click)="revokeSignature()"/> <img src="assets/images/revoke.png" *ngIf="!isSignatureShow" alt="上一步" (click)="revokeSignature()"/>
</div> </div>
<footer class="fixed" (click)="next()" *ngIf="approveStatus==null || approveStatus=='-1'"> <footer class="fixed" (click)="next()" *ngIf="(approveStatus==null || approveStatus=='-1') && type != 'eNotice'">
我自愿签订经纪人合同书 我自愿签订经纪人合同书
</footer> </footer>
<footer class="fixed" (click)="saveDigitalSignatures()" *ngIf="type == 'eNotice'" style="margin:45px;width:auto;border-radius:60px">
确认提交
</footer>
<div id="page" *ngIf="approveStatus!=null && approveStatus !='-1'"> <div id="page" *ngIf="approveStatus!=null && approveStatus !='-1'">
<div (click)="goBack()">上一页</div> <div (click)="goBack()">上一页</div>
<div (click)="viewNext()">下一页</div> <div (click)="viewNext()">下一页</div>
...@@ -26,4 +32,4 @@ ...@@ -26,4 +32,4 @@
返回审批结果 返回审批结果
</footer> </footer>
</div> </div>
<ydlife-alert *ngIf="isNeedAlert" [dialogInfo]="dialogInfo" (popInfo)="getPopInfo()"></ydlife-alert> <ydlife-alert *ngIf="isNeedAlert" [dialogInfo]="dialogInfo" (popInfo)="getPopInfo()"></ydlife-alert>
\ No newline at end of file
...@@ -20,16 +20,20 @@ export class SignatureComponent implements OnInit { ...@@ -20,16 +20,20 @@ export class SignatureComponent implements OnInit {
isSignatureShow:boolean; isSignatureShow:boolean;
viewApprovalInfo:any; viewApprovalInfo:any;
approveStatus:any; approveStatus:any;
// 获取页面适用类型
type:string;
todayDate:Date = new Date();
@ViewChild(SignaturePad) signaturePad : SignaturePad; @ViewChild(SignaturePad) signaturePad : SignaturePad;
constructor(private activatedRoute: ActivatedRoute, constructor(private activatedRoute: ActivatedRoute,
private router: Router,public lifeCommonService:LifeCommonService, private router: Router,public lifeCommonService:LifeCommonService,
public myService:MyService) { public myService:MyService) {
} }
ngOnInit() { ngOnInit() {
this.type = this.activatedRoute.snapshot.queryParams.type ? this.activatedRoute.snapshot.queryParams.type :null;
this.signaturePadOptions = { this.signaturePadOptions = {
minWidth: 0.5, minWidth: 0.5,
maxWidth: 3, maxWidth: 3,
...@@ -42,9 +46,12 @@ export class SignatureComponent implements OnInit { ...@@ -42,9 +46,12 @@ export class SignatureComponent implements OnInit {
} }
const title = this.activatedRoute.snapshot.data[0]['title']; const title = this.activatedRoute.snapshot.data[0]['title'];
this.lifeCommonService.setTitle(title); this.lifeCommonService.setTitle(title);
this.hiringBasicInfoId = this.activatedRoute.snapshot.queryParams.hiringBasicInfoId?this.activatedRoute.snapshot.queryParams.hiringBasicInfoId:null; if(this.type!='eNotice'){
this.queryWholeInfo(this.hiringBasicInfoId) this.hiringBasicInfoId = this.activatedRoute.snapshot.queryParams.hiringBasicInfoId?this.activatedRoute.snapshot.queryParams.hiringBasicInfoId:null;
this.viewApprovalInfo = sessionStorage.getItem('viewApprovalInfo'); this.queryWholeInfo(this.hiringBasicInfoId)
this.viewApprovalInfo = sessionStorage.getItem('viewApprovalInfo');
}
} }
next(){ next(){
...@@ -68,18 +75,30 @@ export class SignatureComponent implements OnInit { ...@@ -68,18 +75,30 @@ export class SignatureComponent implements OnInit {
this.openPopInfo('您还没有签名!'); this.openPopInfo('您还没有签名!');
return; return;
} }
const param = { if(this.type=='eNotice'){
hiringBasicInfoId:this.hiringBasicInfoId, this.myService.signInformedSheet({'id':sessionStorage.getItem('eNoticeId'),imgStr:this.imgStr}).subscribe(res=>{
imgStr:this.imgStr if(res['success']){
} // 确认提交
this.myService.saveDigitalSignatures(param).subscribe((res)=>{ this.router.navigate(['/eNotice_submit']);
if(res['success']){ }else{
this.queryWholeInfo(this.hiringBasicInfoId); this.openPopInfo(res['message']);
this.router.navigate(['/employee_submit'],{queryParams:{ hiringBasicInfoId:this.hiringBasicInfoId,status:this.approveStatus}}); }
}else{ })
this.openPopInfo(res['message']); }else{
const param = {
hiringBasicInfoId:this.hiringBasicInfoId,
imgStr:this.imgStr
} }
}) this.myService.saveDigitalSignatures(param).subscribe((res)=>{
if(res['success']){
this.queryWholeInfo(this.hiringBasicInfoId);
this.router.navigate(['/employee_submit'],{queryParams:{ hiringBasicInfoId:this.hiringBasicInfoId,status:this.approveStatus}});
}else{
this.openPopInfo(res['message']);
}
})
}
} }
queryWholeInfo(hiringBasicInfoId){ queryWholeInfo(hiringBasicInfoId){
......
<ydlife-e-notice></ydlife-e-notice>
<div class="">
<div class="signBtn" (click)="agree()">同意,并签署</div>
</div>
.signBtn{
margin: 30px 45px;
height: 48px;
line-height: 48px;
text-align: center;
border-radius: 46px;
background: #C81B1E;
color: #fff;
font-size: 18px;
font-weight: bold;
}
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ENoticeSignComponent } from './e-notice-sign.component';
describe('ENoticeSignComponent', () => {
let component: ENoticeSignComponent;
let fixture: ComponentFixture<ENoticeSignComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ENoticeSignComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ENoticeSignComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
@Component({
selector: 'ydlife-e-notice-sign',
templateUrl: './e-notice-sign.component.html',
styleUrls: ['./e-notice-sign.component.scss']
})
export class ENoticeSignComponent implements OnInit {
constructor(private router:Router) { }
ngOnInit() {
}
agree(){
this.router.navigate(['/eNoticeSignature'],{ queryParams: { type:'eNotice'} })
}
}
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ENoticeComponent } from './e-notice.component';
describe('ENoticeComponent', () => {
let component: ENoticeComponent;
let fixture: ComponentFixture<ENoticeComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ENoticeComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ENoticeComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'ydlife-e-notice',
templateUrl: './e-notice.component.html',
styleUrls: ['./e-notice.component.scss']
})
export class ENoticeComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}
...@@ -169,19 +169,29 @@ ...@@ -169,19 +169,29 @@
</div> </div>
</div> </div>
</div> </div>
<!-- 咨询问卷 -->
<div class="content" *ngIf="selectedId===2"> <div class="content" *ngIf="selectedId===2">
<div style="text-align: center;font-size: 16px;margin-top: 10px;" <div style="text-align: center;font-size: 16px;margin-top: 10px;"
*ngIf="opportunitySurveyAnswersList?.length==0 || !opportunitySurveyAnswersList"> *ngIf="opportunitySurveyAnswersList?.length==0 || !opportunitySurveyAnswersList">
暂无问卷信息</div> 暂无问卷信息</div>
<div *ngIf="!(opportunitySurveyAnswersList?.length==0 || !opportunitySurveyAnswersList)">
<div class="viewReportBtn" *ngIf="isCompletedQuestionnaire == 3" (click)="viewReport()">查看报告</div>
<div class="viewReportBtn" *ngIf="isCompletedQuestionnaire != 3">暂无报告</div>
</div>
<div class="answerContent" *ngFor="let surveyItem of opportunitySurveyAnswersList"> <div class="answerContent" *ngFor="let surveyItem of opportunitySurveyAnswersList">
<div class="questionTitle">{{surveyItem.questionName}}</div> <div class="questionTitle">{{surveyItem.questionName}}</div>
<div class="questionContent">{{surveyItem.optionName}}</div> <div class="questionContent">{{surveyItem.optionName}}</div>
</div> </div>
</div> </div>
<div class="content" *ngIf="selectedId===4"> <!-- 客户告知书 -->
<div style="text-align: center;font-size: 16px;margin-top: 10px;" *ngIf="isCompletedQuestionnaire!=3">暂无方案</div> <div class="content" *ngIf="selectedId===5">
<ydlife-e-notice></ydlife-e-notice>
<div class="send">
<div (click)="eNoticeState=true;">发送</div>
</div>
</div> </div>
<!-- 商机跟进 -->
<div class="content" *ngIf="selectedId===3"> <div class="content" *ngIf="selectedId===3">
<ul class="recordLists"> <ul class="recordLists">
<li *ngFor="let opportunityRecordItem of opportunityRecordInfos;index as idx"> <li *ngFor="let opportunityRecordItem of opportunityRecordInfos;index as idx">
...@@ -248,6 +258,39 @@ ...@@ -248,6 +258,39 @@
<li (click)="closeToast()">取消</li> <li (click)="closeToast()">取消</li>
</ul> </ul>
</div> </div>
<!-- 客户告知书弹窗 -->
<div class="eNoticeDialog">
<div class="eNoticeContent">
<Modal [(ngModel)]="this.eNoticeState" [transparent]="true" [closable]="true" (onClose)="onClose()">
<div [ngStyle]="{ height: 300, overflow: 'scroll' }">
<div class="am-list" style="margin:0;">
<div class="am-list-body">
<InputItem [clear]="true"
[value]="editBusiness.name"
[placeholder]="'用于客户登录验证'" (onChange)="editBusiness.name = $event"
>姓名</InputItem>
<InputItem [type]="'phone'"
[placeholder]="'用于客户登录验证'"
[value]="editBusiness.mobileNo"
(onChange)="editBusiness.mobileNo = $event"
>手机号码</InputItem>
<div class="am-list-line">该手机号用于客户登录验证</div>
<div class="am-list-item am-list-item-middle">
<div class="am-list-line">
<div class="am-list-content"
style="width:100%;color:#fff;text-align:center;background-color: #2179AD;border-radius: 20px;margin:18px auto"
(click)="sendENotice()"
>发送</div>
</div>
</div>
</div>
</div>
</div>
</Modal>
</div>
</div>
</div> </div>
<ydlife-toast *ngIf="toastDialog" [toastInfo]="toastInfo"></ydlife-toast> <ydlife-toast *ngIf="toastDialog" [toastInfo]="toastInfo"></ydlife-toast>
<ydlife-alert *ngIf="isNeedAlert" [dialogInfo]="dialogInfo" (popInfo)="getPopInfo()"></ydlife-alert> <ydlife-alert *ngIf="isNeedAlert" [dialogInfo]="dialogInfo" (popInfo)="getPopInfo()"></ydlife-alert>
\ No newline at end of file <ydlife-guide-page *ngIf="shareENotice" [tips]="'分享给客户'"></ydlife-guide-page>
...@@ -174,6 +174,29 @@ ...@@ -174,6 +174,29 @@
line-height: 30px; line-height: 30px;
} }
} }
.viewReportBtn{
position: fixed;
bottom: 0;
left: 0;
width: 100%;
height: 44px;
text-align: center;
background: #2179AD;
color: #fff;
line-height: 44px;
}
.send{
div{
margin: 30px 40px 0;
height: 40px;
line-height: 40px;
text-align: center;
color: #fff;
font-size: 18px;
background: #2179AD;
border-radius: 20px;
}
}
} }
.editContainer { .editContainer {
......
...@@ -3,6 +3,7 @@ import { MyService } from '../my.service'; ...@@ -3,6 +3,7 @@ import { MyService } from '../my.service';
import { ActivatedRoute, Router } from "@angular/router"; import { ActivatedRoute, Router } from "@angular/router";
import { BusinessQuery } from '../../domain/businessQuery'; import { BusinessQuery } from '../../domain/businessQuery';
import { LifeCommonService } from '../../common/life-common.service'; import { LifeCommonService } from '../../common/life-common.service';
import {environment} from '../../../environments/environment';
@Component({ @Component({
selector: 'ydlife-my-business-detail', selector: 'ydlife-my-business-detail',
templateUrl: './my-business-detail.component.html', templateUrl: './my-business-detail.component.html',
...@@ -16,7 +17,7 @@ export class MyBusinessDetailComponent implements OnInit { ...@@ -16,7 +17,7 @@ export class MyBusinessDetailComponent implements OnInit {
surveyAnswersList: Array<any>; surveyAnswersList: Array<any>;
readonlyFlag: boolean = true; readonlyFlag: boolean = true;
orderId: number; orderId: number;
opportunityId: string; opportunityId: number;
opportunitySurveyAnswersList: Array<any>; opportunitySurveyAnswersList: Array<any>;
tagList: Array<any>; tagList: Array<any>;
editBusiness: BusinessQuery = new BusinessQuery(); editBusiness: BusinessQuery = new BusinessQuery();
...@@ -63,24 +64,35 @@ export class MyBusinessDetailComponent implements OnInit { ...@@ -63,24 +64,35 @@ export class MyBusinessDetailComponent implements OnInit {
isNeedAlert: boolean; isNeedAlert: boolean;
dialogInfo: any; dialogInfo: any;
practitionerId:any; practitionerId:any;
// 电子告知书弹窗显示
eNoticeState:boolean = false;
// 分享
shareENotice:boolean = false;
deviceType:number;
// 获取经纪人信息
lifeCustomerInfo:any;
constructor(private activateRoute: ActivatedRoute, private myService: MyService, constructor(private activateRoute: ActivatedRoute, private myService: MyService,
public lifeCommonService: LifeCommonService, private router: Router, ) { public lifeCommonService: LifeCommonService, private router: Router, ) {
this.titleList = [ this.titleList = [
{ id: 1, name: '基本信息' }, { id: 1, name: '基本信息' },
{ id: 3, name: '商机跟进' }, { id: 3, name: '商机跟进' },
{ id: 2, name: '咨询问卷' }, { id: 2, name: '咨询问卷' },
{ id: 4, name: '咨询报告' }, // { id: 4, name: '咨询报告' },
{ id: 5, name: '客户告知书' }
] ]
} }
ngOnInit() { ngOnInit() {
// 获取设备
this.deviceType = this.lifeCommonService.checkDeviceType();
this.orderId = this.activateRoute.snapshot.queryParams['orderId']; this.orderId = this.activateRoute.snapshot.queryParams['orderId'];
//商机对应的客户id //商机对应的客户id
this.opportunityId = this.activateRoute.snapshot.paramMap.get('id'); this.opportunityId = +this.activateRoute.snapshot.paramMap.get('id');
//商机id //商机id
this.leadsAssignedId = this.activateRoute.snapshot.queryParams['leadsAssignedId']; this.leadsAssignedId = this.activateRoute.snapshot.queryParams['leadsAssignedId'];
this.opportunityRecordId = null; this.opportunityRecordId = null;
this.practitionerId = JSON.parse(localStorage.getItem('lifeCustomerInfo'))['practitionerId'] this.lifeCustomerInfo = JSON.parse(localStorage.getItem('lifeCustomerInfo'));
this.practitionerId = this.lifeCustomerInfo['practitionerId'];
this.tagQuery(); this.tagQuery();
//商机状态 //商机状态
this.dropOptionsQuery('bizchance_promotion_action'); this.dropOptionsQuery('bizchance_promotion_action');
...@@ -114,7 +126,7 @@ export class MyBusinessDetailComponent implements OnInit { ...@@ -114,7 +126,7 @@ export class MyBusinessDetailComponent implements OnInit {
this.selectTab(1); this.selectTab(1);
} else { } else {
this.clickFlag = true; this.clickFlag = true;
this.selectTab(1); this.selectTab(5);
//查询商机 //查询商机
setTimeout(() => { setTimeout(() => {
this.ownOpportunityDetailQuery(); this.ownOpportunityDetailQuery();
...@@ -134,15 +146,14 @@ export class MyBusinessDetailComponent implements OnInit { ...@@ -134,15 +146,14 @@ export class MyBusinessDetailComponent implements OnInit {
selectTab(id) { selectTab(id) {
if (this.clickFlag == true) { if (this.clickFlag == true) {
this.selectedId = id; this.selectedId = id;
if (id === 4) {
if (this.isCompletedQuestionnaire == 3) {
window.location.href = `https://${window.location.host}/customizedPlanList/3?orderId=${this.orderId}&customerId=${this.opportunityId}`
}
}
} else { } else {
this.selectedId = 1; this.selectedId = 1;
} }
} }
// 查看报告
viewReport(){
window.location.href = `https://${window.location.host}/customizedPlanList/3?orderId=${this.orderId}&customerId=${this.opportunityId}`
}
ownOpportunityDetailQuery() { ownOpportunityDetailQuery() {
const detailParam = { const detailParam = {
...@@ -588,13 +599,58 @@ export class MyBusinessDetailComponent implements OnInit { ...@@ -588,13 +599,58 @@ export class MyBusinessDetailComponent implements OnInit {
}; };
} }
}) })
} }
// 关闭弹窗 // 关闭弹窗
getPopInfo() { getPopInfo() {
this.isNeedAlert = false; this.isNeedAlert = false;
} }
// 关闭客户告知书
onClose() {
this.eNoticeState = false;
}
// 发送电子客户告知书,opportunityIdID = CustomerId
sendENotice(){
const param = {
 practitionerId:this.lifeCustomerInfo['practitionerId'],
     leadsAssignedId:this.leadsAssignedId,
     customerName: this.editBusiness.name,
     customerId:this.editBusiness.opportunityId,
     customerMobile: this.editBusiness.mobileNo.replace(/\s/g, ''),
loginId:this.lifeCustomerInfo['customerId']
}
this.myService.saveInformedSheet(param).subscribe(res=>{
if(res['success']){
if(this.deviceType == 3){
this.shareENotice = true;
this.eNoticeState = false;
const imgUrl = this.lifeCustomerInfo.practitionerBasicInfo.headImagePath ? this.lifeCustomerInfo.practitionerBasicInfo.headImagePath : `${environment.ORIGINNAME}/ydLife/assets/images/icons/meng.png`;
this.lifeCommonService.shareStatusPublish(1);
this.lifeCommonService.wxShare(
'保险服务委托协议和客户告知书签署',
`您的保险服务委托协议和客户告知书已经准备好,请查收并签署,感谢您的信任和支持。`,
`https://${window.location.host}/ydLife/identify?eNoticeId=${res['data']['id']}`,
imgUrl);
}else{
alert('请在微信公众号中发送邀请');
}
}else{
this.toastDialog = true;
this.toastInfo = {
status: 1,
msg: res['message'],
timeout: 3000,
align: 'center'
};
return false;
}
})
}
} }
...@@ -66,6 +66,7 @@ import { MyQuestionComponent } from './my-question/my-question.component'; ...@@ -66,6 +66,7 @@ import { MyQuestionComponent } from './my-question/my-question.component';
import { AskComponent } from './ask/ask.component'; import { AskComponent } from './ask/ask.component';
import { MenuItemComponent } from './menu-item/menu-item.component'; import { MenuItemComponent } from './menu-item/menu-item.component';
import { MemberListComponent } from './member-list/member-list.component'; import { MemberListComponent } from './member-list/member-list.component';
import { ENoticeSignComponent } from './e-notice-sign/e-notice-sign.component';
const myRoutes: Routes = [ const myRoutes: Routes = [
{ path: '', component: MyCenterHomeComponent, canActivate: [AuthGuard], data: [{ title: '银盾保险经纪 - 工作台' }] }, { path: '', component: MyCenterHomeComponent, canActivate: [AuthGuard], data: [{ title: '银盾保险经纪 - 工作台' }] },
...@@ -102,6 +103,8 @@ const myRoutes: Routes = [ ...@@ -102,6 +103,8 @@ const myRoutes: Routes = [
{ path: 'inviter' ,component:InvitationComponent,canActivate:[AuthGuard],data:[{type:'inviter',title: '邀请函'}]}, { path: 'inviter' ,component:InvitationComponent,canActivate:[AuthGuard],data:[{type:'inviter',title: '邀请函'}]},
{ path: 'invitees' ,component:InvitationComponent,data:[{type:'invitees',title: '邀请函'}]}, { path: 'invitees' ,component:InvitationComponent,data:[{type:'invitees',title: '邀请函'}]},
{ path: 'register' ,component:RegisterComponent,data: [{ title: '注册信息' }]}, { path: 'register' ,component:RegisterComponent,data: [{ title: '注册信息' }]},
{ path: 'identify' ,component:RegisterComponent,data: [{ title: '保险经纪服务委托书协议和客户告知书' }]},
{ path: 'eNoticeSign' ,component:ENoticeSignComponent,data: [{ title: '保险经纪服务委托书协议和客户告知书' }]},
{ path: 'employee_info',component:EmployeeInfoComponent,data: [{ title: '银盾经纪人报聘' }]}, { path: 'employee_info',component:EmployeeInfoComponent,data: [{ title: '银盾经纪人报聘' }]},
{ path: 'employee_basic_info',component:EmployeeBasicInfoComponent,data: [{ title: '银盾经纪人报聘' }] }, { path: 'employee_basic_info',component:EmployeeBasicInfoComponent,data: [{ title: '银盾经纪人报聘' }] },
{ path: 'work_experience',component:WorkExperienceComponent,data: [{ title: '银盾经纪人报聘' }] }, { path: 'work_experience',component:WorkExperienceComponent,data: [{ title: '银盾经纪人报聘' }] },
...@@ -113,7 +116,9 @@ const myRoutes: Routes = [ ...@@ -113,7 +116,9 @@ const myRoutes: Routes = [
{ path: 'personal_statement',component:PersonalStatementComponent,data: [{ type:'personal_statement',title: '银盾经纪人报聘' }] }, { path: 'personal_statement',component:PersonalStatementComponent,data: [{ type:'personal_statement',title: '银盾经纪人报聘' }] },
{ path: 'contract',component:PersonalStatementComponent,data: [{ type:'contract',title: '银盾经纪人报聘' }] }, { path: 'contract',component:PersonalStatementComponent,data: [{ type:'contract',title: '银盾经纪人报聘' }] },
{ path: 'signature',component:SignatureComponent,data: [{ title: '银盾经纪人报聘' }]}, { path: 'signature',component:SignatureComponent,data: [{ title: '银盾经纪人报聘' }]},
{ path: 'eNoticeSignature',component:SignatureComponent,data: [{ title: '保险经纪服务委托书协议和客户告知书' }]},
{ path: 'employee_submit',component:EmployeeSubmitComponent,data: [{ title: '已提交' }]}, { path: 'employee_submit',component:EmployeeSubmitComponent,data: [{ title: '已提交' }]},
{ path: 'eNotice_submit',component:EmployeeSubmitComponent,data: [{ title: '已提交' }]},
{ path: 'member_detail/:practitionerId',component:MemberDetailComponent, canActivate: [AuthGuard]}, { path: 'member_detail/:practitionerId',component:MemberDetailComponent, canActivate: [AuthGuard]},
{ path: 'approval_list',component:ApprovalListComponent, data: [{ title: '审批列表' }],canActivate: [AuthGuard]}, { path: 'approval_list',component:ApprovalListComponent, data: [{ title: '审批列表' }],canActivate: [AuthGuard]},
{ path: 'approval_comments',component:ApprovalCommentsComponent,canActivate:[AuthGuard]}, { path: 'approval_comments',component:ApprovalCommentsComponent,canActivate:[AuthGuard]},
......
...@@ -79,9 +79,11 @@ import { MyQuestionComponent } from './my-question/my-question.component'; ...@@ -79,9 +79,11 @@ import { MyQuestionComponent } from './my-question/my-question.component';
import { AskComponent } from './ask/ask.component'; import { AskComponent } from './ask/ask.component';
import { MenuItemComponent } from './menu-item/menu-item.component'; import { MenuItemComponent } from './menu-item/menu-item.component';
import { MemberListComponent } from './member-list/member-list.component'; import { MemberListComponent } from './member-list/member-list.component';
import { ENoticeComponent } from './e-notice/e-notice.component';
import { ENoticeSignComponent } from './e-notice-sign/e-notice-sign.component';
@NgModule({ @NgModule({
declarations: [MyCenterHomeComponent, MkMaterialComponent, MkMaterialDetailComponent, FileUploadComponent, ImportantAnnouncementComponent, SalesDetailComponent, AnnouncementDetailComponent, MyBusinessComponent, MyBusinessDetailComponent, PickerComponent, MyToastComponent, SalesRankComponent, TeamRankComponent, RecruitingComponent, RecruitingDetailComponent, ThanksComponent, MySettingComponent, MySettingDetailComponent, MyNewsComponent, MyTargetComponent, TeamPanelComponent, SwitchNumberPipe, TeamSalesScoreComponent, ScoreDetailsComponent, BusinessCardComponent, OrderDetailComponent, SalaryComponent, TodoListComponent, AddTaskComponent, MedicalServiceComponent, InvitationComponent, RegisterComponent, EmployeeInfoComponent, EmployeeBasicInfoComponent, WorkExperienceComponent, PersonalPhotosComponent, EmployeeIdCardComponent, EmployeeEducationComponent, PersonalStatementComponent, SignatureComponent, EmployeeSubmitComponent, BankCardComponent, MemberDetailComponent, ApprovalListComponent, ApprovalCommentsComponent, ApprovalResultListComponent, MyApplicationComponent, SuggestionComponent, EmployeeSalaryComponent, HistoricalRankComponent, TeamAreaPanelComponent, ArticleComponent, ArticleDetailComponent, ArticleReadComponent,SalaryDetailComponent,SalaryFirstYearComponent,DetailModalComponent, ProductComponent, ProductDataComponent, CommissionComponent, FileListComponent,MyCustomerComponent, CustomerRelationComponent, MyCustomerPolicyComponent, UnderwritingKnowledgeComponent, MyQuestionComponent, AskComponent, MenuItemComponent, MemberListComponent], declarations: [MyCenterHomeComponent, MkMaterialComponent, MkMaterialDetailComponent, FileUploadComponent, ImportantAnnouncementComponent, SalesDetailComponent, AnnouncementDetailComponent, MyBusinessComponent, MyBusinessDetailComponent, PickerComponent, MyToastComponent, SalesRankComponent, TeamRankComponent, RecruitingComponent, RecruitingDetailComponent, ThanksComponent, MySettingComponent, MySettingDetailComponent, MyNewsComponent, MyTargetComponent, TeamPanelComponent, SwitchNumberPipe, TeamSalesScoreComponent, ScoreDetailsComponent, BusinessCardComponent, OrderDetailComponent, SalaryComponent, TodoListComponent, AddTaskComponent, MedicalServiceComponent, InvitationComponent, RegisterComponent, EmployeeInfoComponent, EmployeeBasicInfoComponent, WorkExperienceComponent, PersonalPhotosComponent, EmployeeIdCardComponent, EmployeeEducationComponent, PersonalStatementComponent, SignatureComponent, EmployeeSubmitComponent, BankCardComponent, MemberDetailComponent, ApprovalListComponent, ApprovalCommentsComponent, ApprovalResultListComponent, MyApplicationComponent, SuggestionComponent, EmployeeSalaryComponent, HistoricalRankComponent, TeamAreaPanelComponent, ArticleComponent, ArticleDetailComponent, ArticleReadComponent,SalaryDetailComponent,SalaryFirstYearComponent,DetailModalComponent, ProductComponent, ProductDataComponent, CommissionComponent, FileListComponent,MyCustomerComponent, CustomerRelationComponent, MyCustomerPolicyComponent, UnderwritingKnowledgeComponent, MyQuestionComponent, AskComponent, MenuItemComponent, MemberListComponent, ENoticeComponent, ENoticeSignComponent],
imports: [ imports: [
CommonModule, CommonModule,
LifeCommonModule, LifeCommonModule,
......
...@@ -729,4 +729,21 @@ export class MyService { ...@@ -729,4 +729,21 @@ export class MyService {
return this.http.post(url, JSON.stringify(objParam)); return this.http.post(url, JSON.stringify(objParam));
} }
// 保存客户告知书分享信息
saveInformedSheet(objParam) {
const url = this.ydapi + "/practitioner/saveInformedSheet";
return this.http.post(url, JSON.stringify(objParam));
}
// 获取客户告知书分享信息
queryInformedSheetById(objParam) {
const url = this.ydapi + "/practitioner/queryInformedSheetById";
return this.http.post(url, JSON.stringify(objParam));
}
// 保存客户签名
signInformedSheet(objParam) {
const url = this.ydapi + "/practitioner/signInformedSheet";
return this.http.post(url, JSON.stringify(objParam));
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment