Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiedao-app-operator-master
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
lanbaoming
jiedao-app-operator-master
Commits
1639f08b
Commit
1639f08b
authored
Sep 26, 2022
by
dcy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
客户首页,添加批量移交,按原型补充
parent
006dfacf
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
134 additions
and
21 deletions
+134
-21
index.vue
src/views/ecw/customer/index.vue
+62
-21
transferCustomer.vue
src/views/ecw/customer/transferCustomer.vue
+72
-0
No files found.
src/views/ecw/customer/index.vue
View file @
1639f08b
...
@@ -15,16 +15,28 @@
...
@@ -15,16 +15,28 @@
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"联系方式"
>
<el-input
placeholder=
"请输入联系方式"
v-model=
"queryParams.defaultContactPhone"
></el-input>
</el-form-item>
<el-form-item
label=
"客户类别"
prop=
"level"
>
<dict-selector
:type=
"DICT_TYPE.CUSTOMER_TYPE"
multiple
v-model=
"queryParams.type"
></dict-selector>
</el-form-item>
<el-form-item
label=
"客户经理"
prop=
"customerService"
>
<el-select
v-model=
"queryParams.customerService"
placeholder=
"请选择客户经理"
clearable
size=
"small"
>
<el-option
v-for=
"dict in customerServiceList"
:key=
"dict.id"
:label=
"dict.nickname"
:value=
"dict.id"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"客户来源"
prop=
"source"
>
<el-form-item
label=
"客户来源"
prop=
"source"
>
<el-select
v-model=
"queryParams.source"
placeholder=
"请选择客户来源"
clearable
size=
"small"
>
<el-select
v-model=
"queryParams.source"
placeholder=
"请选择客户来源"
clearable
size=
"small"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"
客户经理"
prop=
"customerServi
ce"
>
<el-form-item
label=
"
国家"
prop=
"sour
ce"
>
<el-select
v-model=
"
queryParams.customerService"
placeholder=
"请选择客户经理"
clearable
size=
"small
"
>
<el-select
v-model=
"
form.country"
placeholder=
"请选择国家
"
>
<el-option
v-for=
"dict in c
ustomerService
List"
<el-option
v-for=
"dict in c
ountry
List"
:key=
"dict.id"
:label=
"dict.nickname"
:value=
"dict.id"
/>
:key=
"dict.id"
:label=
"dict.nameZh"
:value=
"parseInt(dict.id)"
/>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"客户状态"
prop=
"status"
>
<el-form-item
label=
"客户状态"
prop=
"status"
>
...
@@ -33,13 +45,15 @@
...
@@ -33,13 +45,15 @@
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"部门"
prop=
"department"
>
<el-input
v-model=
"queryParams.department"
placeholder=
"请输入部门"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"创建时间"
>
<el-form-item
label=
"创建时间"
>
<el-date-picker
v-model=
"dateRangeCreateTime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd"
<el-date-picker
v-model=
"dateRangeCreateTime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd"
type=
"daterange"
range-separator=
"-"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
/>
type=
"daterange"
range-separator=
"-"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"信用等级"
prop=
"department"
>
<el-select
v-model=
"form.ww"
>
<el-option
v-for=
"(item,index) in creditList"
:label=
"item.nameZh"
:key=
"index"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
搜索
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
搜索
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
重置
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
重置
</el-button>
...
@@ -56,36 +70,42 @@
...
@@ -56,36 +70,42 @@
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
:loading=
"exportLoading"
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
:loading=
"exportLoading"
v-hasPermi=
"['ecw:customer:export']"
>
导出
</el-button>
v-hasPermi=
"['ecw:customer:export']"
>
导出
</el-button>
</el-col>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
:disabled=
"selectCustomerList.length === 0"
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"transferShow = true;"
:loading=
"exportLoading"
v-hasPermi=
"['ecw:customer:export']"
>
批量移交
</el-button>
</el-col>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
</el-row>
<!-- 列表 -->
<!-- 列表 -->
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table
ref=
"multipleTable"
v-loading=
"loading"
:data=
"list"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
>
</el-table-column>
<el-table-column
label=
"客户编号"
align=
"center"
prop=
"number"
/>
<el-table-column
label=
"客户编号"
align=
"center"
prop=
"number"
/>
<el-table-column
label=
"客户名称"
align=
"center"
prop=
"name"
/>
<el-table-column
label=
"客户名称"
align=
"center"
prop=
"name"
/>
<el-table-column
label=
"客户等级"
align=
"center"
prop=
"
level
"
>
<el-table-column
label=
"客户等级"
align=
"center"
prop=
"
vipLevelNameZh
"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_LEVEL"
:value=
"scope.row.level"
/>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_LEVEL"
:value=
"scope.row.level"
/>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"国家"
align=
"center"
prop=
"country"
:formatter=
"countryFormatter"
></el-table-column>
<el-table-column
label=
"信用等级"
prop=
"creditLevelNameZh"
></el-table-column>
<el-table-column
label=
"客户经理"
align=
"center"
prop=
"customerService"
:formatter=
"customerServiceFn"
>
</el-table-column>
<el-table-column
label=
"客户状态"
align=
"center"
prop=
"status"
>
<el-table-column
label=
"客户状态"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_STATUS"
:value=
"scope.row.status"
/>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_STATUS"
:value=
"scope.row.status"
/>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"部门"
align=
"center"
prop=
"department"
>
<el-table-column
label=
"主联系人"
prop=
"defaultContactName"
></el-table-column>
<
template
v-slot:default=
"scope"
>
<el-table-column
label=
"主联系方式"
prop=
"defaultContactPhone"
></el-table-column>
{{
scope
.
row
.
department
}}
</
template
>
</el-table-column>
<el-table-column
label=
"创建时间"
align=
"center"
prop=
"createTime"
width=
"180"
>
<el-table-column
label=
"创建时间"
align=
"center"
prop=
"createTime"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"客户经理"
align=
"center"
prop=
"customerService"
:formatter=
"customerServiceFn"
>
</el-table-column>
<el-table-column
label=
"国家"
align=
"center"
prop=
"country"
:formatter=
"countryFormatter"
></el-table-column>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-view"
@
click=
"handleView(scope.row)"
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-view"
@
click=
"handleView(scope.row)"
...
@@ -451,6 +471,7 @@
...
@@ -451,6 +471,7 @@
</el-dialog>
</el-dialog>
<customer-follow-list
:customer-id=
"customerId"
:id=
"customerId"
ref=
"CustomerFollowList"
></customer-follow-list>
<customer-follow-list
:customer-id=
"customerId"
:id=
"customerId"
ref=
"CustomerFollowList"
></customer-follow-list>
<customer-complaints
:customer-id=
"customerId"
ref=
"customerComplaints"
></customer-complaints>
<customer-complaints
:customer-id=
"customerId"
ref=
"customerComplaints"
></customer-complaints>
<transfer-customer
:show.sync=
"transferShow"
:customer-ids.sync=
"selectCustomerList"
></transfer-customer>
</div>
</div>
</template>
</template>
...
@@ -467,13 +488,16 @@ import CustomerFollowList from "@/components/CustomerFollowList"
...
@@ -467,13 +488,16 @@ import CustomerFollowList from "@/components/CustomerFollowList"
import
customerComplaints
from
"
@/components/customerComplaints
"
import
customerComplaints
from
"
@/components/customerComplaints
"
import
{
listServiceUser
}
from
"
@/api/system/user
"
;
import
{
listServiceUser
}
from
"
@/api/system/user
"
;
import
{
getCountryListAll
}
from
'
@/api/ecw/country
'
import
{
getCountryListAll
}
from
'
@/api/ecw/country
'
import
{
getCreditPage
}
from
"
@/api/customer/credit
"
;
import
transferCustomer
from
"
@/views/ecw/customer/transferCustomer
"
;
export
default
{
export
default
{
name
:
"
Customer
"
,
name
:
"
Customer
"
,
components
:
{
components
:
{
upload
,
upload
,
CustomerFollowList
,
CustomerFollowList
,
customerComplaints
customerComplaints
,
transferCustomer
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -525,11 +549,16 @@ export default {
...
@@ -525,11 +549,16 @@ export default {
showLine
:
false
,
showLine
:
false
,
customerId
:
undefined
,
customerId
:
undefined
,
customerServiceList
:[],
customerServiceList
:[],
countryList
:
[],
countryList
:
[]
creditList
:[],
selectCustomerList
:[],
transferShow
:
false
};
};
},
},
created
()
{
created
()
{
getCreditPage
({
page
:
1
,
rows
:
999
}).
then
(
r
=>
{
this
.
creditList
=
r
.
data
.
list
})
this
.
getList
();
this
.
getList
();
// getNodeList().then(r => {
// getNodeList().then(r => {
// this.nodeList = r.data
// this.nodeList = r.data
...
@@ -682,7 +711,6 @@ export default {
...
@@ -682,7 +711,6 @@ export default {
/** 导出按钮操作 */
/** 导出按钮操作 */
handleExport
()
{
handleExport
()
{
// 处理查询参数
// 处理查询参数
let
params
=
{...
this
.
queryParams
};
let
params
=
{...
this
.
queryParams
};
params
.
pageNo
=
undefined
;
params
.
pageNo
=
undefined
;
params
.
pageSize
=
undefined
;
params
.
pageSize
=
undefined
;
...
@@ -693,6 +721,8 @@ export default {
...
@@ -693,6 +721,8 @@ export default {
return
exportCustomerExcel
(
params
);
return
exportCustomerExcel
(
params
);
}).
then
(
response
=>
{
}).
then
(
response
=>
{
this
.
$download
.
excel
(
response
,
'
客户信息.xls
'
);
this
.
$download
.
excel
(
response
,
'
客户信息.xls
'
);
console
.
log
(
response
,
'
response
'
)
this
.
$download
.
excel
(
response
,
'
全部客户信息.xls
'
);
this
.
exportLoading
=
false
;
this
.
exportLoading
=
false
;
}).
catch
(()
=>
{});
}).
catch
(()
=>
{});
},
},
...
@@ -707,7 +737,18 @@ export default {
...
@@ -707,7 +737,18 @@ export default {
this
.
$nextTick
(()
=>
{
this
.
$nextTick
(()
=>
{
this
.
$refs
.
customerComplaints
.
handleAdd
();
this
.
$refs
.
customerComplaints
.
handleAdd
();
})
})
},
handleSelectionChange
(
val
){
this
.
selectCustomerList
=
val
.
map
(
i
=>
i
.
id
);
}
}
},
watch
:{
selectCustomerList
(
val
){
if
(
val
.
length
===
0
){
this
.
$refs
.
multipleTable
.
clearSelection
();
}
},
}
}
};
};
</
script
>
</
script
>
src/views/ecw/customer/transferCustomer.vue
0 → 100644
View file @
1639f08b
<
template
>
<el-dialog
center
title=
"客服"
:visible.sync=
"show"
width=
"30%"
>
<div
style=
"width: 100%;min-height: 200px;text-align: center"
>
<el-select
filterable
v-model=
"service"
>
<el-option
v-for=
"(item,index) in customerServiceList"
:key=
"index"
:label=
"item.nickname"
:value=
"item.id"
></el-option>
</el-select>
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"submit"
>
确 定
</el-button>
</span>
</el-dialog>
</
template
>
<
script
>
import
{
listServiceUser
}
from
"
@/api/system/user
"
;
import
{
handOverCustomer
}
from
"
@/api/ecw/customer
"
;
export
default
{
name
:
"
transferCustomer
"
,
props
:{
show
:{
type
:
Boolean
,
default
:
false
},
customerIds
:[
Array
,
String
],
tableName
:
String
},
created
()
{
listServiceUser
().
then
(
r
=>
{
this
.
customerServiceList
=
r
.
data
;
})
},
computed
:{
getCustomerIds
(){
if
(
this
.
customerIds
instanceof
Array
)
return
this
.
customerIds
else
return
this
.
customerIds
.
split
(
'
,
'
)
}
},
data
(){
return
{
customerServiceList
:[],
service
:
''
,
}
},
methods
:{
submit
(){
if
(
!
this
.
service
){
return
this
.
$message
.
warning
(
'
请选择客户经理!
'
);
}
handOverCustomer
({
customerServiceId
:
this
.
service
,
customerIdList
:
this
.
getCustomerIds
}).
then
(
r
=>
{
if
(
r
.
code
===
0
){
this
.
$emit
(
'
update:show
'
,
false
)
this
.
$emit
(
'
update:customerIds
'
,[])
this
.
$message
.
success
(
'
用户批量转移成功!
'
)
}
})
},
}
}
</
script
>
<
style
scoped
>
</
style
>
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