Commit be1732aa by Chao Sun

我的商机基本信息保存

parent 63a96995
import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {AlertComponent} from './alert/alert.component';
import {FormsModule} from "@angular/forms";
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AlertComponent } from './alert/alert.component';
import { FormsModule } from "@angular/forms";
import { GuidePageComponent } from './guide-page/guide-page.component';
import { SafeHtmlPipe } from './safe-html.pipe';
......
......@@ -152,4 +152,40 @@ export class LifeCommonService {
delHtmlTag(str) {
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 '客户买了其他';
}
}
}
<div class="">
<div class="weui-mask weui-animate-fade-in"></div>
<div class="weui-picker weui-animate-slide-up">
<div class="weui-picker__hd">
<span>{{title}}</span>
<a href="javascript:;" data-action="cancel" class="weui-picker__action" (click)="cancel()">取消</a>
</div>
<div class="weui-picker__bd">
<div class="weui-picker__content" *ngIf="!provinceId">
<div class="cursor weui-picker__item borderBottom" *ngFor="let provinceList of provinceLists"
(click)="selectProvince(provinceList.provinceId,provinceList.provinceName)">{{provinceList.provinceName}}
</div>
</div>
<div class="weui-picker__content" *ngIf="provinceId && !cityId">
<div class="cursor weui-picker__item borderBottom" *ngFor="let cityList of cityLists"
(click)="selectCity(cityList.cityId,cityList.cityName)">{{cityList.cityName}}
</div>
</div>
<div class="weui-picker__content" *ngIf="provinceId && cityId && !districtId">
<div class="cursor weui-picker__item borderBottom" *ngFor="let districtList of districtLists"
(click)="selectDistrict(districtList.districtId,districtList.districtName)">{{districtList.districtName}}
</div>
</div>
</div>
</div>
</div>
\ No newline at end of file
.weui-mask {
position: fixed;
z-index: 1000;
top: 0;
right: 0;
left: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.6);
}
.weui-animate-fade-in {
-webkit-animation: fadeIn ease .3s forwards;
animation: fadeIn ease .3s forwards;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.weui-picker {
position: fixed;
width: 100%;
max-width: 640px;
left: 0;
right: 0;
bottom: 0;
z-index: 5000;
margin: 0 auto;
background-color: #fff;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
-webkit-transform: translate(0, 100%);
transform: translate(0, 100%);
-webkit-transition: -webkit-transform .3s;
transition: -webkit-transform .3s;
transition: transform .3s;
}
@keyframes slideUp {
from {
transform: translate3d(0, 100%, 0);
}
to {
transform: translate3d(0, 0, 0);
}
}
.weui-animate-slide-up {
animation: slideUp ease .3s forwards;
}
.weui-picker__hd {
display: -webkit-box;
display: -webkit-flex;
display: flex;
padding: 16px;
position: relative;
text-align: center;
font-size: 17px;
line-height: 1.4;
.weui-picker__action {
display: block;
-webkit-box-flex: 1;
-webkit-flex: 1;
flex: 1;
color: #576B95;
}
.weui-picker__action:last-child {
text-align: right;
}
}
.weui-picker__hd:after {
content: " ";
position: absolute;
left: 0;
bottom: 0;
right: 0;
height: 1px;
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
color: rgba(0, 0, 0, 0.1);
-webkit-transform-origin: 0 100%;
transform-origin: 0 100%;
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
}
.weui-picker__bd {
display: -webkit-box;
display: -webkit-flex;
display: flex;
position: relative;
background-color: #fff;
height: 240px;
overflow: hidden;
.weui-picker__content {
width: 100%;
padding-bottom: 90px;
height: auto;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
.weui-picker__item {
height: 50px;
line-height: 50px;
padding: 0 15px;
}
}
}
\ No newline at end of file
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { PickerComponent } from './picker.component';
describe('PickerComponent', () => {
let component: PickerComponent;
let fixture: ComponentFixture<PickerComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ PickerComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(PickerComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit, Output, Input, EventEmitter } from '@angular/core';
@Component({
selector: 'ydlife-picker',
templateUrl: './picker.component.html',
styleUrls: ['./picker.component.scss']
})
export class PickerComponent implements OnInit {
@Input() provinceLists: Array<any>;
// 地址选择到区还是市 ,省为1,市为2,区为3
@Input() limitStep: number;
@Output() selectedArea = new EventEmitter();
cityLists: Array<any>;
districtLists: Array<any>;
provinceId: any;
districtId: any;
cityId: any;
title: any;
area: any;
isNeedDistrict: boolean = true;
areaLimitStep: number;
isNeedCity: boolean = true;
isNeedProvince: boolean = true;
constructor() {
this.title = '选择省份';
this.area = {
province: { id: null, value: null },
city: { id: null, value: null },
district: { id: null, value: null }
}
}
ngOnInit() {
console.log(this.provinceLists)
if (this.isNeedDistrict) {
this.areaLimitStep = 3;
} else if (this.isNeedCity) {
this.areaLimitStep = 2;
} else if (this.isNeedProvince) {
this.areaLimitStep = 1;
} else {
this.areaLimitStep = 3;
}
}
// 选择省份
selectProvince(provinceId, provinceName) {
this.area.province.value = provinceName;
this.area.province.id = this.provinceId = provinceId;
this.cityLists = this.provinceLists.filter(item => item.provinceId === provinceId).pop().citys;
this.title = '选择城市';
if (this.limitStep === 1) {
this.selectedArea.emit(this.area);
return;
}
}
// 选择城市
selectCity(cityId, cityName) {
this.area.city.value = cityName;
this.area.city.id = this.cityId = cityId;
this.title = '选择地区';
if (this.limitStep === 2) {
this.selectedArea.emit(this.area);
return;
}
this.districtLists = this.cityLists.filter(item => item.cityId === cityId).pop().districtItem;
if (!this.districtLists) {
this.selectedArea.emit(this.area);
}
}
// 选择地区
selectDistrict(districtId, districtName) {
this.area.district.value = districtName;
this.area.district.id = this.districtId = districtId;
this.selectedArea.emit(this.area);
}
// 取消
cancel() {
this.selectedArea.emit();
}
}
export class BusinessQuery {
constructor(
public opportunityId?: string,
public birthdate?: string,
public name?: string,
public gender?: string,
public mobileNo?: string,
public weChat?: string,
public otherContacts?: string,
public sourceChannel?: string,
public provinceId?: string,
public provinceName?: string,
public cityId?: string,
public cityName?: string,
public opportunityDate?: string,
public opportunityCustomerTags?: any
) {
}
}
\ No newline at end of file
......@@ -13,7 +13,6 @@
margin-bottom: 10px;
float: left;
width: 120%;
height: 30px;
overflow: hidden;
overflow-x: auto;
list-style: none;
......@@ -26,7 +25,7 @@
border-radius: 20px;
margin: 0px 2px;
float: left;
width: 15.2%;
width: 15.6%;
}
li.actived{
background-color: #ff5a32;
......
......@@ -8,7 +8,6 @@
margin-bottom: 10px;
float: left;
width: 120%;
height: 30px;
overflow: hidden;
overflow-x: auto;
list-style: none;
......@@ -21,7 +20,7 @@
border-radius: 20px;
margin: 0px 2px;
float: left;
width: 15.2%;
width: 15.7%;
}
li.actived{
background-color: #ff5a32;
......
......@@ -8,7 +8,6 @@
margin-bottom: 10px;
float: left;
width: 120%;
height: 30px;
overflow: hidden;
overflow-x: auto;
list-style: none;
......@@ -21,7 +20,7 @@
border-radius: 20px;
margin: 0px 2px;
float: left;
width: 15.2%;
width: 15.6%;
}
li.actived{
background-color: #ff5a32;
......
<div class="wrapper">
<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="content" *ngIf="selectedId===1">
<i class="iconfont icon-xiugaiziliao" *ngIf="readonlyFlag" (click)="editInfo()"></i>
<i class="iconfont icon-save" *ngIf="!readonlyFlag" (click)="saveInfo()"></i>
<div class="contentDetail">
<div class="contentItem">
<span>姓名</span>
<input class="form-control" type="text" placeholder="姓名" [(ngModel)]="editBusiness.name"
[disabled]="readonlyFlag" />
</div>
<div class="contentItem">
<span>年龄</span>
<input class="form-control" type="text" placeholder="年龄" [(ngModel)]="editBusiness.age"
[disabled]="readonlyFlag" />
</div>
<div class="contentItem">
<span>性别</span>
<div class="sexWrapper">
<button class="form-control sex" [ngClass]="{'sexBtn':editBusiness?.gender=='1'}"
(click)="selectedGender('1')">
</button>
<button class="form-control sex" [ngClass]="{'sexBtn':editBusiness?.gender=='2'}"
(click)="selectedGender('2')"></button>
</div>
</div>
<div class="contentItem">
<span>手机</span>
<input class="form-control" type="text" placeholder="手机" [(ngModel)]="editBusiness.mobileNo" disabled />
</div>
<div class="contentItem">
<span>微信</span>
<input class="form-control" type="text" placeholder="微信" [(ngModel)]="editBusiness.weChat"
[disabled]="readonlyFlag" />
</div>
<div class="contentItem">
<span>其他联系</span>
<input class="form-control" type="text" placeholder="其他联系" [(ngModel)]="editBusiness.otherContacts"
[disabled]="readonlyFlag" />
</div>
<div class="contentItem">
<span>商机来源</span>
<input class="form-control" type="text" placeholder="商机来源" [(ngModel)]="editBusiness.sourceChannel"
[disabled]="readonlyFlag" />
</div>
<div class="contentItem">
<span>城市</span>
<input class="form-control" type="text" placeholder="城市" [(ngModel)]="editBusiness.address"
[disabled]="readonlyFlag" (click)="selectedArea()" />
</div>
<div class="contentItem">
<span>商机时间</span>
<input class="form-control" type="text" placeholder="商机时间" [(ngModel)]="editBusiness.opportunityDate"
disabled />
</div>
<div class="contentItem">
<span>商机状态</span>
<div>{{lifeCommonService.checkStr(editBusiness.mdDropOptionId)}} </div>
</div>
<div class="contentItem">
<span>标签</span>
<input class="form-control" type="text" placeholder="标签" [(ngModel)]="editBusiness.name"
[disabled]="readonlyFlag" />
</div>
</div>
<div class="tagWrapper">
<div style="width: 100%;">请选择客户标签</div>
<div class="tagContent" *ngFor="let tagItem of tagList" (click)="selectTag(tagItem)"
[ngClass]="{selected:tagItem.selected}">
{{tagItem.tagName}}
</div>
</div>
</div>
<div class="content" *ngIf="selectedId===2">
<div class="answerContent" *ngFor="let surveyItem of opportunitySurveyAnswersList">
<div class="questionTitle">{{surveyItem.questionName}}</div>
<div class="questionContent">{{surveyItem.optionName}}</div>
</div>
</div>
<div class="content" *ngIf="selectedId===3">
<div class="add">+</div>
<ul>
<li>日期</li>
<li>商机状态</li>
<li>备注</li>
</ul>
</div>
<ydlife-picker *ngIf="cityFlag" [provinceLists]="provinces" [limitStep]="areaLimitStep"
(selectedArea)="getAreaInfo($event,1)"></ydlife-picker>
</div>
\ No newline at end of file
.wrapper{
.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{
background-color: #ff5a32;
color: #fff;
border: 1px #f0f0f0 solid;
}
}
.content{
padding: 10px 5px;
position: relative;
.iconfont{
position: absolute;
right: 10px;
font-size: 24px;
top: -15px;
}
.contentDetail{
margin-top: 15px;
.contentItem{
display: flex;
margin-bottom: 10px;
justify-content: space-between;
align-items: center;
// border-bottom: 1px #ddd solid;
margin: 0 8px 8px 8px;
input.form-control{
display: inline-block;
width: 60%;
margin: 0 5px;
background:none;
outline:none;
border:none;
text-align: right;
box-shadow: none;
}
.sexWrapper{
display: flex;
width: 60%;
justify-content: flex-end;
padding-right: 16px;
.form-control.sex{
width: 20%;
margin-left: 5px;
}
.form-control.sex.sexBtn{
background-color: #5cb85c;
color: #fff;
}
}
}
.contentItem:last-child{
border-bottom: none;
}
}
.tagWrapper{
display: flex;
flex-wrap: wrap;
padding-left: 8px;
div.tagContent{
width: 25%;
margin: 10px 3px 0 3px;
height: 30px;
line-height: 30px;
text-align: center;
background-color: #e8e8e8;
border-radius: 12px;
cursor: pointer;
}
div.selected{
color: #5cb85c;
background: rgba(91, 184, 92, 0.1);
}
}
.add{
width: 30px;
height: 30px;
line-height: 30px;
border-radius: 50%;
text-align: center;
border: 1px #ddd solid;
position: absolute;
right: 10px;
top: -5px;
}
.answerContent{
border-bottom: 1px #ddd solid;
margin-bottom: 5px;
padding: 5px 0;
.questionTitle{
font-weight: 700;
font-size: 13px;
}
.questionContent{
font-size: 16px;
}
}
.answerContent:last-child{
border-bottom: 0;
}
}
}
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { MyBusinessDetailComponent } from './my-business-detail.component';
describe('MyBusinessDetailComponent', () => {
let component: MyBusinessDetailComponent;
let fixture: ComponentFixture<MyBusinessDetailComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ MyBusinessDetailComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MyBusinessDetailComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit, Output, Input, EventEmitter } from '@angular/core';
import { MyService } from '../my.service';
import { ActivatedRoute } from "@angular/router";
import { BusinessQuery } from '../../domain/businessQuery';
import { LifeCommonService } from '../../common/life-common.service';
@Component({
selector: 'ydlife-my-business-detail',
templateUrl: './my-business-detail.component.html',
styleUrls: ['./my-business-detail.component.scss']
})
export class MyBusinessDetailComponent implements OnInit {
@Output() sendRemoveScrollContent = new EventEmitter();
titleList: Array<any>;
selectedId: number;
surveyAnswersList: Array<any>;
readonlyFlag: boolean = true;
orderId: number;
opportunityId: string;
opportunitySurveyAnswersList: Array<any>;
tagList: Array<any>;
editBusiness: BusinessQuery = new BusinessQuery('1', null, null, null, null, null, null, null, null, null, null, null, null, null)
businessStatusList: Array<any>;
cityFlag: boolean;
provinceList: Array<any>;
provinces: Array<any>;
constructor(private activateRoute: ActivatedRoute, private myService: MyService,
public lifeCommonService: LifeCommonService) {
this.titleList = [
{ id: 1, name: '基本信息' },
{ id: 2, name: '咨询服务' },
{ id: 3, name: '商机跟进' }
]
}
ngOnInit() {
this.orderId = this.activateRoute.snapshot.queryParams['orderId'];
this.opportunityId = this.activateRoute.snapshot.paramMap.get('id');
this.selectTab(1);
this.ownOpportunityDetailQuery();
this.tagQuery();
this.dropOptionsQuery();
// 获取省份
this.myService.provinceqry({ insurerId: 11 }).subscribe(res => {
if (res['success']) {
this.provinces = res['data'].provinceList;
}
})
}
editInfo() {
this.readonlyFlag = false;
}
selectTab(id) {
this.selectedId = id;
}
ownOpportunityDetailQuery() {
// const detailParam = {
// opportunityId: this.opportunityId,
// orderId: this.orderId,
// practitionerId: JSON.parse(localStorage.getItem('lifeCustomerInfo'))['practitionerId']
// }
const detailParam = {
opportunityId: 2,
orderId: 8373,
practitionerId: 1
}
this.myService.ownOpportunityDetailQuery(detailParam).subscribe((res) => {
console.log(res)
if (res['success']) {
this.opportunitySurveyAnswersList = res['data']['opportunityConsultationInfo']['opportunitySurveyAnswersList']
this.editBusiness = res['data']['opportunityBasicInformationInfo']
} else {
this.opportunitySurveyAnswersList = [];
}
})
}
saveInfo() {
}
tagQuery() {
this.myService.tagQuery({ tagType: 2, isActive: 1 }).subscribe((res) => {
if (res['success']) {
this.tagList = res['data']['tagVOs'];
}
})
}
//选标签
selectTag(tagItem) {
tagItem.selected = !tagItem.selected;
console.log(tagItem)
}
//选男女
selectedGender(e) {
this.editBusiness.gender = e;
}
//商机状态
dropOptionsQuery() {
this.myService.dropOptionsQuery({ code: 'bizchance_promotion_action' }).subscribe((res) => {
console.log(res)
if (res['success']) {
this.businessStatusList = res['data']['dropMasterInfoList']['0']['dropOptionsInfoList'];
}
})
}
// 选择地址信息
selectedArea() {
this.sendRemoveScrollContent.emit(1);
this.cityFlag = true;
}
// 获取地址信息
getAreaInfo(e, type) {
this.sendRemoveScrollContent.emit(0);
this.cityFlag = false;
}
}
<div class="salesWrapper">
<div class="salesContent">
<div style="text-align: center;margin: 20px auto;font-size: 20px;" *ngIf="businessList?.length==0">暂无商机</div>
<!-- <div class="line" *ngFor="let businessItem of businessList" [queryParams]="{orderId:businessItem.orderId}">
<div></div>
<div>手机号:{{businessItem.mobileNo}}</div>
<div>商机来源:{{businessItem.opportunityFrom}}</div>
<div></div>
</div> -->
<div class="salesItem" *ngFor="let businessItem of businessList"
[routerLink]="['/business',businessItem.opportunityId]" [queryParams]="{orderId:businessItem.orderId}">
<div class="icon_bolck"><span class="iconfont icon-money-more"></span></div>
<div class="line">
<div>姓名:{{businessItem.name}}</div>
<div>{{this.lifeCommonService.checkStr(businessItem.mdDropOptionId)}}</div>
</div>
<div class="line">
<div> 手机号:{{businessItem.mobileNo}}</div>
</div>
<div class="line">
<div>商机来源:{{businessItem.opportunityFrom}}</div>
<div>{{(businessItem.opportunityDate).substr(0,10)}}</div>
</div>
</div>
</div>
</div>
\ No newline at end of file
.salesWrapper{
width: 100%;
height: 100%;
overflow: auto;
background:#f7f7f2;
.salesContent{
.salesItem{
border-bottom: 1px #dcdcdc solid;
padding: 10px;
padding-left: 45px;
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;
}
}
.line{
display: flex;
justify-content: space-between;
align-items: center;
height: 18px;
font-size: 14px;
.price{
font-size: 16px;
color: #ff3500;
font-weight: bold;
}
}
}
.salesItem:last-child{
border-bottom: none;
}
}
}
\ No newline at end of file
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { MyBusinessComponent } from './my-business.component';
describe('MyBusinessComponent', () => {
let component: MyBusinessComponent;
let fixture: ComponentFixture<MyBusinessComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ MyBusinessComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MyBusinessComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { MyService } from '../my.service';
import { LifeCommonService } from '../../common/life-common.service';
@Component({
selector: 'ydlife-my-business',
templateUrl: './my-business.component.html',
styleUrls: ['./my-business.component.scss']
})
export class MyBusinessComponent implements OnInit {
businessList: Array<any>;
constructor(private myService: MyService, public lifeCommonService: LifeCommonService) { }
ngOnInit() {
this.ownOpportunityQuery()
}
ownOpportunityQuery() {
const brokerCustomerId = JSON.parse(localStorage.getItem('lifeCustomerInfo'))['customerId'];
console.log(brokerCustomerId)
this.myService.ownOpportunityQuery({ customerId: brokerCustomerId }).subscribe((res) => {
if (res['data']['ownOpportunityInfos']) {
this.businessList = res['data']['ownOpportunityInfos'];
} else {
this.businessList = []
}
console.log(this.businessList)
})
}
}
......@@ -55,10 +55,10 @@
</ul>
<ul class="performance_list">
<li>线上</li>
<li class="mark" style="margin-left: 7px;">
<li class="markPrice" style="margin-left: 7px;">
¥{{performanceInfo?.onlineInfo['fyp'] | number: "1.2-2"}}
</li>
<li class="mark">
<li class="markPrice">
¥{{performanceInfo?.onlineInfo['fyc'] | number: "1.2-2"}}
</li>
</ul>
......
......@@ -168,7 +168,7 @@
font-size: 12px;
color: #fff;
}
.mark{
.markPrice{
color: #fff;
font-weight: bold;
font-size: 15px;
......@@ -210,7 +210,7 @@
.tool_item{
display: flex;
flex-direction: column;
margin-bottom: 10px;
flex-wrap: wrap;
h3{
font-weight: normal;
font-size: 16px;
......@@ -220,6 +220,7 @@
display: flex;
justify-content: space-between;
margin-bottom: 5px;
flex-wrap: wrap;
.content_item{
display: flex;
flex-direction: column;
......
......@@ -50,7 +50,8 @@ export class MyCenterHomeComponent implements OnInit, AfterViewInit {
{ no: 2, subtitle: 'AI保险医生', icon: 'icon-ai', path: `https://${window.location.host}/questionnaire/#/index?campaign=AIRobot&task=AItask1&customerId=${this.lifeCustomerInfo.customerId}`, routerLink: '' },
{ no: 1, subtitle: '獴哥保险诊所', icon: 'icon-btnconsult', path: `https://${window.location.host}/consulting`, routerLink: '' },
{ no: 4, subtitle: '银盾在线', icon: 'icon-zaixian', path: `https://${window.location.host}/index`, routerLink: '' },
{ no: 12, subtitle: '我的保单', icon: 'icon-dailishangshenqing', path: '', routerLink: '' }
{ no: 12, subtitle: '我的保单', icon: 'icon-dailishangshenqing', path: '', routerLink: '' },
{ no: 13, subtitle: '我的商机', icon: 'icon-shangji', path: '', routerLink: 'business' }
]
}, {
title: '教育培训',
......
......@@ -8,6 +8,8 @@ import { FileUploadComponent } from './file-upload/file-upload.component';
import { ImportantAnnouncementComponent } from './important-announcement/important-announcement.component';
import { SalesDetailComponent } from './sales-detail/sales-detail.component';
import { AnnouncementDetailComponent } from './announcement-detail/announcement-detail.component';
import { MyBusinessComponent } from './my-business/my-business.component';
import { MyBusinessDetailComponent } from './my-business-detail/my-business-detail.component';
const myRoutes: Routes = [
{ path: '', component: MyCenterHomeComponent, canActivate: [AuthGuard] },
{ path: 'material', component: MkMaterialComponent, canActivate: [AuthGuard] },
......@@ -16,7 +18,9 @@ const myRoutes: Routes = [
{ path: 'training', component: FileUploadComponent, canActivate: [AuthGuard], data: [{ type: 'training' }] },
{ path: 'importantAnnouncement', component: ImportantAnnouncementComponent, canActivate: [AuthGuard] },
{ path: 'salesDetail', component: SalesDetailComponent, canActivate: [AuthGuard] },
{ path: 'importantAnnouncement/:id', component: AnnouncementDetailComponent, canActivate: [AuthGuard] }
{ path: 'importantAnnouncement/:id', component: AnnouncementDetailComponent, canActivate: [AuthGuard] },
{ path: 'business', component: MyBusinessComponent, canActivate: [AuthGuard] },
{ path: 'business/:id', component: MyBusinessDetailComponent, canActivate: [AuthGuard] }
];
@NgModule({
......
import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { DatePipe } from "@angular/common";
import {MyRoutingModule} from './my-routing.module';
import {MyCenterHomeComponent} from './my-center-home/my-center-home.component';
import {LifeCommonModule} from "../common/life-common.module";
import { MyRoutingModule } from './my-routing.module';
import { MyCenterHomeComponent } from './my-center-home/my-center-home.component';
import { LifeCommonModule } from "../common/life-common.module";
import { MkMaterialComponent } from './mk-material/mk-material.component';
import { MkMaterialDetailComponent } from './mk-material-detail/mk-material-detail.component';
import { FileUploadComponent } from './file-upload/file-upload.component';
import { ImportantAnnouncementComponent } from './important-announcement/important-announcement.component';
import { SalesDetailComponent } from './sales-detail/sales-detail.component';
import { AnnouncementDetailComponent } from './announcement-detail/announcement-detail.component';
import { MyBusinessComponent } from './my-business/my-business.component';
import { MyBusinessDetailComponent } from './my-business-detail/my-business-detail.component';
import { PickerComponent } from '../common/picker/picker.component';
@NgModule({
declarations: [MyCenterHomeComponent, MkMaterialComponent, MkMaterialDetailComponent, FileUploadComponent, ImportantAnnouncementComponent, SalesDetailComponent, AnnouncementDetailComponent],
declarations: [MyCenterHomeComponent, MkMaterialComponent, MkMaterialDetailComponent, FileUploadComponent, ImportantAnnouncementComponent, SalesDetailComponent, AnnouncementDetailComponent, MyBusinessComponent, MyBusinessDetailComponent, PickerComponent],
imports: [
CommonModule,
LifeCommonModule,
......
......@@ -67,4 +67,49 @@ export class MyService {
return res;
});
}
//经纪人商机列表
ownOpportunityQuery(param) {
const url = this.API + "/practitioner/ownOpportunityQuery";
return this.http.post(url, JSON.stringify(param)).pipe(res => {
return res;
});
}
//经纪人商机详情
ownOpportunityDetailQuery(param) {
const url = this.API + "/practitioner/ownOpportunityDetailQuery";
return this.http.post(url, JSON.stringify(param)).pipe(res => {
return res;
});
}
//标签列表查询
tagQuery(param) {
const url = this.API + "/metadata/tagQuery";
return this.http.post(url, JSON.stringify(param)).pipe(res => {
return res;
});
}
//获取省份
provinceqry(param) {
const url = this.API + "/partner/provinceqry";
return this.http.post(url, JSON.stringify(param)).pipe(res => {
return res;
});
}
/**
* 获取城市
* @param objParam
* @returns {Promise<TResult2|TResult1>}
*/
cityqry(param) {
const url = this.API + '/partner/cityqry';
return this.http.post(url, JSON.stringify(param)).pipe(res => {
return res;
});
}
}
......@@ -12,7 +12,8 @@
</li>
</ul>
<div class="salesContent">
<div class="salesItem" *ngFor="let salesDetailItem of salesDetailList">
<div class="salesItem" *ngFor="let salesDetailItem of salesDetailList"
(click)="jumpToOrderdetail(salesDetailItem.orderNo)">
<div class="icon_bolck"><span class="iconfont icon-money-more"></span></div>
<div class="line">
<div>投保人:{{salesDetailItem.holderName}}</div>
......
import { Component, OnInit } from '@angular/core';
import {MyService} from '../my.service';
import {ActivatedRoute} from "@angular/router";
import { LifeCommonService} from '../../common/life-common.service';
import { MyService } from '../my.service';
import { ActivatedRoute } from "@angular/router";
import { LifeCommonService } from '../../common/life-common.service';
@Component({
selector: 'ydlife-sales-detail',
templateUrl: './sales-detail.component.html',
styleUrls: ['./sales-detail.component.scss']
})
export class SalesDetailComponent implements OnInit {
allPerformanceInfo:Array<any>;
salesDetailList:Array<any>;
salesDetailType:any;
performanceList:Array<any>;
constructor(private myService: MyService,private activatedRoute: ActivatedRoute,public lifeCommonService:LifeCommonService) {
allPerformanceInfo: Array<any>;
salesDetailList: Array<any>;
salesDetailType: any;
performanceList: Array<any>;
constructor(private myService: MyService, private activatedRoute: ActivatedRoute, public lifeCommonService: LifeCommonService) {
this.performanceList = [
{type: 'month',name:'本月'},
{type: 'year',name:'本年度'}
{ type: 'month', name: '本月' },
{ type: 'year', name: '本年度' }
]
}
ngOnInit() {
this.salesDetailType = this.activatedRoute.snapshot.queryParams.type;
console.log(this.salesDetailType)
this.brokerInfoQuery();
}
//查询业绩
brokerInfoQuery(){
brokerInfoQuery() {
const practitionerId = JSON.parse(localStorage.getItem('lifeCustomerInfo'))['practitionerId'];
this.myService.brokerInfoQuery({practitionerId:practitionerId}).subscribe((res)=>{
if(res['success']){
this.myService.brokerInfoQuery({ practitionerId: practitionerId }).subscribe((res) => {
if (res['success']) {
this.allPerformanceInfo = res['data']['commissionInfo'];
if(this.salesDetailType === 'month'){
if (this.salesDetailType === 'month') {
this.salesDetailList = this.allPerformanceInfo['thisMonthInfo']['fortuneItemList'];
console.log('month')
}
if(this.salesDetailType==='year'){
if (this.salesDetailType === 'year') {
this.salesDetailList = this.allPerformanceInfo['thisYearInfo']['fortuneItemList'];
console.log('year')
}
}
})
}
selectRang(e){
selectRang(e) {
this.salesDetailType = e;
this.brokerInfoQuery()
}
jumpToOrderdetail(orderNo) {
const customerId = JSON.parse(localStorage.getItem('lifeCustomerInfo')).customerId;
window.location.href = `https://${window.location.host}/mine/orderdetail/${orderNo}?customerId=${customerId}&isReferral=true`;
// https://mdev.zuihuibi.cn/mine/orderdetail/CP338119110911044108?customerId=41&isReferral=true&paid=true&whichNumber=0&policyHolderType=2
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -31,6 +31,18 @@
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xe65d;</span>
<div class="name">商机</div>
<div class="code-name">&amp;#xe65d;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe65e;</span>
<div class="name">保存</div>
<div class="code-name">&amp;#xe65e;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe64a;</span>
<div class="name">退出 (1)</div>
<div class="code-name">&amp;#xe64a;</div>
......@@ -843,6 +855,24 @@
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont icon-shangji"></span>
<div class="name">
商机
</div>
<div class="code-name">.icon-shangji
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-save"></span>
<div class="name">
保存
</div>
<div class="code-name">.icon-save
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-tuichu"></span>
<div class="name">
退出 (1)
......@@ -2016,6 +2046,22 @@
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-shangji"></use>
</svg>
<div class="name">商机</div>
<div class="code-name">#icon-shangji</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-save"></use>
</svg>
<div class="name">保存</div>
<div class="code-name">#icon-save</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-tuichu"></use>
</svg>
<div class="name">退出 (1)</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": "2560648",
"name": "商机",
"font_class": "shangji",
"unicode": "e65d",
"unicode_decimal": 58973
},
{
"icon_id": "5086601",
"name": "保存",
"font_class": "save",
"unicode": "e65e",
"unicode_decimal": 58974
},
{
"icon_id": "4706230",
"name": "退出 (1)",
"font_class": "tuichu",
......
......@@ -20,6 +20,12 @@ Created by iconfont
/>
<missing-glyph />
<glyph glyph-name="shangji" unicode="&#58973;" d="M512 889.679012C163.081481 889.679012 6.320988 732.918519 6.320988 384s156.760494-505.679012 505.679012-505.679012 505.679012 156.760494 505.679012 505.679012-156.760494 505.679012-505.679012 505.679012zM218.706173 414.340741c0 154.232099 137.797531 285.708642 295.822222 285.708642s290.765432-116.306173 290.765432-270.538272c0-53.096296-18.962963-111.249383-45.511111-152.967901-39.190123 13.906173-83.437037 30.340741-92.28642 32.869136-67.002469 22.755556-108.720988 24.019753-132.74074 15.17037v59.417284h74.587654c8.849383 0 15.17037 6.320988 15.17037 15.17037s-6.320988 15.17037-15.17037 15.170371h-74.587654v45.511111h74.587654c8.849383 0 15.17037 6.320988 15.17037 15.17037s-6.320988 15.17037-15.17037 15.170371h-56.888889l56.888889 89.758024h-45.511111L518.320988 507.891358 474.074074 579.950617H429.82716l56.888889-89.758024H429.82716c-8.849383 0-15.17037-6.320988-15.17037-15.170371s6.320988-15.17037 15.17037-15.17037h74.587655v-45.511111H429.82716c-8.849383 0-15.17037-6.320988-15.17037-15.170371s6.320988-15.17037 15.17037-15.17037h74.587655v-135.269136c-3.792593-17.698765-20.22716-13.906173-17.698766-13.906173-26.548148 2.528395-58.153086 17.698765-87.229629 55.624692-68.266667 106.192593-152.967901 96.079012-169.402469 93.550617-12.641975 2.528395-11.377778 17.698765-11.377778 30.340741z m601.758025-323.634568c0-12.641975-10.11358-22.755556-22.755556-22.755556H419.71358c-96.079012 6.320988-184.57284 111.249383-209.85679 185.837037-7.585185 29.076543-7.585185 41.718519 0 55.624692 11.377778 20.22716 25.283951 36.661728 37.925926 36.661728 35.397531 0 60.681481-20.22716 96.079012-55.624691 24.019753-25.283951 53.096296-65.738272 75.851852-74.587655 61.945679-18.962963 118.834568-18.962963 152.967901-18.962963-13.906173 17.698765-35.397531 48.039506-37.925925 55.624692-6.320988 25.283951 6.320988 32.869136 18.962963 36.661728 17.698765 6.320988 20.22716 2.528395 37.925925 0 30.340741-3.792593 178.251852-61.945679 209.856791-74.587654 8.849383-3.792593 18.962963-8.849383 18.962963-18.962963v-104.928395z" horiz-adv-x="1024" />
<glyph glyph-name="save" unicode="&#58974;" d="M821.333333 731.733333l-104.533333 106.666667c-8.533333 8.533333-19.2 12.8-29.866667 12.8H125.866667c-23.466667 0-42.666667-19.2-42.666667-42.666667V-42.666667c0-23.466667 19.2-42.666667 42.666667-42.666666h774.4c23.466667 0 42.666667 19.2 42.666666 42.666666V593.066667c0 10.666667-4.266667 21.333333-12.8 29.866666l-108.8 108.8zM364.8 765.866667h215.466667c12.8 0 21.333333-8.533333 21.333333-21.333334v-213.333333c0-12.8-8.533333-21.333333-21.333333-21.333333H364.8c-12.8 0-21.333333 8.533333-21.333333 21.333333v213.333333c0 12.8 8.533333 21.333333 21.333333 21.333334z m469.333333-763.733334H189.866667c-12.8 0-21.333333 8.533333-21.333334 21.333334V744.533333c0 12.8 8.533333 21.333333 21.333334 21.333334h46.933333c12.8 0 21.333333-8.533333 21.333333-21.333334v-277.333333c0-23.466667 19.2-42.666667 42.666667-42.666667h343.466667c23.466667 0 42.666667 19.2 42.666666 42.666667V697.6c0 19.2 23.466667 27.733333 36.266667 14.933333l38.4-40.533333 89.6-89.6c4.266667-4.266667 6.4-8.533333 6.4-14.933333v-544c-2.133333-12.8-10.666667-21.333333-23.466667-21.333334zM473.6 597.333333c23.466667 0 42.666667 19.2 42.666667 42.666667s-19.2 42.666667-42.666667 42.666667-42.666667-19.2-42.666667-42.666667c0-25.6 19.2-42.666667 42.666667-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="tuichu" unicode="&#58954;" d="M815.941818 182.272l-60.881454 60.881455 113.803636 113.75709H387.909818v86.109091h480.954182l-113.803636 113.757091L815.941818 617.658182l217.693091-217.693091-217.693091-217.693091zM689.245091 679.749818a43.054545 43.054545 0 0 0-43.054546 43.054546v86.109091H86.621091v-817.896728h559.569454v86.109091a43.054545 43.054545 0 1 0 86.109091 0v-86.109091a86.109091 86.109091 0 0 0-86.109091-86.109091H86.621091a86.109091 86.109091 0 0 0-86.109091 86.109091V808.913455A86.109091 86.109091 0 0 0 86.574545 895.022545h559.569455a86.109091 86.109091 0 0 0 86.109091-86.10909v-86.109091a43.054545 43.054545 0 0 0-43.054546-43.054546z" horiz-adv-x="1070" />
......
<!doctype html>
<html lang="zh-cn">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"/>
<meta http-equiv="Pragma" content="no-cache"/>
<meta http-equiv="Expires" content="0"/>
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<meta name="keywords" content="银盾保险在线,健康保险,出国旅行保险,户外运动保险,意外保险,国内旅行保险,留学游学保险,邮轮保险">
<meta name="description" content="银盾保险在线,提供全球多家知名保险公司产品网上投保,甄选并推荐最适合您的保险产品。"/>
<meta name="description" content="银盾保险在线,提供全球多家知名保险公司产品网上投保,甄选并推荐最适合您的保险产品。" />
<title>银盾保险经纪</title>
<base href="/">
<link rel="shortcut icon" href="https://www.ydinsurance.cn/wp-content/uploads/2018/04/favicon.gif"
type="image/x-icon"/>
type="image/x-icon" />
<link rel="stylesheet" href="./assets/bootstrap/dist/css/bootstrap.min.css">
</head>
<body>
<app-root></app-root>
<script src="./assets/js/jquery.min.js"></script>
<script src="./assets/js/qrcode.js"></script>
<!--<script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>-->
<script src="https://res2.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
<app-root></app-root>
<script src="./assets/js/jquery.min.js"></script>
<script src="./assets/js/qrcode.js"></script>
<!--<script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>-->
<script src="https://res2.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
</body>
</html>
</html>
\ No newline at end of file
......@@ -15,6 +15,17 @@ html, body {
-webkit-overflow-scrolling: touch;
}
ol, ul {
margin-top: 0;
margin-bottom: 0;
}
.h1, .h2, .h3, h1, h2, h3 {
margin: 0;
line-height: inherit;
}
p {
margin: 0;
}
.img-responsive {
max-width: 100%;
......
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