Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
ydLife
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Sweet Zhang
ydLife
Commits
58254264
Commit
58254264
authored
Jul 14, 2023
by
zeyang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.优化赢家平台 商机跟进的时间选择样式和校验
2.赢家平台嵌入SFP智能财策页面
parent
ba982ef6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
309 additions
and
155 deletions
+309
-155
src/app/my/my-business-detail/my-business-detail.component.html
+56
-38
src/app/my/my-business-detail/my-business-detail.component.scss
+75
-17
src/app/my/my-business-detail/my-business-detail.component.ts
+171
-97
src/environments/environment.prod.ts
+2
-1
src/environments/environment.stage.ts
+2
-1
src/environments/environment.ts
+3
-1
No files found.
src/app/my/my-business-detail/my-business-detail.component.html
View file @
58254264
...
...
@@ -21,31 +21,32 @@
<div
class=
"contentItem"
>
<span>
出生日期
</span>
<div>
<ListItem
DatePicker
[
mode
]="'
date
'"
[
disabled
]="
readonlyFlag
"
[
minDate
]="
minDate
"
[
maxDate
]
=
"
today
"
[(
ngModel
)]="
editBusiness
.
birthDate
"
(
onOk
)="
onOk
($
event
)"
>
<Brief
*
ngIf=
"!readonlyFlag"
>
{{editBusiness.birthDate ? (editBusiness.birthDate | date:'yyyy-MM-dd') : '请输入出生日期'}}
</Brief>
<Brief
*
ngIf=
"readonlyFlag"
>
{{editBusiness.birthDate ? (editBusiness.birthDate | date:'yyyy-MM-dd') : '暂无出生日期信息'}}
</Brief>
<ListItem
DatePicker
[
mode
]="'
date
'"
[
disabled
]="
readonlyFlag
"
[
minDate
]="
minDate
"
[
maxDate
]="
today
"
[(
ngModel
)]="
editBusiness
.
birthDate
"
(
onOk
)="
onOk
($
event
)"
>
<Brief
*
ngIf=
"!readonlyFlag"
>
{{editBusiness.birthDate ? (editBusiness.birthDate | date:'yyyy-MM-dd') : '请输入出生日期'}}
</Brief>
<Brief
*
ngIf=
"readonlyFlag"
>
{{editBusiness.birthDate ? (editBusiness.birthDate | date:'yyyy-MM-dd') : '暂无出生日期信息'}}
</Brief>
</ListItem>
</div>
</div>
<div
class=
"contentItem"
>
<span>
年龄
</span>
<input
class=
"form-control"
type=
"text"
placeholder=
"{{readonlyFlag ?'暂无年龄信息':'请输入年龄'}}"
[(
ngModel
)]="
editBusiness
.
age
"
[
disabled
]="
readonlyFlag
||
editBusiness
.
birthDate
"
(
blur
)="
inputBlur
()"
/>
[(
ngModel
)]="
editBusiness
.
age
"
[
disabled
]="
readonlyFlag
||
editBusiness
.
birthDate
"
(
blur
)="
inputBlur
()"
/>
</div>
<div
class=
"contentItem"
>
<span>
性别
</span>
<div
class=
"sexWrapper"
>
<button
class=
"form-control sex"
[
ngClass
]="{'
sexBtn
'
:editBusiness
?.
gender=
='1'
&&
maleFlag
&&
femaleFlag
}"
<button
class=
"form-control sex"
[
ngClass
]="{'
sexBtn
'
:editBusiness
?.
gender=
='1'
&&
maleFlag
&&
femaleFlag
}"
(
click
)="
selectedGender
('
1
')"
[
disabled
]="
readonlyFlag
"
*
ngIf=
"sexFlag && maleFlag"
>
男
</button>
<button
class=
"form-control sex"
[
ngClass
]="{'
sexBtn
'
:editBusiness
?.
gender=
='2'
&&
maleFlag
&&
femaleFlag
}"
<button
class=
"form-control sex"
[
ngClass
]="{'
sexBtn
'
:editBusiness
?.
gender=
='2'
&&
maleFlag
&&
femaleFlag
}"
(
click
)="
selectedGender
('
2
')"
[
disabled
]="
readonlyFlag
"
*
ngIf=
"sexFlag && femaleFlag"
>
女
</button>
</div>
...
...
@@ -62,7 +63,8 @@
[(
ngModel
)]="
editBusiness
.
bloodTypeId
"
(
blur
)="
inputBlur
()"
>
<option
value=
""
>
{{readonlyFlag ?'暂无血型信息':'请选择血型'}}
</option>
<option
*
ngFor=
"let businessBloodItem of businessBloodList"
[
value
]="
businessBloodItem
.
id
"
>
{{businessBloodItem.dropOptionName}}
</option>
{{businessBloodItem.dropOptionName}}
</option>
</select>
<!--<input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无血型信息':'请选择血型'}}"-->
<!--[disabled]="readonlyFlag" [(ngModel)]="editBusiness.bloodTypeId" (blur)="inputBlur()" />-->
...
...
@@ -73,7 +75,8 @@
[(
ngModel
)]="
editBusiness
.
zodiacTypeId
"
(
blur
)="
inputBlur
()"
>
<option
value=
""
>
{{readonlyFlag ?'暂无星座信息':'请选择星座'}}
</option>
<option
*
ngFor=
"let businessZodiacItem of businessZodiacList"
[
value
]="
businessZodiacItem
.
id
"
>
{{businessZodiacItem.dropOptionName}}
</option>
{{businessZodiacItem.dropOptionName}}
</option>
</select>
<!--<input class="form-control" type="text" placeholder="{{readonlyFlag ?'暂无星座信息':'请选择星座'}}"-->
<!--[disabled]="readonlyFlag" [(ngModel)]="editBusiness.zodiacTypeId" (blur)="inputBlur()" />-->
...
...
@@ -131,20 +134,23 @@
[(
ngModel
)]="
editBusiness
.
sourceFrom
"
[
disabled
]="
readonlyFlag
"
(
blur
)="
inputBlur
()"
>
<option
value=
""
>
{{readonlyFlag ?'暂无商机来源':'请选择商机来源'}}
</option>
<option
*
ngFor=
"let businessSourceItem of businessSourceList"
[
value
]="
businessSourceItem
.
id
"
>
{{businessSourceItem.dropOptionName}}
</option>
{{businessSourceItem.dropOptionName}}
</option>
</select>
<input
*
ngIf=
"opportunityId!=0"
class=
"form-control"
type=
"text"
[(
ngModel
)]="
editBusiness
.
sourceChannel
"
disabled
placeholder=
"{{editBusiness.sourceChannel ?editBusiness.sourceChannel:'暂无商机来源'}}"
/>
<input
*
ngIf=
"opportunityId!=0"
class=
"form-control"
type=
"text"
[(
ngModel
)]="
editBusiness
.
sourceChannel
"
disabled
placeholder=
"{{editBusiness.sourceChannel ?editBusiness.sourceChannel:'暂无商机来源'}}"
/>
</div>
<div
class=
"contentItem"
>
<span>
商机时间
</span>
<input
class=
"form-control"
type=
"text"
placeholder=
"商机时间"
[(
ngModel
)]="
editBusiness
.
opportunityDate
"
disabled
/>
<input
class=
"form-control"
type=
"text"
placeholder=
"商机时间
"
[(
ngModel
)]="
editBusiness
.
opportunityDate
"
disabled
/>
</div>
<div
class=
"contentItem"
>
<span>
商机状态
</span>
<div
style=
"padding: 6px 12px;color: #e10d0d;font-weight: bold;"
>
{{editBusiness.mdDropOptionName?editBusiness.mdDropOptionName:'待跟进'}}
</div>
{{editBusiness.mdDropOptionName?editBusiness.mdDropOptionName:'待跟进'}}
</div>
</div>
</div>
<div
class=
"wrapper_item"
style=
"border: none;margin-bottom: 0;"
>
...
...
@@ -201,11 +207,9 @@
</div>
<!-- SFP咨询问卷 -->
<div
class=
"content"
*
ngIf=
"selectedId===2 && isSfpShow == true"
>
<iframe
src=
"http://localhost:4200/salesDetail"
style=
"height: 100%; width: 100%;flex-grow: 1
;"
>
<iframe
class=
"content"
*
ngIf=
"selectedId===2 && isSfpShow == true"
[
src
]="
transform
(
iframeUrl
)"
style=
"width: 100%;flex-grow: 1;border: medium none
;"
>
</iframe>
</div>
<!-- 客户告知书 -->
<div
class=
"content"
*
ngIf=
"selectedId===5"
>
<ydlife-e-notice
[
agreeFlag
]="
false
"
></ydlife-e-notice>
...
...
@@ -220,8 +224,11 @@
<div
style=
"display: flex;justify-content: space-between;height: 25px;"
>
<div
class=
"updatedAt"
>
{{opportunityRecordItem.noticeDate}}
</div>
<div
class=
"opportunityRecordItem"
>
<a
*
ngIf=
"opportunityRecordItem.informedOssPath"
href=
"{{opportunityRecordItem.informedOssPath}}"
target=
"_blank"
><i
class=
"iconfont icon-pdf"
style=
"color: #C81B1E;margin-right:5px"
></i></a>
<span
[
ngStyle
]="
setBackgroundColor
(
opportunityRecordItem
)"
>
{{opportunityRecordItem.mdDropOptionName?opportunityRecordItem.mdDropOptionName:'待跟进'}}
</span>
<a
*
ngIf=
"opportunityRecordItem.informedOssPath"
href=
"{{opportunityRecordItem.informedOssPath}}"
target=
"_blank"
><i
class=
"iconfont icon-pdf"
style=
"color: #C81B1E;margin-right:5px"
></i></a>
<span
[
ngStyle
]="
setBackgroundColor
(
opportunityRecordItem
)"
>
{{opportunityRecordItem.mdDropOptionName?opportunityRecordItem.mdDropOptionName:'待跟进'}}
</span>
</div>
</div>
<div
class=
"salesNotice"
>
...
...
@@ -278,11 +285,25 @@
[(
ngModel
)]="
opportunityRecordNoticeDate
"
(
blur
)="
inputBlur
()"
></div>
</div>
<div
*
ngIf=
"isSfpShow"
>
<div>
日程开始时间
</div>
<div><input
type=
"text"
id=
"remark"
class=
"form-control"
placeholder=
"输入开始时间"
[(
ngModel
)]="
taskTimeFrom
"
(
blur
)="
inputBlur
()"
></div>
<div>
日程结束时间
</div>
<div><input
type=
"text"
id=
"remark"
class=
"form-control"
placeholder=
"输入结束时间"
[(
ngModel
)]="
taskTimeEnd
"
(
blur
)="
inputBlur
()"
></div>
<div
*
ngIf=
"isSfpShow"
style=
"display:flex;font-size: 15px;"
>
<!-- <div>日程开始/结束时间</div>
<div class="timeContent">
<div class="picker_list">
<PickerView [data]="seasons" [cols]='3' [cascade]="false" [ngModel]="taskTimeFrom" [indicatorStyle]="{'background':'#f6f6f6','border-radius':'50px','z-index':'0'}" (ngModelChange)="onChange($event,1)"></PickerView>
</div>
<div style="color: #d9dadc;width: 10%;text-align: center;">到</div>
<div class="picker_list">
<PickerView [data]="seasons" [cascade]="false" [cols]='3' [ngModel]="taskTimeEnd" [indicatorStyle]="{'background':'#f6f6f6','border-radius':'50px','z-index':'0'}" (ngModelChange)="onChange($event,2)"></PickerView>
</div>
</div> -->
<div>
添加日程时间
</div>
<div
style=
"display:flex;"
>
<div
style=
"width:50%"
><input
type=
"Time"
id=
"remark"
class=
"form-control"
placeholder=
"输入开始时间"
[(
ngModel
)]="
taskTimeFrom
"
(
blur
)="
inputBlur
()"
></div>
<div
style=
"width:50%"
><input
type=
"Time"
id=
"remark"
class=
"form-control"
placeholder=
"输入结束时间"
[(
ngModel
)]="
taskTimeEnd
"
(
blur
)="
inputBlur
()"
></div>
</div>
</div>
<ul
class=
"footer"
>
...
...
@@ -298,13 +319,11 @@
<div
[
ngStyle
]="{
height:
300
,
overflow:
'
scroll
'
}"
>
<div
class=
"am-list"
style=
"margin:0;"
>
<div
class=
"am-list-item"
>
<InputItem
[
clear
]="
true
"
[
value
]="
editBusiness
.
name
"
<InputItem
[
clear
]="
true
"
[
value
]="
editBusiness
.
name
"
(
onChange
)="
editBusiness
.
name =
$event"
>
姓名:
</InputItem>
</div>
<div
class=
"am-list-item"
>
<InputItem
[
type
]="'
phone
'"
[
value
]="
editBusiness
.
mobileNo
"
<InputItem
[
type
]="'
phone
'"
[
value
]="
editBusiness
.
mobileNo
"
(
onChange
)="
editBusiness
.
mobileNo =
$event"
>
手机号码:
</InputItem>
</div>
<div
class=
"am-list-line"
style=
"color: #999;font-size:12px"
>
...
...
@@ -315,8 +334,7 @@
<div
class=
"am-list-line"
>
<div
class=
"am-list-content"
style=
"width:100%;color:#fff;text-align:center;background-color: #2179AD;border-radius: 20px;margin:18px auto"
(
click
)="
sendENotice
()"
>
发送
</div>
(
click
)="
sendENotice
()"
>
发送
</div>
</div>
</div>
</div>
...
...
src/app/my/my-business-detail/my-business-detail.component.scss
View file @
58254264
.wrapper
{
padding-bottom
:
40px
;
font-size
:
16px
;
background-color
:
#fff
;
min-height
:
90vh
;
display
:
flex
;
flex-direction
:
column
;
select
{
-webkit-appearance
:
none
;
border
:
none
;
box-shadow
:
none
;
}
.tab
{
display
:
flex
;
list-style
:
none
;
margin
:
10px
0px
;
padding-left
:
1%
;
li
{
margin-right
:
10px
;
line-height
:
30px
;
...
...
@@ -20,21 +26,25 @@
text-align
:
center
;
border
:
1px
#a9aabb
solid
;
border-radius
:
20px
;
h3
{
font-weight
:
normal
;
font-size
:
15px
;
}
}
li
.selected
{
// background-color: #ff5a32;
// color: #fff;
border
:
1px
#e10d0d
solid
;
}
}
.content
{
padding
:
10px
5px
;
position
:
relative
;
>
.iconfont
{
>
.iconfont
{
width
:
55px
;
height
:
55px
;
line-height
:
55px
;
...
...
@@ -47,20 +57,25 @@
text-align
:
center
;
bottom
:
76px
;
}
.contentDetail
{
margin-top
:
15px
;
.wrapper_item
{
border-bottom
:
1px
#ddd
solid
;
margin-bottom
:
10px
;
.contentItem
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
// border-bottom: 1px #ddd solid;
margin
:
0
8px
5px
8px
;
>
span
:first-child
{
>
span
:first-child
{
white-space
:
nowrap
;
}
input
.form-control
{
// width: 60%;
// margin: 0 5px;
...
...
@@ -73,14 +88,17 @@
flex-wrap
:
wrap
;
font-size
:
16px
;
}
input
:
:-
webkit-input-placeholder
{
input
:
:-
webkit-input-placeholder
{
font-size
:
16px
;
// color: #0767bf;
}
.sexWrapper
{
display
:
flex
;
width
:
60%
;
justify-content
:
flex-end
;
.form-control.sex
{
width
:
20%
;
margin-left
:
5px
;
...
...
@@ -88,33 +106,40 @@
box-shadow
:
none
;
font-size
:
16px
;
}
.form-control.sex.sexBtn
{
border
:
1px
#0767bf
solid
;
}
.form-control
[
disabled
]
{
background-color
:
transparent
;
opacity
:
1
;
}
}
select
.form-control
{
direction
:
rtl
;
font-size
:
16px
;
}
select
.form-control
[
disabled
]
{
background-color
:
transparent
;
// color: #0767bf;
}
}
.contentItem
:last-child
{
border-bottom
:
none
;
}
}
}
.tagWrapper
{
display
:
flex
;
flex-wrap
:
wrap
;
padding-left
:
8px
;
div
.tagContent
{
margin
:
10px
3px
0
3px
;
height
:
28px
;
...
...
@@ -125,19 +150,22 @@
font-size
:
13px
;
padding
:
0
15px
;
}
div
.selected
{
border
:
1px
#0767bf
solid
;
}
}
.add
{
position
:
absolute
;
.iconfont
{
width
:
55px
;
height
:
55px
;
line-height
:
55px
;
border-radius
:
50%
;
position
:
fixed
;
right
:
42%
;
right
:
42%
;
font-size
:
24px
;
color
:
#fff
;
background
:
#0767bf
;
...
...
@@ -149,25 +177,31 @@
}
}
.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
;
}
.record
{
display
:
flex
;
list-style
:
none
;
justify-content
:
space-between
;
li
{
width
:
30%
;
text-align
:
center
;
...
...
@@ -175,7 +209,8 @@
line-height
:
30px
;
}
}
.viewReportBtn
{
.viewReportBtn
{
position
:
fixed
;
bottom
:
70px
;
left
:
0
;
...
...
@@ -186,11 +221,13 @@
color
:
#fff
;
line-height
:
44px
;
}
.send
{
.send
{
position
:
fixed
;
bottom
:
80px
;
width
:
100%
;
div
{
div
{
margin
:
0
40px
;
height
:
40px
;
line-height
:
40px
;
...
...
@@ -218,32 +255,39 @@
min-width
:
320px
;
max-width
:
640px
;
margin
:
0
auto
;
>
div
{
>
div
{
height
:
50px
;
border-bottom
:
1px
solid
#dbdbdb
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
>
div
:first-child
{
>
div
:first-child
{
width
:
100px
;
font-size
:
15px
;
}
>
div
:last-child
{
>
div
:last-child
{
flex
:
1
;
}
.form-control
{
border
:
none
;
box-shadow
:
none
;
}
}
>
div
:last-child
{
>
div
:last-child
{
border
:
none
;
}
ul
.footer
{
display
:
flex
;
list-style
:
none
;
justify-content
:
center
;
margin-top
:
15%
;
li
{
width
:
30%
;
height
:
35px
;
...
...
@@ -256,18 +300,22 @@
}
}
}
.recordLists
{
li
{
border-bottom
:
1px
solid
#f0f0f0
;
padding
:
5px
10px
;
background
:
rgb
(
251
,
251
,
251
);
}
li
:last-child
{
border
:
none
;
}
.opportunityRecordItem
{
font-size
:
15px
;
}
.salesNotice
{
font-size
:
14px
;
color
:
#8a8a8a
;
...
...
@@ -276,9 +324,13 @@
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
span
{
span
{
width
:
85%
;
.form-control
[
disabled
],
.form-control
[
readonly
],
fieldset
[
disabled
]
.form-control
{
.form-control
[
disabled
],
.form-control
[
readonly
],
fieldset
[
disabled
]
.form-control
{
background-color
:
#eee
;
opacity
:
.5
;
border
:
none
;
...
...
@@ -287,16 +339,19 @@
padding-left
:
0
;
}
}
.iconfont
{
.iconfont
{
font-size
:
18px
;
}
}
.updatedAt
{
// font-size: 12px;
// color: #8a8a8a;
// text-align: right;
}
}
.toast
{
position
:
fixed
;
left
:
0
;
...
...
@@ -307,12 +362,14 @@
margin
:
0
auto
;
z-index
:
1
;
}
.toastWrapper
{
height
:
100%
;
background-color
:
rgba
(
0
,
0
,
0
,
.5
);
top
:
0
;
}
.am-list-item.am-input-item
{
.am-list-item.am-input-item
{
padding-left
:
0
;
}
}
\ No newline at end of file
src/app/my/my-business-detail/my-business-detail.component.ts
View file @
58254264
...
...
@@ -3,7 +3,8 @@ import { MyService } from '../my.service';
import
{
ActivatedRoute
,
Router
}
from
"@angular/router"
;
import
{
BusinessQuery
}
from
'../../domain/businessQuery'
;
import
{
LifeCommonService
}
from
'../../common/life-common.service'
;
import
{
environment
}
from
'../../../environments/environment'
;
import
{
environment
}
from
'../../../environments/environment'
;
import
{
DomSanitizer
,
SafeResourceUrl
}
from
'@angular/platform-browser'
;
@
Component
({
selector
:
'ydlife-my-business-detail'
,
templateUrl
:
'./my-business-detail.component.html'
,
...
...
@@ -12,94 +13,131 @@ import {environment} from '../../../environments/environment';
export
class
MyBusinessDetailComponent
implements
OnInit
{
titleList
:
Array
<
any
>
;
selectedId
:
number
;
surveyAnswersList
:
Array
<
any
>
;
readonlyFlag
:
boolean
=
true
;
orderId
:
number
;
sfpMainId
:
number
;
opportunityId
:
number
;
opportunitySurveyAnswersList
:
Array
<
any
>
;
tagList
:
Array
<
any
>
;
editBusiness
:
BusinessQuery
=
new
BusinessQuery
();
titleList
:
Array
<
any
>
;
selectedId
:
number
;
surveyAnswersList
:
Array
<
any
>
;
readonlyFlag
:
boolean
=
true
;
orderId
:
number
;
sfpMainId
:
number
;
opportunityId
:
number
;
opportunitySurveyAnswersList
:
Array
<
any
>
;
tagList
:
Array
<
any
>
;
editBusiness
:
BusinessQuery
=
new
BusinessQuery
();
//商机状态
businessStatusList
:
Array
<
any
>
;
businessStatusList
:
Array
<
any
>
;
//经纪人输入商机来源类型
businessSourceList
:
Array
<
any
>
;
businessSourceList
:
Array
<
any
>
;
//商机星座类型
businessZodiacList
:
Array
<
any
>
;
businessZodiacList
:
Array
<
any
>
;
//商机血型类型
businessBloodList
:
Array
<
any
>
;
cityFlag
:
boolean
;
provinceList
:
Array
<
any
>
;
provinces
:
Array
<
any
>
;
businessBloodList
:
Array
<
any
>
;
cityFlag
:
boolean
;
provinceList
:
Array
<
any
>
;
provinces
:
Array
<
any
>
;
//返回的标签列表
opportunityCustomerTags
:
Array
<
any
>
;
opportunityRecordInfos
:
Array
<
any
>
;
opportunityCustomerTags
:
Array
<
any
>
;
opportunityRecordInfos
:
Array
<
any
>
;
//是否可以跳转预览方案
isCompletedQuestionnaire
:
any
;
isCompletedQuestionnaire
:
any
;
//控制弹框
toastDialog
:
boolean
;
toastInfo
:
any
;
toastDialog
:
boolean
;
toastInfo
:
any
;
// 增加还是保存
addStatus
:
boolean
;
addStatus
:
boolean
;
// 备注信息
salesNotice
:
string
;
salesNotice
:
string
;
// 跟进时间
opportunityRecordNoticeDate
:
Date
;
opportunityRecordNoticeDate
:
Date
;
//跟进开始时间
taskTimeFrom
:
string
;
taskTimeFrom
:
string
;
//跟进结束时间
taskTimeEnd
:
string
;
taskTimeEnd
:
string
;
// 跟进状态
opportunityRecordId
:
number
;
opportunityRecordId
:
number
;
//性别显示
sexFlag
:
boolean
;
sexFlag
:
boolean
;
//显示女
femaleFlag
:
boolean
;
femaleFlag
:
boolean
;
//显示男
maleFlag
:
boolean
;
isShow
:
boolean
;
isSfpShow
:
boolean
;
maleFlag
:
boolean
;
isShow
:
boolean
;
isSfpShow
:
boolean
;
//线索id
leadsAssignedId
:
any
;
leadsAssignedId
:
any
;
//控制tab可不可点
clickFlag
:
boolean
;
remarkId
:
any
;
status
:
any
;
isNeedAlert
:
boolean
;
dialogInfo
:
any
;
practitionerId
:
any
;
clickFlag
:
boolean
;
remarkId
:
any
;
status
:
any
;
isNeedAlert
:
boolean
;
dialogInfo
:
any
;
practitionerId
:
any
;
// 电子告知书弹窗显示
eNoticeState
:
boolean
=
false
;
deviceType
:
number
;
eNoticeState
:
boolean
=
false
;
deviceType
:
number
;
// 获取经纪人信息
lifeCustomerInfo
:
any
;
today
:
Date
=
new
Date
();
minDate
:
Date
=
new
Date
(
'1930-01-01'
)
constructor
(
private
activateRoute
:
ActivatedRoute
,
private
myService
:
MyService
,
public
lifeCommonService
:
LifeCommonService
,
private
router
:
Router
,
)
{
lifeCustomerInfo
:
any
;
today
:
Date
=
new
Date
();
minDate
:
Date
=
new
Date
(
'1930-01-01'
);
iframeUrl
:
string
;
seasons
:
Array
<
any
>
;
constructor
(
private
activateRoute
:
ActivatedRoute
,
private
myService
:
MyService
,
public
lifeCommonService
:
LifeCommonService
,
private
router
:
Router
,
private
sanitizer
:
DomSanitizer
,)
{
this
.
titleList
=
[
{
id
:
1
,
name
:
'基本信息'
},
{
id
:
3
,
name
:
'商机跟进'
},
{
id
:
2
,
name
:
'咨询问卷'
},
// { id: 4, name: '咨询报告' },
{
id
:
5
,
name
:
'客户告知书'
}
]
];
this
.
seasons
=
[
{
label
:
'06:00'
,
value
:
1
},{
label
:
'06:30'
,
value
:
2
},
{
label
:
'07:00'
,
value
:
3
},{
label
:
'07:30'
,
value
:
4
},
{
label
:
'08:00'
,
value
:
5
},{
label
:
'08:30'
,
value
:
6
},
{
label
:
'09:00'
,
value
:
7
},{
label
:
'09:30'
,
value
:
8
},
{
label
:
'10:00'
,
value
:
9
},{
label
:
'10:30'
,
value
:
10
},
{
label
:
'11:00'
,
value
:
11
},{
label
:
'11:30'
,
value
:
12
},
{
label
:
'12:00'
,
value
:
13
},{
label
:
'12:30'
,
value
:
14
},
{
label
:
'13:00'
,
value
:
15
},{
label
:
'13:30'
,
value
:
16
},
{
label
:
'14:00'
,
value
:
17
},{
label
:
'14:30'
,
value
:
18
},
{
label
:
'15:00'
,
value
:
19
},{
label
:
'15:30'
,
value
:
20
},
{
label
:
'16:00'
,
value
:
21
},{
label
:
'16:30'
,
value
:
22
},
{
label
:
'17:00'
,
value
:
23
},{
label
:
'17:30'
,
value
:
24
},
{
label
:
'18:00'
,
value
:
25
},{
label
:
'18:30'
,
value
:
26
},
{
label
:
'19:00'
,
value
:
27
},{
label
:
'19:30'
,
value
:
28
},
{
label
:
'20:00'
,
value
:
29
},{
label
:
'20:30'
,
value
:
30
},
{
label
:
'21:00'
,
value
:
31
},{
label
:
'21:30'
,
value
:
32
},
{
label
:
'22:00'
,
value
:
33
},{
label
:
'22:30'
,
value
:
34
},
{
label
:
'23:00'
,
value
:
35
},{
label
:
'23:30'
,
value
:
36
},
{
label
:
'00:00'
,
value
:
37
}
];
}
transform
(
url
:
string
)
:
SafeResourceUrl
{
return
this
.
sanitizer
.
bypassSecurityTrustResourceUrl
(
url
);
}
onChange
(
result
,
type
)
{
if
(
type
===
1
){
this
.
taskTimeFrom
=
result
;
}
if
(
type
===
2
){
this
.
taskTimeEnd
=
result
;
}
}
ngOnInit
()
{
// 获取设备
this
.
deviceType
=
this
.
lifeCommonService
.
checkDeviceType
();
this
.
orderId
=
this
.
activateRoute
.
snapshot
.
queryParams
[
'orderId'
];
this
.
sfpMainId
=
this
.
activateRoute
.
snapshot
.
queryParams
[
'sfpMainId'
];
if
(
this
.
sfpMainId
)
{
if
(
this
.
sfpMainId
)
{
this
.
isSfpShow
=
true
;
}
else
{
}
else
{
this
.
isSfpShow
=
false
;
}
//商机对应的客户id
this
.
opportunityId
=
+
this
.
activateRoute
.
snapshot
.
paramMap
.
get
(
'id'
);
//商机id
this
.
leadsAssignedId
=
this
.
activateRoute
.
snapshot
.
queryParams
[
'leadsAssignedId'
];
this
.
opportunityRecordId
=
null
;
...
...
@@ -122,16 +160,16 @@ export class MyBusinessDetailComponent implements OnInit {
this
.
femaleFlag
=
true
;
this
.
clickFlag
=
false
;
let
myCustomerInfo
=
JSON
.
parse
(
localStorage
.
getItem
(
'myCustomerInfo'
))
if
(
myCustomerInfo
)
{
let
birthDate
,
age
;
if
(
myCustomerInfo
.
birthDate
)
{
if
(
myCustomerInfo
)
{
let
birthDate
,
age
;
if
(
myCustomerInfo
.
birthDate
)
{
birthDate
=
myCustomerInfo
.
birthDate
.
split
(
'-'
);
age
=
this
.
lifeCommonService
.
ages
(
birthDate
[
0
],
birthDate
[
1
],
birthDate
[
2
]).
age
;
}
else
{
age
=
this
.
lifeCommonService
.
ages
(
birthDate
[
0
],
birthDate
[
1
],
birthDate
[
2
]).
age
;
}
else
{
age
=
null
;
}
this
.
editBusiness
=
new
BusinessQuery
(
""
,
age
,
myCustomerInfo
.
name
,
myCustomerInfo
.
gender
==
'女'
?
2
:
1
,
myCustomerInfo
.
mobileNo
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
null
);
}
else
{
this
.
editBusiness
=
new
BusinessQuery
(
""
,
age
,
myCustomerInfo
.
name
,
myCustomerInfo
.
gender
==
'女'
?
2
:
1
,
myCustomerInfo
.
mobileNo
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
null
);
}
else
{
//初始化新增
this
.
editBusiness
=
new
BusinessQuery
(
""
,
""
,
""
,
1
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
""
,
null
);
}
...
...
@@ -148,9 +186,9 @@ export class MyBusinessDetailComponent implements OnInit {
}
// 日期选择
onOk
(
e
)
{
onOk
(
e
)
{
console
.
log
(
e
)
this
.
editBusiness
.
age
=
this
.
lifeCommonService
.
ages
(
e
.
getFullYear
(),
e
.
getMonth
()
+
1
,
e
.
getDate
()).
age
;
this
.
editBusiness
.
age
=
this
.
lifeCommonService
.
ages
(
e
.
getFullYear
(),
e
.
getMonth
()
+
1
,
e
.
getDate
()).
age
;
}
//改为编辑状态出现男女选项
...
...
@@ -168,8 +206,8 @@ export class MyBusinessDetailComponent implements OnInit {
this
.
selectedId
=
1
;
}
}
// 查看报告
viewReport
()
{
// 查看报告
viewReport
()
{
window
.
location
.
href
=
`https://
${
window
.
location
.
host
}
/customizedPlanList/3?orderId=
${
this
.
orderId
}
&customerId=
${
this
.
opportunityId
}
`
}
...
...
@@ -178,10 +216,12 @@ export class MyBusinessDetailComponent implements OnInit {
opportunityId
:
this
.
opportunityId
?
Number
(
this
.
opportunityId
)
:
null
,
orderId
:
this
.
orderId
?
Number
(
this
.
orderId
)
:
null
,
practitionerId
:
this
.
practitionerId
,
sfpMainId
:
this
.
sfpMainId
?
Number
(
this
.
sfpMainId
)
:
null
sfpMainId
:
this
.
sfpMainId
?
Number
(
this
.
sfpMainId
)
:
null
}
this
.
myService
.
ownOpportunityDetailQuery
(
detailParam
).
subscribe
((
res
)
=>
{
if
(
res
[
'success'
])
{
//拼接iframe url
this
.
iframeUrl
=
`
${
environment
.
SFPPROJECTURL
}
/SFP/surveyPages/clientSurvey/clientSurveyInfo?sfpMainId=
${
this
.
sfpMainId
}
&userId=
${
res
[
'data'
][
'opportunityBasicInformationInfo'
][
'sfpUserId'
]}
`
this
.
opportunitySurveyAnswersList
=
res
[
'data'
][
'opportunityConsultationInfo'
][
'opportunitySurveyAnswersList'
]
this
.
editBusiness
=
res
[
'data'
][
'opportunityBasicInformationInfo'
];
this
.
opportunityCustomerTags
=
res
[
'data'
][
'opportunityBasicInformationInfo'
][
'opportunityCustomerTags'
]
...
...
@@ -441,7 +481,7 @@ export class MyBusinessDetailComponent implements OnInit {
fyp
:
this
.
editBusiness
.
fyp
?
Number
(
this
.
editBusiness
.
fyp
)
:
null
,
fyc
:
this
.
editBusiness
.
fyc
?
Number
(
this
.
editBusiness
.
fyc
)
:
null
,
sourceFrom
:
this
.
editBusiness
.
sourceFrom
?
Number
(
this
.
editBusiness
.
sourceFrom
)
:
null
,
birthDate
:
this
.
editBusiness
.
birthDate
?
this
.
lifeCommonService
.
dateFormat
(
this
.
editBusiness
.
birthDate
,
'yyyy-MM-dd'
)
:
null
birthDate
:
this
.
editBusiness
.
birthDate
?
this
.
lifeCommonService
.
dateFormat
(
this
.
editBusiness
.
birthDate
,
'yyyy-MM-dd'
)
:
null
}
this
.
myService
.
ownOpportunityBasicInformationSave
(
this
.
editBusiness
).
subscribe
((
res
)
=>
{
if
(
res
[
'success'
])
{
...
...
@@ -475,7 +515,7 @@ export class MyBusinessDetailComponent implements OnInit {
}
}
this
.
ownOpportunityDetailQuery
();
}
else
{
}
else
{
this
.
toastDialog
=
true
;
this
.
toastInfo
=
{
status
:
1
,
...
...
@@ -487,7 +527,7 @@ export class MyBusinessDetailComponent implements OnInit {
})
}
ownOpportunityRecordSave
(
opportunityRecordItem
?:
any
)
{
ownOpportunityRecordSave
(
opportunityRecordItem
?:
any
)
{
let
param
;
if
(
!
opportunityRecordItem
)
{
const
oppDate
=
new
Date
(
this
.
opportunityRecordNoticeDate
+
' 23:59:59'
).
getTime
();
...
...
@@ -543,6 +583,41 @@ export class MyBusinessDetailComponent implements OnInit {
};
return
;
}
//如果日程时间选择了一个则两个时间都是必填
if
(
this
.
taskTimeFrom
||
this
.
taskTimeEnd
){
if
(
!
this
.
taskTimeFrom
){
this
.
toastDialog
=
true
;
this
.
toastInfo
=
{
status
:
1
,
msg
:
'日程开始时间不能为空!'
,
timeout
:
3000
,
align
:
'center'
};
return
;
}
if
(
!
this
.
taskTimeEnd
){
this
.
toastDialog
=
true
;
this
.
toastInfo
=
{
status
:
1
,
msg
:
'日程结束时间不能为空!'
,
timeout
:
3000
,
align
:
'center'
};
return
;
}
if
(
this
.
taskTimeEnd
<
this
.
taskTimeFrom
){
this
.
toastDialog
=
true
;
this
.
toastInfo
=
{
status
:
1
,
msg
:
'日程结束时间不能早于开始时间!'
,
timeout
:
3000
,
align
:
'center'
};
return
;
}
}
param
=
{
id
:
''
,
salesNotice
:
this
.
salesNotice
,
...
...
@@ -552,9 +627,9 @@ export class MyBusinessDetailComponent implements OnInit {
mdDropOptionId
:
this
.
opportunityRecordId
?
Number
(
this
.
opportunityRecordId
)
:
null
,
noticeDate
:
this
.
opportunityRecordNoticeDate
,
leadsAssignedId
:
this
.
leadsAssignedId
?
Number
(
this
.
leadsAssignedId
)
:
null
,
sfpMainId
:
this
.
sfpMainId
?
Number
(
this
.
sfpMainId
)
:
null
,
taskTimeFrom
:
this
.
taskTimeFrom
,
//跟进开始时间
taskTimeEnd
:
this
.
taskTimeEnd
//跟进结束时间
sfpMainId
:
this
.
sfpMainId
?
Number
(
this
.
sfpMainId
)
:
null
,
taskTimeFrom
:
this
.
taskTimeFrom
,
//跟进开始时间
taskTimeEnd
:
this
.
taskTimeEnd
//跟进结束时间
}
}
else
{
...
...
@@ -605,8 +680,8 @@ export class MyBusinessDetailComponent implements OnInit {
}
openPopInfo
(
message
)
{
this
.
myService
.
applyForExpertSupport
({
leadsAssignedId
:
this
.
leadsAssignedId
,
practitionerId
:
this
.
practitionerId
,
opportunityId
:
this
.
opportunityId
}).
subscribe
((
res
)
=>
{
if
(
res
[
'success'
])
{
this
.
myService
.
applyForExpertSupport
({
leadsAssignedId
:
this
.
leadsAssignedId
,
practitionerId
:
this
.
practitionerId
,
opportunityId
:
this
.
opportunityId
}).
subscribe
((
res
)
=>
{
if
(
res
[
'success'
])
{
this
.
ownOpportunityDetailQuery
();
this
.
isNeedAlert
=
true
;
this
.
dialogInfo
=
{
...
...
@@ -614,7 +689,7 @@ export class MyBusinessDetailComponent implements OnInit {
content
:
{
value
:
message
,
align
:
'center'
},
footer
:
[{
value
:
'确认离开'
,
routerLink
:
''
,
className
:
'weui-dialog__btn_primary'
}],
};
}
else
{
}
else
{
this
.
toastDialog
=
true
;
this
.
toastInfo
=
{
status
:
1
,
...
...
@@ -639,23 +714,23 @@ export class MyBusinessDetailComponent implements OnInit {
// 发送电子客户告知书,opportunityIdID = CustomerId
sendENotice
()
{
sendENotice
()
{
this
.
eNoticeState
=
false
;
if
(
this
.
deviceType
!=
3
)
{
if
(
this
.
deviceType
!=
3
)
{
alert
(
'请在微信公众号中发送邀请'
);
return
;
}
const
param
=
{
practitionerId
:
this
.
lifeCustomerInfo
[
'practitionerId'
],
leadsAssignedId
:
this
.
leadsAssignedId
,
customerName
:
this
.
editBusiness
.
name
,
customerId
:
this
.
editBusiness
.
opportunityId
,
customerMobile
:
this
.
editBusiness
.
mobileNo
.
replace
(
/
\s
/g
,
''
),
loginId
:
this
.
lifeCustomerInfo
[
'customerId'
]
}
this
.
myService
.
saveInformedSheet
(
param
).
subscribe
(
res
=>
{
if
(
res
[
'success'
])
{
setTimeout
(()
=>
{
practitionerId
:
this
.
lifeCustomerInfo
[
'practitionerId'
],
leadsAssignedId
:
this
.
leadsAssignedId
,
customerName
:
this
.
editBusiness
.
name
,
customerId
:
this
.
editBusiness
.
opportunityId
,
customerMobile
:
this
.
editBusiness
.
mobileNo
.
replace
(
/
\s
/g
,
''
),
loginId
:
this
.
lifeCustomerInfo
[
'customerId'
]
}
this
.
myService
.
saveInformedSheet
(
param
).
subscribe
(
res
=>
{
if
(
res
[
'success'
])
{
setTimeout
(()
=>
{
const
imgUrl
=
this
.
lifeCustomerInfo
.
practitionerBasicInfo
.
headImagePath
?
this
.
lifeCustomerInfo
.
practitionerBasicInfo
.
headImagePath
:
`
${
environment
.
DOMAINNAME
}
/ydLife/assets/images/icons/meng.png`
;
console
.
log
(
imgUrl
);
this
.
lifeCommonService
.
shareStatusPublish
(
1
);
...
...
@@ -664,9 +739,9 @@ export class MyBusinessDetailComponent implements OnInit {
`您的客户告知书和服务委托协议已准备好,请查收并签署,感谢信任和支持。`
,
`https://
${
window
.
location
.
host
}
/ydLife/identify?eNoticeId=
${
res
[
'data'
][
'id'
]}
`
,
imgUrl
);
},
500
)
},
500
)
}
else
{
}
else
{
this
.
toastDialog
=
true
;
this
.
toastInfo
=
{
status
:
1
,
...
...
@@ -680,27 +755,25 @@ export class MyBusinessDetailComponent implements OnInit {
}
// 设置样式
setBackgroundColor
(
e
)
{
setBackgroundColor
(
e
)
{
let
bgColor
=
'transparent'
;
let
fontColor
=
'#666'
;
if
(
e
.
informedOssPath
&&
e
.
status
==
0
)
{
if
(
e
.
informedOssPath
&&
e
.
status
==
0
)
{
bgColor
=
'#999999'
;
fontColor
=
'#fff'
;
}
else
if
(
e
.
informedOssPath
&&
e
.
status
==
1
)
{
}
else
if
(
e
.
informedOssPath
&&
e
.
status
==
1
)
{
bgColor
=
'#C81B1E'
;
fontColor
=
'#fff'
;
}
else
{
}
else
{
bgColor
=
'transparent'
;
fontColor
=
'#666'
;
}
let
style
=
{
'background-color'
:
bgColor
,
'color'
:
fontColor
,
'padding'
:
"1px 3px"
,
'border-radius'
:
"3px"
'background-color'
:
bgColor
,
'color'
:
fontColor
,
'padding'
:
"1px 3px"
,
'border-radius'
:
"3px"
};
return
style
;
}
}
\ No newline at end of file
src/environments/environment.prod.ts
View file @
58254264
...
...
@@ -3,5 +3,6 @@ export const environment = {
BACKEND_URL_CONFIG_VALUE
:
'https://m.zuihuibi.cn/api'
,
ORIGINNAME
:
'https://m.zuihuibi.cn/ydapi'
,
DOMAINNAME
:
'https://m.zuihuibi.cn/'
,
BAIDU_TONGJI_CODE
:
'36b1eb7eec3b5dac9f97d887092b5b27'
BAIDU_TONGJI_CODE
:
'36b1eb7eec3b5dac9f97d887092b5b27'
,
SFPPROJECTURL
:
'https://m.cffp.org.cn'
};
src/environments/environment.stage.ts
View file @
58254264
...
...
@@ -6,5 +6,6 @@ export const environment = {
BACKEND_URL_CONFIG_VALUE
:
'https://mstage.zuihuibi.cn/api'
,
ORIGINNAME
:
'https://mstage.zuihuibi.cn/ydapi'
,
DOMAINNAME
:
'https://mstage.zuihuibi.cn/'
,
BAIDU_TONGJI_CODE
:
'84be9b9eaaca51048f32bb160ccad2e6'
BAIDU_TONGJI_CODE
:
'84be9b9eaaca51048f32bb160ccad2e6'
,
SFPPROJECTURL
:
'https://mstage.zuihuibi.cn'
};
src/environments/environment.ts
View file @
58254264
...
...
@@ -8,5 +8,7 @@ export const environment = {
BACKEND_URL_CONFIG_VALUE
:
'https://mdev.zuihuibi.cn/api'
,
ORIGINNAME
:
'https://mdev.zuihuibi.cn/ydapi'
,
DOMAINNAME
:
'https://mdev.zuihuibi.cn/'
,
BAIDU_TONGJI_CODE
:
'e8fa107d82e0471d097d545225aeed64'
BAIDU_TONGJI_CODE
:
'e8fa107d82e0471d097d545225aeed64'
,
// SFPPROJECTURL:'http://localhost:5173'
SFPPROJECTURL
:
'https://mdev.zuihuibi.cn'
};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment