Commit 92b442f8 by Chao Sun

我的增员

parent 07cdf86e
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
"version": "0.0.0", "version": "0.0.0",
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
"start": "ng serve --host 192.168.1.169", "start": "ng serve --host 192.168.1.25",
"build": "ng build -c=dev --prod", "build": "ng build -c=dev --prod",
"test": "ng test", "test": "ng test",
"lint": "ng lint", "lint": "ng lint",
......
...@@ -153,39 +153,4 @@ export class LifeCommonService { ...@@ -153,39 +153,4 @@ export class LifeCommonService {
return str.replace(/<[^>]+>/g, "");//去掉所有的html标记 return str.replace(/<[^>]+>/g, "");//去掉所有的html标记
} }
checkStr(str) {
if (str == '0') {
return '待跟进';
}
if (str == '95') {
return '打电话';
}
if (str == '96') {
return '加微信沟通';
}
if (str == '97') {
return '约好见面';
}
if (str == '98') {
return '邀请参加活动';
}
if (str == '99') {
return '提交建议书';
}
if (str == '100') {
return '方案解读';
}
if (str == '101') {
return '成交';
}
if (str == '102') {
return '拒绝';
}
if (str == '103') {
return '客户还在考虑';
}
if (str == '104') {
return '客户买了其他';
}
}
} }
export class RecruitingQuery {
constructor(
public name?: string,
public gender?: any,
public age?: string,
public mobileNo?: string,
public wechatId?: string,
public qqId?: string,
public otherContacts?: string,
public educationLevel?: string,
public resourceDropMasterId?: string,
public introducer?: string,
public tag?: string,
public remark?: string,
public ossPathResume?: string,
public assignedId?: string,
public operateUserId?: string,
public potentialId?: string
) {
}
}
\ No newline at end of file
import {Component, ElementRef, OnInit, ViewChild} from '@angular/core'; import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';
import {ActivatedRoute} from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import {environment} from '../../../environments/environment'; import { environment } from '../../../environments/environment';
import {LifeCommonService} from '../../common/life-common.service'; import { LifeCommonService } from '../../common/life-common.service';
import {MyService} from '../my.service'; import { MyService } from '../my.service';
declare var QRCode: any; declare var QRCode: any;
...@@ -71,7 +71,7 @@ export class MkMaterialDetailComponent implements OnInit { ...@@ -71,7 +71,7 @@ export class MkMaterialDetailComponent implements OnInit {
if (this.lifeCustomerInfo.practitionerBasicInfo.headImagePath) { if (this.lifeCustomerInfo.practitionerBasicInfo.headImagePath) {
avatarImg.src = this.lifeCustomerInfo.practitionerBasicInfo.headImagePath + '?v=' + new Date().getTime(); avatarImg.src = this.lifeCustomerInfo.practitionerBasicInfo.headImagePath + '?v=' + new Date().getTime();
} else { } else {
avatarImg.src = `${environment.ORIGINNAME}/assets/img/meng.png?v=${new Date().getTime()}`; avatarImg.src = `${environment.DOMAINNAME}/assets/img/meng.png?v=${new Date().getTime()}`;
} }
// 这里的第一张图片就是可以是你们的海报 这里注意绘制的顺序 我们要手动控制 // 这里的第一张图片就是可以是你们的海报 这里注意绘制的顺序 我们要手动控制
img.src = this.productPosterPath; img.src = this.productPosterPath;
...@@ -226,7 +226,7 @@ export class MkMaterialDetailComponent implements OnInit { ...@@ -226,7 +226,7 @@ export class MkMaterialDetailComponent implements OnInit {
shareCode: shareCodeUuid, shareCode: shareCodeUuid,
customerId: this.lifeCustomerInfo.customerId, customerId: this.lifeCustomerInfo.customerId,
productId: this.materialItemId, productId: this.materialItemId,
url: `${environment.ORIGINNAME}/life/${this.materialItemId}?shareCode=${shareCodeUuid}` url: `${environment.DOMAINNAME}/life/${this.materialItemId}?shareCode=${shareCodeUuid}`
}; };
if (itemType == '2') { if (itemType == '2') {
this.shareInfo.productId = null; this.shareInfo.productId = null;
...@@ -235,9 +235,9 @@ export class MkMaterialDetailComponent implements OnInit { ...@@ -235,9 +235,9 @@ export class MkMaterialDetailComponent implements OnInit {
// 0是有plan,1是无plan // 0是有plan,1是无plan
if (posterInfo.isPlan == '0') { if (posterInfo.isPlan == '0') {
if (posterInfo.productCategoryId == '2') { if (posterInfo.productCategoryId == '2') {
this.shareInfo.url = `${environment.ORIGINNAME}/hProductDetail/${this.materialItemId}?shareCode=${shareCodeUuid}&type=7`; this.shareInfo.url = `${environment.DOMAINNAME}/hProductDetail/${this.materialItemId}?shareCode=${shareCodeUuid}&type=7`;
} else if (posterInfo.productCategoryId == '5') { } else if (posterInfo.productCategoryId == '5') {
this.shareInfo.url = `${environment.ORIGINNAME}/hProductDetail/${this.materialItemId}?shareCode=${shareCodeUuid}&type=9`; this.shareInfo.url = `${environment.DOMAINNAME}/hProductDetail/${this.materialItemId}?shareCode=${shareCodeUuid}&type=9`;
} }
} }
// 发送请求保存分享码 // 发送请求保存分享码
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<i class="iconfont icon-bianji" *ngIf="readonlyFlag" (click)="editInfo()"></i> <i class="iconfont icon-bianji" *ngIf="readonlyFlag" (click)="editInfo()"></i>
<i class="iconfont icon-save" *ngIf="!readonlyFlag" (click)="saveInfo()"></i> <i class="iconfont icon-save" *ngIf="!readonlyFlag" (click)="saveInfo()"></i>
<div class="contentDetail"> <div class="contentDetail">
<div class="first"> <div class="wrapper_item">
<div class="contentItem"> <div class="contentItem">
<span>姓名</span> <span>姓名</span>
<input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无姓名':'请输入姓名'}}" <input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无姓名':'请输入姓名'}}"
...@@ -34,9 +34,25 @@ ...@@ -34,9 +34,25 @@
</button> </button>
</div> </div>
<input class="form-control" type="text" placeholder="暂无性别信息" *ngIf="!sexFlag" disabled /> <input class="form-control" type="text" placeholder="暂无性别信息" *ngIf="!sexFlag" disabled />
</div> </div>
<div class="contentItem"> <div class="contentItem">
<span>城市</span>
<input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无城市信息':'请输入城市'}}"
[(ngModel)]="editBusiness.address" [disabled]="readonlyFlag" (blur)="inputBlur()" />
</div>
<div class="contentItem">
<span>血型</span>
<input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无血型信息':'请选择血型'}}"
[disabled]="readonlyFlag" (blur)="inputBlur()" />
</div>
<div class="contentItem">
<span>星座</span>
<input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无星座信息':'请选择星座'}}"
[disabled]="readonlyFlag" (blur)="inputBlur()" />
</div>
</div>
<div class="wrapper_item">
<div class="contentItem">
<span>手机</span> <span>手机</span>
<a style="text-decoration:none;color: #333;margin-right: 16px;" href="tel:{{editBusiness.mobileNo}}"> <a style="text-decoration:none;color: #333;margin-right: 16px;" href="tel:{{editBusiness.mobileNo}}">
<i class="iconfont icon-dianhua" style="color: #e10d0d;"></i> <i class="iconfont icon-dianhua" style="color: #e10d0d;"></i>
...@@ -54,20 +70,31 @@ ...@@ -54,20 +70,31 @@
<input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无其他联系方式':'请输入其他联系方式'}}" <input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无其他联系方式':'请输入其他联系方式'}}"
[(ngModel)]="editBusiness.otherContacts" [disabled]="readonlyFlag" (blur)="inputBlur()" /> [(ngModel)]="editBusiness.otherContacts" [disabled]="readonlyFlag" (blur)="inputBlur()" />
</div> </div>
</div>
<div class="wrapper_item">
<div class="contentItem"> <div class="contentItem">
<span>城市</span> <span>预计FYP</span>
<input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无城市信息':'请输入城市'}}" <input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无预计FYP':'请输入预计FYP'}}"
[(ngModel)]="editBusiness.address" [disabled]="readonlyFlag" (blur)="inputBlur()" /> [disabled]="readonlyFlag" />
</div> </div>
<div class="contentItem">
<span>预计FYC</span>
<input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无预计FYC':'请输入预计FYP'}}"
[disabled]="readonlyFlag" />
</div> </div>
<div class="second">
<div class="contentItem"> <div class="contentItem">
<span>城市</span> <span>预计成交件数</span>
<input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无城市信息':'请输入城市'}}" <input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无预计件数':'请输入预计件数'}}"
[(ngModel)]="editBusiness.address" [disabled]="readonlyFlag" (blur)="inputBlur()" /> [disabled]="readonlyFlag" />
</div>
<div class="contentItem">
<span>预计成交时间</span>
<input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无预计成交时间':'请输入预计成交时间'}}"
[disabled]="readonlyFlag" />
</div> </div>
</div> </div>
<div class="wrapper_item">
<div class="contentItem"> <div class="contentItem">
<span>商机来源</span> <span>商机来源</span>
<input class="form-control" type="text" [(ngModel)]="editBusiness.sourceChannel" disabled /> <input class="form-control" type="text" [(ngModel)]="editBusiness.sourceChannel" disabled />
...@@ -80,13 +107,22 @@ ...@@ -80,13 +107,22 @@
<div class="contentItem"> <div class="contentItem">
<span>商机状态</span> <span>商机状态</span>
<div style="padding: 6px 15px;padding: 6px 15px;color: #e10d0d;font-weight: bold;"> <div style="padding: 6px 15px;padding: 6px 15px;color: #e10d0d;font-weight: bold;">
{{lifeCommonService.checkStr(editBusiness.mdDropOptionId)}}</div> {{editBusiness.mdDropOptionName?editBusiness.mdDropOptionName:'待跟进'}}</div>
</div> </div>
</div>
<!-- <div class="contentItem"> <!-- <div class="contentItem">
<span>标签</span> <span>标签</span>
<input class="form-control" type="text" placeholder="标签" [(ngModel)]="editBusiness.name" <input class="form-control" type="text" placeholder="标签" [(ngModel)]="editBusiness.name"
[disabled]="readonlyFlag" /> [disabled]="readonlyFlag" />
</div> --> </div> -->
<div class="wrapper_item" style="border: none;margin-bottom: 0;">
<div class="contentItem">
<span>备注</span>
<div style="padding: 6px 15px;padding: 6px 15px;color: #e10d0d;font-weight: bold;">
{{editBusiness.mdDropOptionName?editBusiness.mdDropOptionName:'待跟进'}}</div>
</div>
</div>
</div> </div>
<div class="tagWrapper"> <div class="tagWrapper">
<div style="width: 100%;height: 34px;line-height: 34px;">标签</div> <div style="width: 100%;height: 34px;line-height: 34px;">标签</div>
...@@ -118,18 +154,11 @@ ...@@ -118,18 +154,11 @@
<li *ngFor="let opportunityRecordItem of opportunityRecordInfos"> <li *ngFor="let opportunityRecordItem of opportunityRecordInfos">
<div style="display: flex;justify-content: space-between;"> <div style="display: flex;justify-content: space-between;">
<div class="updatedAt">{{opportunityRecordItem.noticeDate}}</div> <div class="updatedAt">{{opportunityRecordItem.noticeDate}}</div>
<div class="opportunityRecordItem">{{lifeCommonService.checkStr(opportunityRecordItem.mdDropOptionId)}}</div> <div class="opportunityRecordItem">
{{opportunityRecordItem.mdDropOptionName?opportunityRecordItem.mdDropOptionName:'待跟进'}}</div>
</div> </div>
<div class="salesNotice">{{opportunityRecordItem.salesNotice}}</div> <div class="salesNotice">{{opportunityRecordItem.salesNotice}}</div>
</li> </li>
<!-- 待跟进状态永远显示在列表最下面 -->
<!-- <li>
<div style="display: flex;justify-content: space-between;">
<div>{{(editBusiness.opportunityDate).substr(0,10)}}</div>
<div>{{lifeCommonService.checkStr(editBusiness.mdDropOptionId)}}</div>
</div>
<div class="salesNotice">商机状态</div>
</li> -->
<li> <li>
<div class="salesNotice">{{(editBusiness.opportunityDate).substr(0,10)}}</div> <div class="salesNotice">{{(editBusiness.opportunityDate).substr(0,10)}}</div>
<div style="display: flex;justify-content: space-between;"> <div style="display: flex;justify-content: space-between;">
......
...@@ -41,9 +41,13 @@ ...@@ -41,9 +41,13 @@
background: #0767bf; background: #0767bf;
text-align: center; text-align: center;
bottom: 30px; bottom: 30px;
left: 42%;
} }
.contentDetail { .contentDetail {
margin-top: 15px; margin-top: 15px;
.wrapper_item{
border-bottom: 1px #ddd solid;
margin-bottom: 10px;
.contentItem { .contentItem {
display: flex; display: flex;
margin-bottom: 10px; margin-bottom: 10px;
...@@ -91,6 +95,8 @@ ...@@ -91,6 +95,8 @@
border-bottom: none; border-bottom: none;
} }
} }
}
.tagWrapper { .tagWrapper {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
...@@ -126,6 +132,7 @@ ...@@ -126,6 +132,7 @@
font-size: 28px; font-size: 28px;
// color: #ff5933; // color: #ff5933;
font-weight: bold; font-weight: bold;
} }
} }
.answerContent { .answerContent {
......
...@@ -4,6 +4,7 @@ import { ActivatedRoute } from "@angular/router"; ...@@ -4,6 +4,7 @@ import { ActivatedRoute } from "@angular/router";
import { BusinessQuery } from '../../domain/businessQuery'; import { BusinessQuery } from '../../domain/businessQuery';
import { LifeCommonService } from '../../common/life-common.service'; import { LifeCommonService } from '../../common/life-common.service';
@Component({ @Component({
selector: 'ydlife-my-business-detail', selector: 'ydlife-my-business-detail',
templateUrl: './my-business-detail.component.html', templateUrl: './my-business-detail.component.html',
...@@ -50,6 +51,8 @@ export class MyBusinessDetailComponent implements OnInit { ...@@ -50,6 +51,8 @@ export class MyBusinessDetailComponent implements OnInit {
isShow: boolean; isShow: boolean;
//线索id //线索id
leadsAssignedId: string; leadsAssignedId: string;
//控制tab可不可点
clickFlag: boolean;
constructor(private activateRoute: ActivatedRoute, private myService: MyService, constructor(private activateRoute: ActivatedRoute, private myService: MyService,
public lifeCommonService: LifeCommonService) { public lifeCommonService: LifeCommonService) {
this.titleList = [ this.titleList = [
...@@ -66,13 +69,26 @@ export class MyBusinessDetailComponent implements OnInit { ...@@ -66,13 +69,26 @@ export class MyBusinessDetailComponent implements OnInit {
this.leadsAssignedId = this.activateRoute.snapshot.queryParams['leadsAssignedId']; this.leadsAssignedId = this.activateRoute.snapshot.queryParams['leadsAssignedId'];
this.opportunityRecordId = null; this.opportunityRecordId = null;
this.tagQuery(); this.tagQuery();
this.selectTab(1);
this.dropOptionsQuery(); this.dropOptionsQuery();
//新增商机
if (Number(this.opportunityId) === 0) {
this.readonlyFlag = false;
this.sexFlag = true;
this.maleFlag = true;
this.femaleFlag = true;
this.clickFlag = false;
this.selectTab(1);
} else {
this.clickFlag = true;
this.selectTab(1);
//查询商机
setTimeout(() => { setTimeout(() => {
this.ownOpportunityDetailQuery(); this.ownOpportunityDetailQuery();
}, 300) }, 300)
} }
}
//改为编辑状态出现男女选项 //改为编辑状态出现男女选项
editInfo() { editInfo() {
this.readonlyFlag = false; this.readonlyFlag = false;
...@@ -82,12 +98,17 @@ export class MyBusinessDetailComponent implements OnInit { ...@@ -82,12 +98,17 @@ export class MyBusinessDetailComponent implements OnInit {
} }
selectTab(id) { selectTab(id) {
if (this.clickFlag == true) {
this.selectedId = id; this.selectedId = id;
if (id === 4) { if (id === 4) {
if (this.isCompletedQuestionnaire == 3) { if (this.isCompletedQuestionnaire == 3) {
window.location.href = `https://${window.location.host}/customizedPlanList/3?orderId=${this.orderId}&customerId=${this.opportunityId}` window.location.href = `https://${window.location.host}/customizedPlanList/3?orderId=${this.orderId}&customerId=${this.opportunityId}`
} }
} }
} else {
this.selectedId = 1;
}
} }
ownOpportunityDetailQuery() { ownOpportunityDetailQuery() {
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
</div> </div>
<div class="line"> <div class="line">
<div> 手机号:{{businessItem.mobileNo}}</div> <div> 手机号:{{businessItem.mobileNo}}</div>
<div>{{this.lifeCommonService.checkStr(businessItem.mdDropOptionId)}}</div> <div>{{businessItem.mdDropOptionName ? businessItem.mdDropOptionName:'待跟进'}}</div>
</div> </div>
<div class="line"> <div class="line">
<div>商机来源:{{businessItem.opportunityFrom}}</div> <div>商机来源:{{businessItem.opportunityFrom}}</div>
...@@ -26,4 +26,7 @@ ...@@ -26,4 +26,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="add">
<i class="iconfont icon-jiahao" (click)="addBussiness()"></i>
</div>
</div> </div>
\ No newline at end of file
...@@ -45,4 +45,24 @@ ...@@ -45,4 +45,24 @@
border-bottom: none; border-bottom: none;
} }
} }
.add {
position: absolute;
.iconfont {
width: 55px;
height: 55px;
line-height: 55px;
border-radius: 50%;
position: fixed;
right: 10px;
font-size: 24px;
color: #fff;
background: #0767bf;
text-align: center;
bottom: 50px;
font-size: 28px;
// color: #ff5933;
font-weight: bold;
left: 42%;
}
}
} }
\ 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 { Router } from "@angular/router";
@Component({ @Component({
selector: 'ydlife-my-business', selector: 'ydlife-my-business',
templateUrl: './my-business.component.html', templateUrl: './my-business.component.html',
...@@ -8,7 +9,7 @@ import { LifeCommonService } from '../../common/life-common.service'; ...@@ -8,7 +9,7 @@ import { LifeCommonService } from '../../common/life-common.service';
}) })
export class MyBusinessComponent implements OnInit { export class MyBusinessComponent implements OnInit {
businessList: Array<any>; businessList: Array<any>;
constructor(private myService: MyService, public lifeCommonService: LifeCommonService) { } constructor(private myService: MyService, public lifeCommonService: LifeCommonService, private router: Router) { }
ngOnInit() { ngOnInit() {
this.ownOpportunityQuery() this.ownOpportunityQuery()
...@@ -27,5 +28,7 @@ export class MyBusinessComponent implements OnInit { ...@@ -27,5 +28,7 @@ export class MyBusinessComponent implements OnInit {
}) })
} }
addBussiness() {
this.router.navigate(['/business/0']);
}
} }
import { Component, OnInit, ViewChild, ElementRef, AfterViewInit } from '@angular/core'; import { Component, OnInit, ViewChild, ElementRef, AfterViewInit } from '@angular/core';
import { Router } from "@angular/router"; import { Router, ActivatedRoute } from "@angular/router";
import { LifeCommonService } from "../../common/life-common.service"; import { LifeCommonService } from "../../common/life-common.service";
import { environment } from "../../../environments/environment"; import { environment } from "../../../environments/environment";
import { MyService } from "../my.service"; import { MyService } from "../my.service";
...@@ -37,14 +37,26 @@ export class MyCenterHomeComponent implements OnInit, AfterViewInit { ...@@ -37,14 +37,26 @@ export class MyCenterHomeComponent implements OnInit, AfterViewInit {
private router: Router, private router: Router,
private lifeCommonService: LifeCommonService, private lifeCommonService: LifeCommonService,
private myService: MyService, private myService: MyService,
private ls: LocalStorage private ls: LocalStorage,
private activatedRoute: ActivatedRoute,
) { ) {
} }
ngOnInit() { ngOnInit() {
const title = this.activatedRoute.snapshot.data[0]['title'];
this.lifeCommonService.setTitle(title);
this.deviceType = this.lifeCommonService.checkDeviceType(); this.deviceType = this.lifeCommonService.checkDeviceType();
this.lifeCustomerInfo = JSON.parse(localStorage.getItem('lifeCustomerInfo')) ? JSON.parse(localStorage.getItem('lifeCustomerInfo')) : null; this.lifeCustomerInfo = JSON.parse(localStorage.getItem('lifeCustomerInfo')) ? JSON.parse(localStorage.getItem('lifeCustomerInfo')) : null;
this.announcementQuery(); this.announcementQuery();
this.performanceList = [
{ name: '本月', time: 1 },
{ name: '季度', time: 3 },
{ name: '本年度', time: 2 }
]
//初始化调本月线上 保费+ 本月线下保费
this.rank(1, 1, 1)
this.rank(1, 2, 1)
this.recommendPlanQuery();
this.subordinateSystemMemberQuery(); this.subordinateSystemMemberQuery();
setTimeout(() => { setTimeout(() => {
this.menuLists = [ this.menuLists = [
...@@ -96,17 +108,6 @@ export class MyCenterHomeComponent implements OnInit, AfterViewInit { ...@@ -96,17 +108,6 @@ export class MyCenterHomeComponent implements OnInit, AfterViewInit {
]; ];
}, 300) }, 300)
this.performanceList = [
{ name: '本月', time: 1 },
{ name: '季度', time: 3 },
{ name: '本年度', time: 2 }
]
//初始化调本月线上 保费+ 本月线下保费
this.rank(1, 1, 1)
this.rank(1, 2, 1)
this.recommendPlanQuery();
} }
ngAfterViewInit() { ngAfterViewInit() {
......
...@@ -20,7 +20,7 @@ import { MySettingDetailComponent } from './my-setting-detail/my-setting-detail. ...@@ -20,7 +20,7 @@ import { MySettingDetailComponent } from './my-setting-detail/my-setting-detail.
import { MyNewsComponent } from './my-news/my-news.component'; import { MyNewsComponent } from './my-news/my-news.component';
const myRoutes: Routes = [ const myRoutes: Routes = [
{ path: '', component: MyCenterHomeComponent, canActivate: [AuthGuard] }, { path: '', component: MyCenterHomeComponent, canActivate: [AuthGuard], data: [{ title: '银盾保险经纪 - 工作台' }] },
{ path: 'material', component: MkMaterialComponent, canActivate: [AuthGuard] }, { path: 'material', component: MkMaterialComponent, canActivate: [AuthGuard] },
{ path: 'material/:itemId', component: MkMaterialDetailComponent, canActivate: [AuthGuard] }, { path: 'material/:itemId', component: MkMaterialDetailComponent, canActivate: [AuthGuard] },
{ path: 'fileUpload', component: FileUploadComponent, canActivate: [AuthGuard], data: [{ type: 'fileUpload' }] }, { path: 'fileUpload', component: FileUploadComponent, canActivate: [AuthGuard], data: [{ type: 'fileUpload' }] },
......
...@@ -27,14 +27,14 @@ export class MyService { ...@@ -27,14 +27,14 @@ export class MyService {
// 重要公告 // 重要公告
announcementQuery(id, announcementTypeId) { announcementQuery(id, announcementTypeId) {
const url = this.API + '/announcementQuery'; const url = this.ydapi + '/market/announcementQuery';
return this.http return this.http
.post(url, JSON.stringify({ id: id, announcementTypeId: announcementTypeId })); .post(url, JSON.stringify({ id: id, announcementTypeId: announcementTypeId }));
} }
// 产品海报 // 产品海报
posterQuery(paginationInfo) { posterQuery(paginationInfo) {
const url = this.API + '/posterQuery'; const url = this.ydapi + '/market/posterQuery';
return this.http return this.http
.post(url, JSON.stringify(paginationInfo)); .post(url, JSON.stringify(paginationInfo));
} }
...@@ -157,7 +157,6 @@ export class MyService { ...@@ -157,7 +157,6 @@ export class MyService {
return this.http.post(url, JSON.stringify(param)); return this.http.post(url, JSON.stringify(param));
} }
//排行榜 //排行榜
rank(param) { rank(param) {
const url = this.ydapi + '/practitioner/rank'; const url = this.ydapi + '/practitioner/rank';
...@@ -165,4 +164,29 @@ export class MyService { ...@@ -165,4 +164,29 @@ export class MyService {
.post(url, JSON.stringify(param)); .post(url, JSON.stringify(param));
} }
//新增增员接口
recruit(param) {
const url = this.ydapi + '/practitioner/recruitTrackQuery';
return this.http
.post(url, JSON.stringify(param));
}
//创建增员跟进记录
addRecruitTrack(param) {
const url = this.ydapi + '/practitioner/recruitTrackQuery';
return this.http
.post(url, JSON.stringify(param));
}
//增员查询跟进接口
recruitTrackQuery(param) {
const url = this.ydapi + '/practitioner/recruitTrackQuery';
return this.http
.post(url, JSON.stringify(param));
}
// 教育等级查询
educationLevelQuery() {
const url = this.API + '/metadata/educationLevelQuery';
return this.http.get(url);
}
} }
...@@ -15,20 +15,20 @@ ...@@ -15,20 +15,20 @@
<div class="contentItem"> <div class="contentItem">
<span>姓名</span> <span>姓名</span>
<input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无姓名':'请输入姓名'}}" <input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无姓名':'请输入姓名'}}"
[(ngModel)]="editBusiness.name" [disabled]="readonlyFlag" /> [(ngModel)]="editRecruiting.name" [disabled]="readonlyFlag" />
</div> </div>
<div class="contentItem"> <div class="contentItem">
<span>年龄</span> <span>年龄</span>
<input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无年龄信息':'请输入年龄'}}" <input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无年龄信息':'请输入年龄'}}"
[(ngModel)]="editBusiness.age" [disabled]="readonlyFlag" /> [(ngModel)]="editRecruiting.age" [disabled]="readonlyFlag" />
</div> </div>
<div class="contentItem"> <div class="contentItem">
<span>性别</span> <span>性别</span>
<div class="sexWrapper"> <div class="sexWrapper">
<button class="form-control sex" [ngClass]="{'sexBtn':editBusiness?.gender=='1' && maleFlag && femaleFlag}" <button class="form-control sex" [ngClass]="{'sexBtn':editRecruiting?.gender=='1' && maleFlag && femaleFlag}"
(click)="selectedGender('1')" [disabled]="readonlyFlag" *ngIf="sexFlag && maleFlag"> (click)="selectedGender('1')" [disabled]="readonlyFlag" *ngIf="sexFlag && maleFlag">
</button> </button>
<button class="form-control sex" [ngClass]="{'sexBtn':editBusiness?.gender=='2' && maleFlag && femaleFlag}" <button class="form-control sex" [ngClass]="{'sexBtn':editRecruiting?.gender=='2' && maleFlag && femaleFlag}"
(click)="selectedGender('2')" [disabled]="readonlyFlag" *ngIf="sexFlag && femaleFlag"> (click)="selectedGender('2')" [disabled]="readonlyFlag" *ngIf="sexFlag && femaleFlag">
</button> </button>
</div> </div>
...@@ -37,46 +37,48 @@ ...@@ -37,46 +37,48 @@
</div> </div>
<div class="contentItem"> <div class="contentItem">
<span>手机</span> <span>手机</span>
<a style="text-decoration:none;color: #333;margin-right: 16px;" href="tel:{{editBusiness.mobileNo}}"> <a style="text-decoration:none;color: #333;margin-right: 16px;" href="tel:{{editRecruiting.mobileNo}}">
<i class="iconfont icon-dianhua" style="color: #e10d0d;"></i> <i class="iconfont icon-dianhua" style="color: #e10d0d;"></i>
{{editBusiness.mobileNo}}</a> {{editRecruiting.mobileNo}}</a>
<!-- <input class="form-control" type="text" [(ngModel)]="editBusiness.mobileNo" disabled /> --> <!-- <input class="form-control" type="text" [(ngModel)]="editRecruiting.mobileNo" disabled /> -->
</div> </div>
<div class="contentItem"> <div class="contentItem">
<span>微信</span> <span>微信</span>
<input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无微信':'请输入微信'}}" <input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无微信':'请输入微信'}}"
[(ngModel)]="editBusiness.weChat" [disabled]="readonlyFlag" (blur)="inputBlur()" /> [(ngModel)]="editRecruiting.weChat" [disabled]="readonlyFlag" (blur)="inputBlur()" />
</div> </div>
<div class="contentItem"> <div class="contentItem">
<span>其他联系</span> <span>其他联系</span>
<input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无其他联系方式':'请输入其他联系方式'}}" <input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无其他联系方式':'请输入其他联系方式'}}"
[(ngModel)]="editBusiness.otherContacts" [disabled]="readonlyFlag" (blur)="inputBlur()" /> [(ngModel)]="editRecruiting.otherContacts" [disabled]="readonlyFlag" (blur)="inputBlur()" />
</div> </div>
<div class="contentItem"> <div class="contentItem">
<span>学历</span> <span>学历</span>
<input class="form-control" type="text" [(ngModel)]="editBusiness.sourceChannel" <select class="form-control" [(ngModel)]="editRecruiting.educationLevel" [disabled]="readonlyFlag"
placeholder="{{readonlyFlag ?'暂无学历信息':'请选择学历'}}" [disabled]="readonlyFlag" /> style=" direction: rtl;">
<option value=''>请选择学历</option>
<option *ngFor="let educationLevelItem of educationLevelList" [value]="educationLevelItem.id">
{{educationLevelItem.name}}
</option>
</select>
</div> </div>
<div class="contentItem"> <div class="contentItem">
<span>招募来源</span> <span>招募来源</span>
<input class="form-control" type="text" [(ngModel)]="editBusiness.sourceChannel" disabled /> <input class="form-control" type="text" [(ngModel)]="editRecruiting.sourceChannel" disabled />
</div> </div>
<div class="contentItem"> <div class="contentItem">
<span>时间</span> <span>时间</span>
<input class="form-control" type="text" placeholder="商机时间" [(ngModel)]="editBusiness.opportunityDate" <input class="form-control" type="text" placeholder="增员创建时间" [(ngModel)]="editRecruiting.opportunityDate"
disabled /> disabled />
</div> </div>
<div class="contentItem"> <div class="contentItem">
<span>商机状态</span> <span>增员状态</span>
<div style="padding: 6px 15px;padding: 6px 15px;color: #e10d0d;font-weight: bold;"> <div style="padding: 6px 15px;padding: 6px 15px;color: #e10d0d;font-weight: bold;">
{{lifeCommonService.checkStr(editBusiness.mdDropOptionId)}}</div> {{editRecruiting.mdDropOptionId}}</div>
</div> </div>
</div> </div>
</div> </div>
<div class="content" *ngIf="selectedId===2"> <div class="content" *ngIf="selectedId===2">
<div style="text-align: center;font-size: 16px;margin-top: 10px;" <div style="text-align: center;font-size: 16px;margin-top: 10px;"
...@@ -101,9 +103,9 @@ ...@@ -101,9 +103,9 @@
<div class="salesNotice">{{opportunityRecordItem.salesNotice}}</div> <div class="salesNotice">{{opportunityRecordItem.salesNotice}}</div>
</li> </li>
<li> <li>
<div class="salesNotice">{{editBusiness.opportunityDate}}</div> <div class="salesNotice">{{editRecruiting.opportunityDate}}</div>
<div style="display: flex;justify-content: space-between;"> <div style="display: flex;justify-content: space-between;">
<div>商机状态</div> <div>增员状态</div>
<div>待跟进</div> <div>待跟进</div>
</div> </div>
</li> </li>
...@@ -118,13 +120,13 @@ ...@@ -118,13 +120,13 @@
<!--编辑框--> <!--编辑框-->
<div class="editContainer" *ngIf="isShow"> <div class="editContainer" *ngIf="isShow">
<div> <div>
<div>跟进状态</div> <div>增员状态</div>
<div style="position:relative"> <div style="position:relative">
<select name="businessStatus" (onChange)="inputBlur()" id="businessStatus" class="form-control" <select name="businessStatus" (onChange)="inputBlur()" id="businessStatus" class="form-control"
[(ngModel)]="opportunityRecordId"> [(ngModel)]="trackStatusId">
<option value="null">请选择</option> <option value="null">请选择</option>
<option *ngFor="let businessStatusItem of businessStatusList" value="{{businessStatusItem.id}}"> <option *ngFor="let recruitingStatusItem of recruitingStatusList" value="{{recruitingStatusItem.id}}">
{{businessStatusItem.dropOptionName}} {{recruitingStatusItem.dropOptionName}}
</option> </option>
</select> </select>
<i class="iconfont icon-xiangxia" style="position: absolute;right: 50px;top: 5px;"></i> <i class="iconfont icon-xiangxia" style="position: absolute;right: 50px;top: 5px;"></i>
...@@ -132,7 +134,7 @@ ...@@ -132,7 +134,7 @@
</div> </div>
<div> <div>
<div>备注</div> <div>备注</div>
<div><input type="text" id="remark" class="form-control" placeholder="输入备注信息" [(ngModel)]="salesNotice" <div><input type="text" id="remark" class="form-control" placeholder="输入备注信息" [(ngModel)]="notice"
(blur)="inputBlur()"></div> (blur)="inputBlur()"></div>
</div> </div>
<div> <div>
...@@ -141,7 +143,7 @@ ...@@ -141,7 +143,7 @@
[(ngModel)]="opportunityRecordNoticeDate" (blur)="inputBlur()"></div> [(ngModel)]="opportunityRecordNoticeDate" (blur)="inputBlur()"></div>
</div> </div>
<ul class="footer"> <ul class="footer">
<li (click)="ownOpportunityRecordSave()">确定</li> <li (click)="addRecruitTrack()">确定</li>
<li (click)="this.isShow = false;">取消</li> <li (click)="this.isShow = false;">取消</li>
</ul> </ul>
</div> </div>
......
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
> span:first-child{ > span:first-child{
white-space: nowrap; white-space: nowrap;
} }
input.form-control { input.form-control,select.form-control {
display: inline-block; display: inline-block;
// width: 60%; // width: 60%;
margin: 0 5px; margin: 0 5px;
...@@ -66,7 +66,6 @@ ...@@ -66,7 +66,6 @@
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
} }
.sexWrapper { .sexWrapper {
display: flex; display: flex;
width: 60%; width: 60%;
......
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from "@angular/router"; import { ActivatedRoute } from "@angular/router";
import { BusinessQuery } from '../../domain/businessQuery';
import { LifeCommonService } from '../../common/life-common.service'; import { LifeCommonService } from '../../common/life-common.service';
import { MyService } from '../my.service';
import { RecruitingQuery } from '../../domain/recruitingQuery';
@Component({ @Component({
selector: 'ydlife-recruiting-detail', selector: 'ydlife-recruiting-detail',
...@@ -9,11 +10,12 @@ import { LifeCommonService } from '../../common/life-common.service'; ...@@ -9,11 +10,12 @@ import { LifeCommonService } from '../../common/life-common.service';
styleUrls: ['./recruiting-detail.component.scss'] styleUrls: ['./recruiting-detail.component.scss']
}) })
export class RecruitingDetailComponent implements OnInit { export class RecruitingDetailComponent implements OnInit {
editRecruiting: RecruitingQuery = new RecruitingQuery();
//潜在增员的id //潜在增员的id
id: string; id: string;
titleList: Array<any>; titleList: Array<any>;
selectedId: number; selectedId: number;
editBusiness: BusinessQuery = new BusinessQuery();
readonlyFlag: boolean = true; readonlyFlag: boolean = true;
//性别显示 //性别显示
sexFlag: boolean; sexFlag: boolean;
...@@ -22,10 +24,17 @@ export class RecruitingDetailComponent implements OnInit { ...@@ -22,10 +24,17 @@ export class RecruitingDetailComponent implements OnInit {
//显示男 //显示男
maleFlag: boolean; maleFlag: boolean;
isShow: boolean; isShow: boolean;
recruitingStatusList: Array<any>;
//控制tab可不可点
clickFlag: boolean;
educationLevelList: Array<any>;
//新增增员记录的备注
notice: any;
trackStatusId: any;
constructor( constructor(
private activateRoute: ActivatedRoute, private activateRoute: ActivatedRoute,
public lifeCommonService: LifeCommonService) { public lifeCommonService: LifeCommonService,
private myService: MyService) {
this.titleList = [ this.titleList = [
{ id: 1, name: '基本信息' }, { id: 1, name: '基本信息' },
{ id: 2, name: '简历' }, { id: 2, name: '简历' },
...@@ -36,11 +45,29 @@ export class RecruitingDetailComponent implements OnInit { ...@@ -36,11 +45,29 @@ export class RecruitingDetailComponent implements OnInit {
ngOnInit() { ngOnInit() {
this.id = this.activateRoute.snapshot.paramMap.get('id'); this.id = this.activateRoute.snapshot.paramMap.get('id');
console.log(this.id) console.log(this.id)
this.dropOptionsQuery();
this.educationLevelQuery();
if (Number(this.id) === 0) {
this.readonlyFlag = false;
this.sexFlag = true;
this.maleFlag = true;
this.femaleFlag = true;
this.clickFlag = false;
this.editRecruiting = new RecruitingQuery('', 1, '', '', '', '', '', '', '', null, '', '', '', '', '');
this.selectTab(1);
} else {
this.clickFlag = true;
this.selectTab(1); this.selectTab(1);
} }
}
selectTab(id) { selectTab(id) {
if (this.clickFlag == true) {
this.selectedId = id; this.selectedId = id;
} else {
this.selectedId = 1;
}
} }
//改为编辑状态出现男女选项 //改为编辑状态出现男女选项
...@@ -53,7 +80,59 @@ export class RecruitingDetailComponent implements OnInit { ...@@ -53,7 +80,59 @@ export class RecruitingDetailComponent implements OnInit {
//选男女 //选男女
selectedGender(e) { selectedGender(e) {
this.editBusiness.gender = e; this.editRecruiting.gender = e;
}
//查询跟进记录
recruitTrackQuery() {
const param = {
potentialId: null,
practitionerId: JSON.parse(localStorage.getItem('lifeCustomerInfo'))['practitionerId']
}
this.myService.recruitTrackQuery(param).subscribe((res) => {
console.log(res)
})
}
//跟进状态列表
dropOptionsQuery() {
this.myService.dropOptionsQuery({ code: 'team_biulding_track' }).subscribe((res) => {
if (res['success']) {
this.recruitingStatusList = res['data']['dropMasterInfoList']['0']['dropOptionsInfoList'];
}
})
}
// 教育等级查询
educationLevelQuery() {
this.myService.educationLevelQuery().subscribe(res => {
if (res['success']) {
this.educationLevelList = res['data']['educationLevelList']
}
})
}
inputBlur() {
window.scrollTo(0, 0)
}
//创建增员跟进记录
addRecruitTrack() {
const RecruitTrackParam = {
potentialId: 26,//测试先写死小小仙女
practitionerId: JSON.parse(localStorage.getItem('lifeCustomerInfo'))['practitionerId'],
notice: this.notice,
trackStatusId: this.trackStatusId
} }
this.myService.addRecruitTrack(RecruitTrackParam).subscribe((res) => {
console.log(res)
if (res['success']) {
} else {
}
})
}
} }
<div class="salesWrapper"> <div class="salesWrapper">
<ul class="tab">
<li *ngFor="let titleItem of titleList" (click)="selectTab(titleItem.id)"
[ngClass]="{selected:selectedId===titleItem.id}">
<div style="position: relative;">
<h3>{{titleItem.name}}
</h3>
</div>
</li>
</ul>
<div class="salesContent"> <div class="salesContent">
<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="businessList?.length==0">暂无商机</div>
<div class="salesItem" *ngFor="let recruitingItem of recruitingList" <div class="salesItem" *ngFor="let recruitingItem of recruitingList"
......
...@@ -3,6 +3,28 @@ ...@@ -3,6 +3,28 @@
height: 100%; height: 100%;
overflow: auto; overflow: auto;
// background:#f7f7f2; // background:#f7f7f2;
.tab {
display: flex;
list-style: none;
margin: 10px 0px;
padding-left: 1%;
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;
}
}
li.selected {
border: 1px #e10d0d solid;
}
}
.salesContent{ .salesContent{
.salesItem{ .salesItem{
border-bottom: 1px #dcdcdc solid; border-bottom: 1px #dcdcdc solid;
......
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { Router } from "@angular/router"; import { Router } from "@angular/router";
import { MyService } from '../my.service';
@Component({ @Component({
selector: 'ydlife-recruiting', selector: 'ydlife-recruiting',
templateUrl: './recruiting.component.html', templateUrl: './recruiting.component.html',
...@@ -7,14 +9,20 @@ import { Router } from "@angular/router"; ...@@ -7,14 +9,20 @@ import { Router } from "@angular/router";
}) })
export class RecruitingComponent implements OnInit { export class RecruitingComponent implements OnInit {
recruitingList: Array<any>; recruitingList: Array<any>;
constructor(private router: Router) { } titleList: Array<any>;
selectedId: any;
constructor(private router: Router, private myService: MyService) { }
ngOnInit() { ngOnInit() {
this.titleList = [
{ id: 1, name: '待跟进' },
{ id: 2, name: '跟进中' },
{ id: 4, name: '已报聘' },
]
this.recruitingList = [ this.recruitingList = [
{ id: 1, name: '月亮', mobileNo: '18100000000', sources: 'boss直聘', status: '有意向', date: '2020-01-12' }, { id: 1, name: '月亮', mobileNo: '18100000000', sources: 'boss直聘', status: '有意向', date: '2020-01-12' },
{ id: 2, name: '太阳', mobileNo: '18100000001', sources: '拉钩网', status: '有意向', date: '2020-01-12' }, { id: 2, name: '太阳', mobileNo: '18100000001', sources: '拉钩网', status: '有意向', date: '2020-01-12' },
{ id: 3, name: '星星', mobileNo: '18100000002', sources: '拉钩网', status: '考虑加入', date: '2020-01-12' }, { id: 3, name: '星星', mobileNo: '18100000002', sources: '拉钩网', status: '考虑加入', date: '2020-01-12' },
] ]
} }
...@@ -22,5 +30,10 @@ export class RecruitingComponent implements OnInit { ...@@ -22,5 +30,10 @@ export class RecruitingComponent implements OnInit {
this.router.navigate(['/recruiting/0']); this.router.navigate(['/recruiting/0']);
} }
selectTab(id) {
console.log(id)
}
} }
...@@ -2,5 +2,6 @@ export const environment = { ...@@ -2,5 +2,6 @@ export const environment = {
production: true, production: true,
BACKEND_URL_CONFIG_VALUE: 'https://m.zuihuibi.cn/api', BACKEND_URL_CONFIG_VALUE: 'https://m.zuihuibi.cn/api',
ORIGINNAME: 'https://m.zuihuibi.cn/ydapi', ORIGINNAME: 'https://m.zuihuibi.cn/ydapi',
DOMAINNAME: 'https://m.zuihuibi.cn/',
BAIDU_TONGJI_CODE: '36b1eb7eec3b5dac9f97d887092b5b27' BAIDU_TONGJI_CODE: '36b1eb7eec3b5dac9f97d887092b5b27'
}; };
...@@ -5,5 +5,6 @@ export const environment = { ...@@ -5,5 +5,6 @@ export const environment = {
production: true, production: true,
BACKEND_URL_CONFIG_VALUE: 'https://mstage.zuihuibi.cn/api', BACKEND_URL_CONFIG_VALUE: 'https://mstage.zuihuibi.cn/api',
ORIGINNAME: 'https://mstage.zuihuibi.cn/ydapi', ORIGINNAME: 'https://mstage.zuihuibi.cn/ydapi',
DOMAINNAME: 'https://mstage.zuihuibi.cn/',
BAIDU_TONGJI_CODE: '84be9b9eaaca51048f32bb160ccad2e6' BAIDU_TONGJI_CODE: '84be9b9eaaca51048f32bb160ccad2e6'
}; };
...@@ -7,5 +7,6 @@ export const environment = { ...@@ -7,5 +7,6 @@ export const environment = {
production: false, production: false,
BACKEND_URL_CONFIG_VALUE: 'https://mdev.zuihuibi.cn/api', BACKEND_URL_CONFIG_VALUE: 'https://mdev.zuihuibi.cn/api',
ORIGINNAME: 'https://mdev.zuihuibi.cn/ydapi', ORIGINNAME: 'https://mdev.zuihuibi.cn/ydapi',
DOMAINNAME: 'https://mdev.zuihuibi.cn/',
BAIDU_TONGJI_CODE: 'e8fa107d82e0471d097d545225aeed64' BAIDU_TONGJI_CODE: 'e8fa107d82e0471d097d545225aeed64'
}; };
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