Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
CRM
Project
Project
Details
Activity
Releases
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
华国豪
CRM
Commits
5e1efea0
Commit
5e1efea0
authored
Feb 24, 2020
by
华国豪
🙄
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增很多页面
parent
726d4d10
Show whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
1801 additions
and
982 deletions
+1801
-982
init.css
src/assets/css/init.css
+4
-0
HomeNavLeft.vue
src/components/HomeNav/HomeNavLeft.vue
+4
-2
Activity.vue
src/components/assembly/Activity.vue
+3
-3
Business.vue
src/components/assembly/Business.vue
+56
-6
Details.vue
src/components/assembly/Details.vue
+2
-2
Record.vue
src/components/assembly/Record.vue
+1
-1
customerInfoBox.vue
src/components/assembly/customerInfoBox.vue
+2
-2
Activity.vue
src/components/businessManagement/Activity.vue
+3
-3
Contacts.vue
src/components/businessManagement/Contacts.vue
+1
-0
Record.vue
src/components/businessManagement/Record.vue
+1
-1
addBusinessBox.vue
src/components/businessManagement/addBusinessBox.vue
+14
-13
bsDetails.vue
src/components/businessManagement/bsDetails.vue
+2
-2
Activity.vue
src/components/clueManagement/Activity.vue
+3
-3
Details.vue
src/components/clueManagement/Details.vue
+2
-2
Enclosure.vue
src/components/clueManagement/Enclosure.vue
+1
-1
Record.vue
src/components/clueManagement/Record.vue
+1
-1
clueManagement.vue
src/components/clueManagement/clueManagement.vue
+1
-1
customerInfoBox.vue
src/components/clueManagement/customerInfoBox.vue
+1
-1
Activity.vue
src/components/contactsManagement/Activity.vue
+13
-7
Business.vue
src/components/contactsManagement/Business.vue
+163
-7
Details.vue
src/components/contactsManagement/Details.vue
+11
-31
Record.vue
src/components/contactsManagement/Record.vue
+2
-3
contactsInfoBox.vue
src/components/contactsManagement/contactsInfoBox.vue
+18
-9
contactsManagement.vue
src/components/contactsManagement/contactsManagement.vue
+2
-3
aa.vue
src/components/customerManage/aa.vue
+0
-872
customerManage.vue
src/components/customerManage/customerManage.vue
+0
-1
myClue.vue
src/components/waitMatter/myClue.vue
+150
-0
myCustomer.vue
src/components/waitMatter/myCustomer.vue
+132
-0
todayCustomer.vue
src/components/waitMatter/todayCustomer.vue
+130
-0
waitMatter.vue
src/components/waitMatter/waitMatter.vue
+137
-0
watersManagement.vue
src/components/watersManagement/watersManagement.vue
+739
-0
router.js
src/router.js
+18
-0
index.vue
src/views/index.vue
+184
-5
No files found.
src/assets/css/init.css
View file @
5e1efea0
...
...
@@ -229,3 +229,7 @@ textarea{
color
:
rgba
(
13
,
36
,
129
,
1
);
background-color
:
white
;
}
.MyEditForm-item
.el-input.is-disabled
.el-input__inner
{
background-color
:
white
;
border-color
:
white
;
}
\ No newline at end of file
src/components/HomeNav/HomeNavLeft.vue
View file @
5e1efea0
...
...
@@ -91,7 +91,8 @@ export default {
},
{
class
:
"iconfont icondaiban"
,
name
:
"待办事项"
name
:
"待办事项"
,
path
:
'/waitMatter'
},
{
class
:
"iconfont iconxiansuo"
,
...
...
@@ -110,7 +111,8 @@ export default {
},
{
class
:
"iconfont icongonghaiguanli"
,
name
:
"公海"
name
:
"公海"
,
path
:
'/watersManagement'
},
{
class
:
"iconfont iconshangji"
,
...
...
src/components/assembly/Activity.vue
View file @
5e1efea0
...
...
@@ -390,7 +390,7 @@
<div
class=
"content-item font-color-info"
:key=
"subIndex"
v-if=
"!subItem.CustomerFollowUpModel"
>
<i
class=
"iconfont iconcompany"
></i>
<div
class=
"content"
>
<p
class=
"content-ea"
><span>
{{
subItem
.
UpdateDate
.
replace
(
'T'
,
' '
)
}}
</span>
<span>
{{
subItem
.
LogInfo
}}
</span></p>
<p
class=
"content-ea"
><span>
{{
subItem
.
UpdateDate
}}
</span>
<span>
{{
subItem
.
LogInfo
}}
</span></p>
</div>
</div>
<div
class=
"content-item"
v-else
:key=
"subIndex"
>
...
...
@@ -402,7 +402,7 @@
</div>
<div>
<p>
{{
subItem
.
CustomerFollowUpModel
.
CreateByStr
}}
</p>
<p
class=
"font-color-info"
>
{{
subItem
.
UpdateDate
.
replace
(
'T'
,
' '
)
}}
</p>
<p
class=
"font-color-info"
>
{{
subItem
.
UpdateDate
}}
</p>
</div>
<div
class=
"tag"
>
<span>
{{
subItem
.
CustomerFollowUpModel
.
FollowUpTypeStr
}}
</span>
...
...
@@ -424,7 +424,7 @@
</p>
</div>
</div>
<p>
<span
class=
"font-color-info"
>
下次联系时间:
</span>
<span>
{{
subItem
.
CustomerFollowUpModel
.
NextContactDate
.
replace
(
'T'
,
' '
)
}}
</span></p>
<p>
<span
class=
"font-color-info"
>
下次联系时间:
</span>
<span>
{{
subItem
.
CustomerFollowUpModel
.
NextContactDate
}}
</span></p>
</div>
</div>
</div>
...
...
src/components/assembly/Business.vue
View file @
5e1efea0
...
...
@@ -3,26 +3,76 @@
</
style
>
<
template
>
<div
class=
"Business"
>
Business
<div
class=
"add-Enclosure"
>
<el-button
icon=
"el-icon-plus"
class=
"crm-btn query-btn crm-btn-mini margin-right0"
@
click=
"addBusiness"
>
新建商机
</el-button>
</div>
<el-table
v-loading=
"loading"
stripe
ref=
"multipleTable"
:data=
"dataList"
tooltip-effect=
"dark"
style=
"width: 100%"
row-class-name=
"font-size-12"
>
<el-table-column
prop=
"BusinessName"
label=
"商机名称"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"BudgetPrice"
label=
"商机金额"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"CustomerName"
label=
"客户名称"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"BusinessStatusStr"
label=
"商机阶段"
show-overflow-tooltip
>
</el-table-column>
</el-table>
</div>
</
template
>
<
script
>
export
default
{
props
:{
},
props
:
[
'ID'
,
'BusinessType'
],
data
()
{
return
{
dataList
:
[],
loading
:
false
};
},
watch
:{
},
mounted
()
{
this
.
GetBusinessList
()
},
methods
:
{
GetBusinessList
(){
this
.
apipost
(
'/api/Customer/GetBusinessList'
,
{
CustomerId
:
this
.
ID
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
console
.
log
(
res
.
data
.
data
)
this
.
dataList
=
res
.
data
.
data
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
})
},
addBusiness
(){
let
$this
=
this
this
.
MsgBus
.
$emit
(
'addBusinessBoxOpen'
,
$this
.
ID
,
0
)
},
guanlian
(){
},
jiechuguanlian
(){
},
}
}
</
script
>
\ No newline at end of file
src/components/assembly/Details.vue
View file @
5e1efea0
...
...
@@ -126,7 +126,7 @@
更新时间:
</el-col>
<el-col
:span=
"14"
>
{{
detailsData
.
UpdateTime
?
detailsData
.
UpdateTime
.
replace
(
'T'
,
' '
)
:
detailsData
.
UpdateTime
}}
{{
detailsData
.
UpdateTime
?
detailsData
.
UpdateTime
:
detailsData
.
UpdateTime
}}
</el-col>
</el-row>
</el-col>
...
...
@@ -149,7 +149,7 @@
创建时间:
</el-col>
<el-col
:span=
"14"
>
{{
detailsData
.
CreateTime
?
detailsData
.
CreateTime
.
replace
(
'T'
,
' '
)
:
detailsData
.
CreateTime
}}
{{
detailsData
.
CreateTime
?
detailsData
.
CreateTime
:
detailsData
.
CreateTime
}}
</el-col>
</el-row>
</el-col>
...
...
src/components/assembly/Record.vue
View file @
5e1efea0
...
...
@@ -70,7 +70,7 @@
<div
class=
"Record"
id=
"Record"
>
<div
class=
"ha-cont"
style=
"justify-content: flex-start; align-items: stretch;"
v-for=
"(item, index) in logList"
:key=
"index"
>
<div
class=
"ha-circle"
></div>
<div
class=
"ha-time"
>
{{
item
.
UpdateDate
.
replace
(
'T'
,
' '
)
}}
</div>
<div
class=
"ha-time"
>
{{
item
.
UpdateDate
}}
</div>
<!--
<div
class=
"ha-name"
>
admin
</div>
-->
<div
class=
"ha-content"
>
<p
data-v-0d9b8f7a=
""
>
{{
item
.
LogInfo
}}
</p>
...
...
src/components/assembly/customerInfoBox.vue
View file @
5e1efea0
...
...
@@ -100,7 +100,7 @@
<span
class=
"info-lable"
>
负责人:
</span><span>
{{
detailsData
.
Contact
}}
</span>
</el-col>
<el-col
:span=
"12"
>
<span
class=
"info-lable"
>
更新时间:
</span><span>
{{
detailsData
.
UpdateTime
?
detailsData
.
UpdateTime
.
replace
(
'T'
,
' '
)
:
''
}}
</span>
<span
class=
"info-lable"
>
更新时间:
</span><span>
{{
detailsData
.
UpdateTime
?
detailsData
.
UpdateTime
:
''
}}
</span>
</el-col>
</el-row>
</div>
...
...
@@ -119,7 +119,7 @@
<TeamMembers
v-if=
"activeName === '4'"
:CustomerId=
"CustomerId"
/>
</el-tab-pane>
<el-tab-pane
label=
"商机"
name=
"5"
>
<Business
/>
<Business
v-if=
"activeName === '5'"
:ID=
"CustomerId"
/>
</el-tab-pane>
<el-tab-pane
label=
"合同"
name=
"6"
>
<Agreement
/>
...
...
src/components/businessManagement/Activity.vue
View file @
5e1efea0
...
...
@@ -387,7 +387,7 @@
<div
class=
"content-item font-color-info"
:key=
"subIndex"
v-if=
"!subItem.CustomerFollowUpModel"
>
<i
class=
"iconfont iconcompany"
></i>
<div
class=
"content"
>
<p
class=
"content-ea"
><span>
{{
subItem
.
UpdateDate
.
replace
(
'T'
,
' '
)
}}
</span>
<span>
{{
subItem
.
LogInfo
}}
</span></p>
<p
class=
"content-ea"
><span>
{{
subItem
.
UpdateDate
}}
</span>
<span>
{{
subItem
.
LogInfo
}}
</span></p>
</div>
</div>
<div
class=
"content-item"
v-else
:key=
"subIndex"
>
...
...
@@ -399,7 +399,7 @@
</div>
<div>
<p>
{{
subItem
.
CustomerFollowUpModel
.
CreateByStr
}}
</p>
<p
class=
"font-color-info"
>
{{
subItem
.
UpdateDate
.
replace
(
'T'
,
' '
)
}}
</p>
<p
class=
"font-color-info"
>
{{
subItem
.
UpdateDate
}}
</p>
</div>
<div
class=
"tag"
>
<span>
{{
subItem
.
CustomerFollowUpModel
.
FollowUpTypeStr
}}
</span>
...
...
@@ -420,7 +420,7 @@
</p>
</div>
</div>
<p>
<span
class=
"font-color-info"
>
下次联系时间:
</span>
<span>
{{
subItem
.
CustomerFollowUpModel
.
NextContactDate
.
replace
(
'T'
,
' '
)
}}
</span></p>
<p>
<span
class=
"font-color-info"
>
下次联系时间:
</span>
<span>
{{
subItem
.
CustomerFollowUpModel
.
NextContactDate
}}
</span></p>
</div>
</div>
</div>
...
...
src/components/businessManagement/Contacts.vue
View file @
5e1efea0
...
...
@@ -206,6 +206,7 @@ export default {
},
addContactsOk
(){
this
.
GetContactByBusinessID
()
this
.
getGLcustomerList
()
},
SetFirstContact
(
scope
){
this
.
apipost
(
'/api/Customer/SetBusinessFirstContact'
,
{
BusinessID
:
this
.
BusinessId
,
ID
:
scope
.
row
.
ID
},
res
=>
{
...
...
src/components/businessManagement/Record.vue
View file @
5e1efea0
...
...
@@ -63,7 +63,7 @@
<div
class=
"Record"
id=
"Record"
>
<div
class=
"ha-cont"
style=
"justify-content: flex-start; align-items: stretch;"
v-for=
"(item, index) in logList"
:key=
"index"
>
<div
class=
"ha-circle"
></div>
<div
class=
"ha-time"
>
{{
item
.
UpdateDate
.
replace
(
'T'
,
' '
)
}}
</div>
<div
class=
"ha-time"
>
{{
item
.
UpdateDate
}}
</div>
<div
class=
"ha-content"
>
<p>
{{
item
.
LogInfo
}}
</p>
</div>
...
...
src/components/businessManagement/addBusinessBox.vue
View file @
5e1efea0
...
...
@@ -151,7 +151,7 @@
<el-col
:span=
"8"
>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"客户名称"
prop=
"CustomerId"
>
<el-select
v-model=
"form.CustomerId"
filterable
placeholder=
"请选择客户"
>
<el-select
v-model=
"form.CustomerId"
:disabled=
"type==='1' ? true : false"
placeholder=
"请选择客户"
>
<el-option
v-for=
"item in CustomerList"
:key=
"item.CustomerId"
...
...
@@ -249,16 +249,7 @@
</
template
>
<
script
>
export
default
{
props
:{
ID
:
{
type
:
Number
,
default
:
0
},
name
:
{
type
:
String
,
default
:
'新建商机'
}
},
props
:[
'ID'
,
'name'
,
'CustomerId'
,
'ContactId'
,
'type'
],
data
()
{
return
{
CustomerList
:
[],
...
...
@@ -315,6 +306,12 @@ export default {
console
.
log
(
val
)
},
deep
:
true
},
CustomerId
:
{
handler
(
val
,
oldVal
){
console
.
log
(
val
)
},
deep
:
true
}
},
mounted
()
{
...
...
@@ -322,6 +319,9 @@ export default {
this
.
getLineList
()
this
.
GetBusinessStatusEnum
()
let
$this
=
this
if
(
this
.
CustomerId
!==
0
)
{
this
.
form
.
CustomerId
=
this
.
CustomerId
}
setTimeout
(()
=>
{
$this
.
dialogTableVisible
=
true
},
50
)
...
...
@@ -382,12 +382,13 @@ export default {
this
.
dialogTableVisible
=
false
;
// 有id 发送更新抽屉消息
if
(
this
.
CustomerId
!==
0
)
{
this
.
$message
.
success
(
'
修改商机
成功'
);
this
.
$message
.
success
(
'
操作
成功'
);
this
.
MsgBus
.
$emit
(
'RefreshInfoBox'
)
}
else
{
this
.
$message
.
success
(
'
新建商机
成功'
);
this
.
$message
.
success
(
'
操作
成功'
);
}
this
.
$emit
(
'getList'
)
this
.
MsgBus
.
$emit
(
'RefreshbusSelect'
)
this
.
resetForm
(
"form"
);
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
...
...
src/components/businessManagement/bsDetails.vue
View file @
5e1efea0
...
...
@@ -114,7 +114,7 @@
创建时间:
</el-col>
<el-col
:span=
"14"
>
{{
detailsData
.
CreateTime
?
detailsData
.
CreateTime
.
replace
(
'T'
,
' '
)
:
detailsData
.
CreateTime
}}
{{
detailsData
.
CreateTime
?
detailsData
.
CreateTime
:
detailsData
.
CreateTime
}}
</el-col>
</el-row>
</el-col>
...
...
@@ -126,7 +126,7 @@
更新时间:
</el-col>
<el-col
:span=
"14"
>
{{
detailsData
.
UpdateTime
?
detailsData
.
UpdateTime
.
replace
(
'T'
,
' '
)
:
detailsData
.
UpdateTime
}}
{{
detailsData
.
UpdateTime
?
detailsData
.
UpdateTime
:
detailsData
.
UpdateTime
}}
</el-col>
</el-row>
</el-col>
...
...
src/components/clueManagement/Activity.vue
View file @
5e1efea0
...
...
@@ -363,7 +363,7 @@
<div
class=
"content-item font-color-info"
:key=
"subIndex"
v-if=
"!subItem.CustomerFollowUpModel"
>
<i
class=
"iconfont iconcompany"
></i>
<div
class=
"content"
>
<p
class=
"content-ea"
><span>
{{
subItem
.
UpdateDate
.
replace
(
'T'
,
' '
)
}}
</span>
<span>
{{
subItem
.
LogInfo
}}
</span></p>
<p
class=
"content-ea"
><span>
{{
subItem
.
UpdateDate
}}
</span>
<span>
{{
subItem
.
LogInfo
}}
</span></p>
</div>
</div>
<div
class=
"content-item"
v-else
:key=
"subIndex"
>
...
...
@@ -375,7 +375,7 @@
</div>
<div>
<p>
{{
subItem
.
CustomerFollowUpModel
.
CreateByStr
}}
</p>
<p
class=
"font-color-info"
>
{{
subItem
.
UpdateDate
.
replace
(
'T'
,
' '
)
}}
</p>
<p
class=
"font-color-info"
>
{{
subItem
.
UpdateDate
}}
</p>
</div>
<div
class=
"tag"
>
<span>
{{
subItem
.
CustomerFollowUpModel
.
FollowUpTypeStr
}}
</span>
...
...
@@ -396,7 +396,7 @@
</p>
</div>
</div>
<p>
<span
class=
"font-color-info"
>
下次联系时间:
</span>
<span>
{{
subItem
.
CustomerFollowUpModel
.
NextContactDate
.
replace
(
'T'
,
' '
)
}}
</span></p>
<p>
<span
class=
"font-color-info"
>
下次联系时间:
</span>
<span>
{{
subItem
.
CustomerFollowUpModel
.
NextContactDate
}}
</span></p>
</div>
</div>
</div>
...
...
src/components/clueManagement/Details.vue
View file @
5e1efea0
...
...
@@ -126,7 +126,7 @@
更新时间:
</el-col>
<el-col
:span=
"14"
>
{{
detailsData
.
UpdateTime
?
detailsData
.
UpdateTime
.
replace
(
'T'
,
' '
)
:
detailsData
.
UpdateTime
}}
{{
detailsData
.
UpdateTime
?
detailsData
.
UpdateTime
:
detailsData
.
UpdateTime
}}
</el-col>
</el-row>
</el-col>
...
...
@@ -149,7 +149,7 @@
创建时间:
</el-col>
<el-col
:span=
"14"
>
{{
detailsData
.
CreateTime
?
detailsData
.
CreateTime
.
replace
(
'T'
,
' '
)
:
detailsData
.
CreateTime
}}
{{
detailsData
.
CreateTime
?
detailsData
.
CreateTime
:
detailsData
.
CreateTime
}}
</el-col>
</el-row>
</el-col>
...
...
src/components/clueManagement/Enclosure.vue
View file @
5e1efea0
...
...
@@ -37,7 +37,7 @@
label=
"上传时间"
show-overflow-tooltip
>
<template
slot-scope=
"scope"
>
<span
class=
"cfont-color-info"
>
{{
scope
.
row
.
CreateTime
.
replace
(
'T'
,
' '
)
}}
</span>
<span
class=
"cfont-color-info"
>
{{
scope
.
row
.
CreateTime
}}
</span>
</
template
>
</el-table-column>
<el-table-column
...
...
src/components/clueManagement/Record.vue
View file @
5e1efea0
...
...
@@ -70,7 +70,7 @@
<div
class=
"Record"
id=
"Record"
>
<div
class=
"ha-cont"
style=
"justify-content: flex-start; align-items: stretch;"
v-for=
"(item, index) in logList"
:key=
"index"
>
<div
class=
"ha-circle"
></div>
<div
class=
"ha-time"
>
{{
item
.
UpdateDate
.
replace
(
'T'
,
' '
)
}}
</div>
<div
class=
"ha-time"
>
{{
item
.
UpdateDate
}}
</div>
<!--
<div
class=
"ha-name"
>
admin
</div>
-->
<div
class=
"ha-content"
>
<p
data-v-0d9b8f7a=
""
>
{{
item
.
LogInfo
}}
</p>
...
...
src/components/clueManagement/clueManagement.vue
View file @
5e1efea0
...
...
@@ -129,7 +129,7 @@
v-if=
"queryType[7].show"
show-overflow-tooltip
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
UpdateTime
.
replace
(
'T'
,
' '
)
}}
</span>
<span>
{{
scope
.
row
.
UpdateTime
}}
</span>
</
template
>
</el-table-column>
<el-table-column
...
...
src/components/clueManagement/customerInfoBox.vue
View file @
5e1efea0
...
...
@@ -97,7 +97,7 @@
<span
class=
"info-lable"
>
负责人:
</span><span>
{{
detailsData
.
Contact
}}
</span>
</el-col>
<el-col
:span=
"12"
>
<span
class=
"info-lable"
>
更新时间:
</span><span>
{{
detailsData
.
UpdateTime
.
replace
(
'T'
,
' '
)
}}
</span>
<span
class=
"info-lable"
>
更新时间:
</span><span>
{{
detailsData
.
UpdateTime
}}
</span>
</el-col>
</el-row>
</div>
...
...
src/components/contactsManagement/Activity.vue
View file @
5e1efea0
...
...
@@ -370,7 +370,7 @@
<div
class=
"content-item font-color-info"
:key=
"subIndex"
v-if=
"!subItem.CustomerFollowUpModel"
>
<i
class=
"iconfont iconcompany"
></i>
<div
class=
"content"
>
<p
class=
"content-ea"
><span>
{{
subItem
.
UpdateDate
.
replace
(
'T'
,
' '
)
}}
</span>
<span>
{{
subItem
.
LogInfo
}}
</span></p>
<p
class=
"content-ea"
><span>
{{
subItem
.
UpdateDate
}}
</span>
<span>
{{
subItem
.
LogInfo
}}
</span></p>
</div>
</div>
<div
class=
"content-item"
v-else
:key=
"subIndex"
>
...
...
@@ -382,7 +382,7 @@
</div>
<div>
<p>
{{
subItem
.
CustomerFollowUpModel
.
CreateByStr
}}
</p>
<p
class=
"font-color-info"
>
{{
subItem
.
UpdateDate
.
replace
(
'T'
,
' '
)
}}
</p>
<p
class=
"font-color-info"
>
{{
subItem
.
UpdateDate
}}
</p>
</div>
<div
class=
"tag"
>
<span>
{{
subItem
.
CustomerFollowUpModel
.
FollowUpTypeStr
}}
</span>
...
...
@@ -404,7 +404,7 @@
</p>
</div>
</div>
<p>
<span
class=
"font-color-info"
>
下次联系时间:
</span>
<span>
{{
subItem
.
CustomerFollowUpModel
.
NextContactDate
.
replace
(
'T'
,
' '
)
}}
</span></p>
<p>
<span
class=
"font-color-info"
>
下次联系时间:
</span>
<span>
{{
subItem
.
CustomerFollowUpModel
.
NextContactDate
}}
</span></p>
</div>
</div>
</div>
...
...
@@ -419,6 +419,10 @@
<
script
>
export
default
{
props
:{
ContactId
:
{
type
:
Number
,
default
:
0
},
CustomerId
:
{
type
:
Number
,
default
:
0
...
...
@@ -451,7 +455,7 @@ export default {
type
:
1
,
FollowUpMsg
:
{
ID
:
0
,
CustomerId
:
''
,
CustomerId
:
0
,
ContactId
:
0
,
ContactName
:
''
,
BusinessId
:
0
,
...
...
@@ -485,14 +489,14 @@ export default {
fjList
:
[],
logList
:
[],
logMsg
:
{
Type
:
1
,
Type
:
5
,
pageIndex
:
1
,
pageSize
:
3
,
CustomerId
:
0
}
};
},
watch
:{
C
ustomer
Id
:
{
C
ontact
Id
:
{
handler
(
val
,
oldVal
){
this
.
GetLogPageList
()
},
...
...
@@ -541,6 +545,7 @@ export default {
})
},
CreateContactFollowUp
(){
this
.
FollowUpMsg
.
ContactId
=
this
.
ContactId
this
.
FollowUpMsg
.
CustomerId
=
this
.
CustomerId
if
(
this
.
gjImgList
.
length
){
this
.
gjImgList
.
map
(
x
=>
{
...
...
@@ -565,7 +570,7 @@ export default {
this
.
gjImgList
=
[]
this
.
FollowUpMsg
=
{
ID
:
0
,
CustomerId
:
''
,
CustomerId
:
0
,
ContactId
:
0
,
ContactName
:
''
,
BusinessId
:
0
,
...
...
@@ -576,6 +581,7 @@ export default {
NextContactDate
:
''
,
ContactContent
:
''
}
this
.
GetLogPageList
()
}
})
},
...
...
src/components/contactsManagement/Business.vue
View file @
5e1efea0
...
...
@@ -3,26 +3,182 @@
</
style
>
<
template
>
<div
class=
"Business"
>
Business
<div
class=
"add-Enclosure"
>
<el-button
class=
"crm-btn query-btn crm-btn-mini easy-btn"
@
click=
"guanlianBox = true"
>
关联
</el-button>
<el-button
class=
"crm-btn query-btn crm-btn-mini easy-btn"
@
click=
"jiechuguanlian"
>
解除关联
</el-button>
<el-button
icon=
"el-icon-plus"
class=
"crm-btn query-btn crm-btn-mini margin-right0"
@
click=
"addBusiness"
>
新建商机
</el-button>
</div>
<el-table
v-loading=
"loading"
stripe
ref=
"multipleTable"
:data=
"dataList"
tooltip-effect=
"dark"
style=
"width: 100%"
row-class-name=
"font-size-12"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
fixed
type=
"selection"
width=
"40"
></el-table-column>
<el-table-column
prop=
"BusinessName"
label=
"商机名称"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"BudgetPrice"
label=
"商机金额"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"CustomerName"
label=
"客户名称"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"BusinessStatusStr"
label=
"商机阶段"
show-overflow-tooltip
>
</el-table-column>
</el-table>
<el-dialog
:visible
.
sync=
"guanlianBox"
:modal=
"false"
:close-on-click-modal=
"false"
width=
"450px"
custom-class=
"transfer-box add-box add-box2"
>
<div
class=
"add-tit"
slot=
"title"
>
<p><span></span>
关联商机
</p>
<span
icon=
"el-icon-close"
></span>
</div>
<el-form
:model=
"msg"
ref=
"form"
class=
"MyEditForm"
>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"商机"
class=
"label-pad-left"
>
<el-select
filterable
multiple
v-model=
"BusinessIDs"
placeholder=
"请选择"
>
<el-option
v-for=
"item in selectList"
:label=
'item.BusinessName'
:value=
'item.ID'
:key=
'item.ID'
>
</el-option>
</el-select>
</el-form-item>
</div>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
class=
"add-box-btn"
@
click=
"guanlian()"
>
确 定
</el-button>
<el-button
class=
"add-box-btn add-box-cancel"
@
click=
"guanlianBox = false"
>
取 消
</el-button>
</div>
</el-dialog>
</div>
</
template
>
<
script
>
export
default
{
props
:{
},
props
:
[
'ID'
,
'CustomerId'
],
data
()
{
return
{
dataList
:
[],
loading
:
false
,
guanlianBox
:
false
,
BusinessIDs
:
[],
selectList
:
[],
selectID
:
[],
msg
:
{
BusinessIDs
:
''
,
ContactIDs
:
''
}
};
},
watch
:{
},
mounted
()
{
this
.
GetBusinessByContactID
()
this
.
GetBusinessList
()
let
$this
=
this
this
.
MsgBus
.
$on
(
'RefreshbusSelect'
,
function
(){
$this
.
GetBusinessList
()
})
},
methods
:
{
handleSelectionChange
(
val
)
{
this
.
selectID
=
val
.
map
(
x
=>
x
.
ID
)
},
GetBusinessList
(){
this
.
apipost
(
'/api/Customer/GetBusinessList'
,
{
CustomerId
:
this
.
CustomerId
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
selectList
=
res
.
data
.
data
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
})
},
GetBusinessByContactID
(){
this
.
loading
=
true
this
.
apipost
(
'/api/Customer/GetBusinessByContactID'
,
{
ContactID
:
this
.
ID
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
dataList
=
res
.
data
.
data
this
.
loading
=
false
}
else
{
this
.
loading
=
false
this
.
$message
.
error
(
res
.
data
.
message
);
}
})
},
addBusiness
(){
let
$this
=
this
this
.
MsgBus
.
$emit
(
'addBusinessBoxOpen'
,
$this
.
CustomerId
,
$this
.
ID
)
},
guanlian
(){
if
(
this
.
BusinessIDs
.
length
<
1
)
{
return
this
.
$message
.
error
(
'青选择需要关联的商机!'
)
}
let
str
=
''
this
.
BusinessIDs
.
map
((
x
,
i
)
=>
{
str
=
str
+
x
+
','
})
this
.
msg
.
ContactIDs
=
this
.
ID
this
.
msg
.
BusinessIDs
=
str
.
substring
(
0
,
str
.
length
-
1
)
this
.
apipost
(
'/api/Customer/SetBusinessContacts'
,
this
.
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
guanlianBox
=
false
this
.
GetBusinessByContactID
()
this
.
$message
.
success
(
'操作成功'
);
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
})
},
jiechuguanlian
(){
if
(
this
.
selectID
.
length
<
1
)
{
return
this
.
$message
.
error
(
'请选择数据'
)
}
this
.
$confirm
(
'确定解除关联?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
let
str
=
''
this
.
selectID
.
map
((
x
,
i
)
=>
{
str
=
str
+
x
+
','
})
let
msg
=
{
BusinessIDs
:
str
.
substring
(
0
,
str
.
length
-
1
),
ContactID
:
this
.
ID
}
this
.
apipost
(
'/api/Customer/DelBusinessContacts'
,
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
selectID
=
[]
this
.
GetBusinessByContactID
()
this
.
$message
.
success
(
'操作成功'
);
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
})
}).
catch
(()
=>
{
this
.
$message
({
type
:
'info'
,
message
:
'已取消'
});
});
},
}
}
</
script
>
\ No newline at end of file
src/components/contactsManagement/Details.vue
View file @
5e1efea0
...
...
@@ -83,18 +83,6 @@
</el-col>
</el-row>
</el-col>
<el-col
:span=
"12"
>
<el-row>
<el-col
:span=
"6"
class=
"Details_box_lable"
>
手机:
</el-col>
<el-col
:span=
"14"
>
{{
detailsData
.
ContactNumber
}}
</el-col>
</el-row>
</el-col>
</el-row>
<el-row
:gutter=
"40"
class=
"Details_box_row"
>
<el-col
:span=
"12"
>
<el-row>
<el-col
:span=
"6"
class=
"Details_box_lable"
>
...
...
@@ -106,6 +94,9 @@
</el-row>
</el-col>
</el-row>
<el-row
:gutter=
"40"
class=
"Details_box_row"
>
</el-row>
</div>
<div
class=
"Details_box"
>
<p
class=
"tit"
style=
"margin-top: 30px;"
>
系统信息
</p>
...
...
@@ -113,48 +104,35 @@
<el-col
:span=
"12"
>
<el-row>
<el-col
:span=
"6"
class=
"Details_box_lable"
>
获取客户时间
:
创建人
:
</el-col>
<el-col
:span=
"14"
>
{{
detailsData
.
PersonChargeTime
}}
{{
detailsData
.
CreateByStr
}}
</el-col>
</el-row>
</el-col>
<el-col
:span=
"12"
>
<el-row>
<el-col
:span=
"6"
class=
"Details_box_lable"
>
更新
时间:
创建
时间:
</el-col>
<el-col
:span=
"14"
>
{{
detailsData
.
UpdateTime
?
detailsData
.
UpdateTime
.
replace
(
'T'
,
' '
)
:
detailsData
.
UpdateTime
}}
{{
detailsData
.
CreateTime
?
detailsData
.
CreateTime
:
detailsData
.
CreateTime
}}
</el-col>
</el-row>
</el-col>
</el-row>
<el-row
:gutter=
"40"
class=
"Details_box_row"
>
<el-col
:span=
"12"
>
<el-row>
<el-col
:span=
"6"
class=
"Details_box_lable"
>
创建人:
</el-col>
<el-col
:span=
"14"
>
{{
detailsData
.
CreateByStr
}}
</el-col>
</el-row>
</el-col>
<el-col
:span=
"12"
>
<el-row>
<el-col
:span=
"6"
class=
"Details_box_lable"
>
创建时间:
更新时间:
</el-col>
<el-col
:span=
"14"
>
{{
detailsData
.
CreateTime
?
detailsData
.
CreateTime
.
replace
(
'T'
,
' '
)
:
detailsData
.
CreateTime
}}
{{
detailsData
.
UpdateTime
?
detailsData
.
UpdateTime
:
detailsData
.
UpdateTime
}}
</el-col>
</el-row>
</el-col>
</el-row>
<el-row
:gutter=
"40"
class=
"Details_box_row"
>
<el-col
:span=
"12"
>
<el-row>
<el-col
:span=
"6"
class=
"Details_box_lable"
>
...
...
@@ -165,6 +143,8 @@
</el-col>
</el-row>
</el-col>
</el-row>
<el-row
:gutter=
"40"
class=
"Details_box_row"
>
<el-col
:span=
"12"
>
<el-row>
<el-col
:span=
"6"
class=
"Details_box_lable"
>
...
...
src/components/contactsManagement/Record.vue
View file @
5e1efea0
...
...
@@ -70,7 +70,7 @@
<div
class=
"Record"
id=
"Record"
>
<div
class=
"ha-cont"
style=
"justify-content: flex-start; align-items: stretch;"
v-for=
"(item, index) in logList"
:key=
"index"
>
<div
class=
"ha-circle"
></div>
<div
class=
"ha-time"
>
{{
item
.
UpdateDate
.
replace
(
'T'
,
' '
)
}}
</div>
<div
class=
"ha-time"
>
{{
item
.
UpdateDate
}}
</div>
<!--
<div
class=
"ha-name"
>
admin
</div>
-->
<div
class=
"ha-content"
>
<p
data-v-0d9b8f7a=
""
>
{{
item
.
LogInfo
}}
</p>
...
...
@@ -82,7 +82,6 @@
</div>
</div>
</
template
>
</template>
<
script
>
export
default
{
props
:
[
'CustomerId'
],
...
...
@@ -90,7 +89,7 @@ export default {
return
{
logList
:
[],
msg
:
{
Type
:
1
,
Type
:
3
,
pageIndex
:
1
,
pageSize
:
10
,
SourceId
:
0
...
...
src/components/contactsManagement/contactsInfoBox.vue
View file @
5e1efea0
...
...
@@ -85,10 +85,10 @@
<div
class=
"top-info"
>
<el-row
class=
"margin-bottom-25"
>
<el-col
:span=
"12"
>
<span
class=
"info-lable"
>
客户级别:
</span><span>
{{
detailsData
.
CustomerIdLevel
Str
}}
</span>
<span
class=
"info-lable"
>
职务:
</span><span>
{{
detailsData
.
ContactDuty
Str
}}
</span>
</el-col>
<el-col
:span=
"12"
>
<span
class=
"info-lable"
>
成交状态:
</span><span
>
已成交
</span>
<span
class=
"info-lable"
>
联系电话:
</span><span
>
{{
detailsData
.
ContactPhone
}}
</span>
</el-col>
</el-row>
<el-row>
...
...
@@ -96,26 +96,26 @@
<span
class=
"info-lable"
>
负责人:
</span><span>
{{
detailsData
.
PersonChargeStr
}}
</span>
</el-col>
<el-col
:span=
"12"
>
<span
class=
"info-lable"
>
更新时间:
</span><span>
{{
detailsData
.
UpdateTime
?
detailsData
.
UpdateTime
.
replace
(
'T'
,
' '
)
:
''
}}
</span>
<span
class=
"info-lable"
>
更新时间:
</span><span>
{{
detailsData
.
UpdateTime
?
detailsData
.
UpdateTime
:
''
}}
</span>
</el-col>
</el-row>
</div>
<div
class=
"content"
>
<el-tabs
v-model=
"activeName"
@
tab-click=
"handleClick"
>
<el-tab-pane
label=
"活动"
name=
"1"
>
<Activity
v-if=
"activeName === '1'"
:CustomerId=
"CustomerId"
/>
<Activity
v-if=
"activeName === '1'"
:C
ontactId=
"ContactId"
:C
ustomerId=
"CustomerId"
/>
</el-tab-pane>
<el-tab-pane
label=
"详细资料"
name=
"2"
>
<Details
v-if=
"activeName === '2'"
:detailsData=
"detailsData"
/>
</el-tab-pane>
<el-tab-pane
label=
"商机"
name=
"5"
>
<Business
/>
<Business
v-if=
"activeName === '5'"
:ID=
"ContactId"
:CustomerId=
"CustomerId"
/>
</el-tab-pane>
<el-tab-pane
label=
"附件"
name=
"8"
>
<Enclosure
:ID=
'C
ustomer
Id'
:type=
'3'
/>
<Enclosure
:ID=
'C
ontact
Id'
:type=
'3'
/>
</el-tab-pane>
<el-tab-pane
label=
"操作记录"
name=
"9"
>
<Record
v-if=
"activeName === '9'"
:CustomerId=
"C
ustomer
Id"
/>
<Record
v-if=
"activeName === '9'"
:CustomerId=
"C
ontact
Id"
/>
</el-tab-pane>
</el-tabs>
</div>
...
...
@@ -137,6 +137,10 @@ export default {
Record
},
props
:{
ContactId
:
{
type
:
Number
,
default
:
0
},
CustomerId
:
{
type
:
Number
,
default
:
0
...
...
@@ -149,12 +153,17 @@ export default {
loading
:
false
,
};
},
watch
:{
C
ustomer
Id
:
{
C
ontact
Id
:
{
handler
(
val
,
oldVal
){
this
.
init
()
this
.
activeName
=
'1'
},
deep
:
true
},
CustomerId
:
{
handler
(
val
,
oldVal
){
},
deep
:
true
}
},
mounted
()
{
...
...
@@ -167,7 +176,7 @@ export default {
},
methods
:
{
init
(){
this
.
apipost
(
'/api/Customer/GetAllContactModel'
,
{
Id
:
this
.
C
ustomer
Id
},
res
=>
{
this
.
apipost
(
'/api/Customer/GetAllContactModel'
,
{
Id
:
this
.
C
ontact
Id
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
let
data
=
res
.
data
.
data
this
.
detailsData
=
data
...
...
src/components/contactsManagement/contactsManagement.vue
View file @
5e1efea0
...
...
@@ -217,7 +217,7 @@
:visible
.
sync=
"drawer2"
direction=
"rtl"
:before-close=
"handleClose"
>
<ContactsInfoBox
:C
ustomerId=
"Business
Id"
@
transferS=
"transfer"
@
watersS=
"waters"
@
editCustbusiness=
"editCustbusiness"
/>
<ContactsInfoBox
:C
ontactId=
"BusinessId"
:CustomerId=
"BusinessIdCustomer
Id"
@
transferS=
"transfer"
@
watersS=
"waters"
@
editCustbusiness=
"editCustbusiness"
/>
</el-drawer>
<!-- 编辑客户 -->
<div
v-if=
"dialogCustomerVisible"
>
...
...
@@ -510,7 +510,6 @@ export default {
this
.
dialogCustomerVisible
=
true
},
openDetails2
(
scope
){
console
.
log
(
scope
.
row
)
this
.
BusinessId
=
scope
.
row
.
ID
this
.
BusinessIdCustomerId
=
scope
.
row
.
CustomerId
this
.
drawer2
=
true
...
...
src/components/customerManage/aa.vue
deleted
100644 → 0
View file @
726d4d10
<
style
>
.customerManage
.tools
{
display
:
flex
;
justify-content
:
space-between
;
padding-bottom
:
25px
;
border-bottom
:
1px
solid
rgba
(
226
,
228
,
235
,
1
);
}
.customerManage
.tools
h1
{
font-weight
:
bold
;
font-size
:
18px
;
}
.customerManage
.tools
.rightmenu
{
display
:
flex
;
align-items
:
center
;
}
.customerManage
.tools
.gaoji
{
font-size
:
12px
;
font-weight
:
400
;
color
:
rgba
(
13
,
36
,
129
,
1
);
margin-right
:
35px
;
cursor
:
pointer
;
}
.customerManage
.tools
.gaoji
:hover
{
color
:
rgba
(
13
,
36
,
129
,
.8
);
}
.customerManage
.tools
.gaoji
.iconfont
{
font-size
:
12px
;
padding-left
:
5px
;
}
.customerManage
.query-box
{
padding
:
25px
0
;
}
.customerManage
.table-btn
{
display
:
inline-block
;
width
:
24px
;
height
:
24px
;
line-height
:
24px
;
text-align
:
center
;
cursor
:
pointer
;
margin-right
:
10px
;
}
.customerManage
.table-btn.blue
{
color
:
rgba
(
13
,
36
,
129
,
1
);
background-color
:
rgba
(
13
,
36
,
129
,
.3
);
}
.customerManage
.table-btn.org
{
color
:
#FFA475
;
background-color
:
rgba
(
255
,
164
,
117
,
.3
);
}
.customerManage
.table-btn.green
{
color
:
rgba
(
148
,
184
,
119
,
1
);
background-color
:
rgba
(
148
,
184
,
119
,
.3
);
}
.customerManage
.table-btn.blue
:hover
{
background-color
:
rgba
(
13
,
36
,
129
,
.5
);
}
.customerManage
.table-btn.org
:hover
{
background-color
:
rgba
(
255
,
164
,
117
,
.5
);
}
.customerManage
.table-btn.green
:hover
{
background-color
:
rgba
(
148
,
184
,
119
,
.5
);
}
.customerManage
.add-box
.add-tit
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
height
:
20px
;
}
.customerManage
.add-box
.add-tit
p
{
display
:
flex
;
align-items
:
center
;
font-weight
:
bold
;
color
:
rgba
(
17
,
17
,
17
,
1
);
font-size
:
14px
;
}
.customerManage
.add-box
.add-tit
p
span
{
display
:
inline-block
;
width
:
6px
;
height
:
6px
;
background
:
rgba
(
13
,
36
,
129
,
1
);
border-radius
:
50%
;
margin-right
:
10px
;
}
.customerManage
.add-box
.el-dialog__header
{
padding
:
15px
20px
;
background
:
rgba
(
255
,
255
,
255
,
1
);
}
.customerManage
.add-box
.dialog-footer
{
text-align
:
center
;
background-color
:
rgba
(
248
,
250
,
251
,
1
);
padding-bottom
:
20px
;
}
.customerManage
.add-box
.el-dialog__footer
{
padding
:
0
;
}
.customerManage
.add-box
.el-dialog__body
{
background-color
:
rgba
(
248
,
250
,
251
,
1
);
padding-top
:
20px
;
max-height
:
600px
;
}
.customerManage
.add-box-btn.el-button
{
border-radius
:
0
;
background-color
:
rgba
(
13
,
36
,
129
,
.8
);
border-color
:
rgba
(
13
,
36
,
129
,
.8
);
color
:
white
;
padding
:
12px
43px
;
}
.customerManage
.add-box-btn.el-button
:hover
{
background-color
:
rgba
(
13
,
36
,
129
,
1
);
border-color
:
rgba
(
13
,
36
,
129
,
1
);
color
:
white
;
}
.customerManage
.add-box-btn.el-button.add-box-cancel
{
color
:
rgba
(
13
,
36
,
129
,
.8
);
background-color
:
white
;
}
.customerManage
.add-box-btn.el-button.add-box-cancel
:hover
{
color
:
rgba
(
13
,
36
,
129
,
1
);
background-color
:
white
;
}
.customerManage
.form-box
.form-box-tit
{
display
:
flex
;
align-items
:
center
;
margin-bottom
:
20px
;
}
.customerManage
.form-box
.radius
{
display
:
flex
;
width
:
4px
;
height
:
4px
;
background
:
rgba
(
255
,
164
,
117
,
1
);
border-radius
:
50%
;
margin-right
:
10px
;
}
.customerManage
.drawer-header
{
height
:
83px
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
padding
:
0
30px
;
}
.customerManage
.drawer-header
.left
{
display
:
flex
;
align-items
:
center
;
}
.customerManage
.drawer-header
.left
img
{
display
:
inline-block
;
margin-right
:
10px
;
}
</
style
>
<
template
>
<div
class=
"customerManage"
>
<div
class=
"tools"
>
<h1>
客户管理
</h1>
<div
class=
"rightmenu"
>
<div
class=
"gaoji"
>
高级查询
<i
class=
"iconfont iconjiantou_xia"
></i></div>
<el-button
class=
"crm-btn query-btn"
@
click=
"getList"
>
查询
</el-button>
<el-button
icon=
"el-icon-plus"
class=
"crm-btn easy-btn"
@
click=
"dialogTableVisible=true"
>
新增
</el-button>
<el-button
class=
"crm-btn easy-btn"
>
导入
</el-button>
<el-button
class=
"crm-btn org-btn"
>
导出
</el-button>
</div>
</div>
<div
class=
"query-box"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"4"
>
<el-select
v-model=
"value"
placeholder=
"请选择客户来源"
>
<el-option
v-for=
"item in SourceEnum"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</el-col>
<el-col
:span=
"4"
>
<el-select
v-model=
"value"
placeholder=
"请选择客户来源"
>
<el-option
v-for=
"item in SourceEnum"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</el-col>
<el-col
:span=
"4"
>
<el-select
v-model=
"value"
placeholder=
"请选择客户来源"
>
<el-option
v-for=
"item in SourceEnum"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</el-col>
<el-col
:span=
"4"
>
<el-select
v-model=
"value"
placeholder=
"请选择客户来源"
>
<el-option
v-for=
"item in SourceEnum"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</el-col>
<el-col
:span=
"4"
>
<el-select
v-model=
"value"
placeholder=
"请选择客户来源"
>
<el-option
v-for=
"item in SourceEnum"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</el-col>
<el-col
:span=
"4"
>
<el-select
v-model=
"value"
placeholder=
"请选择客户来源"
>
<el-option
v-for=
"item in SourceEnum"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</el-col>
</el-row>
</div>
<el-table
v-loading=
"loading"
ref=
"multipleTable"
:data=
"tableData"
tooltip-effect=
"dark"
style=
"width: 100%"
height=
"548"
border
row-class-name=
"font-size-12"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
></el-table-column>
<el-table-column
v-for=
"(item, index) in queryType"
:key=
"index"
:ixed=
"index===0"
:prop=
"item.name"
:label=
"item.label"
v-if=
"item.show"
show-overflow-tooltip
>
<template
slot-scope=
"scope"
>
<p
@
click=
"openDetails(scope)"
class=
"font-color-link cp"
>
{{
scope
.
row
.
CustomerName
}}
</p>
</
template
>
</el-table-column>
<el-table-column
prop=
"MainSourceStr"
label=
"客户来源"
v-if=
"queryType[1].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"Contact"
label=
"联系人"
v-if=
"queryType[2].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"ContactNumber"
label=
"联系电话"
v-if=
"queryType[3].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"Address"
label=
"地址"
v-if=
"queryType[4].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"BusinessCount"
label=
"商机数"
v-if=
"queryType[5].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"OrderCount"
label=
"交易订单数"
width=
"100"
v-if=
"queryType[6].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"OrderMoney"
label=
"交易金额"
v-if=
"queryType[7].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"CouponCount"
label=
"优惠券"
v-if=
"queryType[8].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"Client_Balance"
label=
"幸福存折"
v-if=
"queryType[9].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"CustomerLevelStr"
label=
"客户级别"
v-if=
"queryType[10].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"CustomerStatus"
label=
"审核状态"
v-if=
"queryType[11].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"RealNameAuthentication"
label=
"实名认证状态"
v-if=
"queryType[12].show"
width=
"120"
show-overflow-tooltip
>
<
template
slot-scope=
"scope"
>
<p
v-if=
"scope.row.RealNameAuthentication === 1"
class=
"font-color-success"
>
已认证
</p>
<p
v-else
class=
"font-color-warning"
>
未认证
</p>
</
template
>
</el-table-column>
<el-table-column
prop=
"IsAppLogin"
label=
"APP激活状态"
v-if=
"queryType[13].show"
width=
"120"
show-overflow-tooltip
>
<
template
slot-scope=
"scope"
>
<p
v-if=
"scope.row.IsAppLogin === 0"
class=
"font-color-warning"
>
未激活
</p>
<p
v-else
class=
"font-color-success"
>
已激活
</p>
</
template
>
</el-table-column>
<el-table-column
prop=
"CustomerPublic"
label=
"距进入公海天数"
v-if=
"queryType[14].show"
width=
"120"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"NowSellName"
label=
"负责人"
width=
"120"
v-if=
"queryType[15].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"Visit"
label=
"近期约访"
v-if=
"queryType[16].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"UpdateTime"
label=
"更新时间"
v-if=
"queryType[17].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"CreateTimestr"
label=
"创建时间"
v-if=
"queryType[18].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"IsCarefor"
fixed=
"right"
width=
"50"
label=
"关注"
>
<
template
slot-scope=
"scope"
>
<p>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"关注"
placement=
"top"
>
<i
v-if=
"scope.row.IsCarefor === 0"
class=
"el-icon-star-off cp"
></i>
</el-tooltip>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"取消关注"
placement=
"top"
>
<i
v-if=
"scope.row.IsCarefor === 1"
class=
"el-icon-star-on cp"
></i>
</el-tooltip>
</p>
</
template
>
</el-table-column>
<el-table-column
width=
"40"
fixed=
"right"
>
<
template
slot=
"header"
slot-scope=
"scope"
>
<el-popover
placement=
"bottom"
width=
"240"
:value=
"mySelectCtrl"
>
<mySelect
:queryType=
"queryType"
@
listenTochildEvent=
"showMessageFromChild"
/>
<i
class=
"el-icon-s-operation cp"
@
click=
"showMessageFromChild()"
slot=
"reference"
></i>
</el-popover>
</
template
>
</el-table-column>
<!-- <el-table-column label="操作" fixed="right" width="150">
<template slot-scope="scope">
<el-tooltip class="item" effect="dark" content="提醒" placement="top">
<i class="table-btn blue iconfont icontishi"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="联系客户" placement="top">
<i class="table-btn org iconfont icondianhua"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="客户详情" placement="top">
<i class="table-btn green iconfont iconsuosou" @click="drawer = true"></i>
</el-tooltip>
</template>
</el-table-column> -->
</el-table>
<div>
<el-pagination
class=
"Mypagination"
background
@
current-change=
"handleCurrentChange"
:page-sizes=
"[10, 20, 50, 100]"
:page-size=
"msg.pageSize"
layout=
"sizes, prev, pager, next"
@
size-change=
"handleSizeChange"
:total=
"total"
>
</el-pagination>
</div>
<el-drawer
title=
"我是标题"
:with-header=
"false"
size=
'70%'
:visible
.
sync=
"drawer"
direction=
"rtl"
:before-close=
"handleClose"
>
<div
class=
"drawer-header"
>
<div
class=
"left"
>
<img
src=
"../../assets/img/cust/kehu2.png"
alt=
""
>
<p>
上海云上互联网信息技术有限公司
</p>
</div>
<div
class=
"right"
>
<el-button
class=
"crm-btn query-btn"
>
转移
</el-button>
<el-button
class=
"crm-btn easy-btn"
>
编辑
</el-button>
<el-button
class=
"crm-btn org-btn"
>
更多
</el-button>
</div>
</div>
<div
class=
"drawer-body"
>
</div>
</el-drawer>
<el-dialog
:visible
.
sync=
"dialogTableVisible"
custom-class=
"add-box"
>
<div
class=
"add-tit"
slot=
"title"
>
<p><span></span>
新建客户
</p>
<span
icon=
"el-icon-close"
></span>
</div>
<div
class=
"form-box"
>
<el-form
:model=
"form"
class=
"MyEditForm"
:rules=
"rules"
>
<p
class=
"form-box-tit"
><span
class=
"radius"
></span>
基本信息
</p>
<el-row
:gutter=
"30"
>
<el-col
:span=
"8"
>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"客户名称"
prop=
"CustomerName"
>
<el-input
placeholder=
"请输入客户姓名"
v-model=
"form.CustomerName"
></el-input>
</el-form-item>
</div>
</el-col>
<el-col
:span=
"8"
>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"客户级别"
prop=
"CustomerLevel"
>
<el-select
v-model=
"form.CustomerLevel"
placeholder=
"请选择客户级别"
>
<el-option
v-for=
"item in SourceEnum"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</el-form-item>
</div>
</el-col>
<el-col
:span=
"8"
>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"客户来源"
prop=
"CustomerSourceType"
>
<el-select
v-model=
"form.CustomerSourceType"
placeholder=
"请选择客户来源"
>
<el-option
v-for=
"item in SourceEnum"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row
:gutter=
"30"
>
<el-col
:span=
"8"
>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"联系人"
prop=
"Contact"
>
<el-input
placeholder=
"请输入联系人"
v-model=
"form.Contact"
></el-input>
</el-form-item>
</div>
</el-col>
<el-col
:span=
"8"
>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"电话"
prop=
"ContactNumber"
>
<el-input
placeholder=
"请输入联系电话"
v-model=
"form.ContactNumber"
></el-input>
</el-form-item>
</div>
</el-col>
<el-col
:span=
"8"
>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"客户来源"
prop=
"CustomerSourceType"
>
<el-select
v-model=
"form.CustomerSourceType"
placeholder=
"请选择客户来源"
>
<el-option
v-for=
"item in SourceEnum"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row
:gutter=
"30"
>
<el-col
:span=
"8"
>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"经营场所"
prop=
"Premises"
>
<el-select
v-model=
"form.Premises"
placeholder=
"请选择客户来源"
>
<el-option
v-for=
"item in SourceEnum"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</el-form-item>
</div>
</el-col>
<el-col
:span=
"8"
>
<div
class=
"MyEditForm-item label-pad-left"
>
<el-form-item
label=
"所属品牌"
>
<el-select
v-model=
"form.BrandIds"
placeholder=
"请选择所属品牌"
>
<el-option
v-for=
"item in SourceEnum"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"24"
>
<div
class=
"MyEditForm-item label-pad-left"
>
<el-form-item
label=
"备注"
>
<el-input
type=
"textarea"
placeholder=
"客户的特殊喜好"
v-model=
"form.Remark"
></el-input>
</el-form-item>
</div>
</el-col>
</el-row>
<p
class=
"form-box-tit"
><span
class=
"radius"
></span>
位置信息
</p>
<el-row
:gutter=
"30"
>
<el-col
:span=
"6"
>
<div
class=
"MyEditForm-item label-pad-left"
>
<el-form-item
label=
"国/省/市/区"
>
<el-select
v-model=
"form.Country"
placeholder=
"国家"
>
<el-option
v-for=
"item in SourceEnum"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</el-form-item>
</div>
</el-col>
<el-col
:span=
"6"
>
<div
class=
"MyEditForm-item label-pad-left"
>
<el-form-item
label=
"国/省/市/区"
>
<el-select
v-model=
"form.Province"
placeholder=
"省份"
>
<el-option
v-for=
"item in SourceEnum"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</el-form-item>
</div>
</el-col>
<el-col
:span=
"6"
>
<div
class=
"MyEditForm-item label-pad-left"
>
<el-form-item
label=
"国/省/市/区"
>
<el-select
v-model=
"form.City"
placeholder=
"城市"
>
<el-option
v-for=
"item in SourceEnum"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</el-form-item>
</div>
</el-col>
<el-col
:span=
"6"
>
<div
class=
"MyEditForm-item label-pad-left"
>
<el-form-item
label=
"国/省/市/区"
>
<el-select
v-model=
"form.District"
placeholder=
"地区"
>
<el-option
v-for=
"item in SourceEnum"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"24"
>
<div
class=
"MyEditForm-item label-pad-left"
>
<el-form-item
label=
"定位"
>
<el-input
type=
"textarea"
placeholder=
"请输入详情地址"
v-model=
"form.Remark"
></el-input>
</el-form-item>
</div>
</el-col>
</el-row>
</el-form>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
class=
"add-box-btn"
@
click=
"dialogFormVisible = false"
>
确 定
</el-button>
<el-button
class=
"add-box-btn add-box-cancel"
@
click=
"dialogFormVisible = false"
>
取 消
</el-button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
mySelect
from
"../select/select"
;
export
default
{
components
:
{
mySelect
},
data
()
{
return
{
queryType
:
[
{
name
:
'CustomerName'
,
label
:
'客户名称'
,
show
:
true
,
},{
name
:
'MainSourceStr'
,
label
:
'客户来源'
,
show
:
true
,
},{
name
:
'Contact'
,
label
:
'联系人'
,
show
:
true
,
},{
name
:
'ContactNumber'
,
label
:
'联系电话'
,
show
:
true
,
},{
name
:
'Address'
,
label
:
'地址'
,
show
:
true
,
},{
name
:
'BusinessCount'
,
label
:
'商机数'
,
show
:
true
,
},{
name
:
'OrderCount'
,
label
:
'交易订单数'
,
show
:
true
,
},{
name
:
'OrderMoney'
,
label
:
'交易金额'
,
show
:
true
,
},{
name
:
'CouponCount'
,
label
:
'优惠券'
,
show
:
true
,
},{
name
:
'Client_Balance'
,
label
:
'幸福存折'
,
show
:
true
,
},{
name
:
'CustomerLevelStr'
,
label
:
'客户级别'
,
show
:
true
,
},{
name
:
'CustomerStatus'
,
label
:
'审核状态'
,
show
:
true
,
},{
name
:
'RealNameAuthentication'
,
label
:
'实名认证状态'
,
show
:
true
,
},{
name
:
'IsAppLogin'
,
label
:
'APP激活状态'
,
show
:
true
,
},{
name
:
'CustomerPublic'
,
label
:
'距进入公海天数'
,
show
:
true
,
},{
name
:
'NowSellName'
,
label
:
'负责人'
,
show
:
true
,
},{
name
:
'Visit'
,
label
:
'近期约访'
,
show
:
true
,
},{
name
:
'UpdateTime'
,
label
:
'更新时间'
,
show
:
true
,
},{
name
:
'CreateTimestr'
,
label
:
'创建时间'
,
show
:
true
,
},
],
rules
:{
CustomerName
:
[
{
required
:
true
,
message
:
'请输入客户名称'
,
trigger
:
'blur'
}
],
CustomerLevel
:
[
{
required
:
true
,
message
:
'请选择客户级别'
,
trigger
:
'change'
}
],
CustomerSourceType
:
[
{
required
:
true
,
message
:
'请选择客户来源'
,
trigger
:
'change'
}
],
Contact
:
[
{
required
:
true
,
message
:
'请输入联系人'
,
trigger
:
'blur'
}
],
ContactNumber
:
[
{
required
:
true
,
message
:
'请输入联系电话'
,
trigger
:
'blur'
}
],
Premises
:
[
{
required
:
true
,
message
:
'请选择经营场所'
,
trigger
:
'change'
}
]
},
mySelectCtrl
:
false
,
drawer
:
false
,
loading
:
true
,
dialogTableVisible
:
false
,
tableData
:
[],
multipleSelection
:
[],
value
:
''
,
SourceEnum
:
[],
msg
:
{
CustomerName
:
''
,
Contact
:
''
,
pageIndex
:
1
,
pageSize
:
10
,
ContactNumber
:
''
,
WhereType
:
-
1
,
OrderBy
:
''
},
total
:
0
,
form
:
{
CustomerId
:
0
,
CustomerName
:
''
,
CustomerLevel
:
''
,
Contact
:
''
,
ContactNumber
:
''
,
Address
:
''
,
Remark
:
''
,
Premises
:
''
,
CustomerStatus
:
''
,
CustomerSourceType
:
''
,
CustomerSource
:
''
,
Country
:
''
,
Province
:
''
,
City
:
''
,
District
:
''
,
BrandIds
:
''
,
Images
:
''
,
BusinessCardPhotos
:
''
,
HousePhotos
:
''
},
WhereTypeList
:
[
{
id
:
-
1
,
name
:
'全部'
},{
id
:
1
,
name
:
'我负责的'
},{
id
:
2
,
name
:
'下属的'
},{
id
:
3
,
name
:
'我参与的'
},{
id
:
4
,
name
:
'我关注的'
},
]
};
},
mounted
()
{
this
.
getList
()
this
.
GetCustomerSourceEnum
()
},
methods
:
{
showMessageFromChild
(
list
){
this
.
mySelectCtrl
=!
this
.
mySelectCtrl
if
(
list
)
{
this
.
queryType
=
list
this
.
tableData
=
[]
this
.
getList
()
}
},
openDetails
(
scope
){
console
.
log
(
scope
.
row
)
this
.
drawer
=
true
},
handleSizeChange
(
val
)
{
this
.
msg
.
pageSize
=
val
this
.
getList
();
},
handleCurrentChange
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getList
();
},
handleClose
(
done
)
{
this
.
$confirm
(
'确认关闭?'
)
.
then
(
_
=>
{
done
();
})
.
catch
(
_
=>
{});
},
getList
:
function
(){
this
.
loading
=
true
this
.
apipost
(
'/api/Customer/GetCustomerPage'
,
this
.
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
tableData
=
res
.
data
.
data
.
pageData
;
this
.
total
=
res
.
data
.
data
.
count
;
this
.
loading
=
false
;
}
})
},
GetCustomerSourceEnum
(){
this
.
apipost
(
'/api/Customer/GetCustomerSourceEnum'
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
SourceEnum
=
res
.
data
.
data
}
})
},
handleEdit
(
index
,
row
)
{
console
.
log
(
index
,
row
);
},
handleDelete
(
index
,
row
)
{
console
.
log
(
index
,
row
);
},
toggleSelection
(
rows
)
{
if
(
rows
)
{
rows
.
forEach
(
row
=>
{
this
.
$refs
.
multipleTable
.
toggleRowSelection
(
row
);
});
}
else
{
this
.
$refs
.
multipleTable
.
clearSelection
();
}
},
handleSelectionChange
(
val
)
{
this
.
multipleSelection
=
val
;
}
}
};
</
script
>
src/components/customerManage/customerManage.vue
View file @
5e1efea0
...
...
@@ -713,7 +713,6 @@ export default {
this
.
drawer
=
true
this
.
CustomerId
=
scope
.
row
.
CustomerId
this
.
CustomerName
=
scope
.
row
.
CustomerName
this
.
drawer
=
true
},
handleSizeChange
(
val
)
{
this
.
msg
.
pageSize
=
val
...
...
src/components/waitMatter/myClue.vue
0 → 100644
View file @
5e1efea0
<
style
>
.myClue
{
height
:
100%
;
}
.myClue
.title
{
padding
:
10px
20px
;
font-size
:
14px
;
color
:
#333
;
}
.title
.iconfont
{
display
:
inline-block
;
font-size
:
12px
;
padding
:
6px
;
color
:
#fff
;
margin-right
:
10px
;
}
.myClue
.query-box
{
padding
:
15px
20px
;
}
.myClue
.title
.tips
{
cursor
:
pointer
;
font-size
:
12px
;
color
:
white
;
background-color
:
#cbcbcb
;
display
:
inline-block
;
width
:
13px
;
height
:
13px
;
border-radius
:
50%
;
text-align
:
center
;
line-height
:
13px
;
margin-left
:
5px
;
}
</
style
>
<
template
>
<div
class=
"myClue"
>
<div
class=
"title"
>
<i
class=
"iconfont iconxiansuo"
style=
"background-color: rgb(112, 74, 253)"
></i>
<span>
分配给我的线索
</span>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"转移之后未跟进的线索"
placement=
"top"
>
<span
class=
"tips"
>
?
</span>
</el-tooltip>
</div>
<div
class=
"query-box"
>
<el-select
size=
"mini"
v-model=
"msg.ToDayContactType"
@
change=
"getList"
>
<el-option
:key=
"1"
label=
"待跟进"
:value=
"1"
>
</el-option>
<el-option
:key=
"2"
label=
"已跟进"
:value=
"2"
>
</el-option>
</el-select>
</div>
<div>
<el-table
v-loading=
"loading"
stripe
ref=
"multipleTable"
:data=
"dataList"
tooltip-effect=
"dark"
style=
"width: 100%"
row-class-name=
"font-size-12"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
fixed
type=
"selection"
width=
"40"
></el-table-column>
<el-table-column
prop=
"CustomerName"
label=
"线索名称"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"CustomerName"
label=
"线索来源"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"CustomerLevelStr"
label=
"客户级别"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"CustomerSourceTypeStr"
label=
"客户来源"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"Contact"
label=
"联系人"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"ContactNumber"
label=
"联系电话"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"NextContantTime"
label=
"下次联系时间"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"Remark"
label=
"备注"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"CreateTimestr"
label=
"创建时间"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"PersonChargeStr"
label=
"创建人"
show-overflow-tooltip
>
</el-table-column>
</el-table>
</div>
</div>
</
template
>
<
script
>
export
default
{
data
(){
return
{
msg
:
{
ToDayContactType
:
1
,
pageIndex
:
1
,
pageSize
:
15
},
dataList
:
[],
loading
:
false
,
selectID
:
[]
}
},
mounted
()
{
this
.
getList
()
},
methods
:
{
handleSelectionChange
(
val
)
{
this
.
selectID
=
val
.
map
(
x
=>
x
.
ID
)
},
getList
(){
this
.
loading
=
true
this
.
apipost
(
'/api/CustomerAgency/GetFollowUpCluePageList'
,
this
.
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
loading
=
false
this
.
dataList
=
res
.
data
.
data
.
pageData
}
else
{
this
.
loading
=
false
}
})
}
}
}
</
script
>
\ No newline at end of file
src/components/waitMatter/myCustomer.vue
0 → 100644
View file @
5e1efea0
<
style
>
.myCustomer
{
height
:
100%
;
}
.myCustomer
.title
{
padding
:
10px
20px
;
font-size
:
14px
;
color
:
#333
;
}
.myCustomer
.title
.iconfont
{
display
:
inline-block
;
font-size
:
12px
;
padding
:
6px
;
color
:
#fff
;
margin-right
:
10px
;
}
.myCustomer
.query-box
{
padding
:
15px
20px
;
}
.myCustomer
.title
.tips
{
cursor
:
pointer
;
font-size
:
12px
;
color
:
white
;
background-color
:
#cbcbcb
;
display
:
inline-block
;
width
:
13px
;
height
:
13px
;
border-radius
:
50%
;
text-align
:
center
;
line-height
:
13px
;
margin-left
:
5px
;
}
</
style
>
<
template
>
<div
class=
"myCustomer"
>
<div
class=
"title"
>
<i
class=
"iconfont iconkehu"
style=
"background-color: rgb(25, 181, 246)"
></i>
<span>
分配给我的客户
</span>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"转移、领取、分配之后未跟进的客户,默认显示自己负责的客户"
placement=
"top"
>
<span
class=
"tips"
>
?
</span>
</el-tooltip>
</div>
<div
class=
"query-box"
>
<el-select
size=
"mini"
v-model=
"msg.ToDayContactType"
@
change=
"getList"
>
<el-option
:key=
"1"
label=
"待跟进"
:value=
"1"
>
</el-option>
<el-option
:key=
"2"
label=
"已跟进"
:value=
"2"
>
</el-option>
</el-select>
</div>
<div>
<el-table
v-loading=
"loading"
stripe
ref=
"multipleTable"
:data=
"dataList"
tooltip-effect=
"dark"
style=
"width: 100%"
row-class-name=
"font-size-12"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
fixed
type=
"selection"
width=
"40"
></el-table-column>
<el-table-column
prop=
"CustomerName"
label=
"客户名称"
show-overflow-tooltip
>
<template
slot-scope=
"scope"
>
<p
@
click=
"openDetails(scope)"
class=
"font-color-link cp"
>
{{
scope
.
row
.
CustomerName
}}
</p>
</
template
>
</el-table-column>
<el-table-column
prop=
"CustomerLevelStr"
label=
"客户级别"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"CustomerSourceTypeStr"
label=
"客户来源"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"Contact"
label=
"联系人"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"ContactNumber"
label=
"联系电话"
show-overflow-tooltip
>
</el-table-column>
</el-table>
</div>
</div>
</template>
<
script
>
export
default
{
data
(){
return
{
msg
:
{
ToDayContactType
:
1
,
pageIndex
:
1
,
pageSize
:
15
},
dataList
:
[],
loading
:
false
,
selectID
:
[]
}
},
mounted
()
{
this
.
getList
()
},
methods
:
{
openDetails
(
scope
){
this
.
MsgBus
.
$emit
(
'openCustomerWin'
,
scope
.
row
)
},
handleSelectionChange
(
val
)
{
this
.
selectID
=
val
.
map
(
x
=>
x
.
ID
)
},
getList
(){
this
.
loading
=
true
this
.
apipost
(
'/api/CustomerAgency/GetFollowUpPageList'
,
this
.
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
loading
=
false
this
.
dataList
=
res
.
data
.
data
.
pageData
}
else
{
this
.
loading
=
false
}
})
}
}
}
</
script
>
\ No newline at end of file
src/components/waitMatter/todayCustomer.vue
0 → 100644
View file @
5e1efea0
<
style
>
.todayCustomer
{
height
:
100%
;
}
.todayCustomer
.title
{
padding
:
10px
20px
;
font-size
:
14px
;
color
:
#333
;
}
.title
.iconfont
{
display
:
inline-block
;
font-size
:
12px
;
padding
:
6px
;
color
:
#fff
;
margin-right
:
10px
;
}
.todayCustomer
.query-box
{
padding
:
15px
20px
;
}
.todayCustomer
.title
.tips
{
cursor
:
pointer
;
font-size
:
12px
;
color
:
white
;
background-color
:
#cbcbcb
;
display
:
inline-block
;
width
:
13px
;
height
:
13px
;
border-radius
:
50%
;
text-align
:
center
;
line-height
:
13px
;
margin-left
:
5px
;
}
</
style
>
<
template
>
<div
class=
"todayCustomer"
>
<div
class=
"title"
>
<i
class=
"iconfont iconcompany"
style=
"background-color: rgb(35, 98, 251)"
></i>
<span>
今日需联系客户
</span>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"下次跟进时间为今日的客户"
placement=
"top"
>
<span
class=
"tips"
>
?
</span>
</el-tooltip>
</div>
<div
class=
"query-box"
>
<el-select
size=
"mini"
v-model=
"msg.ToDayContactType"
@
change=
"getList"
>
<el-option
:key=
"1"
label=
"今日需联系的"
:value=
"1"
>
</el-option>
<el-option
:key=
"2"
label=
"已逾期"
:value=
"2"
>
</el-option>
<el-option
:key=
"3"
label=
"已联系"
:value=
"3"
>
</el-option>
</el-select>
<el-select
size=
"mini"
v-model=
"msg.WhereType"
style=
"width: 120px;margin-left: 10px;"
@
change=
"getList"
>
<el-option
:key=
"1"
label=
"我的"
:value=
"1"
>
</el-option>
<el-option
:key=
"2"
label=
"下属的"
:value=
"2"
>
</el-option>
</el-select>
</div>
<div>
<el-table
v-loading=
"loading"
stripe
ref=
"multipleTable"
:data=
"dataList"
tooltip-effect=
"dark"
style=
"width: 100%"
row-class-name=
"font-size-12"
>
<el-table-column
prop=
"CustomerName"
label=
"客户名称"
show-overflow-tooltip
>
<template
slot-scope=
"scope"
>
<p
@
click=
"openDetails(scope)"
class=
"font-color-link cp"
>
{{
scope
.
row
.
CustomerName
}}
</p>
</
template
>
</el-table-column>
<el-table-column
prop=
"CustomerLevelStr"
label=
"客户级别"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"CustomerSourceTypeStr"
label=
"客户来源"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"Contact"
label=
"联系人"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"ContactNumber"
label=
"联系电话"
show-overflow-tooltip
>
</el-table-column>
</el-table>
</div>
</div>
</template>
<
script
>
export
default
{
data
(){
return
{
msg
:
{
ToDayContactType
:
1
,
WhereType
:
1
,
pageIndex
:
1
,
pageSize
:
15
},
dataList
:
[],
loading
:
false
}
},
mounted
()
{
this
.
getList
()
},
methods
:
{
openDetails
(
scope
){
this
.
MsgBus
.
$emit
(
'openCustomerWin'
,
scope
.
row
)
},
getList
(){
this
.
loading
=
true
this
.
apipost
(
'/api/CustomerAgency/GetToDayContactPageList'
,
this
.
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
loading
=
false
this
.
dataList
=
res
.
data
.
data
.
pageData
}
else
{
this
.
loading
=
false
}
})
}
}
}
</
script
>
\ No newline at end of file
src/components/waitMatter/waitMatter.vue
0 → 100644
View file @
5e1efea0
<
style
>
.waitMatter
{
height
:
100%
;
}
.waitMatter
h1
{
font-weight
:
bold
;
font-size
:
18px
;
padding-bottom
:
10px
;
}
.waitMatter
.waitMatter-main
{
position
:
relative
;
height
:
calc
(
100%
-
50px
);
}
.waitMatter
.waitMatter-main
.left
{
padding
:
20px
0
;
width
:
200px
;
font-size
:
14px
;
background-color
:
#fff
;
position
:
absolute
;
top
:
0
;
left
:
0
;
bottom
:
0
;
z-index
:
1
;
border
:
1px
solid
#e6e6e6
;
overflow-y
:
auto
;
}
.waitMatter
.waitMatter-main
.right
{
margin-left
:
210px
;
height
:
100%
;
overflow
:
hidden
;
background-color
:
#fff
;
border
:
1px
solid
#e6e6e6
;
}
.waitMatter
.waitMatter-main
.left
.item
{
padding
:
12px
20px
;
position
:
relative
;
cursor
:
pointer
;
}
.waitMatter
.waitMatter-main
.left
.item.active
,
.waitMatter
.waitMatter-main
.left
.item
:hover
{
background-color
:
#f6f8fa
;
}
.waitMatter
.waitMatter-main
.left
.item
::before
{
content
:
" "
;
position
:
absolute
;
left
:
0
;
top
:
0
;
bottom
:
0
;
width
:
2px
;
background-color
:
#2362fb
;
opacity
:
0
;
}
.waitMatter
.waitMatter-main
.left
.item.active
::before
{
opacity
:
1
;
}
.waitMatter
.waitMatter-main
.left
.iconfont
{
display
:
inline-block
;
font-size
:
12px
;
padding
:
6px
;
color
:
#fff
;
}
.waitMatter
.waitMatter-main
.left
.lable
{
color
:
#333
;
font-size
:
13px
;
margin-left
:
10px
;
}
</
style
>
<
template
>
<div
class=
"waitMatter"
>
<h1>
待办事项
</h1>
<div
class=
"waitMatter-main"
>
<div
class=
"left"
>
<div
v-for=
"(item, index) in menuList"
:key=
"index"
@
click=
"changeMenuList(item, index)"
class=
"item"
:class=
"[index === activeIndex ? 'active' : '']"
><i
:class=
"item.class"
:style=
"item.style"
></i><span
class=
"lable"
>
{{
item
.
text
}}
</span></div>
</div>
<div
class=
"right"
>
<todayCustomer
v-if=
"activeIndex === 0"
/>
<myClue
v-if=
"activeIndex === 1"
/>
<myCustomer
v-if=
"activeIndex === 2"
/>
</div>
</div>
</div>
</
template
>
<
script
>
import
todayCustomer
from
"./todayCustomer"
;
import
myClue
from
"./myClue"
;
import
myCustomer
from
"./myCustomer"
;
export
default
{
components
:
{
todayCustomer
,
myClue
,
myCustomer
},
data
(){
return
{
activeIndex
:
0
,
menuList
:
[
{
text
:
'今日需联系客户'
,
class
:
'iconfont iconcompany'
,
style
:
'background-color: rgb(35, 98, 251);'
},{
text
:
'分配给我的线索'
,
class
:
'iconfont iconxiansuo'
,
style
:
'background-color: rgb(112, 74, 253);'
},{
text
:
'分配给我的客户'
,
class
:
'iconfont iconkehu'
,
style
:
'background-color: rgb(25, 181, 246);'
},{
text
:
'待审核合同'
,
class
:
'iconfont iconcompany'
,
style
:
'background-color: rgb(253, 91, 74);'
},{
text
:
'待审核回款'
,
class
:
'iconfont iconcompany'
,
style
:
'background-color: rgb(255, 185, 64);'
},{
text
:
'待回款提醒'
,
class
:
'iconfont iconcompany'
,
style
:
'background-color: rgb(255, 122, 56);'
},{
text
:
'即将到期的合同'
,
class
:
'iconfont iconcompany'
,
style
:
'background-color: rgb(35, 98, 251);'
},
]
}
},
mounted
()
{
},
methods
:
{
changeMenuList
(
item
,
index
){
this
.
activeIndex
=
index
},
}
}
</
script
>
\ No newline at end of file
src/components/watersManagement/watersManagement.vue
0 → 100644
View file @
5e1efea0
<
style
>
@import
'../../assets/css/customerManage.css'
;
</
style
>
<
template
>
<div
class=
"customerManage"
>
<div
class=
"tools"
>
<h1>
公海管理
</h1>
<div>
<el-input
placeholder=
"请输入客户名称/手机"
v-model=
"msg.CustomerName"
class=
"input-with-select"
>
<el-button
slot=
"append"
icon=
"el-icon-search"
@
click=
"getList"
></el-button>
</el-input>
</div>
<div
class=
"rightmenu"
>
<el-button
class=
"crm-btn query-btn"
@
click=
"getList"
>
查询
</el-button>
<el-button
icon=
"el-icon-plus"
class=
"crm-btn org-btn"
@
click=
"CustomerId = 0, dialogTableVisibleName = '新增客户', dialogTableVisible=true"
>
新增
</el-button>
<el-dropdown>
<el-button
class=
"crm-btn crm-btn-more easy-btn margin-right0"
>
<i
class=
"iconfont icongengduo"
></i>
</el-button>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item><i
class=
"iconfont icondaoru"
></i>
导入
</el-dropdown-item>
<el-dropdown-item><i
class=
"iconfont icondaochu"
></i>
导出
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div>
<div
class=
"query-box"
>
<div
v-if=
"!multipleSelection.length"
>
<div>
<span
class=
"font-size-12"
style=
"padding-right: 10px"
>
场景
</span>
<el-select
size=
"mini"
v-model=
"msg.WhereType"
placeholder=
"请选择"
>
<el-option
v-for=
"item in WhereTypeList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
>
</el-option>
</el-select>
</div>
</div>
<div
v-else
class=
"flex-center"
>
<p
class=
"font-size-12"
>
已选
<span
class=
"font-color-link"
>
{{
multipleSelection
.
length
}}
</span>
项
</p>
<div
class=
"selection-box"
>
<el-button
v-for=
"(item, index) in selectionList"
:key=
"index"
@
click=
"item.myFun"
><i
:class=
"item.class"
></i>
{{
item
.
name
}}
</el-button>
</div>
</div>
</div>
<div
class=
"page-content"
>
<el-table
v-if=
"loading"
v-loading=
"true"
:data=
"[]"
>
<el-table-column
v-for=
"(item, index) in queryType2"
:key=
"index"
:label=
"item.label"
>
</el-table-column>
</el-table>
<el-table
v-if=
"!loading"
ref=
"multipleTable"
:data=
"tableData"
tooltip-effect=
"dark"
style=
"width: 100%"
height=
"730"
border
row-class-name=
"font-size-12"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
fixed
type=
"selection"
width=
"40"
></el-table-column>
<el-table-column
fixed
prop=
"CustomerName"
label=
"客户名称"
width=
"120"
show-overflow-tooltip
>
<template
slot-scope=
"scope"
>
<p
@
click=
"openDetails(scope)"
class=
"font-color-link cp"
>
{{
scope
.
row
.
CustomerName
}}
</p>
</
template
>
</el-table-column>
<el-table-column
prop=
"MainSourceStr"
label=
"客户来源"
v-if=
"queryType[1].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"Contact"
label=
"联系人"
v-if=
"queryType[2].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"ContactNumber"
label=
"联系电话"
sortable
v-if=
"queryType[3].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"Address"
label=
"地址"
v-if=
"queryType[4].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"BusinessCount"
label=
"商机数"
v-if=
"queryType[5].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"OrderCount"
label=
"交易订单数"
sortable
width=
"100"
v-if=
"queryType[6].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"OrderMoney"
label=
"交易金额"
sortable
v-if=
"queryType[7].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"CouponCount"
label=
"优惠券"
sortable
v-if=
"queryType[8].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"Client_Balance"
label=
"幸福存折"
sortable
v-if=
"queryType[9].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"CustomerLevelStr"
label=
"客户级别"
sortable
v-if=
"queryType[10].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"CustomerStatus"
label=
"审核状态"
v-if=
"queryType[11].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"RealNameAuthentication"
label=
"实名认证状态"
v-if=
"queryType[12].show"
width=
"120"
show-overflow-tooltip
>
<
template
slot-scope=
"scope"
>
<p
v-if=
"scope.row.RealNameAuthentication === 1"
class=
"font-color-success"
>
已认证
</p>
<p
v-else
class=
"font-color-warning"
>
未认证
</p>
</
template
>
</el-table-column>
<el-table-column
prop=
"IsAppLogin"
label=
"APP激活状态"
v-if=
"queryType[13].show"
width=
"120"
show-overflow-tooltip
>
<
template
slot-scope=
"scope"
>
<p
v-if=
"scope.row.IsAppLogin === 0"
class=
"font-color-warning"
>
未激活
</p>
<p
v-else
class=
"font-color-success"
>
已激活
</p>
</
template
>
</el-table-column>
<el-table-column
prop=
"CustomerPublic"
label=
"距进入公海天数"
sortable
v-if=
"queryType[14].show"
width=
"120"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"NowSellName"
label=
"负责人"
width=
"120"
v-if=
"queryType[15].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"Visit"
label=
"近期约访"
sortable
v-if=
"queryType[16].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"UpdateTime"
label=
"更新时间"
sortable
v-if=
"queryType[17].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"CreateTimestr"
label=
"创建时间"
sortable
v-if=
"queryType[18].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"IsCarefor"
fixed=
"right"
width=
"50"
label=
"关注"
>
<
template
slot-scope=
"scope"
>
<p>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"关注"
placement=
"top"
>
<i
v-if=
"scope.row.IsCarefor === 0"
@
click=
"CareforCustomer(scope)"
class=
"iconfont iconwujiaoxing cp"
></i>
</el-tooltip>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"取消关注"
placement=
"top"
>
<i
v-if=
"scope.row.IsCarefor === 1"
@
click=
"CareforCustomer(scope)"
class=
"iconfont iconstar_full cp"
></i>
</el-tooltip>
</p>
</
template
>
</el-table-column>
<el-table-column
width=
"40"
fixed=
"right"
>
<
template
slot=
"header"
slot-scope=
"scope"
>
<el-popover
placement=
"bottom"
width=
"240"
>
<mySelect
:queryType=
"queryType"
@
listenTochildEvent=
"showMessageFromChild"
/>
<i
class=
"el-icon-s-operation cp"
slot=
"reference"
></i>
</el-popover>
</
template
>
</el-table-column>
</el-table>
</div>
<div>
<!-- <el-pagination
class="Mypagination"
background
@current-change="handleCurrentChange"
:page-sizes="[30, 60, 90, 100]"
:page-size="msg.pageSize"
layout="sizes, prev, pager, next"
@size-change="handleSizeChange"
:total="total">
</el-pagination> -->
</div>
<el-drawer
:with-header=
"false"
size=
'70%'
:visible
.
sync=
"drawer"
direction=
"rtl"
:before-close=
"handleClose"
>
<customerInfoBox
:CustomerId=
"CustomerId"
@
transferS=
"transfer"
@
watersS=
"waters"
@
editCustS=
"editCust"
/>
</el-drawer>
<el-dialog
:visible
.
sync=
"transferVisible"
:close-on-click-modal=
"false"
width=
"450px"
custom-class=
"transfer-box add-box add-box2"
>
<div
class=
"add-tit"
slot=
"title"
>
<p><span></span>
客户转移
</p>
<span
icon=
"el-icon-close"
></span>
</div>
<el-form
:model=
"transferMsg"
ref=
"form"
class=
"MyEditForm"
>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"变更负责人为"
class=
"label-pad-left"
>
<el-select
filterable
v-model=
"transferMsg.EmpId"
placeholder=
"请选择"
>
<el-option
v-for=
"item in EmployeeList"
:label=
'item.EmName'
:value=
'item.EmployeeId'
:key=
'item.EmployeeId'
>
</el-option>
</el-select>
</el-form-item>
</div>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"将原负责人"
class=
"label-pad-left form-check"
>
<div
class=
"pad-left-10"
>
<el-radio
v-model=
"transferMsg.TransferType"
:label=
"1"
>
移出
</el-radio>
<el-radio
v-model=
"transferMsg.TransferType"
:label=
"2"
>
转为团队成员
</el-radio>
</div>
</el-form-item>
</div>
<div
class=
"MyEditForm-item"
v-if=
"transferMsg.TransferType === 2"
>
<el-form-item
label=
"权限"
class=
"label-pad-left form-check"
>
<div
class=
"pad-left-10"
>
<el-radio
v-model=
"transferMsg.IsRead"
:label=
"0"
>
只读
</el-radio>
<el-radio
v-model=
"transferMsg.IsRead"
:label=
"1"
>
读写
</el-radio>
</div>
</el-form-item>
</div>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"同时变更负责人至"
class=
"label-pad-left form-check"
>
<div
class=
"pad-left-10"
>
<el-checkbox-group
v-model=
"transferMsg.TransferOther"
>
<el-checkbox
:value=
"1"
:label=
"1"
>
联系人
</el-checkbox>
<el-checkbox
:value=
"2"
:label=
"2"
>
商机
</el-checkbox>
<el-checkbox
:value=
"3"
:label=
"3"
>
合同
</el-checkbox>
</el-checkbox-group>
</div>
</el-form-item>
</div>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
class=
"add-box-btn"
@
click=
"transfer(2)"
>
确 定
</el-button>
<el-button
class=
"add-box-btn add-box-cancel"
@
click=
"transferVisible = false"
>
取 消
</el-button>
</div>
</el-dialog>
<!-- 添加团队成员弹窗 -->
<div
v-if=
"addTeammanShow"
>
<addTeamman
:ID=
"CustomerIdStr"
@
addTeammanOk=
"addTeammanOk"
/>
</div>
</div>
</template>
<
script
>
import
mySelect
from
"../dialogModel/select"
;
import
customerInfoBox
from
"../assembly/customerInfoBox"
;
import
addTeamman
from
"../dialogModel/addTeamman"
;
export
default
{
components
:
{
mySelect
,
customerInfoBox
,
addTeamman
},
data
()
{
return
{
queryType2
:
[
{
label
:
'客户名称'
,
show
:
true
,
},{
label
:
'客户来源'
,
show
:
true
,
},{
label
:
'联系人'
,
show
:
true
,
},{
label
:
'联系电话'
,
show
:
true
,
},{
label
:
'地址'
,
show
:
true
,
},{
label
:
'商机数'
,
show
:
true
,
},{
label
:
'交易订单数'
,
show
:
true
,
},{
label
:
'交易金额'
,
show
:
true
,
},{
label
:
'优惠券'
,
show
:
true
,
},{
label
:
'幸福存折'
,
show
:
true
,
},{
label
:
'客户级别'
,
show
:
true
,
},{
label
:
'审核状态'
,
show
:
true
,
},{
label
:
'实名认证状态'
,
show
:
true
,
},{
label
:
'APP激活状态'
,
show
:
true
,
},{
label
:
'距进入公海天数'
,
show
:
true
,
},{
label
:
'负责人'
,
show
:
true
,
},{
label
:
'近期约访'
,
show
:
true
,
},{
label
:
'更新时间'
,
show
:
true
,
},{
label
:
'创建时间'
,
show
:
true
,
},
],
queryType
:
[
{
label
:
'客户名称'
,
show
:
true
,
},{
label
:
'客户来源'
,
show
:
true
,
},{
label
:
'联系人'
,
show
:
true
,
},{
label
:
'联系电话'
,
show
:
true
,
},{
label
:
'地址'
,
show
:
true
,
},{
label
:
'商机数'
,
show
:
true
,
},{
label
:
'交易订单数'
,
show
:
true
,
},{
label
:
'交易金额'
,
show
:
true
,
},{
label
:
'优惠券'
,
show
:
true
,
},{
label
:
'幸福存折'
,
show
:
true
,
},{
label
:
'客户级别'
,
show
:
true
,
},{
label
:
'审核状态'
,
show
:
true
,
},{
label
:
'实名认证状态'
,
show
:
true
,
},{
label
:
'APP激活状态'
,
show
:
true
,
},{
label
:
'距进入公海天数'
,
show
:
true
,
},{
label
:
'负责人'
,
show
:
true
,
},{
label
:
'近期约访'
,
show
:
true
,
},{
label
:
'更新时间'
,
show
:
true
,
},{
label
:
'创建时间'
,
show
:
true
,
},
],
CustomerId
:
0
,
CustomerIdStr
:
''
,
addTeammanShow
:
false
,
transferVisible
:
false
,
mySelectCtrl
:
false
,
drawer
:
false
,
loading
:
true
,
dialogTableVisible
:
false
,
dialogTableVisibleName
:
'新增客户'
,
tableData
:
[],
multipleSelection
:
[],
EmployeeList
:
[],
value
:
''
,
userInfo
:
{},
transferMsg
:
{
CustomerIds
:
[],
TransferType
:
1
,
//类型,1-移除,2-转为团员
IsRead
:
0
,
//0-读写,1-只读
EmpId
:
''
,
TransferOther
:
[]
//1-联系人,2-商机,3-合同
},
msg
:
{
CustomerName
:
''
,
Contact
:
''
,
pageIndex
:
1
,
pageSize
:
30
,
ContactNumber
:
''
,
WhereType
:
-
1
,
OrderBy
:
''
},
total
:
0
,
WhereTypeList
:
[
{
id
:
-
1
,
name
:
'全部'
},{
id
:
1
,
name
:
'我负责的'
},{
id
:
2
,
name
:
'下属的'
},{
id
:
3
,
name
:
'我参与的'
},{
id
:
4
,
name
:
'我关注的'
},
],
selectionList
:
[
{
name
:
'转移'
,
class
:
'iconfont iconplus-transfer'
,
myFun
:
this
.
transfer
},{
name
:
'放入公海'
,
class
:
'iconfont icongonghaiguanli'
,
myFun
:
this
.
waters
},{
name
:
'更改成交状态'
,
class
:
'iconfont iconwancheng'
,
myFun
:
this
.
changeState
},{
name
:
'导出选中'
,
class
:
'iconfont icondaochu'
,
myFun
:
this
.
export
},{
name
:
'删除'
,
class
:
'iconfont icondelete'
,
myFun
:
this
.
delete
},{
name
:
'锁定'
,
class
:
'iconfont iconsuoguan'
,
myFun
:
this
.
locking
},{
name
:
'解锁'
,
class
:
'iconfont iconsuokai'
,
myFun
:
this
.
Unlock
},{
name
:
'添加团队成员'
,
class
:
'iconfont icontianjia'
,
myFun
:
this
.
addCust
},
// {
// name: '删除团队成员',
// class:'iconfont iconjian',
// myFun: this.delCust,
// },
]
};
},
mounted
()
{
this
.
userInfo
=
this
.
getLocalStorage
();
this
.
getList
()
this
.
Employee
()
let
$this
=
this
this
.
MsgBus
.
$on
(
'closeaddTeamman'
,
function
(){
$this
.
addTeammanShow
=
false
})
},
methods
:
{
Employee
(){
let
msg
=
{
RB_Group_id
:
this
.
userInfo
.
RB_Group_id
,
BranchId
:
-
1
,
DepartmentId
:
0
,
PostId
:
0
,
IsLeave
:
0
,
}
this
.
apipost2
(
"admin_get_EmployeeGetList"
,
this
.
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
EmployeeList
=
res
.
data
.
data
;
}
else
{
}
},
err
=>
{}
);
},
//锁定
locking
(){
console
.
log
(
'锁定'
)
},
//解锁
Unlock
(){
console
.
log
(
'解锁'
)
},
addTeammanOk
(){
this
.
addTeammanShow
=
false
},
//添加团队成员
addCust
(){
let
str
=
''
this
.
multipleSelection
.
map
((
x
,
i
)
=>
{
str
=
str
+
x
+
','
})
this
.
CustomerIdStr
=
str
.
substring
(
0
,
str
.
length
-
1
)
this
.
addTeammanShow
=
true
},
//删除团队成员
delCust
(){
console
.
log
(
'删除团队成员'
)
},
//删除
delete
(){
console
.
log
(
'删除'
)
},
//导出
export
(){
console
.
log
(
'导出'
)
},
// 更改状态
changeState
(){
console
.
log
(
'更改状态'
)
},
// 放入公海
waters
(
type
){
let
tips
=
'是否放入公海?'
if
(
type
===
1
)
{
tips
=
'是否把客户“'
+
this
.
CustomerName
+
'”放入公海?'
this
.
multipleSelection
.
push
(
this
.
CustomerId
)
}
this
.
$confirm
(
tips
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
let
str
=
''
this
.
multipleSelection
.
map
((
x
,
i
)
=>
{
str
=
str
+
x
+
','
})
this
.
apipost
(
'/api/Customer/RemoveMyCustomer'
,
{
CustomerIds
:
str
.
substring
(
0
,
str
.
length
-
1
)},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
if
(
type
===
1
)
{}
{
this
.
drawer
=
false
}
this
.
multipleSelection
=
[]
this
.
$message
.
success
(
res
.
data
.
message
);
this
.
getList
()
}
})
}).
catch
(()
=>
{
this
.
$message
({
type
:
'info'
,
message
:
'已取消'
});
});
},
// 关注
CareforCustomer
(
scope
){
this
.
apipost
(
'/api/Customer/CareforCustomer'
,
{
CustomerCreateId
:
scope
.
row
.
CustomerCreateId
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
$message
.
success
(
'操作成功'
);
this
.
getList
()
}
})
},
// 转移
transfer
(
type
){
if
(
type
!==
2
)
{
if
(
type
===
3
)
{
this
.
multipleSelection
.
push
(
this
.
CustomerId
)
}
this
.
transferVisible
=
true
}
else
{
if
(
this
.
transferMsg
.
EmpId
===
''
)
{
return
this
.
$message
.
error
(
'请选择变更负责人!'
)
}
let
str
=
''
this
.
multipleSelection
.
map
((
x
,
i
)
=>
{
str
=
str
+
x
+
','
})
let
str2
=
''
this
.
transferMsg
.
TransferOther
.
map
((
x
,
i
)
=>
{
str2
=
str2
+
x
+
','
})
this
.
transferMsg
.
CustomerIds
=
str
.
substring
(
0
,
str
.
length
-
1
)
this
.
transferMsg
.
TransferOther
=
str2
.
substring
(
0
,
str
.
length
-
1
)
this
.
apipost
(
'/api/Customer/TransferCustomer'
,
this
.
transferMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
multipleSelection
=
[]
this
.
transferVisible
=
false
if
(
type
===
3
)
{}
{
this
.
drawer
=
false
}
this
.
$message
.
success
(
res
.
data
.
message
);
this
.
getList
()
this
.
transferMsg
=
{
CustomerIds
:
[],
TransferType
:
1
,
IsRead
:
0
,
EmpId
:
''
,
TransferOther
:
[]
}
}
})
}
console
.
log
(
'转移'
)
},
showMessageFromChild
(
list
){
this
.
mySelectCtrl
=!
this
.
mySelectCtrl
if
(
list
)
{
this
.
queryType
=
list
this
.
getList
()
}
},
editCust
(){
this
.
dialogTableVisibleName
=
'修改客户'
this
.
dialogTableVisible
=
true
},
openDetails
(
scope
){
this
.
drawer
=
true
this
.
CustomerId
=
scope
.
row
.
CustomerId
this
.
CustomerName
=
scope
.
row
.
CustomerName
this
.
drawer
=
true
},
handleSizeChange
(
val
)
{
this
.
msg
.
pageSize
=
val
this
.
getList
();
},
handleCurrentChange
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getList
();
},
handleClose
(
done
)
{
done
();
},
getList
:
function
(){
this
.
tableData
=
[]
this
.
loading
=
true
this
.
apipost
(
'/api/Customer/GetCustomerPage'
,
this
.
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
tableData
=
res
.
data
.
data
.
pageData
;
this
.
total
=
res
.
data
.
data
.
count
;
this
.
loading
=
false
;
}
})
},
handleSelectionChange
(
val
)
{
this
.
multipleSelection
=
val
.
map
(
x
=>
x
.
CustomerId
)
}
}
};
</
script
>
src/router.js
View file @
5e1efea0
...
...
@@ -8,6 +8,8 @@ import customerManageDemo from "./components/customerManage/customerManageDemo"
import
businessManagement
from
"./components/businessManagement/businessManagement"
import
clueManagement
from
"./components/clueManagement/clueManagement"
import
contactsManagement
from
"./components/contactsManagement/contactsManagement"
import
watersManagement
from
"./components/watersManagement/watersManagement"
import
waitMatter
from
"./components/waitMatter/waitMatter"
Vue
.
use
(
Router
);
export
default
new
Router
({
...
...
@@ -91,6 +93,22 @@ export default new Router({
meta
:
{
title
:
"联系人管理"
}
},
{
path
:
"/watersManagement"
,
name
:
"watersManagement"
,
component
:
watersManagement
,
meta
:
{
title
:
"公海管理"
}
},
{
path
:
"/waitMatter"
,
name
:
"waitMatter"
,
component
:
waitMatter
,
meta
:
{
title
:
"待办事项"
}
}
]
},
...
...
src/views/index.vue
View file @
5e1efea0
...
...
@@ -35,7 +35,7 @@
}
.template-div
{
position
:
absolute
;
top
:
9
0px
;
top
:
8
0px
;
left
:
0
;
right
:
0
;
bottom
:
0
;
...
...
@@ -54,6 +54,14 @@
box-shadow
:
inset
0
0
2px
rgba
(
0
,
0
,
0
,
0.2
);
background
:
#555
;
}
.main
.el-tag.el-tag--info
{
background-color
:
rgba
(
0
,
0
,
0
,
0
);
border-color
:
rgba
(
0
,
0
,
0
,
0
);
display
:
inline-block
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
</
style
>
<
template
>
<div
class=
"main"
>
...
...
@@ -68,23 +76,194 @@
<router-view/>
</div>
</div>
<!-- 添加商机弹窗 -->
<div
v-if=
"dialogBusinessVisible"
>
<addBusinessBox
name=
"新建商机"
:ID=
"0"
:CustomerId=
"CustomerId"
:ContactId=
"ContactId"
type=
"1"
/>
</div>
<!-- 客户信息抽屉 -->
<el-drawer
:with-header=
"false"
size=
'70%'
:visible
.
sync=
"drawer"
direction=
"rtl"
:before-close=
"handleClose"
>
<customerInfoBox
:CustomerId=
"CustomerId"
@
transferS=
"transfer"
@
watersS=
"waters"
@
editCustS=
"editCust"
/>
</el-drawer>
<el-dialog
:visible
.
sync=
"transferVisible"
:close-on-click-modal=
"false"
width=
"450px"
custom-class=
"transfer-box add-box add-box2"
>
<div
class=
"add-tit"
slot=
"title"
>
<p><span></span>
移交联系人
</p>
<span
icon=
"el-icon-close"
></span>
</div>
<el-form
:model=
"transferMsg"
ref=
"form"
class=
"MyEditForm"
>
<div
class=
"MyEditForm-item"
>
<el-form-item
label=
"变更负责人为"
class=
"label-pad-left"
>
<el-select
filterable
v-model=
"transferMsg.EmpId"
placeholder=
"请选择"
>
<el-option
v-for=
"item in EmployeeList"
:label=
'item.EmName'
:value=
'item.EmployeeId'
:key=
'item.EmployeeId'
>
</el-option>
</el-select>
</el-form-item>
</div>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
class=
"add-box-btn"
@
click=
"transfer(2)"
>
确 定
</el-button>
<el-button
class=
"add-box-btn add-box-cancel"
@
click=
"transferVisible = false"
>
取 消
</el-button>
</div>
</el-dialog>
<!-- 编辑客户 -->
<div
v-if=
"dialogCustomerVisible"
>
<customerDialogBox
:name=
"dialogTableVisibleName"
:CustomerId=
"CustomerId"
/>
</div>
</div>
</
template
>
<
script
>
import
HomeNavLeft
from
'../components/HomeNav/HomeNavLeft'
import
HomeNavTop
from
'../components/HomeNav/HomeNavTop'
import
addBusinessBox
from
"../components/businessManagement/addBusinessBox"
;
import
customerDialogBox
from
"../components/dialogModel/customerDialogBox"
;
import
customerInfoBox
from
"../components/assembly/customerInfoBox"
;
export
default
{
components
:
{
HomeNavLeft
,
HomeNavTop
},
components
:
{
HomeNavLeft
,
HomeNavTop
,
addBusinessBox
,
customerDialogBox
,
customerInfoBox
},
data
()
{
return
{
dialogBusinessVisible
:
false
,
CustomerId
:
0
,
ContactId
:
0
,
drawer
:
false
,
CustomerId
:
0
,
CustomerName
:
''
,
transferVisible
:
false
,
EmployeeList
:
[],
dialogCustomerVisible
:
false
,
dialogTableVisibleName
:
'新增客户'
,
transferMsg
:
{
ContactIds
:
[],
EmpId
:
''
,
},
businessIdsArr
:
[],
multipleSelection
:
[]
}
},
mounted
()
{
this
.
userInfo
=
this
.
getLocalStorage
();
this
.
Employee
()
let
$this
=
this
this
.
MsgBus
.
$on
(
'openCustomerWin'
,
function
(
row
)
{
$this
.
CustomerId
=
row
.
CustomerId
$this
.
CustomerName
=
row
.
CustomerName
$this
.
drawer
=
true
})
this
.
MsgBus
.
$on
(
'addBusinessBoxOpen'
,
function
(
CustomerId
,
ContactId
){
$this
.
CustomerId
=
CustomerId
$this
.
ContactId
=
ContactId
$this
.
dialogBusinessVisible
=
true
})
this
.
MsgBus
.
$on
(
'closeBusinessDialogBox'
,
function
(){
$this
.
dialogBusinessVisible
=
false
})
this
.
MsgBus
.
$on
(
'closeCustomerDialogBox'
,
function
(){
$this
.
dialogCustomerVisible
=
false
})
},
methods
:
{
editCust
(){
this
.
dialogTableVisibleName
=
'修改客户'
this
.
dialogCustomerVisible
=
true
},
Employee
(){
let
msg
=
{
RB_Group_id
:
this
.
userInfo
.
RB_Group_id
,
BranchId
:
-
1
,
DepartmentId
:
0
,
PostId
:
0
,
IsLeave
:
0
,
}
this
.
apipost2
(
"admin_get_EmployeeGetList"
,
this
.
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
EmployeeList
=
res
.
data
.
data
;
}
else
{
}
},
err
=>
{}
);
},
handleClose
(
done
)
{
done
();
},
// 放入公海
waters
(
type
){
let
tips
=
'是否放入公海?'
if
(
type
===
1
)
{
tips
=
'是否把客户“'
+
this
.
CustomerName
+
'”放入公海?'
this
.
multipleSelection
.
push
(
this
.
CustomerId
)
}
this
.
$confirm
(
tips
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
let
str
=
''
this
.
multipleSelection
.
map
((
x
,
i
)
=>
{
str
=
str
+
x
+
','
})
this
.
apipost
(
'/api/Customer/RemoveMyCustomer'
,
{
CustomerIds
:
str
.
substring
(
0
,
str
.
length
-
1
)},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
if
(
type
===
1
)
{}
{
this
.
drawer
=
false
}
this
.
multipleSelection
=
[]
this
.
$message
.
success
(
res
.
data
.
message
);
this
.
getList
()
}
})
}).
catch
(()
=>
{
this
.
$message
({
type
:
'info'
,
message
:
'已取消'
});
});
},
// 转移
transfer
(
type
){
if
(
type
!==
2
)
{
if
(
type
===
3
)
{
this
.
businessIdsArr
.
push
(
this
.
CustomerId
)
}
this
.
transferVisible
=
true
}
else
{
if
(
this
.
transferMsg
.
EmpId
===
''
)
{
return
this
.
$message
.
error
(
'请选择变更负责人!'
)
}
let
str
=
''
this
.
businessIdsArr
.
map
((
x
,
i
)
=>
{
str
=
str
+
x
+
','
})
this
.
transferMsg
.
ContactIds
=
str
.
substring
(
0
,
str
.
length
-
1
)
this
.
apipost
(
'/api/Customer/TransferCustomerContact'
,
this
.
transferMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
businessIdsArr
=
[]
this
.
transferVisible
=
false
if
(
type
===
3
)
{}
{
this
.
drawer
=
false
}
this
.
$message
.
success
(
res
.
data
.
message
);
this
.
getList
()
this
.
transferMsg
=
{
ContactIds
:
[],
EmpId
:
''
,
}
}
})
}
},
}
}
...
...
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