Commit 5c48c190 by sunchao

合并dev代码到master

parents 0657849f ce7899f4
<!--弹窗Starts-->
<div class="detailContent defineFixed" *ngIf="isOpen">
<!-- 其他应税项目模板-->
<div class="detailBox" *ngIf="application===2">
<div class="header">
<div></div>
<h5>其他加扣款</h5>
<div class="closeModal cursor" (click)="closeModal()">&times;</div>
</div>
<div class="totastContent">
<div class="subtitle">其它加扣款包括什么?可能包括如下收入:</div>
<ul>
<li>1. 季度销售加码奖金</li>
<li>2. 公司营销活动激励奖金</li>
<li>3. 银盾在线的保单销售佣金</li>
<li>4. 其它的可能收入或者扣款</li>
</ul>
</div>
</div>
<!-- 其他应税项目模板-->
<!--个人所得税政策模板-->
<div class="detailBox" *ngIf="application===1">
<div class="header">
<div></div>
<h5>个人所得税政策</h5>
<div class="closeModal cursor" (click)="closeModal()">&times;</div>
</div>
</div>
<div class="detailBox" *ngIf="application===3">
<div class="header">
<div></div>
<h5>代扣个人所得税/增值税/附加税(D)</h5>
<div class="closeModal cursor" (click)="closeModal()">&times;</div>
</div>
<div class="totastContent">
<div class="subtitle">关于代扣个人所得税/增值税/附加税</div>
<div style="margin-bottom: 10px;">
公司根据财政部和税务总局《关于个人所得税法修改后有关优惠政策衔接问题的通知》,
并接受税务机关委托代征税款,向个人保险经纪人支付佣金费用后,
代个人保险经纪人统一向主管国税机关申请汇总代开增值税发票。
</div>
<div style="margin-bottom: 10px;">
《通知》中关于保险营销员、证券经纪人佣金收入的政策:
</div>
<ul>
<li>1. 保险营销员、证券经纪人取得的佣金收入,属于劳务报酬所得。</li>
<li>2. 以不含增值税的收入减除20%的费用后的余额为收入额,收入额减去展业成本以及附加税费后,并入当年综合所得,计算缴纳个人所得税。</li>
<li>3. 保险营销员、证券经纪人展业成本按照收入额的25%计算。</li>
<li>4. 扣缴义务人向保险营销员、证券经纪人支付佣金收入时,应按照《个人所得税扣缴申报管理办法(试行)》(国家税务总局公告2018年第61号)规定的累计预扣法计算预扣税款。</li>
<li>5. 经纪人佣金做为个人收入按规定需要扣缴增值税。</li>
</ul>
</div>
</div>
</div>
<!--弹窗结束-->
.detailContent {
top: 0;
height: 100%;
background: rgba(0,0,0,.5);
z-index: 3004;
.detailBox {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
// height: 70%;
background-color: #fff;
overflow-y: scroll;
animation: slowUp .5s ease both;
.header {
position: relative;
width: 100%;
height: 48px;
line-height: 48px;
padding-right: 15px;
display: flex;
justify-content: space-between;
align-items: center;
h5 {
font-size: 16px;
color: #000;
}
.closeModal {
color: #8a8a8a;
font-size: 32px;
}
}
.header:after {
position: absolute;
left: 0;
bottom: 1px;
width: 100%;
content: '';
height: 1px;
background-color: #dcdcdc;
transform: scaleY(0.5);
}
.totastContent{
padding: 10px;
.subtitle{
font-size: 16px;
height: 40px;
line-height: 40px;
}
ul li{
margin-bottom: 5px;
}
}
h4 {
color: #ec2d37;
font-weight: bold;
}
.body {
padding: 10px 15px 0 15px;
> ul {
> li {
height: 34px;
line-height: 34px;
letter-spacing: 1px;
display: flex;
justify-content: space-between;
}
}
}
}
}
.defineFixed{
position: fixed;
left: 0;
right: 0;
min-width: 320px;
max-width: 640px;
width: 100%;
margin: 0 auto;
}
\ No newline at end of file
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { DetailModalComponent } from './detail-modal.component';
describe('DetailModalComponent', () => {
let component: DetailModalComponent;
let fixture: ComponentFixture<DetailModalComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ DetailModalComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(DetailModalComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit, Input, Output,EventEmitter } from '@angular/core';
@Component({
selector: 'ydlife-detail-modal',
templateUrl: './detail-modal.component.html',
styleUrls: ['./detail-modal.component.scss']
})
export class DetailModalComponent implements OnInit {
// application:1其他应税项目,2为个人所得税政策
@Input() application: number;
@Output() closeDetailModal = new EventEmitter();
isOpen: boolean;
constructor() {
this.isOpen = true;
}
ngOnInit() {
}
// 关闭弹窗
closeModal() {
this.isOpen = false;
this.closeDetailModal.emit();
}
}
import {Directive, ElementRef, EventEmitter, HostListener, Input, Output, Renderer2} from '@angular/core';
@Directive({
selector: '[appAutoFixed]'
})
export class AutoFixedDirective {
// 元素距离顶部的原始距离
toTop: number = 0;
// 吸顶元素
toTopElement: any;
// 吸顶元素id
// tslint:disable-next-line:no-input-rename
@Input('appAutoFixed') selector: string = '';
@Output() updateTabMenuId = new EventEmitter<string>();
@HostListener('scroll', ['$event'])
onScroll($event: Event) {
if (this.er.nativeElement.scrollTop >= this.toTop) {
this.renderer2.addClass(this.toTopElement, 'autofixed');
} else {
this.renderer2.removeClass(this.toTopElement, 'autofixed');
}
this.updateTabMenuId.emit(this.er.nativeElement.scrollTop);
}
constructor(private er: ElementRef, private renderer2: Renderer2) {
setTimeout(() => {
this.toTopElement = this.er.nativeElement.querySelector('#' + this.selector);
this.toTop = this.toTopElement.offsetTop;
}, 1000);
}
}
...@@ -10,7 +10,7 @@ import { LifeCommonService } from '../../common/life-common.service'; ...@@ -10,7 +10,7 @@ import { LifeCommonService } from '../../common/life-common.service';
}) })
export class AnnouncementDetailComponent implements OnInit { export class AnnouncementDetailComponent implements OnInit {
announcementId: string; announcementId: string;
announcementLists: Array<any>; announcementLists: any;
titleDeatil: string; titleDeatil: string;
constructor(private activateRoute: ActivatedRoute, constructor(private activateRoute: ActivatedRoute,
private myService: MyService, private myService: MyService,
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<div class="contentDetail employ"> <div class="contentDetail employ">
<div class="contentItem"> <div class="contentItem">
<input class="form-control" name="" id="" placeholder="开户行具体到支行" [(ngModel)]="bankAccountOpening" <input class="form-control" name="" id="" placeholder="开户行具体到支行" [(ngModel)]="bankAccountOpening"
(blur)="bs()" [disabled]="approveStatus!=null && approveStatus!='-1'" /> (blur)="bs(null)" [disabled]="approveStatus!=null && approveStatus!='-1'" />
</div> </div>
<div class="contentItem"> <div class="contentItem">
<input class="form-control" placeholder="银行卡号:例如 6301234345354356" [(ngModel)]="bankAccountId" <input class="form-control" placeholder="银行卡号:例如 6301234345354356" [(ngModel)]="bankAccountId"
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
<img src="{{certificationVxUrl}}" alt="毕业证照片" (click)="selectPic()" *ngIf="certificationVxUrl"> <img src="{{certificationVxUrl}}" alt="毕业证照片" (click)="selectPic()" *ngIf="certificationVxUrl">
<div class="tips"> <div class="tips">
<p>(jpg,png 文件大小不大于1mb)</p> <p>(jpg,png 文件大小不大于1mb)</p>
<p>根据银保监要求,请上传最高学历原件影像件或学信网截图</p>
</div> </div>
</div> </div>
<footer class="fixed" (click)="next()" *ngIf="approveStatus==null || approveStatus=='-1'"> <footer class="fixed" (click)="next()" *ngIf="approveStatus==null || approveStatus=='-1'">
...@@ -42,4 +43,4 @@ ...@@ -42,4 +43,4 @@
</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)="getPopI
\ No newline at end of file
<div class="wrapper"> <div class="wrapper">
<div class="title" *ngIf="!approvalIdentity"> <div class="title">
欢迎加入银盾大家庭 欢迎加入银盾大家庭
</div> </div>
<div class="content"> <div class="content">
......
<div class="invitation_wrapper"> <div class="invitation_wrapper">
<div class="inviter_content" *ngIf="type=='inviter'"> <div class="inviter_content" *ngIf="type=='inviter'">
<img class="bg" src="assets/images/inviter_bg.png" alt="邀请" /> <img class="bg" src="assets/images/inviter_bg.jpg" alt="邀请" />
<img class="logo" src="assets/images/white_logo.png" alt="logo" /> <img class="logo" src="assets/images/white_logo.png" alt="logo" />
<div class="invitation_content"> <div class="invitation_content">
<p>您将邀请{{inviteeName}}</p> <p>您将邀请{{inviteeName}}</p>
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
</footer> </footer>
</div> </div>
<div class="invitees_content" *ngIf="type=='invitees'"> <div class="invitees_content" *ngIf="type=='invitees'">
<img class="bg" src="assets/images/invitees_bg.png" alt="受到邀请" /> <img class="bg" src="assets/images/invitees_bg.jpg" alt="受到邀请" />
<img class="logo" src="assets/images/white_logo.png" alt="logo" /> <img class="logo" src="assets/images/white_logo.png" alt="logo" />
<div class="invitation_content"> <div class="invitation_content">
<p>{{invitatorName}}邀请您</p> <p>{{invitatorName}}邀请您</p>
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
</li> </li>
</ul> </ul>
<textarea placeholder="请输入您曾经报聘过的保险机构名称" #autofocusFlag [(ngModel)]="everWork" *ngIf="everWorkFlag" class="form-control" cols="10" rows="5"></textarea> <textarea placeholder="请输入您曾经报聘过的保险机构名称" #autofocusFlag [(ngModel)]="everWork" *ngIf="everWorkFlag" class="form-control" cols="10" rows="5"></textarea>
<p style="font-size: 12px;color: #999;position: absolute;top: 450px;">请务必如实回答以上4个问题;根据监管要求,如存在犯罪记录、失信记录、征信不良记录,无法报聘为保险营销人员。</p>
</div> </div>
<footer class="fixed" (click)="next()" *ngIf="approveStatus==null || approveStatus=='-1'"> <footer class="fixed" (click)="next()" *ngIf="approveStatus==null || approveStatus=='-1'">
保存并下一步 保存并下一步
......
<div class="businessCardContainer"> <div class="businessCardContainer">
<div class="brokerCardPositive" id="brokerCardPositive" *ngIf="showFlag==false"> <div class="brokerCardPositive" id="brokerCardPositive" *ngIf="showFlag==false">
<div class="qrcodeBox"> <!-- <div class="dividingContainer">
<div>
<div style="margin-bottom: 20%;"><img src="assets/images/ydShield.png" alt="银盾保险经纪" class="img-responsive">
</div>
<div><img src="assets/images/ydCompanyName.png" alt="银盾保险经纪" class="img-responsive"></div>
</div>
<div><img src="assets/images/online_chat.jpg" alt="" class="img-responsive"></div>
</div>
<div class="dividingContainer">
<div class="dividingBox"></div> <div class="dividingBox"></div>
<div class="dividingLine"></div> <div class="dividingLine"></div>
</div> </div> -->
<div class="brokerInfo"> <div class="brokerInfo">
<div class="brokerBasicInfo"> <div class="brokerBasicInfo">
<div class="brokerName"> <div class="brokerName">
<div>{{lifeCustomerInfo.practitionerBasicInfo.name}}</div> <div>
<div>Neo Zheng</div> {{lifeCustomerInfo.practitionerBasicInfo.name}}
<span>Neo Zheng</span>
</div> </div>
<div class="brokerTitle">
<div>{{lifeCustomerInfo.practitionerBasicInfo.levelName}}</div>
<div>Sales Director</div>
</div> </div>
</div> </div>
<div class="brokerCompanyInfo"> <div class="brokerCompanyInfo">
<div style="font-size: 14px">上海银盾保险经纪有限公司</div> <div style="font-size: 14px">上海银盾保险经纪有限公司</div>
<div style="font-size:10px;font-weight: lighter;">上海市浦东新区张杨路560号中融恒瑞国际西楼1502室</div> <div style="font-size:10px;">上海市浦东新区张杨路560号中融恒瑞国际西楼1502室</div>
<div style="font-size: 11px">客服专线:400-921-9290</div>
</div> </div>
<div class="brokerContactInfo"> <div class="brokerContactInfo">
<div> <div>
<i class="iconfont icon-dianhua"></i> <i class="iconfont icon-shouji"></i>
<span>M: {{lifeCustomerInfo.mobileNo}}</span> <span>手机: {{lifeCustomerInfo.mobileNo}}</span>
</div> </div>
<div> <div>
<i class="iconfont icon-youxiang"></i> <i class="iconfont icon-youxiang1"></i>
<span>50262253@qq.com</span> <span>邮箱:50262253@qq.com</span>
</div>
<div style="margin-bottom: 0;">
<i class="iconfont icon-gongsiwangzhi"></i>
<span>网址:www.ydinsurance.com</span>
</div> </div>
</div> </div>
</div> </div>
<div class="qrcodeBox">
<div>
<div style="margin-bottom: 20%;"><img src="assets/images/ydShield.png" alt="银盾保险经纪" class="img-responsive">
</div>
<div><img src="assets/images/ydCompanyName.png" alt="银盾保险经纪" class="img-responsive"></div>
</div>
<div>
<img src="{{lifeCustomerInfo.practitionerBasicInfo.qrCodePath ?lifeCustomerInfo.practitionerBasicInfo.qrCodePath:'assets/images/online.jpg'}}" alt="" class="img-responsive">
</div>
</div>
</div> </div>
<img src="{{canvasImg}}" *ngIf="showFlag==true"> <img src="{{canvasImg}}" *ngIf="showFlag==true">
<div class="brokerCardOpposite"> <div class="brokerCardOpposite">
......
...@@ -3,11 +3,9 @@ ...@@ -3,11 +3,9 @@
flex-direction: column; flex-direction: column;
.brokerCardPositive { .brokerCardPositive {
display: flex; display: flex;
padding-top: 7%; padding:7% 5% 10% 5%;
padding-left: 5%;
padding-bottom: 10%;
.qrcodeBox { .qrcodeBox {
width: 15%; width: 18%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: space-between; justify-content: space-between;
...@@ -37,30 +35,18 @@ ...@@ -37,30 +35,18 @@
margin-bottom: 10%; margin-bottom: 10%;
color: #231f20; color: #231f20;
.brokerName { .brokerName {
div:first-child { font-size: 20px;
font-size: 24px;
letter-spacing: 5px;
font-weight: bold;
line-height: 1.1; line-height: 1.1;
} }
div:last-child {
font-size: 12px;
}
}
.brokerTitle {
div:first-child {
font-size: 13px;
}
div:last-child {
font-size: 12px;
}
}
} }
.brokerCompanyInfo { .brokerCompanyInfo {
margin-bottom: 3%; margin-bottom: 10%;
} }
.brokerContactInfo { .brokerContactInfo {
line-height: 1.1; line-height: 1.1;
div{
margin-bottom: 5px;
}
.iconfont { .iconfont {
margin-right: 5px; margin-right: 5px;
color: #ee262e; color: #ee262e;
......
...@@ -37,8 +37,6 @@ export class BusinessCardComponent implements OnInit { ...@@ -37,8 +37,6 @@ export class BusinessCardComponent implements OnInit {
}) })
} }
// downLoadJspdfs(){ // downLoadJspdfs(){
// this.element = document.getElementById("brokerCardPositive"); // this.element = document.getElementById("brokerCardPositive");
// html2canvas(this.element,{ // html2canvas(this.element,{
......
...@@ -68,7 +68,7 @@ export class MyCenterHomeComponent implements OnInit, AfterViewInit { ...@@ -68,7 +68,7 @@ export class MyCenterHomeComponent implements OnInit, AfterViewInit {
this.rank(1, 2, 1) this.rank(1, 2, 1)
this.recommendPlanQuery(); this.recommendPlanQuery();
//判断是否团队长 //判断是否团队长
this.subordinateSystemMemberQuery(); // this.subordinateSystemMemberQuery();
this.opportunityStatistics(); this.opportunityStatistics();
this.queryScheduleTrackList(); this.queryScheduleTrackList();
//活动量得分查询 //活动量得分查询
...@@ -114,7 +114,7 @@ export class MyCenterHomeComponent implements OnInit, AfterViewInit { ...@@ -114,7 +114,7 @@ export class MyCenterHomeComponent implements OnInit, AfterViewInit {
{ {
title: '我的展业', title: '我的展业',
content: [ content: [
{ no: 12, subtitle: '我的保单', icon: 'policy', path: '', routerLink: '',showSubMenu:true }, { no: 12, subtitle: '销售保单', icon: 'policy', path: '', routerLink: '',showSubMenu:true },
{ no: 20, subtitle: '我的客户', icon: 'customer', path: '', routerLink: '',showSubMenu:true }, { no: 20, subtitle: '我的客户', icon: 'customer', path: '', routerLink: '',showSubMenu:true },
// { no: 14, subtitle: '我的佣金', icon: 'commission', path: '', routerLink: '',showSubMenu:true }, // { no: 14, subtitle: '我的佣金', icon: 'commission', path: '', routerLink: '',showSubMenu:true },
{ no: 19, subtitle: '薪资单', icon: 'salary', path: '', routerLink: 'salary',showSubMenu:this.isShowSalay }, { no: 19, subtitle: '薪资单', icon: 'salary', path: '', routerLink: 'salary',showSubMenu:this.isShowSalay },
...@@ -245,26 +245,9 @@ export class MyCenterHomeComponent implements OnInit, AfterViewInit { ...@@ -245,26 +245,9 @@ export class MyCenterHomeComponent implements OnInit, AfterViewInit {
} }
//截取字符串
getStr(str, len) {
if (!str) return "";
if (len <= 0) return "";
var templen = 0;
for (var i = 0; i < str.length; i++) {
if (str.charCodeAt(i) > 255) {
templen += 2;
} else {
templen++;
}
if (len == templen || len == templen + 1) {
return str.substring(0, i + 1) + '...';
} else if (templen > len + 1) {
return str.substring(0, i);
}
}
return str;
} }
// 大家都在买产品查询列表 // 大家都在买产品查询列表
recommendPlanQuery() { recommendPlanQuery() {
this.myService.queryproductlistbytag({ mdTagId: 97 }).subscribe(res => { this.myService.queryproductlistbytag({ mdTagId: 97 }).subscribe(res => {
...@@ -386,6 +369,7 @@ export class MyCenterHomeComponent implements OnInit, AfterViewInit { ...@@ -386,6 +369,7 @@ export class MyCenterHomeComponent implements OnInit, AfterViewInit {
this.approvarList = res['data']['hiringListInfoList']; this.approvarList = res['data']['hiringListInfoList'];
if(this.approvarList.length>0){ if(this.approvarList.length>0){
this.dotFlag = true; this.dotFlag = true;
this.getMenuList();
}else{ }else{
this.dotFlag = false; this.dotFlag = false;
} }
...@@ -409,3 +393,4 @@ export class MyCenterHomeComponent implements OnInit, AfterViewInit { ...@@ -409,3 +393,4 @@ export class MyCenterHomeComponent implements OnInit, AfterViewInit {
}) })
} }
} }
...@@ -52,6 +52,8 @@ import { TeamAreaPanelComponent } from './team-area-panel/team-area-panel.compon ...@@ -52,6 +52,8 @@ import { TeamAreaPanelComponent } from './team-area-panel/team-area-panel.compon
import { ArticleComponent } from './article/article.component'; import { ArticleComponent } from './article/article.component';
import { ArticleDetailComponent } from './article-detail/article-detail.component'; import { ArticleDetailComponent } from './article-detail/article-detail.component';
import { ArticleReadComponent } from './article-read/article-read.component'; import { ArticleReadComponent } from './article-read/article-read.component';
import { SalaryDetailComponent } from './salary-detail/salary-detail.component';
import { SalaryFirstYearComponent } from './salary-first-year/salary-first-year.component';
const myRoutes: Routes = [ const myRoutes: Routes = [
{ path: '', component: MyCenterHomeComponent, canActivate: [AuthGuard], data: [{ title: '银盾保险经纪 - 工作台' }] }, { path: '', component: MyCenterHomeComponent, canActivate: [AuthGuard], data: [{ title: '银盾保险经纪 - 工作台' }] },
...@@ -81,7 +83,7 @@ const myRoutes: Routes = [ ...@@ -81,7 +83,7 @@ const myRoutes: Routes = [
{ path: 'scoreDeatil/:practitionerId', component: ScoreDetailsComponent, canActivate: [AuthGuard] }, { path: 'scoreDeatil/:practitionerId', component: ScoreDetailsComponent, canActivate: [AuthGuard] },
{ path: 'businessCard', component: BusinessCardComponent, canActivate: [AuthGuard] }, { path: 'businessCard', component: BusinessCardComponent, canActivate: [AuthGuard] },
{ path: 'orderDetail', component: OrderDetailComponent, canActivate: [AuthGuard] }, { path: 'orderDetail', component: OrderDetailComponent, canActivate: [AuthGuard] },
{ path: 'salary', component: SalaryComponent, canActivate: [AuthGuard] }, { path: 'salary', component: SalaryComponent, canActivate: [AuthGuard],data:[{title:'我的薪资'}] },
{ path: 'todo', component: TodoListComponent, canActivate: [AuthGuard] }, { path: 'todo', component: TodoListComponent, canActivate: [AuthGuard] },
{ path: 'addtask',component:AddTaskComponent,canActivate:[AuthGuard]}, { path: 'addtask',component:AddTaskComponent,canActivate:[AuthGuard]},
{ path: 'medical_service',component:MedicalServiceComponent,canActivate:[AuthGuard]}, { path: 'medical_service',component:MedicalServiceComponent,canActivate:[AuthGuard]},
...@@ -110,7 +112,9 @@ const myRoutes: Routes = [ ...@@ -110,7 +112,9 @@ const myRoutes: Routes = [
{ path: 'team_area',component:TeamAreaPanelComponent, canActivate: [AuthGuard]}, { path: 'team_area',component:TeamAreaPanelComponent, canActivate: [AuthGuard]},
{ path: 'article/:mdDropOptionId', component:ArticleComponent}, { path: 'article/:mdDropOptionId', component:ArticleComponent},
{ path: 'articleDetail/:id',component:ArticleDetailComponent}, { path: 'articleDetail/:id',component:ArticleDetailComponent},
{ path: 'article_read/:id',component:ArticleReadComponent,canActivate:[AuthGuard]} { path: 'article_read/:id',component:ArticleReadComponent,canActivate:[AuthGuard]},
{ path: 'salary_detail',component:SalaryDetailComponent,canActivate:[AuthGuard]},
{ path: 'salary_detail/:id',component:SalaryFirstYearComponent,canActivate:[AuthGuard]}
]; ];
@NgModule({ @NgModule({
......
...@@ -64,9 +64,12 @@ import { ArticleDetailComponent } from './article-detail/article-detail.componen ...@@ -64,9 +64,12 @@ import { ArticleDetailComponent } from './article-detail/article-detail.componen
//富文本编辑器 //富文本编辑器
import { UEditorModule } from 'ngx-ueditor'; import { UEditorModule } from 'ngx-ueditor';
import { ArticleReadComponent } from './article-read/article-read.component'; import { ArticleReadComponent } from './article-read/article-read.component';
import { SalaryDetailComponent } from './salary-detail/salary-detail.component';
import { SalaryFirstYearComponent } from './salary-first-year/salary-first-year.component';
import { DetailModalComponent } from '../common/detail-modal/detail-modal.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], 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],
imports: [ imports: [
CommonModule, CommonModule,
LifeCommonModule, LifeCommonModule,
......
...@@ -640,4 +640,25 @@ export class MyService { ...@@ -640,4 +640,25 @@ export class MyService {
return res; return res;
}); });
} }
//佣金列表
querySalaryDetail(param){
const url = this.ydapi + '/practitioner/querySalaryDetail';
return this.http
.post(url, JSON.stringify(param));
}
//薪资对应保单的接口
searchStaffSalaryDetails(param){
const url = this.ydapi + '/practitioner/searchStaffSalaryDetails';
return this.http
.post(url, JSON.stringify(param));
}
//提现订单接口
fortuneWithdrawListQuery(param){
const url = this.API + "/fortuneWithdrawListQuery";
return this.http
.post(url, JSON.stringify(param));
}
} }
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
</li> </li>
</ul> </ul>
<div class="salesContent" [ngStyle]="{'padding-bottom':showRecruitingList?.length>0?'50px':'0px'}"> <div class="salesContent" [ngStyle]="{'padding-bottom':showRecruitingList?.length>0?'50px':'0px'}">
<div style="text-align: center;margin: 20px auto;font-size: 20px;" *ngIf="businessList?.length==0">暂无商机</div> <div style="text-align: center;margin: 20px auto;font-size: 20px;" *ngIf="recruitingList?.length==0">暂无增员</div>
<div class="salesItem" *ngFor="let recruitingItem of showRecruitingList" (click)="isJumpToDetail(recruitingItem.potentialId,recruitingItem)"> <div class="salesItem" *ngFor="let recruitingItem of showRecruitingList" (click)="isJumpToDetail(recruitingItem.potentialId,recruitingItem)">
<div class="icon_bolck" *ngIf="pageType=='recruiting'"><span class="iconfont icon-tuanduiguanlisvg"></span></div> <div class="icon_bolck" *ngIf="pageType=='recruiting'"><span class="iconfont icon-tuanduiguanlisvg"></span></div>
<div *ngIf="pageType=='linkrecruiting'" class="linkbusinessRadius"> <div *ngIf="pageType=='linkrecruiting'" class="linkbusinessRadius">
......
<div class="wrapper">
<div class="header">
<div (click)="goBack()" style="position: absolute;left: 10px;top: 10px;">返回</div>
<!-- <div class="paginate">
<div class="pre"><span class="iconfont icon-fanhui"></span>上一期</div>
<div class="next">下一期<span class="iconfont icon-ar-r"></span></div>
</div> -->
<div class="price">
<div>
<div class="pre" (click)="querySalaryDetail('pre')"><span class="iconfont icon-fanhui"></span>上一期</div>
<div class="salay">¥{{after_tax_comis | number: "1.2-2"}}</div>
<div class="next" (click)="querySalaryDetail('next')">下一期<span class="iconfont icon-ar-r"></span></div>
</div>
<p><span class="cash">{{years}}年{{month}}月佣金</span></p>
</div>
</div>
<div class="content_wrapper">
<div class="part">
<div class="item">
<div class="title">个人销售(A)</div>
<div class="item_detail" (click)="jumpToFirstYearSales('首年度销售佣金',1,1)" *ngIf="fycSalesInfo">
<span>首年度销售佣金</span>
<span class="red">{{fycSalesInfo.commission | number: "1.2-2" }}<i class="iconfont icon-ar-r"></i> </span>
</div>
<div class="item_detail" (click)="jumpToFirstYearSales('续年度销售佣金',1,2)" *ngIf="rycSalesInfo">
<span>续年度销售佣金</span>
<span class="red">{{rycSalesInfo.commission | number: "1.2-2"}} <i class="iconfont icon-ar-r"></i></span>
</div>
</div>
<div class="item">
<div class="title">销售管理(B)</div>
<div class="item_detail" (click)="jumpToFirstYearSales('首年度辅导奖金',1,3)" *ngIf="fycTutorInfo">
<span>首年度辅导奖金</span>
<span class="red"> {{fycTutorInfo.commission | number: "1.2-2"}}<i class="iconfont icon-ar-r"></i></span>
</div>
<div class="item_detail" (click)="jumpToFirstYearSales('续年度辅导奖金',1,4)" *ngIf="rycTutorInfo">
<span>续年度辅导奖金</span>
<span class="red">{{rycTutorInfo.commission | number: "1.2-2"}} <i class="iconfont icon-ar-r"></i></span>
</div>
<div class="item_detail" (click)="jumpToFirstYearSales('首年度绩效奖金',2,5)" *ngIf="fycMeritsInfo">
<span>首年度绩效奖金</span>
<span class="red">{{fycMeritsInfo.commission | number: "1.2-2"}} <i class="iconfont icon-ar-r"></i></span>
</div>
<div class="item_detail" (click)="jumpToFirstYearSales('续年度绩效奖金',2,6)" *ngIf="rycMeritsInfo">
<span>续年度绩效奖金</span>
<span class="red">{{rycMeritsInfo.commission | number: "1.2-2"}}<i class="iconfont icon-ar-r"></i></span>
</div>
<div class="item_detail" (click)="jumpToFirstYearSales('推介奖金',1,7)" *ngIf="recommendAward">
<span>推介奖金</span>
<span class="red">{{recommendAward.commission | number: "1.2-2"}} <i class="iconfont icon-ar-r"></i></span>
</div>
<div class="item_detail" (click)="jumpToFirstYearSales('体系推介奖',2,8)" *ngIf="systemRecommendAward">
<span>体系推介奖金</span>
<span class="red">{{systemRecommendAward.commission | number: "1.2-2"}}<i class="iconfont icon-ar-r"></i></span>
</div>
<div class="item_detail" (click)="jumpToFirstYearSales('特别管理奖',1,9)" *ngIf="specialManagementAward">
<span>特别管理奖金</span>
<span class="red">{{specialManagementAward.commission | number: "1.2-2"}} <i class="iconfont icon-ar-r"></i></span>
</div>
</div>
<div class="item">
<div class="title" style="justify-content: inherit;" (click)="otherToastShow = true">
其他加扣款(C)
<span class="iconfont icon-wenhao" style="margin-top: 3px;color: #f8002e;margin-left: 3px;"></span></div>
<div class="item_detail" (click)="jumpToFirstYearSales('其他税前加扣款',3,10)" *ngIf="otherPreTaxDeduction">
<span>其它税前加扣款</span>
<span class="red">{{otherPreTaxDeduction.commission | number: "1.2-2"}}<i class="iconfont icon-ar-r"></i></span>
</div>
<div class="item_detail" (click)="jumpToFirstYearSales('公司激励奖',3,11)" *ngIf="IncentiveBonus">
<span>公司激励奖金</span>
<span class="red">{{IncentiveBonus.commission | number: "1.2-2"}}<i class="iconfont icon-ar-r"></i></span>
</div>
<div class="item_detail" (click)="jumpToFirstYearSales('加码奖金',3,12)" *ngIf="addWeight">
<span>加码奖金</span>
<span class="red">{{addWeight.commission | number: "1.2-2"}}<i class="iconfont icon-ar-r"></i></span>
</div>
<div class="item_detail" (click)="jumpToFirstYearSales('季度奖金',3,13)" *ngIf="quarterlyBonus">
<span>季度奖金</span>
<span class="red">{{quarterlyBonus.commission | number: "1.2-2"}}<i class="iconfont icon-ar-r" ></i></span>
</div>
<div class="item_detail" (click)="jumpToFirstYearSales('银盾在线佣金',4,14)" *ngIf="onlineAward">
<span>银盾在线佣金</span>
<span class="red">{{onlineAward.commission | number: "1.2-2"}}<i class="iconfont icon-ar-r"></i></span>
</div>
</div>
<div class="item" style="margin-right: 19px;">
<div class="title">
<span>佣金合计(A+B+C)</span>
<span class="red">{{totalCommission | number: "1.2-2"}}</span>
</div>
</div>
</div>
<div class="part">
<div class="item" style="margin-right: 19px;">
<div class="title">
<span (click)="otherTaxFlag = true">代扣个人所得税/增值税/附加税(D)<span class="iconfont icon-wenhao" style="margin-top: 3px;color: #f8002e;margin-left: 3px;"></span></span>
<span class="red">{{deduction | number: "1.2-2" }}</span>
</div>
<!-- <a style="color:#2c67a0;" (click)="lookTak()">点击查看个人所得税明细</a> -->
</div>
</div>
<div class="part">
<div class="item" style="margin-right: 19px;">
<div class="title">
<span>本期实领(A+B+C-D)</span>
<span class="red">{{after_tax_comis | number: "1.2-2"}}</span>
</div>
</div>
</div>
</div>
<div *ngIf="taxToastShow">
<ydlife-detail-modal [application]="1"
(closeDetailModal)="taxToastShow = false"></ydlife-detail-modal>
</div>
<div *ngIf="otherToastShow">
<ydlife-detail-modal [application]="2"
(closeDetailModal)="otherToastShow = false"></ydlife-detail-modal>
</div>
<div *ngIf="otherTaxFlag">
<ydlife-detail-modal [application]="3"
(closeDetailModal)="otherTaxFlag = false"></ydlife-detail-modal>
</div>
</div>
<div class="mask" *ngIf="takFlag == true;"></div>
<div class="tax_mask" *ngIf="takFlag == true;">
<div class="close" (click)="takFlag = false;"> X </div>
<div class="mask_title">
<div>个人所得税预扣明细</div>
<div (click)="taxToastShow = true"><span class="iconfont icon-zhuyishixiang"></span> 个人所得税政策</div>
</div>
<div class="tax_content">
<div class="tax_item">
<div>
<span>本期应税所得</span>
<span class="red">{{sumcommission | number: "1.2-2"}}</span>
</div>
<div>
<span>年度累计应税所得</span>
<span class="red">{{total_commission | number: "1.2-2"}}</span>
</div>
<div>
<span>预扣率</span>
<span class="red"></span>
</div>
</div>
<div class="tax_item">
<div>
<span>累计应扣所得税(A)</span>
<span class="red">{{total_personal_tax | number: "1.2-2"}}</span>
</div>
<div>
<span>累计已扣所得税(B)</span>
<span class="red">{{total_paid | number: "1.2-2"}}</span>
</div>
<div>
<span>本期应扣所得税(A-B)</span>
<span class="red">{{personal_tax | number: "1.2-2" }}</span>
</div>
</div>
</div>
</div>
.wrapper{
background: #f6f6f6;
min-height: 100%;
.header{
padding: 35px 10px;
color: #fff;
background: url('../../../assets/images/measurebanner.jpg') no-repeat 50%;
background-size: cover;
.paginate{
display: flex;
justify-content: space-between;
align-items: center;
height: 40px;
font-size: 18px;
}
.price{
div{
text-align: center;
display: flex;
justify-content: space-between;
align-items: center;
.pre,.next{
font-size: 14px;
.iconfont{
font-size: 14px;
}
}
.salay{
font-size: 26px;
letter-spacing: 2px;
}
}
p{
text-align: center;
margin-top: 15px;
.cash{
width: 115px;
height: 32px;
line-height: 30px;
border: 2px solid #f9fdff;
border-radius: 16px;
display: inline-block;
color: #fff;
text-align: center;
cursor: pointer;
}
}
}
}
.content_wrapper{
margin: 15px 10px 0;
min-height: 100%;
padding-bottom: 10px;
.part{
margin-bottom: 10px;
background: #fff;
padding:0 6px 0 10px;
border-radius: 8px;
padding-bottom: 10px;
.item{
border-bottom: 1px #f4f4f4 solid;
padding: 10px 0 0 0;
.title{
font-size: 15px;
display: flex;
justify-content: space-between;
align-items: center;
color: #4e4e4e;
font-weight: 600;
}
.item_detail{
color: #7c7c7c;
display: flex;
justify-content: space-between;
align-items: center;
height: 30px;
margin-left: 15px;
border-bottom: 1px #f4f4f4 solid;
.iconfont{
font-size: 12px;
color: #333;
margin-left: 6px;
font-weight: normal;
}
}
.item_detail:last-child{
border-bottom:0;
}
.red{
color:#f8002e;
font-weight: bold;
font-size: 15px;
}
}
.item:last-child{
border-bottom: none;
}
}
}
}
.mask{
position: fixed;
margin: 0 auto;
z-index: 3000;
top: 0;
right: 0;
left: 0;
bottom: 0;
min-width: 320px;
max-width: 640px;
background: rgba(0,0,0,.6);
}
.tax_mask{
width: 90%;
position: absolute;
top: 26%;
bottom: 0;
left: 0;
right: 0;
height: 300px;
background: #f6f6f6;
margin: 0 auto;
z-index: 3002;
border-radius: 10px;
.close{
color: #fff;
background: transparent;
margin-top: -30px;
opacity: 1;
}
}
.mask_title{
display: flex;
color: #1b5b99;
justify-content: space-between;
align-items: center;
padding: 10px;
div:nth-child(1){
font-size: 18px;
}
}
.tax_content{
.tax_item{
margin: 10px;
padding: 10px;
background: #fff;
div{
height: 30px;
line-height: 30px;
display: flex;
justify-content: space-between;
}
.red{
color:#f8002e;
font-weight: bold;
font-size: 15px;
}
}
}
\ No newline at end of file
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { SalaryDetailComponent } from './salary-detail.component';
describe('SalaryDetailComponent', () => {
let component: SalaryDetailComponent;
let fixture: ComponentFixture<SalaryDetailComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ SalaryDetailComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(SalaryDetailComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
<div class="wrapper">
<div class="header">
<div class="iconfont icon-fanhui" (click)="goBack()"></div>
<div>{{salaryName}}</div>
</div>
<div class="content_wrapper" *ngIf="type=='1'">
<div class="policy_item" *ngFor="let policyItem of policyList">
<div class="icon_bolck"><i class="iconfont icon-money-more"></i></div>
<div class="line_item">
<div>投保人姓名:{{policyItem.Insurance_Cust}}</div>
<div>保险公司:{{policyItem.Customer.substr(0,10)}}</div>
<div>生效时间:{{policyItem.EffectiveDate}}</div>
<div>保单号:{{policyItem.Policyno}}</div>
<div *ngIf="policyItem.status">保费:{{policyItem.YearPREMIUM | number: "1.2-2"}}</div>
<div *ngIf="policyItem.status">FYC/RYC:{{policyItem['FYC/RYC'] | number: "1.2-2"}}</div>
<div *ngIf="policyItem.status">职阶率:{{policyItem.Rate}}%</div>
<div *ngIf="policyItem.status">体系:{{policyItem.SaleSystem}}</div>
<div *ngIf="policyItem.status">经纪人:{{policyItem.Salestaff}}</div>
</div>
<div class="money" (click)="shrink(policyItem)">
¥{{policyItem.Commission | number: "1.2-2"}}
<div style="width: 15px;height: 15px;position: absolute;right: -20px;top: 8px;"
[ngStyle]="{'transform': policyItem.status ? 'rotate(180deg)' : 'rotate(0)','top':policyItem.status?'8px':'0'}">
<span class="iconfont icon-xiangxia" ></span>
</div>
</div>
</div>
</div>
<div class="content_wrapper" *ngIf="type=='2'">
<div class="policy_item" *ngFor="let systemItem of systemList">
<div class="icon_bolck" style="top: 28px;"><i class="iconfont icon-money-more"></i></div>
<div class="line_item">
<div>体系名称:{{systemItem.SaleSystem}}</div>
<div>体系FYC/RYC:{{systemItem['FYC/RYC'] | number: "1.2-2"}}</div>
<div>佣金比率:{{systemItem.Rate}}%</div>
</div>
<div class="money" style="top: 30px;right: 10px;">
¥{{(systemItem['FYC/RYC']) * (systemItem.Rate/100 ) | number: "1.2-2"}}
</div>
</div>
</div>
<div class="content_wrapper" *ngIf="type=='3'">
<div class="policy_item" style="padding-bottom: 10px;">
<div class="icon_bolck" style="top: 14px;"><i class="iconfont icon-money-more"></i></div>
<div class="line_item">
<div>{{remarkInfo?.CommissionName}}: {{remarkInfo?.Commission | number: "1.2-2"}}</div>
<div>备注:{{remarkInfo?.Comments}}</div>
</div>
<div class="money" style="top: 20px;right: 10px;">
¥{{remarkInfo?.Commission | number: "1.2-2"}}
</div>
</div>
</div>
<div class="content_wrapper" *ngIf="type=='4'">
<ul style="padding:20px 8px 68px 10px;" *ngIf="customerFortuneWithdraws?.length>0">
<li *ngFor="let customerFortuneItem of customerFortuneWithdraws">
<div class="orderInfoItem">
<div>
<div>
<span>{{customerFortuneItem.planName ? customerFortuneItem.planName :customerFortuneItem.productName}}</span>
</div>
<div style="font-size: 14px;color: #b3b3b3;">
<span>投保人:{{customerFortuneItem.holderName}}</span>
</div>
<div style="font-size: 14px;color: #b3b3b3;">
<span>申请日期:{{customerFortuneItem.withdrawDate}}</span>
</div>
<div style="font-size: 14px;color: #b3b3b3;">
<span>发放日期:{{customerFortuneItem.payDate}}</span>
</div>
<div style="font-size: 14px;color: #b3b3b3;">
<span>备注:{{remarkInfo?.Comments}}</span>
</div>
</div>
<div class="referralAmount" style="color: rgb(255, 0, 0);">
¥ {{customerFortuneItem.referralAmount | number:'1.2-2'}}
</div>
</div>
</li>
</ul>
</div>
</div>
.wrapper{
background: #f6f6f6;
min-height: 100%;
.header{
padding:15px;
color: #fff;
background: #1b5b99;
display: flex;
align-items: baseline;
div:nth-child(1){
width: 36%;
}
div:nth-child(2){
width: 74%;
font-size: 20px;
}
}
.content_wrapper{
margin-left: 10px;
margin-right: 10px;
margin-top: 10px;
background: #f9fdff;
color: #4a4a4a;
.policy_item{
padding: 10px 10px 20px;
padding-left: 45px;
position: relative;
.line{
display: flex;
justify-content: space-between;
}
.icon_bolck{
border: 1px #dcdcdc solid;
width: 35px;
height: 35px;
position: absolute;
left: 3px;
top: 35px;
line-height: 30px;
text-align: center;
border-radius: 50%;
.iconfont{
color: #ff3500;
font-size: 22px;
position: relative;
top: 1px;
}
}
.money{
position: absolute;
right: 25px;
top: 50px;
}
}
}
.content_wrapper:last-child{
ul {
background: #f4f4f4;
min-height: 100%;
> li {
display: flex;
padding: 15px 10px;
border-radius: 6px;
margin-bottom: 15px;
background: #fff;
> div:first-child {
width: 30px;
margin-top: 2px;
}
> div:last-child {
flex: 1;
display: flex;
justify-content: space-between;
> div {
display: flex;
flex-direction: column;
}
.referralAmount {
font-weight: bold;
white-space: nowrap;
color: #ff0000;
}
}
}
}
}
}
\ No newline at end of file
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { SalaryFirstYearComponent } from './salary-first-year.component';
describe('SalaryFirstYearComponent', () => {
let component: SalaryFirstYearComponent;
let fixture: ComponentFixture<SalaryFirstYearComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ SalaryFirstYearComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(SalaryFirstYearComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute,Router } from "@angular/router";
import { MyService } from '../my.service';
@Component({
selector: 'ydlife-salary-first-year',
templateUrl: './salary-first-year.component.html',
styleUrls: ['./salary-first-year.component.scss']
})
export class SalaryFirstYearComponent implements OnInit {
status:boolean;
//判断跳转页用的
type:any;
//佣奖名称
salaryName:any;
//佣奖类型-》用来判断拿保单接口中的哪个数据
salaryType:any;
month:any;
years:any;
agent_id:any;
//保单列表
policyList:Array<any>;
//体系列表
systemList:Array<any>;
//备注
remarkInfo:any;
//其他加扣款列表
OtherCommissionList:Array<any>;
withdrawId:any;
customerFortuneWithdraws:Array<any>;
constructor(private activatedRoute: ActivatedRoute,private myService:MyService) { }
ngOnInit() {
this.type = this.activatedRoute.snapshot.queryParams.type?this.activatedRoute.snapshot.queryParams.type:null;
this.salaryName = this.activatedRoute.snapshot.queryParams.salaryName?this.activatedRoute.snapshot.queryParams.salaryName:null;
this.salaryType = this.activatedRoute.snapshot.paramMap.get('id');
this.years = this.activatedRoute.snapshot.queryParams.years?this.activatedRoute.snapshot.queryParams.years:null;
this.month = this.activatedRoute.snapshot.queryParams.month?this.activatedRoute.snapshot.queryParams.month:null;
this.agent_id = this.activatedRoute.snapshot.queryParams.agent_id?this.activatedRoute.snapshot.queryParams.agent_id:null;
this.searchStaffSalaryDetails();
}
goBack(){
history.go(-1);
}
/**
* salaryTaype
* 1.首年度销售佣金-》保单
* 2.续年度销售佣金-》保单
* 3.首年度辅导奖金-》保单
* 4.续年度辅导奖金-》保单
* 5.首年度绩效奖金-》体系
* 6.续年度绩效奖金-》体系
* 7.推介奖金-》保单
* 8.体系推介奖金-》体系
* 9.特别管理奖金-》保单
* 10.其它税前加扣款-》备注
* 11.公司激励奖金-》备注
* 12.加码奖金-》备注
* 13.季度奖金-》备注
* 14.银盾在线佣金-》H5
*/
searchStaffSalaryDetails(){
const param = {
years:this.years,
month:this.month,
agent_id:this.agent_id,
practitionerId:JSON.parse(localStorage.getItem('lifeCustomerInfo'))['practitionerId']
}
this.myService.searchStaffSalaryDetails(param).subscribe((res)=>{
if(res['data']){
if(this.salaryType == 1){
this.policyList = res['data']['FristYearCommissionList'];
}else if(this.salaryType == 2){
this.policyList = res['data']['RenewalYearCommissionList'];
}else if(this.salaryType == 3){
this.policyList = res['data']['FristYearCoachCommissionList'];
}else if(this.salaryType == 4){
this.policyList = res['data']['RenewalYearCoachCommissionList'];
}else if(this.salaryType == 5){
this.systemList = res['data']['FirstYearPerformanceCommissionList'];
}else if(this.salaryType == 6){
this.systemList = res['data']['RenewalYearPerformanceCommissionList'];
}else if(this.salaryType == 7){
this.policyList = res['data']['RecommendCommissionList'];
}else if(this.salaryType == 8){
this.systemList = res['data']['RecommendSystemCommissionList'];
}else if(this.salaryType == 9){
this.policyList = res['data']['SpecialManagementCommissionList'];
}else{
this.OtherCommissionList = res['data']['OtherCommissionList'];
for(let i=0;i<this.OtherCommissionList.length;i++){
if(this.salaryType == 10 && this.OtherCommissionList[i]['Project_Id'] == '91E8A0DD-8696-9964-CD35-AEBA6C8FDF19'){
this.remarkInfo = this.OtherCommissionList[i];
}else if(this.salaryType == 11 && this.OtherCommissionList[i]['Project_Id'] == '45C0E205-653A-641B-1A35-C5C4148B1DA6'){
this.remarkInfo = this.OtherCommissionList[i];
}else if(this.salaryType == 12 && this.OtherCommissionList[i]['Project_Id'] == 'FC664684-4CBB-E3EC-FEC4-02FDDCAB4A02'){
this.remarkInfo = this.OtherCommissionList[i];
}else if(this.salaryType == 13 && this.OtherCommissionList[i]['Project_Id'] == '105B9197-7B64-5AE6-AC47-C15AA857DDC5'){
this.remarkInfo = this.OtherCommissionList[i];
}else if(this.salaryType == 14 && this.OtherCommissionList[i]['Project_Id'] == '12C24EDF-83D7-081C-AE2C-085031C4DCAF'){
//银盾在线佣金
this.remarkInfo = this.OtherCommissionList[i];
this.withdrawId = this.OtherCommissionList[i]['withdrawedId'];
this.fortuneWithdrawListQuery()
}
}
}
}
})
}
//查询银盾在线佣金对应的保单
fortuneWithdrawListQuery() {
const param = {
customerId:JSON.parse(localStorage.getItem('lifeCustomerInfo'))['customerId'],
paginationInfo: {noLimitFlag: "CONFIRM"},
withdrawStatus: "drawn",
withdrawId:this.withdrawId
}
if(this.withdrawId){
this.myService.fortuneWithdrawListQuery(param).subscribe(res => {
if (res['success']) {
this.customerFortuneWithdraws = res['data']['customerFortuneWithdraws'];
}
});
}else{
this.customerFortuneWithdraws = [];
}
}
shrink(policyItem){
policyItem.status = !policyItem.status;
}
}
<div class="salesWrapper"> <div class="salesWrapper">
<div class="salesContent"> <ul class="tab">
<div class="salesItem" *ngFor="let payScaleItem of payScaleInfos" (click)="getPdf(payScaleItem.monShId,payScaleItem.pdfOssPath)"> <li class="selected" *ngFor="let tabItem of tabList" (click)="selectTab(tabItem.id)"
[ngClass]="{selected:selectedId === tabItem.id}"
>
<div style="position: relative;">
<h3>{{tabItem.name}}</h3>
</div>
</li>
</ul>
<div class="salesContent" *ngIf="selectedId == 0">
<div class="salesItem" *ngFor="let payScaleItem of payScaleInfos" (click)="enterDetail(payScaleItem.years,payScaleItem.month,payScaleItem.loginName)">
<div class="icon_bolck"><span class="iconfont icon-xinzidan"></span></div> <div class="icon_bolck"><span class="iconfont icon-xinzidan"></span></div>
<div style="padding-left: 45px;padding-right: 20px;">
<div class="line"> <div class="line">
<div>薪资日期</div> <span>薪资日期</span>
<div>{{lifeCommonService.getDate(payScaleItem.monDtlPeriod)}}</div> <div>{{payScaleItem.years}}年{{payScaleItem.month}}月</div>
</div> </div>
<div class="line"> <div class="line">
<div>流水编号</div> <span>本期实发佣金</span>
<div>{{payScaleItem.monShId}}</div> <div class="price" *ngIf="!payScaleItem.pdfOssPath">¥{{payScaleItem.monDtlRAmount | number: "1.2-2"}}</div>
</div>
</div>
<div class="iconfont icon-ar-r"
style="width: 20px;height: 20px;position: absolute;right: 2px;top: 23px;"></div>
</div>
<div style="text-align: center;margin-top: 20px;" *ngIf="payScaleInfos?.length<=0">暂无数据</div>
</div>
<div id="salesContent" *ngIf="selectedId == 2">
<div class="salesItem" *ngFor="let payScaleItem of payScaleInfos" (click)="getPdf(payScaleItem.monShId,payScaleItem.pdfOssPath)">
<div class="icon_bolck"><span class="iconfont icon-xinzidan"></span></div>
<div class="line">
<div>薪资日期</div>
<div>{{payScaleItem.years}}年{{payScaleItem.month}}月</div>
</div> </div>
<div class="line"> <div class="line">
<span>应发佣金</span> <span>应发佣金</span>
...@@ -35,6 +59,7 @@ ...@@ -35,6 +59,7 @@
</div> </div>
<div style="text-align: center;margin-top: 20px;" *ngIf="payScaleInfos?.length<=0">暂无数据</div> <div style="text-align: center;margin-top: 20px;" *ngIf="payScaleInfos?.length<=0">暂无数据</div>
</div> </div>
</div> </div>
<ydlife-toast *ngIf="toastDialog" [toastInfo]="toastInfo"></ydlife-toast> <ydlife-toast *ngIf="toastDialog" [toastInfo]="toastInfo"></ydlife-toast>
\ No newline at end of file
...@@ -2,46 +2,92 @@ ...@@ -2,46 +2,92 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
overflow: auto; overflow: auto;
.top{ background: #f5f5f5;
display: flex; .tab {
justify-content: space-between;
align-items: center;
.tab{
display: flex; display: flex;
list-style: none; list-style: none;
/* margin-bottom: 5px; */ justify-content: space-around;
margin: 10px 0px; background:#fff;
padding:0 2%; margin-bottom: 10px;
justify-content: space-between;
li { li {
line-height: 50px;
height: 50px;
text-align: center; text-align: center;
// border: 1px #a9aabb solid; h3 {
// border-radius: 20px; font-weight: normal;
font-size: 16px; font-size: 16px;
} }
li.selected{ }
// background-color: #ff5a32; li.selected {
// color: #fff; border-bottom: 3px #e10d0d solid;
// border: 1px #f0f0f0 solid; h3{
// border: 1px #e10d0d solid; color: #e10d0d;
border-bottom: 2px #e10d0d solid; }
}
}
.salesContent{
.salesItem{
padding: 10px;
position: relative;
margin-bottom: 15px;
background: #fff;
.icon_bolck{
border: 1px #dcdcdc solid;
width: 35px;
height: 35px;
position: absolute;
left: 13px;
top: 15px;
line-height: 30px;
text-align: center;
border-radius: 50%;
.iconfont{
color: #ff3500;
font-size: 22px;
position: relative;
top: 1px;
}
}
.line{
display: flex;
justify-content: space-between;
align-items: center;
font-size: 14px;
.price{
font-size: 16px;
color: #ff3500;
font-weight: bold; font-weight: bold;
} }
} }
.tab:nth-child(1){ .salary_down{
width: 50%; border-top: 1px #eee solid;
padding: 10px 0 0;
display: flex;
justify-content: center;
align-items: center;
margin-top: 5px;
img{
width: 20px;
height: 20px;
margin-right: 15px;
}
} }
.tab:nth-child(2){ .long_line{
width: 28%; font-size: 12px;
} }
} }
.salesContent{ .salesItem:last-child{
border-bottom: none;
}
}
#salesContent{
.salesItem{ .salesItem{
border-bottom: 1px #dcdcdc solid; border-bottom: 1px #dcdcdc solid;
padding: 10px; padding: 10px;
padding-left: 45px; padding-left: 45px;
position: relative; position: relative;
background: #fff;
.icon_bolck{ .icon_bolck{
border: 1px #dcdcdc solid; border: 1px #dcdcdc solid;
width: 35px; width: 35px;
...@@ -80,4 +126,5 @@ ...@@ -80,4 +126,5 @@
border-bottom: none; border-bottom: none;
} }
} }
} }
\ No newline at end of file
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { MyService } from '../my.service'; import { MyService } from '../my.service';
import { LifeCommonService } from '../../common/life-common.service'; import { LifeCommonService } from '../../common/life-common.service';
import { ActivatedRoute,Router } from "@angular/router";
@Component({ @Component({
selector: 'ydlife-salary', selector: 'ydlife-salary',
...@@ -8,30 +9,57 @@ import { LifeCommonService } from '../../common/life-common.service'; ...@@ -8,30 +9,57 @@ import { LifeCommonService } from '../../common/life-common.service';
styleUrls: ['./salary.component.scss'] styleUrls: ['./salary.component.scss']
}) })
export class SalaryComponent implements OnInit { export class SalaryComponent implements OnInit {
practitionerIdEG: any;
practitionerId: any; practitionerId: any;
payScaleInfos: Array<any>; payScaleInfos: Array<any>;
//控制弹框 //控制弹框
toastDialog: boolean; toastDialog: boolean;
toastInfo: any; toastInfo: any;
constructor(private myService: MyService, public lifeCommonService: LifeCommonService) { } tabList:Array<any>;
selectedId:any = 0;
constructor(private activatedRoute: ActivatedRoute,private myService: MyService,
public lifeCommonService: LifeCommonService,
private router: Router) { }
ngOnInit() { ngOnInit() {
this.practitionerIdEG = JSON.parse(localStorage.getItem('lifeCustomerInfo'))['practitionerIdEG']; const title = this.activatedRoute.snapshot.data[0]['title'];
this.lifeCommonService.setTitle(title);
this.practitionerId = JSON.parse(localStorage.getItem('lifeCustomerInfo'))['practitionerId'] this.practitionerId = JSON.parse(localStorage.getItem('lifeCustomerInfo'))['practitionerId']
this.payScaleListQuery(); this.payScaleListQuery();
this.tabList = [
{name:'2021年',id:0},
{name:'历史薪资',id:2}
]
} }
payScaleListQuery() { payScaleListQuery() {
this.myService.payScaleListQuery({ practitionerIdEG: this.practitionerIdEG,practitionerId:this.practitionerId }).subscribe((res) => { this.myService.payScaleListQuery({ practitionerId:this.practitionerId,isHistory: this.selectedId}).subscribe((res) => {
if (res['success']) { if (res['success']) {
this.payScaleInfos = res['data']['payScaleInfos']; if(this.selectedId == 0){
this.payScaleInfos = res['data']['payScaleInfos'].filter((item)=>{
return item.years == 2021 && item.month == 6
});
}else{
this.payScaleInfos = res['data']['payScaleInfos'].filter((item)=>{
return item.monDtlPeriod != '2021-06'
});
}
} else { } else {
this.payScaleInfos = []; this.payScaleInfos = [];
} }
}) })
} }
selectTab(tabId){
this.selectedId = tabId;
this.payScaleListQuery();
}
//进入薪资详情
enterDetail(years,month,agent_id){
this.router.navigate(['/salary_detail'],{ queryParams: { years:years,month:month,agent_id:agent_id} });
}
//下载pdf //下载pdf
getPdf(monShId,url) { getPdf(monShId,url) {
if(url){ if(url){
...@@ -56,6 +84,7 @@ export class SalaryComponent implements OnInit { ...@@ -56,6 +84,7 @@ export class SalaryComponent implements OnInit {
} }
}) })
} }
} }
} }
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -6,6 +6,34 @@ ...@@ -6,6 +6,34 @@
"description": "", "description": "",
"glyphs": [ "glyphs": [
{ {
"icon_id": "6832329",
"name": "手机",
"font_class": "shouji",
"unicode": "e643",
"unicode_decimal": 58947
},
{
"icon_id": "1288620",
"name": "公司网址",
"font_class": "gongsiwangzhi",
"unicode": "e616",
"unicode_decimal": 58902
},
{
"icon_id": "1576565",
"name": "邮箱",
"font_class": "youxiang1",
"unicode": "e691",
"unicode_decimal": 59025
},
{
"icon_id": "15668768",
"name": "问号",
"font_class": "wenhao",
"unicode": "e68e",
"unicode_decimal": 59022
},
{
"icon_id": "7186603", "icon_id": "7186603",
"name": "返回", "name": "返回",
"font_class": "fanhui", "font_class": "fanhui",
...@@ -48,13 +76,6 @@ ...@@ -48,13 +76,6 @@
"unicode_decimal": 59183 "unicode_decimal": 59183
}, },
{ {
"icon_id": "4303877",
"name": "人",
"font_class": "ren4",
"unicode": "e6c5",
"unicode_decimal": 59077
},
{
"icon_id": "649696", "icon_id": "649696",
"name": "人", "name": "人",
"font_class": "ren1", "font_class": "ren1",
...@@ -62,20 +83,6 @@ ...@@ -62,20 +83,6 @@
"unicode_decimal": 59003 "unicode_decimal": 59003
}, },
{ {
"icon_id": "1120975",
"name": "人",
"font_class": "ren111",
"unicode": "e67d",
"unicode_decimal": 59005
},
{
"icon_id": "6539430",
"name": "人",
"font_class": "ren2",
"unicode": "e685",
"unicode_decimal": 59013
},
{
"icon_id": "4908034", "icon_id": "4908034",
"name": "薪资单", "name": "薪资单",
"font_class": "xinzidan", "font_class": "xinzidan",
...@@ -111,13 +118,6 @@ ...@@ -111,13 +118,6 @@
"unicode_decimal": 58998 "unicode_decimal": 58998
}, },
{ {
"icon_id": "4989831",
"name": "精选产品库",
"font_class": "jingxuanchanpinku",
"unicode": "e671",
"unicode_decimal": 58993
},
{
"icon_id": "8533810", "icon_id": "8533810",
"name": "团队", "name": "团队",
"font_class": "tuandui", "font_class": "tuandui",
...@@ -153,20 +153,6 @@ ...@@ -153,20 +153,6 @@
"unicode_decimal": 59071 "unicode_decimal": 59071
}, },
{ {
"icon_id": "11640918",
"name": "奖牌",
"font_class": "jiangpai",
"unicode": "e796",
"unicode_decimal": 59286
},
{
"icon_id": "1793415",
"name": "给父母",
"font_class": "geifumu",
"unicode": "e66c",
"unicode_decimal": 58988
},
{
"icon_id": "9874550", "icon_id": "9874550",
"name": "KHCFDC_佣金", "name": "KHCFDC_佣金",
"font_class": "yongjin", "font_class": "yongjin",
...@@ -188,76 +174,6 @@ ...@@ -188,76 +174,6 @@
"unicode_decimal": 58987 "unicode_decimal": 58987
}, },
{ {
"icon_id": "7927930",
"name": "移动互联网",
"font_class": "yidonghulianwang2",
"unicode": "e700",
"unicode_decimal": 59136
},
{
"icon_id": "3584630",
"name": "字典",
"font_class": "zidian",
"unicode": "e669",
"unicode_decimal": 58985
},
{
"icon_id": "12084324",
"name": "字典",
"font_class": "zidian1",
"unicode": "e66a",
"unicode_decimal": 58986
},
{
"icon_id": "10795268",
"name": "资料库",
"font_class": "ziliaoku",
"unicode": "e667",
"unicode_decimal": 58983
},
{
"icon_id": "10796984",
"name": "资料库",
"font_class": "ziliaoku1",
"unicode": "e668",
"unicode_decimal": 58984
},
{
"icon_id": "9345059",
"name": "海报",
"font_class": "haibao-1",
"unicode": "e665",
"unicode_decimal": 58981
},
{
"icon_id": "12513277",
"name": "海报",
"font_class": "haibao",
"unicode": "e666",
"unicode_decimal": 58982
},
{
"icon_id": "11864398",
"name": "诊所中心",
"font_class": "zhensuozhongxin",
"unicode": "e663",
"unicode_decimal": 58979
},
{
"icon_id": "508266",
"name": "小诊所",
"font_class": "xiaozhensuo",
"unicode": "e64c",
"unicode_decimal": 58956
},
{
"icon_id": "1288111",
"name": "移动互联网",
"font_class": "yidonghulianwang",
"unicode": "e6c6",
"unicode_decimal": 59078
},
{
"icon_id": "3563994", "icon_id": "3563994",
"name": "执业证号", "name": "执业证号",
"font_class": "zhiyezhenghao", "font_class": "zhiyezhenghao",
...@@ -265,13 +181,6 @@ ...@@ -265,13 +181,6 @@
"unicode_decimal": 59194 "unicode_decimal": 59194
}, },
{ {
"icon_id": "4293900",
"name": "线索",
"font_class": "xiansuo",
"unicode": "e64e",
"unicode_decimal": 58958
},
{
"icon_id": "6134151", "icon_id": "6134151",
"name": "职业", "name": "职业",
"font_class": "zhiye", "font_class": "zhiye",
...@@ -279,13 +188,6 @@ ...@@ -279,13 +188,6 @@
"unicode_decimal": 58959 "unicode_decimal": 58959
}, },
{ {
"icon_id": "9855968",
"name": "AI",
"font_class": "AI",
"unicode": "e677",
"unicode_decimal": 58999
},
{
"icon_id": "11170142", "icon_id": "11170142",
"name": "保单样本", "name": "保单样本",
"font_class": "baodanyangben", "font_class": "baodanyangben",
...@@ -307,13 +209,6 @@ ...@@ -307,13 +209,6 @@
"unicode_decimal": 58962 "unicode_decimal": 58962
}, },
{ {
"icon_id": "13547739",
"name": "海报组件",
"font_class": "haibaozujian",
"unicode": "e661",
"unicode_decimal": 58977
},
{
"icon_id": "6691793", "icon_id": "6691793",
"name": "加号", "name": "加号",
"font_class": "jiahao", "font_class": "jiahao",
...@@ -370,20 +265,6 @@ ...@@ -370,20 +265,6 @@
"unicode_decimal": 59054 "unicode_decimal": 59054
}, },
{ {
"icon_id": "3039718",
"name": "在线",
"font_class": "zaixian",
"unicode": "e643",
"unicode_decimal": 58947
},
{
"icon_id": "4584207",
"name": "分销 - 指纹",
"font_class": "zhiwen",
"unicode": "e644",
"unicode_decimal": 58948
},
{
"icon_id": "7534910", "icon_id": "7534910",
"name": "ai", "name": "ai",
"font_class": "ai", "font_class": "ai",
...@@ -391,13 +272,6 @@ ...@@ -391,13 +272,6 @@
"unicode_decimal": 59050 "unicode_decimal": 59050
}, },
{ {
"icon_id": "7940516",
"name": "职业类别",
"font_class": "zhiyeleibie",
"unicode": "e6e3",
"unicode_decimal": 59107
},
{
"icon_id": "11209327", "icon_id": "11209327",
"name": "公告", "name": "公告",
"font_class": "gonggao", "font_class": "gonggao",
...@@ -412,13 +286,6 @@ ...@@ -412,13 +286,6 @@
"unicode_decimal": 60755 "unicode_decimal": 60755
}, },
{ {
"icon_id": "845798",
"name": "券",
"font_class": "qian1",
"unicode": "e659",
"unicode_decimal": 58969
},
{
"icon_id": "5240462", "icon_id": "5240462",
"name": "皇冠 (1)", "name": "皇冠 (1)",
"font_class": "huangguan1", "font_class": "huangguan1",
...@@ -448,7 +315,7 @@ ...@@ -448,7 +315,7 @@
}, },
{ {
"icon_id": "4182385", "icon_id": "4182385",
"name": "AK-MN上传图片", "name": "AK-MN_上传图片",
"font_class": "mn_shangchuantupian", "font_class": "mn_shangchuantupian",
"unicode": "e640", "unicode": "e640",
"unicode_decimal": 58944 "unicode_decimal": 58944
...@@ -1203,13 +1070,6 @@ ...@@ -1203,13 +1070,6 @@
"unicode_decimal": 58965 "unicode_decimal": 58965
}, },
{ {
"icon_id": "1695188",
"name": "银行",
"font_class": "yinhang",
"unicode": "e616",
"unicode_decimal": 58902
},
{
"icon_id": "2098701", "icon_id": "2098701",
"name": "用户", "name": "用户",
"font_class": "yonghu", "font_class": "yonghu",
......
This source diff could not be displayed because it is too large. You can view the blob instead.

186 KB | W: | H:

685 KB | W: | H:

src/assets/images/card_opposite.jpg
src/assets/images/card_opposite.jpg
src/assets/images/card_opposite.jpg
src/assets/images/card_opposite.jpg
  • 2-up
  • Swipe
  • Onion skin

459 KB | W: | H:

114 KB | W: | H:

src/assets/images/list_01.png
src/assets/images/list_01.png
src/assets/images/list_01.png
src/assets/images/list_01.png
  • 2-up
  • Swipe
  • Onion skin

367 KB | W: | H:

95.4 KB | W: | H:

src/assets/images/list_03.png
src/assets/images/list_03.png
src/assets/images/list_03.png
src/assets/images/list_03.png
  • 2-up
  • Swipe
  • Onion skin

96.5 KB | W: | H:

47.8 KB | W: | H:

src/assets/images/loading_bg.png
src/assets/images/loading_bg.png
src/assets/images/loading_bg.png
src/assets/images/loading_bg.png
  • 2-up
  • Swipe
  • Onion skin

304 KB | W: | H:

106 KB | W: | H:

src/assets/images/online.jpg
src/assets/images/online.jpg
src/assets/images/online.jpg
src/assets/images/online.jpg
  • 2-up
  • Swipe
  • Onion skin
...@@ -171,6 +171,22 @@ ...@@ -171,6 +171,22 @@
}) })
} }
getknowledgeQry(); getknowledgeQry();
// (function() {
// if (typeof WeixinJSBridge == "object" && typeof WeixinJSBridge.invoke == "function") {
// handleFontSize();
// } else {
// document.addEventListener("WeixinJSBridgeReady", handleFontSize, false);
// }
// function handleFontSize() {
// // 设置网页字体为默认大小
// WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize' : 0 });
// // 重写设置网页字体大小的事件
// WeixinJSBridge.on('menu:setfont', function() {
// WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize' : 0 });
// });
// }
// })();
</script> </script>
</body> </body>
......
...@@ -14,7 +14,9 @@ html, body { ...@@ -14,7 +14,9 @@ html, body {
overflow-y: scroll; overflow-y: scroll;
-webkit-overflow-scrolling: touch; -webkit-overflow-scrolling: touch;
background: #fff; background: #fff;
// -webkit-text-size-adjust: 100% !important;
} }
ol, ul { ol, ul {
margin-top: 0; margin-top: 0;
margin-bottom: 0; margin-bottom: 0;
......
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