Commit 9314f17a by sunchao

合同条款的同意10秒后能点&审批流程接口优化对接&吐槽箱

parent ba0ed5a1
......@@ -15,7 +15,7 @@ export class EmployQuery {
public subsystemOwnerId?:number,
public subsystemOwner?:string,
public branchId?:number,
public branch?:string,
public branch?:string
) {
}
}
\ No newline at end of file
......@@ -48,7 +48,9 @@ export class BankCardComponent implements OnInit {
}
this.myService.saveBankAccount(param).subscribe((res)=>{
if(res['success']){
this.router.navigate(['/personal_statement'],{ queryParams: { hiringBasicInfoId:this.hiringBasicInfoId} });
// this.router.navigate(['/personal_statement'],{ queryParams: { hiringBasicInfoId:this.hiringBasicInfoId} });
this.router.navigate(['/employee_salary'],{ queryParams: { hiringBasicInfoId:this.hiringBasicInfoId} });
}else{
this.toastDialog = true;
this.toastInfo = {
......@@ -102,7 +104,8 @@ export class BankCardComponent implements OnInit {
}
viewNext(){
this.router.navigate(['/personal_statement'],{ queryParams: { hiringBasicInfoId:this.hiringBasicInfoId,approvalIdentity:this.approvalIdentity} });
this.router.navigate(['/employee_salary'],{ queryParams: { hiringBasicInfoId:this.hiringBasicInfoId,approvalIdentity:this.approvalIdentity} });
}
goBack(){
......
......@@ -82,7 +82,7 @@
保存并下一步
</footer>
<div id="page" *ngIf="approvalIdentity">
<div routerLink="/approval_list">上一页</div>
<div (click)="goBack()">上一页</div>
<div (click)="viewNext()">下一页</div>
</div>
</div>
......
......@@ -22,6 +22,7 @@ export class EmployeeBasicInfoComponent implements OnInit {
minDate:any = new Date('1900-01-01');
maxDate:any = new Date();
approvalIdentity:any;
//通过0,拒绝-1,已填完-2
approveStatus:any;
constructor(private activatedRoute: ActivatedRoute,
private router: Router,public lifeCommonService:LifeCommonService,
......@@ -258,6 +259,10 @@ export class EmployeeBasicInfoComponent implements OnInit {
})
}
goBack(){
history.go(-1)
}
viewNext(){
this.router.navigate(['/work_experience'],{ queryParams: { hiringBasicInfoId:this.hiringBasicInfoId,approvalIdentity:this.approvalIdentity} });
}
......
<div class="wrapper">
<div class="title">
<div><span class="line"></span>薪资单上传</div>
<span class="page_mark"> 5/8</span>
</div>
<div class="content">
<div class="photo_wrapper" (click)="selectPic()" *ngIf="!vxUrl">
<img src="assets/images/camera.png" alt="" style="width: 29px;height: 29px;margin-bottom: 20px;"/>
<div>点击添加</div>
</div>
<img alt="个人照片" src="{{vxUrl}}" *ngIf="vxUrl" (click)="selectPic()">
<ul class="tips">
<li>如果报聘职阶为A3(业务总监),在最近三年内,至少一年同业所得达18万;</li>
<li>如果报聘职阶为S1(业务高级总监)在最近三年内,至少一年同业所得达48万。</li>
</ul>
</div>
<footer class="fixed" (click)="next()" *ngIf="!approvalIdentity">
保存并下一步
</footer>
<div id="page" *ngIf="approvalIdentity">
<div (click)="goBack()">上一页</div>
<div (click)="viewNext()">下一页</div>
</div>
</div>
<ydlife-toast *ngIf="toastDialog" [toastInfo]="toastInfo"></ydlife-toast>
<ydlife-alert *ngIf="isNeedAlert" [dialogInfo]="dialogInfo" (popInfo)="getPopInfo()"></ydlife-alert>
.wrapper {
font-size: 15px;
background: #fff;
min-height: 100%;
padding: 10px 13px 0 13px;
select{
-webkit-appearance: none;
}
.title{
display: flex;
justify-content: space-between;
font-weight: bold;
align-items: center;
font-size: 18px;
div {
display: flex;
align-items: center;
.line{
width: 5px;
height: 18px;
display: inline-block;
background: #C81B1E;
margin-right: 5px;
}
}
}
.content{
padding: 10px 5px;
position: relative;
.photo_wrapper{
width: 189px;
min-height: 222px;
margin: 20px auto 0 auto;
text-align: center;
background: #F8F8F8;
border: 1px #8D8D8D dashed;
border-radius: 4px;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
font-size: 12px;
color: #333;
}
.tips{
text-align: left;
font-size: 11px;
margin: 20px auto;
list-style: decimal;
padding-left: 10px;
li{
margin: 5px auto;
}
}
}
}
\ No newline at end of file
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { EmployeeSalaryComponent } from './employee-salary.component';
describe('EmployeeSalaryComponent', () => {
let component: EmployeeSalaryComponent;
let fixture: ComponentFixture<EmployeeSalaryComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ EmployeeSalaryComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(EmployeeSalaryComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit ,ChangeDetectorRef} from '@angular/core';
import { MyService } from '../../my.service';
import { ActivatedRoute,Router } from "@angular/router";
import { LifeCommonService } from "../../../common/life-common.service";
declare const wx: any;
@Component({
selector: 'ydlife-employee-salary',
templateUrl: './employee-salary.component.html',
styleUrls: ['./employee-salary.component.scss']
})
export class EmployeeSalaryComponent implements OnInit {
hiringBasicInfoId:any;
serverId: any;
vxUrl:any = null;
toastDialog: boolean;
toastInfo: any;
isNeedAlert: boolean;
dialogInfo: any;
approvalIdentity:any;
approveStatus:any;
constructor(private activatedRoute: ActivatedRoute,
private router: Router,public lifeCommonService:LifeCommonService,
public myService:MyService,private changeDetectorRef: ChangeDetectorRef) { }
ngOnInit() {
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;
this.approvalIdentity = this.activatedRoute.snapshot.queryParams.approvalIdentity?this.activatedRoute.snapshot.queryParams.approvalIdentity:null;
this.queryWholeInfo(this.hiringBasicInfoId)
}
selectPic(){
if(!this.approvalIdentity && this.approveStatus==null){
if(this.lifeCommonService.isWeiXin()){
// 5.1 拍照、本地选图
const t = this;
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
this.localId = res.localIds[0]; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
const THIS = t;
wx.uploadImage({
localId: this.localId, // 需要上传的图片的本地ID,由chooseImage接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (response) {
THIS.serverId = response.serverId; // 返回图片的服务器端ID
const m = {
mediaId: response.serverId,
origin: 'ydLife'
};
THIS.myService.mediaGet(m).subscribe(async e => {
if (e['success']) {
THIS.vxUrl = e['data']['imgUrl'];
THIS.changeDetectorRef.markForCheck();
THIS.changeDetectorRef.detectChanges();
} else {
alert(e['message']);
}
});
}
});
}
});
}else{
this.openPopInfo('请在微信端操作!')
}
}
}
next(){
if(!this.vxUrl){
this.openPopInfo('请在微信端上传您的薪资单!')
return;
}
const param = {
hiringBasicInfoId:this.hiringBasicInfoId,
vxUrl:this.vxUrl
}
this.myService.savePayrollPicture(param).subscribe((res)=>{
if(res['success']){
this.router.navigate(['/personal_statement'],{ queryParams: { hiringBasicInfoId:this.hiringBasicInfoId} });
}else{
this.toastDialog = true;
this.toastInfo = {
status: 1,
msg: res['message'],
timeout: 3000,
align: 'center'
};
}
})
}
// 打开弹窗
openPopInfo(message) {
this.isNeedAlert = true;
this.dialogInfo = {
title: null,
content: { value: message, align: 'center' },
footer: [{ value: '我知道了', routerLink: '', className: 'weui-dialog__btn_primary' }],
};
}
// 关闭弹窗
getPopInfo() {
this.isNeedAlert = false;
}
queryWholeInfo(hiringBasicInfoId){
this.myService.queryWholeInfo({hiringBasicInfoId:hiringBasicInfoId}).subscribe((res)=>{
if(res['success']){
this.approveStatus = res['data']['hiringBasicInfo']['approveStatus'];
this.vxUrl = res['data']['hiringBasicInfo']['payrollOssPath'];
}else{
this.vxUrl = null;
}
})
}
viewNext(){
this.router.navigate(['/personal_statement'],{ queryParams: { hiringBasicInfoId:this.hiringBasicInfoId,approvalIdentity:this.approvalIdentity} });
}
goBack(){
history.go(-1)
}
}
......@@ -33,7 +33,10 @@
<li *ngFor="let contractItem of contractTermsList" (click)="readContract(contractItem)"
[ngClass]="{'selected':contractItem.confirmStatus}">
<span>{{contractItem.termName}}</span>
<span class="iconfont icon-gougou" *ngIf="contractItem.confirmStatus"></span>
<span>
<span style="margin-right: 5px;" *ngIf="contractItem.confirmStatus && approvalIdentity">已阅读</span>
<i class="iconfont icon-gougou" *ngIf="contractItem.confirmStatus"></i>
</span>
</li>
</ul>
</div>
......@@ -54,7 +57,9 @@
{{curTitle}}
</div>
<div class="contract" [innerHtml]="curContract" ></div>
<div class="agree" (click)="agree(curContractId)">同意</div>
<div class="agree" (click)="agree(curContractId)"
[ngClass]="{'readOnly':agreeBtnShow==false}"
>同意</div>
<!--<div>{{curQues|json}}</div>-->
</div>
<ydlife-alert *ngIf="isNeedAlert" [dialogInfo]="dialogInfo" (popInfo)="getPopInfo()"></ydlife-alert>
\ No newline at end of file
......@@ -125,6 +125,9 @@
position: relative;
bottom: 0;
}
.agree.readOnly{
background: #C2C2C2;
}
}
......
......@@ -32,6 +32,7 @@ export class PersonalStatementComponent implements OnInit {
contractTermsConfirmsListParm:Array<any>;
approvalIdentity:any;
approveStatus:any;
agreeBtnShow:boolean = false;
constructor(private myService: MyService,
private activatedRoute: ActivatedRoute,
public lifeCommonService: LifeCommonService,
......@@ -153,7 +154,6 @@ export class PersonalStatementComponent implements OnInit {
queryContractTerms(){
this.myService.queryContractTerms().subscribe((res)=>{
console.log(res)
if(res['success']){
this.contractTermsList = res['data']['contractTermsList'];
this.contractTermsList.forEach((item)=>{
......@@ -187,15 +187,18 @@ export class PersonalStatementComponent implements OnInit {
//同意合同条款
agree() {
this.isShow = false;
for(let i=0;i<this.contractTermsList.length;i++){
if(this.curContractId == this.contractTermsList[i]['id']){
this.contractTermsList[i]['confirmStatus'] = 1;
if(this.agreeBtnShow == true){
this.isShow = false;
for(let i=0;i<this.contractTermsList.length;i++){
if(this.curContractId == this.contractTermsList[i]['id']){
this.contractTermsList[i]['confirmStatus'] = 1;
}
}
this.isAllAgree = this.contractTermsList.every((item)=>{
return item.confirmStatus == 1;
})
}
this.isAllAgree = this.contractTermsList.every((item)=>{
return item.confirmStatus == 1;
})
}
saveContractTermsConfirms(){
......@@ -219,8 +222,9 @@ export class PersonalStatementComponent implements OnInit {
})
}
queryWholeInfo(hiringBasicInfoId){
this.myService.queryWholeInfo({hiringBasicInfoId:hiringBasicInfoId}).subscribe((res)=>{
async queryWholeInfo(hiringBasicInfoId){
await this.queryContractTerms();
this.myService.queryWholeInfo({hiringBasicInfoId:hiringBasicInfoId}).subscribe( (res)=>{
if(res['success']){
this.approveStatus = res['data']['hiringBasicInfo']['approveStatus'];
if(this.type=="personal_statement"){
......@@ -256,8 +260,14 @@ export class PersonalStatementComponent implements OnInit {
}
onScroll(event){
console.log(event)
console.log(this.toastContent)
let scrollTop = this.toastContent.nativeElement.scrollTop;
let clientHeight = this.toastContent.nativeElement.clientHeight;
let scrollHeight = this.toastContent.nativeElement.scrollHeight ;
if(scrollHeight > clientHeight && scrollTop + clientHeight === scrollHeight) {
setTimeout(() => {
this.agreeBtnShow = true;
}, 10000);
}
}
viewNext(){
......
<div class="wrapper">
<div>
<div class="title">面试意见</div>
<textarea class="form-control" cols="30" rows="10" placeholder="请输入您的面试意见" [(ngModel)]="interviewAssessment"></textarea>
<textarea class="form-control" cols="30" rows="10" placeholder="请填写面试意见,字数限制为200字" [(ngModel)]="interviewAssessment" maxlength="200"></textarea>
</div>
<div>
<div class="title">备注</div>
<textarea class="form-control" cols="30" rows="10" [(ngModel)]="rejectNote"></textarea>
<textarea class="form-control" cols="30" rows="10" [(ngModel)]="rejectNote" placeholder="请填写备注,字数限制为100字" maxlength="100"></textarea>
</div>
<div id="page">
<div (click)="showAlert(1)">通过</div>
<div (click)="showAlert(0)">拒绝</div>
<div id="page" style="border-top: 1px #e1e1e1 solid;">
<div style="background-color: #fff;color: #333;" (click)="showAlert(0)">拒绝</div>
<div style="background-color: #1b5b99;" (click)="showAlert(1)">通过</div>
</div>
</div>
<ydlife-alert *ngIf="isNeedAlert" [dialogInfo]="dialogInfo" (popInfo)="getPopInfo()"></ydlife-alert>
\ No newline at end of file
......@@ -35,20 +35,21 @@ export class ApprovalCommentsComponent implements OnInit {
}
hiringApprove(){
if(!this.interviewAssessment){
this.openPopInfo('请输入您的面试意见!');
return;
}
// if(!this.interviewAssessment){
// this.openPopInfo('请输入您的面试意见!');
// return;
// }
const param = {
practitionerId:this.practitionerId,
approvalIdentity:this.approvalIdentity,
hiringBasicInfoId:this.hiringBasicInfoId,
approvingStatus: this.approvingStatus,
rejectNote:this.rejectNote,
interviewAssessment:this.interviewAssessment
interviewAssessment:this.interviewAssessment,
plateform:1,
hiringApproveStepsSeq:sessionStorage.getItem('hiringApproveStepsSeq')
}
this.myService.hiringApprove(param).subscribe((res)=>{
this.openPopInfo(res['message'])
this.openPopInfo(res['message']);
})
}
......
<div class="salesWrapper">
<ul class="tab">
<li *ngFor="let titleItem of titleList" (click)="selectTab(titleItem.id)"
[ngClass]="{selected:selectedId===titleItem.id}">
<li *ngFor="let titleItem of titleList" (click)="selectTab(titleItem.id)">
<div style="position: relative;">
<h3>{{titleItem.name}}
</h3>
<h3>{{titleItem.name}}</h3>
<hr *ngIf="selectedId===titleItem.id"/>
</div>
</li>
</ul>
<div class="salesContent">
<div style="text-align: center;margin: 20px auto;font-size: 20px;" *ngIf="approvarList?.length==0">暂无数据</div>
<div class="salesItem" *ngFor="let approvarItem of approvarList" >
<div class="icon_bolck"><span class="iconfont icon-ren4"></span></div>
<div class="line">
<div>姓名:{{approvarItem.name}}</div>
<div class="line name">
<div>
<i style="background:#1c5483;" *ngIf="selectedId==0"></i>
<i style="background:#80b975;" *ngIf="selectedId==1"></i>
<i style="background:#df6677;" *ngIf="selectedId==2"></i>
<span>{{approvarItem.name}}提交的报聘</span>
</div>
<span class="iconfont icon-ar-r" style="font-size: 10px;position: relative; right: -2px;"
(click)="jumpToDetail(approvarItem)"></span>
</div>
<div class="line" *ngIf="selectedId==1 || selectedId==2" (click)="jumpToDetail(approvarItem,'view')">
<!-- <div class="line" *ngIf="selectedId==1 || selectedId==2" (click)="jumpToDetail(approvarItem,'view')">
查看详情
</div>
<div class="line">
</div> -->
<div class="line" >
<div>职级:{{approvarItem.practitionerLevel}}</div>
<div> 手机号:{{approvarItem.mobileNo}}</div>
<div>{{approvarItem.practitionerLevel}}</div>
</div>
<div class="line">
<div>申请时间:{{approvarItem.applicationTime}}</div>
......
......@@ -2,82 +2,70 @@
width: 100%;
height: 100%;
overflow: auto;
background: #fff;
background: #fafafa;
.tab {
display: flex;
list-style: none;
margin: 10px 0px;
padding-left: 1%;
padding: 10px 0px;
justify-content: space-evenly;
border-bottom: 1px #ededed solid;
background: #fff;
li {
margin-right: 10px;
line-height: 30px;
height: 30px;
width: 25%;
text-align: center;
border: 1px #a9aabb solid;
border-radius: 20px;
h3 {
font-weight: normal;
font-size: 16px;
}
hr{
width: 24px;
height: 3px;
margin: 0 auto;
background: #335a81;
}
}
li.selected {
border: 1px #e10d0d solid;
}
border-bottom:3px #335a81 solid;
}
}
.salesContent{
.salesItem{
border-bottom: 1px #dcdcdc solid;
padding: 10px;
padding-left: 45px;
// border-bottom: 1px #dcdcdc solid;
padding: 10px 10px 10px 15px;
position: relative;
.icon_bolck{
border: 1px #dcdcdc solid;
width: 35px;
height: 35px;
position: absolute;
left: 3px;
top: 20px;
line-height: 30px;
text-align: center;
border-radius: 50%;
.iconfont{
color: #ff3500;
font-size: 26px;
position: relative;
top: 1px;
}
}
.linkbusinessRadius{
position: absolute;
top: 35%;
left: 10px;
width: 25px;
height: 25px;
.circlebtn{
display: inline-block;
width: 25px;
height: 25px;
border: 1px #707070 solid;
border-radius: 50%;
}
}
background: #fff;
margin: 15px;
.line{
display: flex;
justify-content: space-between;
align-items: center;
font-size: 13px;
font-size: 16px;
flex: 1;
.price{
font-size: 16px;
color: #ff3500;
font-weight: bold;
margin: 5px auto;
color:#626262;
}
.line.name{
font-size: 18px;
div {
display: flex;
align-items: center;
color: #030303;
i{
display: inline-block;
width: 6px;
height: 6px;
border-radius: 50%;
margin-right: 5px;
position: absolute;
left: 5px;
}
}
}
}
.salesItem:last-child{
border-bottom: none;
}
}
}
}
\ No newline at end of file
import { Component, OnInit } from '@angular/core';
import { MyService } from '../my.service';
import {Router,ActivatedRoute} from "@angular/router";
import { Router,ActivatedRoute } from "@angular/router";
import { LifeCommonService } from "../../common/life-common.service";
@Component({
selector: 'ydlife-approval-list',
......@@ -12,9 +13,11 @@ export class ApprovalListComponent implements OnInit {
selectedId:number = 0;
practitionerId:any;
approvarList:Array<any>;
constructor(private myService:MyService,private router:Router) { }
constructor(public lifeCommonService:LifeCommonService,private myService:MyService,private router:Router,private activatedRoute: ActivatedRoute) { }
ngOnInit() {
const title = this.activatedRoute.snapshot.data[0]['title'];
this.lifeCommonService.setTitle(title);
this.practitionerId = JSON.parse(localStorage.getItem('lifeCustomerInfo'))['practitionerId'];
this.titleList = [
{ id: 0, name: '待审批' },
......@@ -39,18 +42,17 @@ export class ApprovalListComponent implements OnInit {
}
jumpToDetail(item,type?:any){
if(type){
sessionStorage.setItem('viewApprovalInfo','1')
}else{
if(this.selectedId==0){
sessionStorage.setItem('viewApprovalInfo','0')
}
if(this.selectedId == 0 || type=='view'){
this.router.navigate([`/employee_basic_info`],{queryParams:{hiringBasicInfoId:item.hiringBasicInfoId,approvalIdentity:item.approvalIdentity}})
}else{
this.router.navigate([`/approval_result_list`],{queryParams:{hiringBasicInfoId:item.hiringBasicInfoId,approvalIdentity:item.approvalIdentity}})
sessionStorage.setItem('viewApprovalInfo','1')
}
// if(this.selectedId == 0 || type=='view'){
// this.router.navigate([`/employee_basic_info`],{queryParams:{hiringBasicInfoId:item.hiringBasicInfoId,approvalIdentity:item.approvalIdentity}})
// }else{
this.router.navigate([`/approval_result_list`],{queryParams:{hiringBasicInfoId:item.hiringBasicInfoId,approvalIdentity:true}})
// }
}
}
<div class="wrapper">
<div style="font-size: 20px;" (click)="goBack()"> &lt; </div>
<!-- <div style="font-size: 20px;" (click)="goBack()"> &lt; </div> -->
<div class="record_wrapper">
<div class="record_content" *ngFor="let recordsItem of recordsList">
<div class="record_content" *ngFor="let recordsItem of recordsList" style="overflow: hidden;">
<div class="left">
<img [src]="getDefaultHeadImg(recordsItem.headImagePath)" alt="头像">
<div></div>
<img class="status" *ngIf="recordsItem.approvingStatusId ==1"
src="assets/images/pass.png" />
<img class="status" *ngIf="recordsItem.approvingStatusId ==0"
src="assets/images/refuse.png"/>
<div class="line" *ngIf="recordsItem.approvingStatusId ==1"></div>
<hr *ngIf="recordsItem.approvingStatusId !=0" style="width: 1px;height: 100%;margin: 0 auto;border-right:8px dashed #f3f3f3;"/>
</div>
<div class="right">
<div style="font-size: 18px;color: #000;font-weight: 700;">{{recordsItem.approveStepName}}</div>
<div>
<span style="font-size: 18px;color: #000;font-weight: 700;">{{recordsItem.approveStepName}}</span>
<span (click)="lookRemark(recordsItem.rejectNote)"> <i class="iconfont icon-ziliao" style="position: relative;top: 1px;" ></i> 查看备注</span>
</div>
<div>
<span>
{{recordsItem.approvingPractitionerName}} ({{recordsItem.approvingStatus}})
......@@ -17,12 +25,20 @@
</span>
</div>
<div>
{{recordsItem.rejectNote}}
</div>
<div>
{{recordsItem.interviewAssessment}}
</div>
</div>
</div>
</div>
<div class="toastWrapper toast" *ngIf="isShow" (click)="this.isShow = false;"></div>
<div class="editContainer" *ngIf="isShow">
<div>
<div>备注</div>
<textarea type="text" id="remark" class="form-control" [(ngModel)]="this.remark" disabled></textarea>
</div>
</div>
<div class="footer" (click)="jumpToDetail()">
查看资料
</div>
<ydlife-toast *ngIf="toastDialog" [toastInfo]="toastInfo"></ydlife-toast>
.wrapper{
padding: 5px 13px 10px 13px;
padding:10px 13px;
.record_wrapper{
.record_content{
display: flex;
justify-content: space-between;
div.left{
width: 30%;
text-align: center;
margin: 0 auto;
position: relative;
img{
width: 60%;
width: 85px;
border-radius: 8px;
}
img.status{
position: absolute;
width: 25px;
height: 25px;
right: -12px;
top: 48px;
}
div.line{
width: 8px;
height: 100%;
background: #f3f3f3;
margin: 0 auto;
}
}
div.right{
width: 70%;
width: 100%;
margin-left: 20px;
min-height: 100px;
div{
font-size: 14px;
color: #999;
display: flex;
justify-content: space-between;
margin: 5px auto;
align-items: center;
}
}
}
.record_content:last-child{
hr{
display: none;
}
}
}
.editContainer {
background: #ffffff;
padding: 10px;
position: fixed;
top: 30%;
width: 80%;
height: 35%;
background-color: #fff;
z-index: 2;
// -webkit-animation: .5s both slowUp;
/* animation: .5s both slowUp; */
min-width: 320px;
max-width: 640px;
margin: 0 auto;
left: 0;
right: 0;
border-radius: 10px;
}
.toast {
position: fixed;
left: 0;
right: 0;
min-width: 320px;
max-width: 640px;
width: 100%;
margin: 0 auto;
z-index: 1;
}
.toastWrapper {
height: 100%;
background-color: rgba(0,0,0,.5);
top: 0;
}
}
.footer{
min-width: 320px;
max-width: 640px;
position: fixed;
bottom: 0;
left: 0;
height: 56px;
line-height: 56px;
display: flex;
width: 100%;
justify-content: space-evenly;
border-top: 1px #e1e1e1 solid;
color: #fff;
background: #1b5b99;
font-size: 18px;
}
\ No newline at end of file
......@@ -2,6 +2,7 @@ import { Component, OnInit } from '@angular/core';
import { MyService } from '../my.service'
import { ActivatedRoute,Router } from "@angular/router";
import { environment } from '../../../environments/environment';
import { LifeCommonService } from "../../common/life-common.service";
@Component({
selector: 'ydlife-approval-result-list',
......@@ -13,9 +14,18 @@ export class ApprovalResultListComponent implements OnInit {
hiringBasicInfoId:any;
practitionerId:any;
recordsList:Array<any>;
constructor(private myService:MyService,private activatedRoute: ActivatedRoute) { }
//审批到哪一步
hiringApproveStepsSeq:any;
//控制弹框
toastDialog: boolean;
toastInfo: any;
isShow:boolean = false;
remark:string;
constructor(private router:Router,public lifeCommonService:LifeCommonService,private myService:MyService,private activatedRoute: ActivatedRoute) { }
ngOnInit() {
const title = this.activatedRoute.snapshot.data[0]['title'];
this.lifeCommonService.setTitle(title);
this.approvalIdentity = this.activatedRoute.snapshot.queryParams.approvalIdentity?this.activatedRoute.snapshot.queryParams.approvalIdentity:null;
this.hiringBasicInfoId = this.activatedRoute.snapshot.queryParams.hiringBasicInfoId?this.activatedRoute.snapshot.queryParams.hiringBasicInfoId:null;
this.practitionerId = JSON.parse(localStorage.getItem('lifeCustomerInfo'))['practitionerId'];
......@@ -25,18 +35,29 @@ export class ApprovalResultListComponent implements OnInit {
PractitionerHiringApproveRecords(){
const param = {
practitionerId:this.practitionerId,
hiringBasicInfoId:this.hiringBasicInfoId,
approvalIdentity:this.approvalIdentity
hiringBasicInfoId:this.hiringBasicInfoId
}
this.myService.detailQuery(param).subscribe((res)=>{
console.log(res)
if(res['success']){
this.recordsList = res['data']['hiringApproveRecordsList'];
this.hiringApproveStepsSeq = res['data']['hiringApproveStepsSeq'];
sessionStorage.setItem('hiringApproveStepsSeq',this.hiringApproveStepsSeq)
}else{
this.toastDialog = true;
this.toastInfo = {
status: 1,
msg: res['message'],
timeout: 3000,
align: 'center'
};
}
})
}
jumpToDetail(){
this.router.navigate([`/employee_basic_info`],{queryParams:{hiringBasicInfoId:this.hiringBasicInfoId,approvalIdentity:this.approvalIdentity}})
}
getDefaultHeadImg(str){
if(!str){
return `${environment.DOMAINNAME}/assets/img/meng.png`;
......@@ -48,4 +69,9 @@ export class ApprovalResultListComponent implements OnInit {
goBack(){
history.go(-1)
}
lookRemark(remark){
this.isShow = true;
this.remark = remark;
}
}
......@@ -23,9 +23,7 @@ export class FileUploadComponent implements OnInit {
this.fileUploadType = this.activatedRoute.snapshot.queryParams.fileUploadType ? this.activatedRoute.snapshot.queryParams.fileUploadType : null;
this.dropOptionsQuery();
if (this.type === 'fileUpload') {
this.fileUpload(3, 0, 19, 'yd_download_file_type', this.selectedCategoryId);
} else if (this.type === 'training') {
this.fileUpload(3, 0, 23, 'yd_trainning_file_type', this.selectedCategoryId);
}
......
<div class="salesWrapper">
<ul class="tab">
<li *ngFor="let titleItem of titleList" (click)="selectTab(titleItem.id)">
<div style="position: relative;">
<h3>{{titleItem.name}}</h3>
<hr *ngIf="selectedId===titleItem.id"/>
</div>
</li>
</ul>
<div style="padding: 10px 0px 0px 0px;">
<ydlife-thanks *ngIf="selectedId==1" [isShowClose]="isShowClose"></ydlife-thanks>
<div class="contentList" *ngIf="selectedId==2">
<ul>
<li *ngFor="let fileUploadItem of fileUploadItemList">
<a href="{{fileUploadItem.filePath}}" download="{{fileUploadItem.itemName}}" target="_blank">
<div><i class="iconfont icon-pdf"></i></div>
<div title="{{fileUploadItem.itemName}}">{{fileUploadItem.itemName}}</div>
<div style="position: absolute;right: 5px;top: 6px;"><i class="iconfont icon-xiazai"></i></div>
</a>
</li>
</ul>
</div>
</div>
</div>
\ No newline at end of file
.salesWrapper{
width: 100%;
height: 100%;
overflow: auto;
background: #fafafa;
.tab {
display: flex;
list-style: none;
padding: 10px 0px;
justify-content: space-evenly;
border-bottom: 1px #ededed solid;
background: #fff;
li {
margin-right: 10px;
line-height: 30px;
height: 30px;
text-align: center;
h3 {
font-weight: normal;
font-size: 16px;
}
hr{
width: 24px;
height: 3px;
margin: 0 auto;
background: #335a81;
}
}
li.selected {
border-bottom:3px #335a81 solid;
}
}
.contentList{
background-color: #fff;
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
height: auto;
overflow-x: hidden;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
ul li{
border-bottom: 1px solid #dcdcdc;
padding: 4px 20px;
position: relative;
.icon-xiazai {
font-size: 22px;
color: #ec2d37;
font-weight: bold;
}
a {
display: flex;
align-items: center;
color: #000;
.iconfont {
color: #ec2d37;
font-size: 22px;
margin-right: 8px;
}
}
}
ul li:last-child {
border: none;
}
}
}
\ No newline at end of file
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { MyApplicationComponent } from './my-application.component';
describe('MyApplicationComponent', () => {
let component: MyApplicationComponent;
let fixture: ComponentFixture<MyApplicationComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ MyApplicationComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MyApplicationComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { MyService } from "../my.service";
@Component({
selector: 'ydlife-my-application',
templateUrl: './my-application.component.html',
styleUrls: ['./my-application.component.scss']
})
export class MyApplicationComponent implements OnInit {
titleList:Array<any>;
selectedId:number = 1;
isShowClose:boolean = false;
fileUploadItemList: Array<any>;
constructor(private myService: MyService) { }
ngOnInit() {
this.titleList = [
{ id: 0, name: '经纪合同' },
{ id: 1, name: '欢迎信' },
{ id: 2, name: '公司制度' }
]
}
selectTab(id) {
this.selectedId = id;
if(this.selectedId==2){
this.fileUpload(3, 0, 19, 'yd_download_file_type', 81);
}
}
// 文件下载
fileUpload(itemType, itemId, fileCategory, code, mdDropOptionId) {
this.myService.filePath(itemType, itemId, fileCategory, code, mdDropOptionId).subscribe(res => {
if (res['success']) {
this.fileUploadItemList = res['data']['fileUploadItemList'];
}
});
}
}
......@@ -182,10 +182,14 @@
<span i class="iconfont icon-ar-r" style="font-size:18px;float: right;" routerLink="setting"></span>
</h3>
</div>
<div class="health_wrapper" style="padding: 12px 10px 12px 10px;margin-bottom: 0;">
<div class="health_wrapper" style="padding: 12px 10px 12px 10px;">
<h3 style="margin-bottom: 0;">我的消息
<span i class="iconfont icon-ar-r" style="font-size:18px;float: right;" routerLink="news"></span></h3>
</div>
<div class="health_wrapper" style="padding: 12px 10px 12px 10px;margin-bottom: 0;">
<h3 style="margin-bottom: 0;">吐槽箱
<span i class="iconfont icon-ar-r" style="font-size:18px;float: right;" routerLink="suggestion"></span></h3>
</div>
</div>
<!--footer-->
<div class="footer" style="font-size: 12px;padding-top: 10px;text-align: center;background: #f5f5f5;">
......
......@@ -315,7 +315,7 @@ ul,ol{
}
}
}
.tool_wrapper:nth-child(3),.tool_wrapper:nth-child(4){
.tool_wrapper:nth-child(4){
.tool_content{
padding-bottom: 10px;
}
......
......@@ -97,7 +97,7 @@ export class MyCenterHomeComponent implements OnInit, AfterViewInit {
// { no: 16, subtitle: '团队增员', icon: 'recruiting', path: '', routerLink: '' },
{ no: 16, subtitle: '团队增员', icon: 'recruiting', path: '', routerLink: 'recruiting' },
{ no: 18, subtitle: '招募海报', icon: 'poster_r', path: '', routerLink: '' },
{ no: 22, subtitle: '审批', icon: 'recruiting', path: '', routerLink: 'approval_list' }
{ no: 22, subtitle: '报聘审批', icon: 'approval', path: '', routerLink: 'approval_list' }
],
// isShow: this.isShow
isShow: true
......@@ -109,7 +109,11 @@ export class MyCenterHomeComponent implements OnInit, AfterViewInit {
{ no: 20, subtitle: '我的客户', icon: 'customer', path: '', routerLink: '' },
// { no: 14, subtitle: '我的佣金', icon: 'commission', path: '', routerLink: '' },
{ no: 19, subtitle: '薪资单', icon: 'salary', path: '', routerLink: 'salary' },
{ no: 21, subtitle: '公司制度', icon: 'management', path: '', routerLink: '' }
{ no: 21, subtitle: '公司制度', icon: 'management', path: '', routerLink: '' },
{ no: 23, subtitle: '我的报聘', icon: 'pin', path: '', routerLink: 'my_application' },
{ no: 24, subtitle: '目标设置', icon: 'set', path: '', routerLink: 'target' },
{ no: 25, subtitle: '', icon: 'default', path: '', routerLink: '' },
{ no: 26, subtitle: '', icon: 'default', path: '', routerLink: '' }
],
isShow: true
},
......
......@@ -44,8 +44,9 @@ import { MemberDetailComponent } from './member-detail/member-detail.component';
import { ApprovalListComponent } from './approval-list/approval-list.component';
import { ApprovalCommentsComponent } from './approval-comments/approval-comments.component';
import { ApprovalResultListComponent } from './approval-result-list/approval-result-list.component';
import { MyApplicationComponent } from './my-application/my-application.component';
import { SuggestionComponent } from './suggestion/suggestion.component';
import { EmployeeSalaryComponent } from './application-process/employee-salary/employee-salary.component';
const myRoutes: Routes = [
{ path: '', component: MyCenterHomeComponent, canActivate: [AuthGuard], data: [{ title: '银盾保险经纪 - 工作台' }] },
{ path: 'material', component: MkMaterialComponent, canActivate: [AuthGuard] },
......@@ -88,14 +89,18 @@ const myRoutes: Routes = [
{ path: 'employee_id_card',component:EmployeeIdCardComponent,data: [{ title: '银盾经纪人报聘' }] },
{ path: 'employee_education',component:EmployeeEducationComponent,data: [{ title: '银盾经纪人报聘' }] },
{ path: 'bank_card',component:BankCardComponent,data:[{title:'银盾经纪人报聘'}]},
{ path: 'employee_salary',component:EmployeeSalaryComponent,data: [{ title: '银盾经纪人报聘' }] },
{ 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: 'member_detail/:practitionerId',component:MemberDetailComponent, canActivate: [AuthGuard]},
{ path: 'approval_list',component:ApprovalListComponent, canActivate: [AuthGuard]},
{ path: 'approval_list',component:ApprovalListComponent, data: [{ title: '审批列表' }],canActivate: [AuthGuard]},
{ path: 'approval_comments',component:ApprovalCommentsComponent,canActivate:[AuthGuard]},
{ path: 'approval_result_list',component:ApprovalResultListComponent,canActivate:[AuthGuard]}
{ path: 'approval_result_list',component:ApprovalResultListComponent,data: [{ title: '审批流程' }],canActivate:[AuthGuard]},
{ path: 'my_application',component:MyApplicationComponent,data: [{ title: '我的报聘' }],canActivate:[AuthGuard]},
{ path: 'suggestion',component:SuggestionComponent,data: [{ title: '问题反馈' }],canActivate:[AuthGuard]}
];
@NgModule({
......
......@@ -54,9 +54,12 @@ import { MemberDetailComponent } from './member-detail/member-detail.component';
import { ApprovalListComponent } from './approval-list/approval-list.component';
import { ApprovalCommentsComponent } from './approval-comments/approval-comments.component';
import { ApprovalResultListComponent } from './approval-result-list/approval-result-list.component';
import { MyApplicationComponent } from './my-application/my-application.component';
import { SuggestionComponent } from './suggestion/suggestion.component';
import { EmployeeSalaryComponent } from './application-process/employee-salary/employee-salary.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, MemberDetailComponent, ApprovalListComponent, ApprovalCommentsComponent, ApprovalResultListComponent],
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],
imports: [
CommonModule,
LifeCommonModule,
......
......@@ -441,6 +441,13 @@ export class MyService {
.post(url, JSON.stringify(param));
}
//薪资单流水
savePayrollPicture(param){
const url = this.ydapi + '/practitionerHiring/savePayrollPicture';
return this.http
.post(url, JSON.stringify(param));
}
//身份证
saveIDPicture(param){
const url = this.ydapi + '/practitionerHiring/saveIDPicture';
......@@ -512,11 +519,17 @@ export class MyService {
}
//审批保存接口
// hiringApprove(param){
// const url = this.ydapi + '/practitionerHiring/hiringApprove';
// return this.http
// .post(url, JSON.stringify(param));
// }
hiringApprove(param){
const url = this.ydapi + '/practitionerHiring/hiringApprove';
return this.http
.post(url, JSON.stringify(param));
}
const url = this.ydapi + '/agms/practitionerHiringApprove';
return this.http
.post(url, JSON.stringify(param));
}
//ydLife审批资料详情
detailQuery(param){
......@@ -524,4 +537,16 @@ export class MyService {
return this.http
.post(url, JSON.stringify(param));
}
/**
* 意见反馈接口
* @param comment
* @returns {Promise<any|TResult2|TResult1>}
*/
customerComment(comment) {
const url = this.API + '/customerComment';
return this.http
.post(url, JSON.stringify(comment));
}
}
......@@ -436,7 +436,7 @@ export class RecruitingDetailComponent implements OnInit {
if(res['data']['praLabelItem']){
this.employQuery.subsystemId = res['data']['praLabelItem']['subordinateSystemId'];
this.employQuery.subsystem = res['data']['praLabelItem']['subordinateSystemName'];
this.employQuery.subsystemOwnerId = res['data']['praLabelItem']['teamLeaderId'];
this.employQuery.subsystemOwnerId = res['data']['praLabelItem']['teamLeaderPractitionerId'];
this.employQuery.subsystemOwner = res['data']['praLabelItem']['teamLeaderName'];
this.employQuery.branchId = res['data']['praLabelItem']['insurerBranchId'];
this.employQuery.branch = res['data']['praLabelItem']['insurerBranchName'];
......
<div class="suggestionBox">
<div class="suggestionContainer shadow">
<h5><i class="line"></i>吐槽箱</h5>
<div class="textarea">
<textarea name="commentText" id="suggestionContent" cols="40" rows="10" placeholder="请详细描述一下您的问题,运营人员将会尽快与您联系"
[(ngModel)]="customer.commentText"></textarea>
</div>
</div>
<div class="contactBox shadow">
<div class="sw-form-control">
<label for="mobileNo">手机号码</label>
<input type="tel" maxlength="11" placeholder="请输入手机号码" name="phoneNo" id="mobileNo"
[(ngModel)]="customer.phoneNo">
<div class="tooltip top" role="tooltip" *ngIf="this.telflag==false && this.emailflag==false">
<div class="tooltip-arrow"></div>
<div class="tooltip-inner">手机号码格式不正确</div>
</div>
</div>
<div class="sw-form-control">
<label for="email">常用邮箱</label>
<input type="email" placeholder="请输入邮箱" name="email" id="email" [(ngModel)]="customer.email" maxlength="100">
<div class="tooltip top" role="tooltip" *ngIf="this.telflag==false && this.emailflag==false">
<div class="tooltip-arrow"></div>
<div class="tooltip-inner">邮箱格式不正确</div>
</div>
</div>
</div>
<div class="submit commonBtn defineFixed" (click)="submit()">
提交
</div>
</div>
<ydlife-alert *ngIf="isNeedAlert" [dialogInfo]="dialogInfo" (popInfo)="getPopInfo()"></ydlife-alert>
.suggestionBox {
height: 100%;
}
.suggestionContainer {
margin: 20px 10px 0 10px;
padding: 15px 10px 20px 10px;
background-color: #fff;
}
.suggestionContainer h5 {
font-size: 16px;
color: #4a4a4a;
margin: 0 0 15px;
font-weight: bold;
}
#suggestionContent {
resize: none;
width: 100%;
border-radius: 4px;
margin-right: 10px;
padding-left: 10px;
padding-top: 10px;
border: 1px solid #bfbfbf;
font-size: 14px;
color: #858585;
background-color: #fff;
}
textarea, input {
  box-shadow: 0px 0px 0px rgba(0, 0, 0, 0);
-webkit-appearance: none;
}
.contactBox {
background-color: #f9fdff;
padding: 15px 10px 20px 10px;
margin: 27px 10px 28px 10px;
}
.sw-form-control {
position: relative;
display: flex;
align-items: center;
}
.sw-form-control label {
position: absolute;
left: 10px;
top: 50%;
height: 100%;
margin-top: -10px;
font-size: 14px;
color: #4a4a4a;
margin-right: 22px;
}
.sw-form-control input {
width: 100%;
height: 37px;
line-height: 37px;
padding-left: 85px;
display: inline-block;
border-radius: 4px;
border: 1px solid #bfbfbf;
}
.sw-form-control:first-child {
margin-bottom: 15px;
}
.submit {
position: fixed;
left: 0;
right: 0;
min-width: 320px;
max-width: 640px;
width: 100%;
bottom: 0;
width: 92%;
margin: 3px auto;
height: 50px;
line-height: 50px;
text-align: center;
border-radius: 6px;
font-size: 20px;
letter-spacing: 10px;
color: #fff;
-webkit-box-shadow: 0 2px 2px 0 rgba(236,45,55,.66);
box-shadow: 0 2px 2px 0 rgba(236,45,55,.66);
background-color: #ec2d37;
}
\ No newline at end of file
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { SuggestionComponent } from './suggestion.component';
describe('SuggestionComponent', () => {
let component: SuggestionComponent;
let fixture: ComponentFixture<SuggestionComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ SuggestionComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(SuggestionComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { MyService } from '../my.service';
@Component({
selector: 'ydlife-suggestion',
templateUrl: './suggestion.component.html',
styleUrls: ['./suggestion.component.scss']
})
export class SuggestionComponent implements OnInit {
alerts: Array<any> = [];
placeholder: boolean;
telflag: boolean;
emailflag: boolean;
customer: any;
isNeedAlert: boolean;
dialogInfo: any;
constructor(private myService:MyService) {
this.customer = {
customerId:JSON.parse(localStorage.getItem('lifeCustomerInfo')).customerId,
practitionerId:JSON.parse(localStorage.getItem('lifeCustomerInfo')).practitionerId,
phoneNo: JSON.parse(localStorage.getItem('lifeCustomerInfo'))['mobileNo'],
email: '',
commentText: '',
plateform:2
}
}
ngOnInit() {
}
focus() {
this.placeholder = false;
}
// 判断手机号是否有效
telcheck(val) {
const MOBILE_REGEXP = /^(1)\d{10}$/;
this.telflag = MOBILE_REGEXP.test(val);
}
emailCheck(val) {
const EMAIL_REGEXP = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/;
this.emailflag = EMAIL_REGEXP.test(val);
}
submit() {
this.telcheck(this.customer.phoneNo);
this.emailCheck(this.customer.email);
if ((this.telflag || this.emailflag) && this.customer.commentText !== '') {
this.myService.customerComment(this.customer).subscribe(res => {
if (res['success']) {
this.openPopInfo('提交成功');
} else {
this.openPopInfo(res['message']);
}
});
} else {
if (this.customer.commentText === '') {
this.openPopInfo('请详细描述一下您的问题,客服人员将会尽快与您联系。')
} else {
this.openPopInfo('请正确输入您的联系方式');
}
return false;
}
}
// 打开弹窗
openPopInfo(message) {
this.isNeedAlert = true;
this.dialogInfo = {
title: null,
content: { value: message, align: 'center' },
footer: [{ value: '我知道了', routerLink: '', className: 'weui-dialog__btn_primary' }],
};
}
// 关闭弹窗
getPopInfo() {
this.isNeedAlert = false;
}
}
<div class="taem_panel_wrapper">
<div class="member_info" routerLink="memberList">成员信息</div>
<div class="member_info" routerLink="memberList">
<span class="icon-yonghu2 iconfont" style="font-size: 24px;height: 28px;"></span>
<span>成员信息</span>
</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> -->
......
......@@ -11,8 +11,12 @@
.member_info{
position: absolute;
right: 10px;
top: 45px;
color: #fff;
z-index: 100;
display: flex;
flex-direction: column;
align-items: center;
}
.teamInfo{
font-size: 26px;
......
......@@ -80,7 +80,7 @@
<div class="rankContent">
<div style="font-size: 18px;margin: 5px auto;text-align: center;">战队成员</div>
<div class="content_wrapper memberList">
<ul style="border: none;">
<ul style="border: none;background: #e7eef5;border-radius: 5px;">
<li>姓名</li>
<li>级别</li>
<li class="sex">性别</li>
......
......@@ -149,7 +149,13 @@
border-bottom: 1px #ddd solid;
border-radius: 0;
li{
width: 24%;
width: 25%;
}
li:nth-child(1){
width: 20%;
}
li:nth-child(4){
width: 28%;
}
li.sex{
width: 13%;
......
......@@ -60,7 +60,7 @@
</div>
<p class="closeBtn" (click)="close()">&times;</p>
<p class="closeBtn" (click)="close()" *ngIf="isShowClose">&times;</p>
</div>
<!-- <div id="letter"></div>
<img #inkwell1 id="inkwell1" src="inkwell1.gif" alt="inkwell1" />
......
import { Component, OnInit, ViewChild, AfterViewInit, ElementRef } from '@angular/core';
import { Component, OnInit, ViewChild, AfterViewInit, ElementRef ,Input} from '@angular/core';
import { Router } from "@angular/router";
@Component({
selector: 'ydlife-thanks',
......@@ -8,7 +8,7 @@ import { Router } from "@angular/router";
export class ThanksComponent implements OnInit, AfterViewInit {
@ViewChild('inkwell1') inkwell1: ElementRef
@ViewChild('letter_src') letter_src: ElementRef
@Input() isShowClose:boolean = true;
vLetter: any;
iSpeedInk: any;
sText: any;
......
......@@ -31,6 +31,18 @@
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xe680;</span>
<div class="name">资料</div>
<div class="code-name">&amp;#xe680;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe682;</span>
<div class="name">成员</div>
<div class="code-name">&amp;#xe682;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe67f;</span>
<div class="name">勾勾</div>
<div class="code-name">&amp;#xe67f;</div>
......@@ -1107,6 +1119,24 @@
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont icon-ziliao"></span>
<div class="name">
资料
</div>
<div class="code-name">.icon-ziliao
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-yonghu2"></span>
<div class="name">
成员
</div>
<div class="code-name">.icon-yonghu2
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-gougou"></span>
<div class="name">
勾勾
......@@ -2676,6 +2706,22 @@
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-ziliao"></use>
</svg>
<div class="name">资料</div>
<div class="code-name">#icon-ziliao</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-yonghu2"></use>
</svg>
<div class="name">成员</div>
<div class="code-name">#icon-yonghu2</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-gougou"></use>
</svg>
<div class="name">勾勾</div>
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -6,6 +6,20 @@
"description": "",
"glyphs": [
{
"icon_id": "9575614",
"name": "资料",
"font_class": "ziliao",
"unicode": "e680",
"unicode_decimal": 59008
},
{
"icon_id": "6418551",
"name": "成员",
"font_class": "yonghu2",
"unicode": "e682",
"unicode_decimal": 59010
},
{
"icon_id": "699358",
"name": "勾勾",
"font_class": "gougou",
......
......@@ -20,6 +20,12 @@ Created by iconfont
/>
<missing-glyph />
<glyph glyph-name="ziliao" unicode="&#59008;" d="M78.762667 659.690667v-708.906667h708.928v708.906667H78.784z m0 78.762666h708.928a78.997333 78.997333 0 0 0 78.762666-78.762666v-708.906667A78.997333 78.997333 0 0 0 787.690667-128H78.784A78.997333 78.997333 0 0 0 0-49.237333V659.690667a78.997333 78.997333 0 0 0 78.762667 78.762666z m157.546666-236.309333h393.834667c23.637333 0 39.402667-15.744 39.402667-39.381333 0-23.616-15.765333-39.381333-39.402667-39.381334H236.309333c-23.637333 0-39.381333 15.765333-39.381333 39.381334 0 23.637333 15.744 39.381333 39.381333 39.381333z m0-157.525333h393.834667c23.637333 0 39.402667-15.765333 39.402667-39.381334 0-23.637333-15.765333-39.381333-39.402667-39.381333H236.309333c-23.637333 0-39.381333 15.744-39.381333 39.381333 0 23.616 15.744 39.381333 39.381333 39.381334z m0-157.546667h393.834667c23.637333 0 39.402667-15.744 39.402667-39.381333s-15.765333-39.381333-39.402667-39.381334H236.309333c-23.637333 0-39.381333 15.744-39.381333 39.381334s15.744 39.381333 39.381333 39.381333z m39.381334 630.165333c-23.637333 0-39.381333 15.744-39.381334 39.381334S252.053333 896 275.690667 896h630.165333C972.8 896 1024 844.8 1024 777.856v-630.165333c0-23.637333-15.744-39.381333-39.381333-39.381334s-39.381333 15.744-39.381334 39.381334V777.856c0 23.616-15.765333 39.381333-39.381333 39.381333H275.690667z" horiz-adv-x="1024" />
<glyph glyph-name="yonghu2" unicode="&#59010;" d="M544.582 370.036c65.163 46.546 111.709 121.019 111.709 204.8 0 134.982-111.71 246.691-251.346 246.691-139.636 0-251.345-111.709-251.345-246.69 0-88.437 46.545-162.91 111.71-204.8C134.981 314.181 46.544 188.508 46.544 44.217v-65.163c0-18.619 13.964-37.237 37.237-37.237 18.618 0 37.236 13.964 37.236 37.237v65.163c0 158.255 130.327 283.927 283.927 283.927 158.255 0 283.928-125.672 283.928-283.927v-65.163c0-18.619 13.963-37.237 37.236-37.237s37.236 13.964 37.236 37.237v65.163c0 144.291-93.09 274.618-218.763 325.818z m-139.637 27.928c-97.745 0-176.872 79.127-176.872 176.872-4.655 102.4 79.127 181.528 176.872 181.528 97.746 0 176.873-79.128 176.873-176.873 0-97.746-79.127-181.527-176.873-181.527z m428.219-9.31c13.963 9.31 27.927 23.273 37.236 37.237 60.51 79.127 41.89 190.836-41.89 246.69-37.237 27.928-83.783 37.237-130.328 32.583-18.618-4.655-27.927-18.619-27.927-37.237 4.654-18.618 18.618-32.582 41.89-32.582 27.928 4.655 55.855 0 79.128-18.618 23.272-13.963 37.236-41.89 41.89-69.818 9.31-55.854-27.927-111.709-88.436-125.673-4.654 0-4.654 0-9.309-4.654-13.963 0-27.927 4.654-37.236 4.654-18.618 0-37.237-13.963-37.237-37.236 0-18.618 13.964-37.236 37.237-37.236 116.363 0 204.8-93.091 204.8-204.8v-51.2c0-18.619 13.963-37.237 37.236-37.237 18.618 0 37.237 13.964 37.237 37.237v51.2c0 107.054-55.855 200.145-144.291 246.69z" horiz-adv-x="1024" />
<glyph glyph-name="gougou" unicode="&#59007;" d="M1476.470467 745.577209 688.633041-42.260217C685.780224-54.315666 679.867532-65.795951 670.45784-75.205644L637.926532-107.736952C610.985823-134.700667 567.273316-134.700667 540.332607-107.736952L533.03952-100.466872C533.016514-100.420859 532.9705-100.397852 532.924487-100.351839L500.393179-67.820531C500.347166-67.774518 500.324159-67.728504 500.278146-67.705498L19.739648 412.833C-7.20106 439.796715-7.20106 483.486216 19.739648 510.449931L52.270956 542.98124C79.234672 569.944955 122.924173 569.944955 149.887888 542.98124L581.744456 111.124671 1346.322227 875.725449C1373.285942 902.689164 1416.975443 902.689164 1443.939158 875.725449L1476.470467 843.194141C1503.434182 816.230425 1503.434182 772.540924 1476.470467 745.577209Z" horiz-adv-x="1497" />
......
......@@ -75,22 +75,22 @@
let loading = document.getElementById("adv");
loading.style.display = 'block';
document.onreadystatechange = function () {
if (document.readyState == "complete") {
setTimeout(() => {
loading.style.display = 'none';
}, 4000)
// if (document.readyState == "complete") {
// setTimeout(() => {
// loading.style.display = 'none';
// }, 4000)
}
// }
}
}
//页面刷新的时候不出现
if (window.name == "") {
window.name = "isReload"; // 在首次进入页面时我们可以给window.name设置一个固定值
// if (window.name == "") {
// window.name = "isReload"; // 在首次进入页面时我们可以给window.name设置一个固定值
initialize();
} else if (window.name == "isReload") {
let loading = document.getElementById("adv");
loading.style.display = 'none';
}
// } else if (window.name == "isReload") {
// let loading = document.getElementById("adv");
// loading.style.display = 'none';
// }
//用于去除alert的url
window.alert = function (name) {
......
......@@ -230,6 +230,7 @@ footer.fixed{
display: flex;
width: 100%;
justify-content: space-evenly;
border-top: 1px #e1e1e1 solid;
div{
width: 50%;
text-align: center;
......@@ -238,6 +239,8 @@ footer.fixed{
}
div:nth-child(1){
border-right: 1px #fff solid;
background: #fff;
color: #333;
}
}
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