Commit f8897870 by sunchao

电子签名&战队成员信息

parent b22fcad2
......@@ -237,6 +237,9 @@ export class EmployeeBasicInfoComponent implements OnInit {
this.myService.queryWholeInfo({hiringBasicInfoId:hiringBasicInfoId}).subscribe((res)=>{
if(res['data']['hiringBasicInfo']){
this.editEmployBasicInfo = res['data']['hiringBasicInfo'];
if(!res['data']['hiringBasicInfo']['mobileNo']){
this.editEmployBasicInfo.mobileNo = this.activatedRoute.snapshot.queryParams.mobileNo?this.activatedRoute.snapshot.queryParams.mobileNo:null;
}
this.showPractitionerBirthdate= new Date(res['data']['hiringBasicInfo']['practitionerBirthdate']);
this.editEmployBasicInfo.practitionerBirthdate = this.currentDateFormat(this.showPractitionerBirthdate, 'yyyy-mm-dd')
if(this.editEmployBasicInfo.cityId || this.editEmployBasicInfo.cityName || this.editEmployBasicInfo.provinceId || this.editEmployBasicInfo.provinceName){
......
......@@ -26,7 +26,7 @@
}
}
.content{
padding: 10px 5px;
padding: 10px 5px 60px 5px;
position: relative;
.contentDetail {
.contentItem {
......
......@@ -15,7 +15,7 @@
<img class="camera" src="assets/images/camera.png" alt="身份证" />
<div class="choseBtn" (click)="selectPic('front')">点击添加身份证正面</div>
</div>
<img src="{{frontVxUrl}}" alt="身份证正面" *ngIf="frontVxUrl"
<img class="showImg" src="{{frontVxUrl}}" alt="身份证正面" *ngIf="frontVxUrl"
(click)="selectPic('front')">
<div class="tips">
<p>(正确示例:身份证正面,字体清晰)</p>
......@@ -28,7 +28,7 @@
<img class="camera" src="assets/images/camera.png" alt="身份证" />
<div class="choseBtn" (click)="selectPic('back')">点击添加身份证正面</div>
</div>
<img src="{{backVxUrl}}" alt="身份证反面" *ngIf="backVxUrl"
<img class="showImg" src="{{backVxUrl}}" alt="身份证反面" *ngIf="backVxUrl"
(click)="selectPic('back')">
<div class="tips">
<p>(正确示例:身份证正面,字体清晰)</p>
......
......@@ -31,13 +31,14 @@
}
}
.content{
padding: 20px 0;
padding: 15px 0 65px 0;
position: relative;
.content_wrapper{
display: flex;
justify-content: center;
flex-wrap: wrap;
margin-top: 10px;
overflow: hidden;
.tips{
margin-top: 10px;
color: #999;
......@@ -66,6 +67,10 @@
bottom: 15%;
}
}
.showImg{
max-width: 429px;
max-height: 276px;
}
// .photo.front{
// background-image: url('../../../../assets/images/front.png');
// }
......
......@@ -53,7 +53,7 @@ export class EmployeeIdCardComponent implements OnInit {
frontVxUrl:this.frontVxUrl,
backVxUrl:this.backVxUrl
}
this.myService.saveBasicInfo(param).subscribe((res)=>{
this.myService.saveIDPicture(param).subscribe((res)=>{
if(res['success']){
this.router.navigate(['/employee_education'],{ queryParams: { hiringBasicInfoId:this.hiringBasicInfoId} });
}else{
......
<div class="wrapper" *ngIf="type =='personal_statement'">
<div class="wrapper" *ngIf="type=='personal_statement'">
<div class="title">
<div><span class="line"></span>个人声明</div>
<span class="page_mark"> 6/8</span>
......
......@@ -37,7 +37,7 @@ export class PersonalStatementComponent implements OnInit {
const title = this.activatedRoute.snapshot.data[0]['title'];
this.lifeCommonService.setTitle(title);
this.hiringBasicInfoId = this.activatedRoute.snapshot.queryParams.hiringBasicInfoId?this.activatedRoute.snapshot.queryParams.hiringBasicInfoId:null;
if(this.type==="personal_statement"){
if(this.type=="personal_statement"){
this.dropOptionsQuery();
}else{
this.queryContractTerms();
......@@ -210,20 +210,22 @@ export class PersonalStatementComponent implements OnInit {
queryWholeInfo(hiringBasicInfoId){
this.myService.queryWholeInfo({hiringBasicInfoId:hiringBasicInfoId}).subscribe((res)=>{
if(res['success']){
if(this.type==="personal_statement"){
this.dropOptionsInfoList = res['data']['hiringPersonalStatementsList'];
for(let i=0;i<this.dropOptionsInfoList.length;i++){
this.dropOptionsInfoList[i]['dropOptionName'] = this.dropOptionsInfoList[i]['mdDropOptionName'];
this.dropOptionsInfoList[i]['id'] = this.dropOptionsInfoList[i]['mdDropOptionId'];
if(this.dropOptionsInfoList[i]['status'] == 1 && this.dropOptionsInfoList[i]['id']== '241'){
this.everWorkFlag = true;
this.everWork = this.dropOptionsInfoList[i]['userInput'];
}else{
this.everWorkFlag = false;
if(this.type=="personal_statement"){
if(res['data']['hiringPersonalStatementsList'].length >0){
this.dropOptionsInfoList = res['data']['hiringPersonalStatementsList'];
for(let i=0;i<this.dropOptionsInfoList.length;i++){
this.dropOptionsInfoList[i]['dropOptionName'] = this.dropOptionsInfoList[i]['mdDropOptionName'];
this.dropOptionsInfoList[i]['id'] = this.dropOptionsInfoList[i]['mdDropOptionId'];
if(this.dropOptionsInfoList[i]['status'] == 1 && this.dropOptionsInfoList[i]['id']== '241'){
this.everWorkFlag = true;
this.everWork = this.dropOptionsInfoList[i]['userInput'];
}else{
this.everWorkFlag = false;
}
}
}
}
if(this.type === 'contract'){
if(this.type == 'contract'){
let hiringContractTermsConfirmsList = res['data']['hiringContractTermsConfirmsList'];
for(let i=0;i<hiringContractTermsConfirmsList.length;i++){
for(let j=0;j<this.contractTermsList.length;j++){
......
......@@ -20,6 +20,6 @@
.signature_action{
display: flex;
justify-content: space-evenly;
img{max-width: 18%;}
img{max-width: 74.52px;max-height: 74.52px;}
}
}
\ No newline at end of file
......@@ -45,7 +45,11 @@ export class SignatureComponent implements OnInit {
}
next(){
this.saveDigitalSignatures();
if(this.isSignatureShow == false){
this.saveDigitalSignatures();
}else{
this.router.navigate(['/employee_submit']);
}
}
drawComplete() {
......@@ -78,9 +82,12 @@ export class SignatureComponent implements OnInit {
queryWholeInfo(hiringBasicInfoId){
this.myService.queryWholeInfo({hiringBasicInfoId:hiringBasicInfoId}).subscribe((res)=>{
if(res['success']){
this.imgStr = res['data']['hiringBasicInfo']['personalSignOssPath'];
console.log(this.imgStr)
this.isSignatureShow = true;
if(res['data']['hiringBasicInfo']['personalSignOssPath']){
this.imgStr = res['data']['hiringBasicInfo']['personalSignOssPath'];
this.isSignatureShow = true;
}else{
this.isSignatureShow = false;
}
}else{
this.isSignatureShow = false;
}
......
<div class="team_sales_detail_wrapper">
<div class="teamHeader">
<div class="teamItem teamInfo">
<!-- <span class="icon-tuandui iconfont"
style="position: absolute;width:45px;height:45px;line-height:35px;font-size: 30px;left:0;border: 1px #dcdcdc solid; padding: 5px;border-radius: 50%;"></span> -->
<img src="assets/images/cup_icon.png" >
<div style="float: left;letter-spacing: 5px;margin-left: 5%;">{{subordinateSystemName.split('').join('/')}}/战/队</div>
</div>
</div>
<div class="rankInfoWrapper">
<div>
<span>姓名</span>
<span>{{practitionerDeatil?.name}}</span>
</div>
<div><span>手机号</span><span>{{practitionerDeatil?.name}}</span></div>
<div><span>级别和职称</span><span>{{practitionerDeatil?.practitionerLevel}}-{{practitionerDeatil?.practitionerTitle}}</span></div>
<div><span>分公司和体系</span><span>{{practitionerDeatil?.branch}}-{{practitionerDeatil?.system}}</span></div>
<div><span>辅导人</span><span>{{practitionerDeatil?.mentor}}</span></div>
<div><span>介绍人</span><span>{{practitionerDeatil?.introducer}}</span></div>
<div><span>性别</span><span>{{practitionerDeatil?.gender}}</span></div>
<div><span>年龄</span><span>{{practitionerDeatil?.age}}</span></div>
<div><span>生日</span><span>{{practitionerDeatil?.birthDate}}</span></div>
<div><span>所在省和城市</span><span>{{practitionerDeatil?.province}}-{{practitionerDeatil?.city}}</span></div>
<div><span>登记证件</span><span>{{practitionerDeatil?.idType}}</span></div>
<div><span>登记证件号</span><span>{{practitionerDeatil?.idNo}}</span></div>
<div><span>登记日期</span><span>{{practitionerDeatil?.effectiveStartDate}}</span></div>
<div><span>执业编号</span><span>{{practitionerDeatil?.practitionerRegNo}}</span></div>
</div>
</div>
.team_sales_detail_wrapper{
background: #fff;
overflow: auto;
height: 100%;
ul li,ol li{
list-style: none;
}
.teamHeader{
background:url('../../../assets/images/team_bg.png') no-repeat;
background-size: 100%;
.teamInfo{
font-size: 24px;
position: relative;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
overflow: hidden;
border-radius: 6px;
color: #fff;
height: 125px;
img{
width: 12%;
margin-left: -8%;
}
}
}
.rankInfoWrapper{
overflow: auto;
width: 100%;
padding: 10px 15px;
div{
display: flex;
justify-content: space-between;
height: 45px;
align-items: center;
border-bottom: 1px #ddd solid;
span{
width: 50%;
}
span:nth-child(2){
text-align: right;
}
}
}
}
\ No newline at end of file
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { MemberDetailComponent } from './member-detail.component';
describe('MemberDetailComponent', () => {
let component: MemberDetailComponent;
let fixture: ComponentFixture<MemberDetailComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ MemberDetailComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MemberDetailComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { MyService } from '../my.service';
import { ActivatedRoute } from '@angular/router';
@Component({
selector: 'ydlife-member-detail',
templateUrl: './member-detail.component.html',
styleUrls: ['./member-detail.component.scss']
})
export class MemberDetailComponent implements OnInit {
practitionerId:any;
subordinateSystemName: any;
teamMemberList:Array<any>;
practitionerDeatil:any;
constructor(private activateRoute: ActivatedRoute,private myService:MyService) { }
ngOnInit() {
this.practitionerId = Number(this.activateRoute.snapshot.paramMap.get('practitionerId'));
this.subordinateSystemName = sessionStorage.getItem('subordinateSystemName');
this.queryTeamMemberDetail();
}
queryTeamMemberDetail(){
const practitionerId = JSON.parse(localStorage.getItem('lifeCustomerInfo'))['practitionerId']
this.myService.queryTeamMemberDetail({practitionerId:practitionerId}).subscribe((res)=>{
if(res['success']){
this.teamMemberList = res['data']['teamMemberDetail'];
console.log(this.teamMemberList)
this.practitionerDeatil = this.teamMemberList.filter((item)=>{
return item.practitionerId == this.practitionerId ;
})[0]
console.log(this.practitionerDeatil)
}
})
}
}
......@@ -40,7 +40,7 @@ import { PersonalStatementComponent } from './application-process/personal-state
import { SignatureComponent } from './application-process/signature/signature.component';
import { EmployeeSubmitComponent } from './application-process/employee-submit/employee-submit.component';
import { BankCardComponent } from './application-process/bank-card/bank-card.component';
import { MemberDetailComponent } from './member-detail/member-detail.component';
const myRoutes: Routes = [
{ path: '', component: MyCenterHomeComponent, canActivate: [AuthGuard], data: [{ title: '银盾保险经纪 - 工作台' }] },
......@@ -87,7 +87,8 @@ const myRoutes: Routes = [
{ path: 'personal_statement',component:PersonalStatementComponent,data: [{ type:'personal_statement',title: '银盾经纪人报聘' }] },
{ path: 'contract',component:PersonalStatementComponent,data: [{ type:'contract',title: '银盾经纪人报聘' }] },
{ path: 'signature',component:SignatureComponent,data: [{ title: '银盾经纪人报聘' }]},
{ path: 'employee_submit',component:EmployeeSubmitComponent,data: [{ title: '已提交' }]}
{ path: 'employee_submit',component:EmployeeSubmitComponent,data: [{ title: '已提交' }]},
{ path: 'member_detail/:practitionerId',component:MemberDetailComponent, canActivate: [AuthGuard]}
];
@NgModule({
......
......@@ -50,9 +50,10 @@ import { SignatureComponent } from './application-process/signature/signature.co
import { EmployeeSubmitComponent } from './application-process/employee-submit/employee-submit.component';
import { BankCardComponent } from './application-process/bank-card/bank-card.component';
import { SignaturePadModule } from 'angular2-signaturepad';
import { MemberDetailComponent } from './member-detail/member-detail.component';
@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],
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],
imports: [
CommonModule,
LifeCommonModule,
......
......@@ -496,4 +496,11 @@ export class MyService {
return this.http
.post(url, JSON.stringify(param));
}
//战队成员详情
queryTeamMemberDetail(param){
const url = this.ydapi + '/practitioner/queryTeamMemberDetail';
return this.http
.post(url, JSON.stringify(param));
}
}
<div class="taem_panel_wrapper">
<div class="member_info" routerLink="memberList">成员信息</div>
<div class="teamInfo">
<!-- <span class="icon-tuandui iconfont"
style="position: absolute;width:45px;height:45px;line-height:35px;font-size: 30px;left:0;border: 1px #dcdcdc solid; padding: 5px;border-radius: 50%;"></span> -->
......
......@@ -4,9 +4,16 @@
background-size: 100%;
height: auto;
min-height: 100%;
position: relative;
ul li,ol li{
list-style: none;
}
.member_info{
position: absolute;
right: 10px;
color: #fff;
z-index: 100;
}
.teamInfo{
font-size: 26px;
position: relative;
......
......@@ -7,7 +7,7 @@
<div style="float: left;letter-spacing: 5px;margin-left: 5%;">{{subordinateSystemName.split('').join('/')}}/战/队</div>
</div>
</div>
<div *ngIf="this.showType==='teamSalesScore'">
<div *ngIf="showType==='teamSalesScore'">
<div class="rankInfoWrapper">
<div class="rankContent">
<div style="font-size: 18px;margin: 5px auto;text-align: center;">战队成员活动量得分</div>
......@@ -40,7 +40,7 @@
</div>
</div>
</div>
<div *ngIf="this.showType==='forecast'">
<div *ngIf="showType==='forecast'">
<div class="rankInfoWrapper">
<div class="rankContent">
<div class="tab">
......@@ -75,4 +75,31 @@
</div>
</div>
</div>
<div *ngIf="showType === 'memberList'">
<div class="rankInfoWrapper">
<div class="rankContent">
<div style="font-size: 18px;margin: 5px auto;text-align: center;">战队成员</div>
<div class="content_wrapper memberList">
<ul style="border: none;">
<li>姓名</li>
<li>级别</li>
<li class="sex">性别</li>
<li>手机号</li>
<li></li>
</ul>
<div style="width: 100%;text-align: center;float: left;height: 35px;"
*ngIf="teamMemberList?.length <=0">
暂无战队成员,努力去增员吧
</div>
<ul *ngFor="let teamMemberItem of teamMemberList;index as i;" [routerLink]="['/member_detail',teamMemberItem.practitionerId]">
<li>{{teamMemberItem.name}}</li>
<li>{{teamMemberItem.practitionerLevel}}{{teamMemberItem.practitionerTitle}}</li>
<li class="sex">{{teamMemberItem.gender}}</li>
<li>{{teamMemberItem.mobileNo}}</li>
<li><i class="iconfont icon-ar-r" style="color: #A4A4A4FF;font-size: 12px;" ></i></li>
</ul>
</div>
</div>
</div>
</div>
</div>
\ No newline at end of file
......@@ -143,6 +143,26 @@
width: 20%;
}
}
.content_wrapper.memberList{
ul{
background: transparent;
border-bottom: 1px #ddd solid;
border-radius: 0;
li{
width: 24%;
}
li.sex{
width: 13%;
}
li:last-child{
margin-right: 0;
width: 4%;
}
}
ul:last-child{
border-bottom: none;
}
}
}
}
......
......@@ -16,6 +16,7 @@ export class TeamSalesScoreComponent implements OnInit {
selectedSalseItem: any;
salesPerformanceForecastInfos: Array<any>;
personalList:Array<any>;
teamMemberList:Array<any>;
constructor(private activateRoute: ActivatedRoute, private router: Router,
private myService: MyService, public lifeCommonService: LifeCommonService) { }
......@@ -24,12 +25,16 @@ export class TeamSalesScoreComponent implements OnInit {
this.subordinateSystemName = sessionStorage.getItem('subordinateSystemName');
//判断显示销售得分还是销售预测
this.showType = this.activateRoute.snapshot.paramMap.get('type');
console.log(this.showType)
if (this.showType === 'teamSalesScore') {
this.queryPEPScore();
}
if (this.showType === 'forecast') {
this.salesPerformanceForecastListQuery('m')
}
if(this.showType === 'memberList'){
this.queryTeamMemberDetail();
}
}
//获取成员销售活动量得分
......@@ -62,4 +67,14 @@ export class TeamSalesScoreComponent implements OnInit {
}
})
}
//战队成员列表
queryTeamMemberDetail(){
this.myService.queryTeamMemberDetail({practitionerId:this.practitionerId}).subscribe((res)=>{
console.log(res)
if(res['success']){
this.teamMemberList = res['data']['teamMemberDetail'];
}
})
}
}
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