Commit c452f999 by sunchao

薪资单

parents c9414bb9 e02636a8
...@@ -4,9 +4,9 @@ ...@@ -4,9 +4,9 @@
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
"start": "ng serve --host 192.168.1.25 --port 4205", "start": "ng serve --host 192.168.1.25 --port 4205",
"buildDev": "ng build -c=dev --prod", "buildDev": "ng build -c=dev --prod --aot",
"buildStage": "ng build -c=stage --prod", "buildStage": "ng build -c=stage --prod --aot",
"buildProd": "ng build -c=production --prod", "buildProd": "ng build -c=production --prod --aot",
"test": "ng test", "test": "ng test",
"lint": "ng lint", "lint": "ng lint",
"e2e": "ng e2e" "e2e": "ng e2e"
......
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"
......
<div class="wrapper"> <div class="wrapper">
<div class="title" *ngIf="!approvalIdentity"> <div class="title">
欢迎加入银盾大家庭 欢迎加入银盾大家庭
</div> </div>
<div class="content"> <div class="content">
......
...@@ -113,7 +113,7 @@ export class MyCenterHomeComponent implements OnInit, AfterViewInit { ...@@ -113,7 +113,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 },
......
...@@ -49,6 +49,8 @@ import { SuggestionComponent } from './suggestion/suggestion.component'; ...@@ -49,6 +49,8 @@ import { SuggestionComponent } from './suggestion/suggestion.component';
import { EmployeeSalaryComponent } from './application-process/employee-salary/employee-salary.component'; import { EmployeeSalaryComponent } from './application-process/employee-salary/employee-salary.component';
import { HistoricalRankComponent } from './historical-rank/historical-rank.component'; import { HistoricalRankComponent } from './historical-rank/historical-rank.component';
import { TeamAreaPanelComponent } from './team-area-panel/team-area-panel.component'; import { TeamAreaPanelComponent } from './team-area-panel/team-area-panel.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: '银盾保险经纪 - 工作台' }] },
...@@ -78,7 +80,7 @@ const myRoutes: Routes = [ ...@@ -78,7 +80,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]},
...@@ -104,7 +106,10 @@ const myRoutes: Routes = [ ...@@ -104,7 +106,10 @@ const myRoutes: Routes = [
{ path: 'my_application',component:MyApplicationComponent,data: [{ title: '我的报聘' }],canActivate:[AuthGuard]}, { path: 'my_application',component:MyApplicationComponent,data: [{ title: '我的报聘' }],canActivate:[AuthGuard]},
{ path: 'suggestion',component:SuggestionComponent,data: [{ title: '问题反馈' }],canActivate:[AuthGuard]}, { path: 'suggestion',component:SuggestionComponent,data: [{ title: '问题反馈' }],canActivate:[AuthGuard]},
{ path: 'historical_rank', component: HistoricalRankComponent, canActivate: [AuthGuard] }, { path: 'historical_rank', component: HistoricalRankComponent, canActivate: [AuthGuard] },
{ path: 'team_area',component:TeamAreaPanelComponent, canActivate: [AuthGuard]} { path: 'team_area',component:TeamAreaPanelComponent, canActivate: [AuthGuard]},
{ path: 'salary_detail',component:SalaryDetailComponent,canActivate:[AuthGuard]},
{ path: 'salary_detail/:id',component:SalaryFirstYearComponent,canActivate:[AuthGuard]}
]; ];
@NgModule({ @NgModule({
......
...@@ -59,9 +59,11 @@ import { SuggestionComponent } from './suggestion/suggestion.component'; ...@@ -59,9 +59,11 @@ import { SuggestionComponent } from './suggestion/suggestion.component';
import { EmployeeSalaryComponent } from './application-process/employee-salary/employee-salary.component'; import { EmployeeSalaryComponent } from './application-process/employee-salary/employee-salary.component';
import { HistoricalRankComponent } from './historical-rank/historical-rank.component'; import { HistoricalRankComponent } from './historical-rank/historical-rank.component';
import { TeamAreaPanelComponent } from './team-area-panel/team-area-panel.component'; import { TeamAreaPanelComponent } from './team-area-panel/team-area-panel.component';
import { SalaryDetailComponent } from './salary-detail/salary-detail.component';
import { SalaryFirstYearComponent } from './salary-first-year/salary-first-year.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], 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, SalaryDetailComponent, SalaryFirstYearComponent],
imports: [ imports: [
CommonModule, CommonModule,
LifeCommonModule, LifeCommonModule,
......
...@@ -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 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">
¥30,000.25
</div>
</div>
<div class="content_wrapper">
<div class="part">
<div class="item">
<div class="title">个人销售(A)</div>
<div class="item_detail">
<a style="color:#2c67a0;" (click)="jumpToFirstYearSales()">首年度销售佣金</a>
<span class="red">18,505.00</span>
</div>
<div class="item_detail">
<span>首年度销售佣金</span>
<span class="red">225.00</span>
</div>
</div>
<div class="item">
<div class="title">销售管理(B)</div>
<div class="item_detail">
<span>首年度辅导奖金</span>
<span class="red">18,505.00</span>
</div>
<div class="item_detail">
<span>首年度辅导奖金</span>
<span class="red">225.00</span>
</div>
<div class="item_detail">
<span>特别管理奖金</span>
<span class="red">225.00</span>
</div>
</div>
<div class="item">
<div class="title">其他应税项目(C)</div>
<div class="item_detail">
<span>其他应税加扣款</span>
<span class="red">225.00</span>
</div>
</div>
<div class="item">
<div class="title">
<span>佣金合计(A+B+C)</span>
<span class="red">225.00</span>
</div>
</div>
</div>
<div class="part">
<div class="item">
<div class="title">
<span>代扣个人所得税/增值税/附加税(D)</span>
<span class="red">225.00</span>
</div>
</div>
</div>
<div class="part">
<div class="item">
<div class="title">
<span>本期实领(A+B+C-D)</span>
<span class="red">225.00</span>
</div>
</div>
</div>
<a style="color:#2c67a0;" (click)="lookTak()">点击查看个人所得税明细</a>
</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><span class="iconfont icon-zhuyishixiang"></span> 个人所得税政策</div>
</div>
<div class="tax_content">
<div class="tax_item">
<div>
<span>本期应税所得</span>
<span class="red">1200</span>
</div>
<div>
<span>年度累计应税所得</span>
<span class="red">600</span>
</div>
<div>
<span>预扣率</span>
<span class="red">50%</span>
</div>
</div>
<div class="tax_item">
<div>
<span>累计应扣所得税(A)</span>
<span class="red">500</span>
</div>
<div>
<span>累计已扣所得税(B)</span>
<span class="red">10</span>
</div>
<div>
<span>本期应扣所得税(A-B)</span>
<span class="red">490</span>
</div>
</div>
</div>
</div>
.wrapper{
background: #f6f6f6;
min-height: 100%;
.header{
padding:15px;
color: #fff;
background: #1b5b99;
.paginate{
display: flex;
justify-content: space-between;
align-items: center;
height: 40px;
}
.price{
font-size: 24px;
font-weight:bold;
text-align: center;
}
}
.content_wrapper{
margin: 15px 10px 0;
min-height: 100%;
.part{
margin-bottom: 10px;
background: #fff;
padding:0 10px;
border-radius: 8px;
.item{
border-bottom: 1px #f4f4f4 solid;
padding: 10px 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;
}
.red{
color:#f8002e;
font-weight: bold;
font-size: 15px;
}
}
}
}
}
.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();
});
});
import { Component, OnInit } from '@angular/core';
import { LifeCommonService } from '../../common/life-common.service';
import { ActivatedRoute,Router } from "@angular/router";
@Component({
selector: 'ydlife-salary-detail',
templateUrl: './salary-detail.component.html',
styleUrls: ['./salary-detail.component.scss']
})
export class SalaryDetailComponent implements OnInit {
monDtlPeriod:string;
takFlag:boolean = false;
constructor(public lifeCommonService: LifeCommonService,
private activatedRoute: ActivatedRoute,
private router:Router) { }
ngOnInit() {
this.monDtlPeriod = this.activatedRoute.snapshot.queryParams.monDtlPeriod?this.activatedRoute.snapshot.queryParams.monDtlPeriod:null;
this.lifeCommonService.setTitle(`${this.lifeCommonService.getDate(this.monDtlPeriod)}本期实发佣金`);
}
lookTak(){
this.takFlag = true;
console.log(this.takFlag)
}
jumpToFirstYearSales(){
this.router.navigate([`/salary_detail/${this.monDtlPeriod}`]);
}
}
<div class="wrapper">
<div class="header">
<div class="iconfont icon-fanhui"></div>
<div>首年销售奖金</div>
</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;
}
}
}
\ 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';
@Component({
selector: 'ydlife-salary-first-year',
templateUrl: './salary-first-year.component.html',
styleUrls: ['./salary-first-year.component.scss']
})
export class SalaryFirstYearComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}
<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)"
<div class="icon_bolck"><span class="iconfont icon-xinzidan"></span></div> [ngClass]="{selected:selectedId === tabItem.id}"
<div class="line"> >
<div>薪资日期</div> <div style="position: relative;">
<div>{{lifeCommonService.getDate(payScaleItem.monDtlPeriod)}}</div> <h3>{{tabItem.name}}</h3>
</div>
<div class="line">
<div>流水编号</div>
<div>{{payScaleItem.monShId}}</div>
</div>
<div class="line">
<span>应发佣金</span>
<div class="price" *ngIf="!payScaleItem.pdfOssPath">¥{{payScaleItem.monDtlAmount | number: "1.2-2"}}</div>
<div *ngIf="payScaleItem.pdfOssPath">直接查看薪资单明细</div>
</div>
<div class="line">
<span>扣除税</span>
<div class="price" *ngIf="!payScaleItem.pdfOssPath">¥{{(payScaleItem.monDtlAmount-payScaleItem.monDtlRAmount) | number: "1.2-2"}}</div>
<div class="price" *ngIf="payScaleItem.pdfOssPath">-</div>
</div>
<div class="line">
<span>实发佣金</span>
<div class="price" *ngIf="!payScaleItem.pdfOssPath">¥{{payScaleItem.monDtlRAmount | number: "1.2-2"}}</div>
<div *ngIf="payScaleItem.pdfOssPath">直接查看薪资单明细</div>
</div> </div>
<div class="line"> </li>
<div></div> </ul>
<div> <div class="salesContent">
薪资单明细 <div class="salesItem" *ngFor="let payScaleItem of payScaleInfos">
<span class="iconfont icon-xiazai" style="color:#ff3500;margin-left: 5px;"></span> <div (click)="enterDetail(payScaleItem.monDtlPeriod)">
<div class="line" style="font-weight: bold;font-size: 16px;">
<span>{{lifeCommonService.getDate(payScaleItem.monDtlPeriod)}}实发佣金</span>
<div class="price" *ngIf="!payScaleItem.pdfOssPath">¥{{payScaleItem.monDtlRAmount | number: "1.2-2"}}</div>
<div *ngIf="payScaleItem.pdfOssPath">直接查看薪资单明细</div>
</div>
<div class="line">
<div>流水编号</div>
<div>{{payScaleItem.monShId}}</div>
</div>
<div class="line">
<span>应发佣金</span>
<div class="price" *ngIf="!payScaleItem.pdfOssPath">¥{{payScaleItem.monDtlAmount | number: "1.2-2"}}</div>
<div *ngIf="payScaleItem.pdfOssPath">直接查看薪资单明细</div>
</div> </div>
<div class="line">
<span>扣除税</span>
<div class="price" *ngIf="!payScaleItem.pdfOssPath">¥{{(payScaleItem.monDtlAmount-payScaleItem.monDtlRAmount) | number: "1.2-2"}}</div>
<div class="price" *ngIf="payScaleItem.pdfOssPath">-</div>
</div>
</div>
<div class="salary_down" (click)="getPdf(payScaleItem.monShId,payScaleItem.pdfOssPath)">
<img src="assets/images/salary_download.png" alt="下载"/>
薪资单明细
</div> </div>
</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>
......
...@@ -2,69 +2,39 @@ ...@@ -2,69 +2,39 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
overflow: auto; overflow: auto;
.top{ background: #f5f5f5;
.tab {
display: flex; display: flex;
justify-content: space-between; list-style: none;
align-items: center; justify-content: space-around;
.tab{ background:#fff;
display: flex; margin-bottom: 10px;
list-style: none; li {
/* margin-bottom: 5px; */ line-height: 50px;
margin: 10px 0px; height: 50px;
padding:0 2%; text-align: center;
justify-content: space-between; h3 {
li { font-weight: normal;
text-align: center; font-size: 16px;
// border: 1px #a9aabb solid;
// border-radius: 20px;
font-size: 16px;
} }
li.selected{
// background-color: #ff5a32;
// color: #fff;
// border: 1px #f0f0f0 solid;
// border: 1px #e10d0d solid;
border-bottom: 2px #e10d0d solid;
font-weight: bold;
}
}
.tab:nth-child(1){
width: 50%;
} }
.tab:nth-child(2){ li.selected {
width: 28%; border-bottom: 3px #e10d0d solid;
h3{
color: #e10d0d;
}
} }
} }
.salesContent{ .salesContent{
.salesItem{ .salesItem{
border-bottom: 1px #dcdcdc solid;
padding: 10px; padding: 10px;
padding-left: 45px;
position: relative; position: relative;
.icon_bolck{ margin-bottom: 15px;
border: 1px #dcdcdc solid; background: #fff;
width: 35px;
height: 35px;
position: absolute;
left: 3px;
top: 50px;
line-height: 30px;
text-align: center;
border-radius: 50%;
.iconfont{
color: #ff3500;
font-size: 22px;
position: relative;
top: 1px;
}
}
.line{ .line{
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
// height: 20px;
font-size: 14px; font-size: 14px;
.price{ .price{
font-size: 16px; font-size: 16px;
...@@ -72,10 +42,24 @@ ...@@ -72,10 +42,24 @@
font-weight: bold; font-weight: bold;
} }
} }
.salary_down{
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;
}
}
.long_line{ .long_line{
font-size: 12px; font-size: 12px;
} }
} }
.salesItem:last-child{ .salesItem:last-child{
border-bottom: none; border-bottom: none;
} }
......
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',
...@@ -14,12 +15,22 @@ export class SalaryComponent implements OnInit { ...@@ -14,12 +15,22 @@ export class SalaryComponent implements OnInit {
//控制弹框 //控制弹框
toastDialog: boolean; toastDialog: boolean;
toastInfo: any; toastInfo: any;
constructor(private myService: MyService, public lifeCommonService: LifeCommonService) { } tabList:Array<any>;
selectedId:any = 1;
constructor(private activatedRoute: ActivatedRoute,private myService: MyService,
public lifeCommonService: LifeCommonService,
private router: Router) { }
ngOnInit() { ngOnInit() {
const title = this.activatedRoute.snapshot.data[0]['title'];
this.lifeCommonService.setTitle(title);
this.practitionerIdEG = JSON.parse(localStorage.getItem('lifeCustomerInfo'))['practitionerIdEG']; this.practitionerIdEG = JSON.parse(localStorage.getItem('lifeCustomerInfo'))['practitionerIdEG'];
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:1},
{name:'历史薪资',id:2}
]
} }
payScaleListQuery() { payScaleListQuery() {
...@@ -58,4 +69,14 @@ export class SalaryComponent implements OnInit { ...@@ -58,4 +69,14 @@ export class SalaryComponent implements OnInit {
} }
} }
selectTab(tabId){
this.selectedId = tabId;
}
//进入薪资详情
enterDetail(monDtlPeriod){
this.router.navigate(['/salary_detail'],{ queryParams: { monDtlPeriod:monDtlPeriod} });
}
} }
...@@ -47,8 +47,8 @@ ...@@ -47,8 +47,8 @@
{{i+1}} {{i+1}}
</li> </li>
<li class="name">{{performanceItem.name}}</li> <li class="name">{{performanceItem.name}}</li>
<li class="fyp remark">¥{{performanceItem.fyp | number: "1.0-2"}}</li> <li class="fyp remark">¥{{performanceItem.fyp | number: "1.2-2"}}</li>
<li class="fyc remark">¥{{performanceItem.fyc | number: "1.0-2"}}</li> <li class="fyc remark">¥{{performanceItem.fyc | number: "1.2-2"}}</li>
<li class="count remark">{{performanceItem.count}}</li> <li class="count remark">{{performanceItem.count}}</li>
</ul> </ul>
</div> </div>
......

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
...@@ -153,6 +153,22 @@ ...@@ -153,6 +153,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