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
1ad37a34
Commit
1ad37a34
authored
Nov 12, 2024
by
zs嵩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
测试反馈bug修复
parent
4061ceb8
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
653 additions
and
672 deletions
+653
-672
offer.js
src/api/ecw/offer.js
+52
-45
custom.scss
src/styles/custom.scss
+10
-0
customerFollow.vue
src/views/ecw/customer/components/customerFollow.vue
+51
-27
index.vue
src/views/ecw/customer/index.vue
+18
-19
query.vue
src/views/ecw/customer/query.vue
+1
-1
index.vue
src/views/ecw/customerConfirm/index.vue
+236
-278
index.vue
src/views/ecw/customerToBeAssigned/index.vue
+242
-265
index.vue
src/views/ecw/myCustomerService/index.vue
+25
-25
detail.vue
src/views/ecw/offer/detail.vue
+14
-6
logListCommon.vue
src/views/ecw/offer/logListCommon.vue
+4
-6
No files found.
src/api/ecw/offer.js
View file @
1ad37a34
import
request
from
'
@/utils/request
'
import
request
from
"
@/utils/request
"
// 创建报价单管理
export
function
createOffer
(
data
)
{
return
request
({
url
:
'
/ecw/offer/create
'
,
method
:
'
post
'
,
url
:
"
/ecw/offer/create
"
,
method
:
"
post
"
,
data
:
data
})
}
...
...
@@ -12,8 +12,8 @@ export function createOffer(data) {
// 更新报价单管理
export
function
updateOffer
(
data
)
{
return
request
({
url
:
'
/ecw/offer/update
'
,
method
:
'
put
'
,
url
:
"
/ecw/offer/update
"
,
method
:
"
put
"
,
data
:
data
})
}
...
...
@@ -21,24 +21,24 @@ export function updateOffer(data) {
// 删除报价单管理
export
function
deleteOffer
(
id
)
{
return
request
({
url
:
'
/ecw/offer/delete?id=
'
+
id
,
method
:
'
delete
'
url
:
"
/ecw/offer/delete?id=
"
+
id
,
method
:
"
delete
"
})
}
// 获得报价单管理
export
function
getOffer
(
id
)
{
return
request
({
url
:
'
/ecw/offer/get?offerId=
'
+
id
,
method
:
'
get
'
url
:
"
/ecw/offer/get?offerId=
"
+
id
,
method
:
"
get
"
})
}
// 获得报价单管理分页
export
function
getOfferPage
(
query
)
{
return
request
({
url
:
'
/ecw/offer/page
'
,
method
:
'
get
'
,
url
:
"
/ecw/offer/page
"
,
method
:
"
get
"
,
params
:
query
})
}
...
...
@@ -46,36 +46,36 @@ export function getOfferPage(query) {
// 导出报价单管理 Excel
export
function
exportOfferExcel
(
query
)
{
return
request
({
url
:
'
/ecw/offer/export-excel
'
,
method
:
'
get
'
,
url
:
"
/ecw/offer/export-excel
"
,
method
:
"
get
"
,
params
:
query
,
responseType
:
'
blob
'
responseType
:
"
blob
"
})
}
// 更新报价单结果
export
function
updateOfferResult
(
data
)
{
return
request
({
url
:
'
/ecw/offer/update/result
'
,
method
:
'
put
'
,
url
:
"
/ecw/offer/update/result
"
,
method
:
"
put
"
,
data
:
data
})
}
// 获取费用清单列表
export
function
getProductFeeList
(
prodCreateReqVO
){
export
function
getProductFeeList
(
prodCreateReqVO
)
{
return
request
({
url
:
'
/ecw/offer/calculation/prod-fee-List
'
,
method
:
'
post
'
,
url
:
"
/ecw/offer/calculation/prod-fee-List
"
,
method
:
"
post
"
,
data
:
prodCreateReqVO
})
}
// 获取费用清单
export
function
getProductFee
(
calculationFeeParamVO
){
export
function
getProductFee
(
calculationFeeParamVO
)
{
return
request
({
url
:
'
/ecw/offer/calculation/fee-List
'
,
method
:
'
post
'
,
url
:
"
/ecw/offer/calculation/fee-List
"
,
method
:
"
post
"
,
data
:
calculationFeeParamVO
})
}
...
...
@@ -83,8 +83,8 @@ export function getProductFee(calculationFeeParamVO){
// 特价申请
export
function
createOfferSpecial
(
data
)
{
return
request
({
url
:
'
/ecw/offer/special/apply
'
,
method
:
'
put
'
,
url
:
"
/ecw/offer/special/apply
"
,
method
:
"
put
"
,
data
:
data
})
}
...
...
@@ -92,8 +92,8 @@ export function createOfferSpecial(data) {
// 特价详情
export
function
getOfferSpecial
(
offerProdId
,
params
)
{
return
request
({
url
:
'
/ecw/offer/special/info/
'
+
offerProdId
,
method
:
'
get
'
,
url
:
"
/ecw/offer/special/info/
"
+
offerProdId
,
method
:
"
get
"
,
params
})
}
...
...
@@ -101,35 +101,34 @@ export function getOfferSpecial(offerProdId, params) {
// 特价详情
export
function
getOfferSpecialByApproveId
(
approveId
)
{
return
request
({
url
:
'
/ecw/offer/special/info?approveId=
'
+
approveId
,
method
:
'
get
'
url
:
"
/ecw/offer/special/info?approveId=
"
+
approveId
,
method
:
"
get
"
})
}
// 取消报价管理
export
function
cancel
(
id
)
{
return
request
({
url
:
'
/ecw/offer/cancel
'
,
method
:
'
delete
'
,
params
:
{
id
}
url
:
"
/ecw/offer/cancel
"
,
method
:
"
delete
"
,
params
:
{
id
}
})
}
// 恢复取消的报价管理
export
function
recovery
(
id
)
{
return
request
({
url
:
'
/ecw/offer/recovery
'
,
method
:
'
delete
'
,
params
:
{
id
}
url
:
"
/ecw/offer/recovery
"
,
method
:
"
delete
"
,
params
:
{
id
}
})
}
// 获取部门报价单列表
export
function
offerDeptPage
(
params
)
{
return
request
({
url
:
'
/ecw/offer/dept/page
'
,
method
:
'
get
'
,
url
:
"
/ecw/offer/dept/page
"
,
method
:
"
get
"
,
params
})
}
...
...
@@ -137,25 +136,33 @@ export function offerDeptPage(params) {
// 导出部分报价单 exportDeptOfferExcel
export
function
exportDeptOfferExcel
(
query
)
{
return
request
({
url
:
'
/ecw/offer/dept/export-excel
'
,
method
:
'
get
'
,
url
:
"
/ecw/offer/dept/export-excel
"
,
method
:
"
get
"
,
params
:
query
,
responseType
:
'
blob
'
responseType
:
"
blob
"
})
}
// 报价单
export
function
getOfferSelect
(
params
)
{
return
request
({
url
:
'
/ecw/offer/select
'
,
method
:
'
get
'
,
url
:
"
/ecw/offer/select
"
,
method
:
"
get
"
,
params
})
}
// 报价单
export
function
getOfferCheck
(
params
)
{
return
request
({
url
:
'
/ecw/offer/check
'
,
method
:
'
get
'
,
url
:
"
/ecw/offer/check
"
,
method
:
"
get
"
,
params
})
}
// 特价详情
export
function
getOfferNumber
(
offerId
)
{
return
request
({
url
:
"
/ecw/offer/getNumber/
"
+
offerId
,
method
:
"
get
"
})
}
src/styles/custom.scss
View file @
1ad37a34
...
...
@@ -15,3 +15,13 @@
justify-content
:
center
;
align-items
:
center
;
}
.custom-form-1
{
padding-right
:
40px
;
.el-textarea
,
.dict-selector
,
.el-select
{
width
:
100%
;
}
}
src/views/ecw/customer/components/customerFollow.vue
View file @
1ad37a34
<
template
>
<div
class=
"customer-follow"
>
<el-dialog
append-to-body
:title=
"$t('客户跟进')"
:visible.sync=
"customerFollow.dialogVisible"
:before-close=
"customerFollowClose"
width=
"
9
00px"
>
<el-form
ref=
"customerFollowForm"
:model=
"form"
label-width=
"120px"
>
<el-dialog
append-to-body
:title=
"$t('客户跟进')"
:visible.sync=
"customerFollow.dialogVisible"
:before-close=
"customerFollowClose"
width=
"
12
00px"
>
<el-form
class=
"custom-form-1"
ref=
"customerFollowForm"
:model=
"form"
label-width=
"120px"
>
<el-row
:gutter=
"10"
>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('编号')"
prop=
"number"
>
<el-input
v-model=
"form.number"
:placeholder=
"$t('请输入编号')"
disabled
/>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('跟进状态')"
>
<el-select
v-model=
"form.status"
:placeholder=
"$t('请选择')"
disabled
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_STATUS)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('客户编号')"
>
<el-input
v-model=
"form.customerNumber"
:placeholder=
"$t('请输入客户编号')"
disabled
/>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('跟进类型')"
required
>
<el-select
v-model=
"form.followType"
clearable
:placeholder=
"$t('请选择')"
@
change=
"handleFollowType"
:disabled=
"isView || !!offerId"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_TYPE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"8"
v-if=
"form.followType == 2"
>
<el-form-item
:label=
"$t('报价单')"
required
prop=
"offerId"
>
<el-input
:value=
"form.offerNumber"
readonly
>
<el-button
slot=
"append"
icon=
"el-icon-search"
@
click=
"CustomerFollowSelectOffer = true"
v-if=
"!(isView || offerId)"
></el-button>
</el-input>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
:label=
"$t('跟进时间')"
required
>
<el-date-picker
v-model=
"form.followTime"
clearable
type=
"datetime"
:placeholder=
"$t('请选择')"
:disabled=
"isView"
/>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
v-if=
"customerId"
>
<el-col
:span=
"
8
"
v-if=
"customerId"
>
<el-form-item
:label=
"$t('联系人')"
required
>
<el-select
v-model=
"form.contactId"
clearable
:placeholder=
"$t('请选择')"
:disabled=
"isView"
@
change=
"changeContactUser"
>
<el-option
v-for=
"(item, index) in customerContactsList"
:key=
"index"
:label=
"item.name"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
v-else
>
<el-col
:span=
"
8
"
v-else
>
<el-form-item
:label=
"$t('联系人')"
required
>
<div
class=
"contact"
>
<el-input
v-model=
"form.contactName"
:value=
"form.customerContactsId"
placeholder=
""
disabled
/>
...
...
@@ -48,47 +55,47 @@
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('联系方式')"
>
<el-input
v-model=
"form.contactPhone"
disabled
/>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('客户经理')"
required
>
<el-select
v-model=
"form.followUserId"
clearable
:placeholder=
"$t('请选择')"
:disabled=
"isView"
>
<el-option
v-for=
"item in serviceUserList"
:key=
"item.id"
:label=
"item.nickname"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('跟进方式')"
required
>
<dict-selector
ref=
"dictMethod"
v-model=
"form.followMethod"
clearable
:disabled=
"isView"
:type=
"DICT_TYPE.CUSTOMER_FOLLOWUP_METHOD"
></dict-selector>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('上一级跟进单')"
prop=
"parentNumber"
>
<el-input
v-model=
"form.parentNumber"
:placeholder=
"$t('请输入上一级跟进单')"
disabled
/>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('跟进结果')"
prop=
"followMethod"
>
<el-select
v-model=
"form.resultType"
clearable
:placeholder=
"$t('请选择')"
:disabled=
"isView"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_RESULT_TYPE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"2
0
"
>
<el-col
:span=
"2
4
"
>
<el-form-item
:label=
"$t('目的')"
prop=
"purpose"
>
<el-input
type=
"textarea"
:rows=
"
2
"
v-model=
"form.purpose"
:placeholder=
"$t('请输入目的')"
maxlength=
"200"
show-word-limit
:disabled=
"isView"
/>
<el-input
type=
"textarea"
:rows=
"
3
"
v-model=
"form.purpose"
:placeholder=
"$t('请输入目的')"
maxlength=
"200"
show-word-limit
:disabled=
"isView"
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
0
"
>
<el-col
:span=
"2
4
"
>
<el-form-item
:label=
"$t('跟进情况')"
>
<el-input
rows=
"3"
class=
"text_style"
type=
"textarea"
v-model=
"form.feedback"
maxlength=
"500"
show-word-limit
:disabled=
"isView"
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
0
"
>
<el-col
:span=
"2
4
"
>
<el-form-item
:label=
"$t('附件')"
prop=
"attatchment"
>
<FileUpload
:limit=
"5"
:isShowTip=
"true"
v-model=
"form.attatchment"
:fileType=
"fileType"
:disabled=
"isView"
/>
</el-form-item>
...
...
@@ -98,12 +105,12 @@
<el-date-picker
v-model=
"form.nextTime"
type=
"datetime"
:placeholder=
"$t('请选择')"
:disabled=
"isView"
@
change=
"changeNextTime"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col
:span=
"2
0
"
>
<el-col
:span=
"2
4
"
>
<el-form-item
:label=
"$t('下一步计划')"
prop=
"nextPlan"
>
<el-input
type=
"textarea"
:rows=
"3"
v-model=
"form.nextPlan"
:placeholder=
"$t('请输入下一步计划')"
maxlength=
"500"
show-word-limit
:disabled=
"isView"
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
0
"
v-if=
"isView"
>
<el-col
:span=
"2
4
"
v-if=
"isView"
>
<el-form-item>
<div
style=
"text-align: right"
>
<!--
<el-button
size=
"mini"
icon=
"el-icon-collection"
type=
"primary"
@
click=
"$emit('handleCustomerFollowAdd', form)"
v-has-permi=
"['ecw:customer:follow-add-plan']"
>
{{
$t
(
"
增加计划
"
)
}}
</el-button>
-->
...
...
@@ -111,26 +118,26 @@
</div>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('创建人')"
prop=
"founder"
>
<el-select
v-model=
"form.creatorName"
disabled
:placeholder=
"$t('请选择')"
>
<el-option
v-for=
"item in allSimplList"
:key=
"item.id"
:label=
"item.nickname"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('创建时间')"
prop=
"createTime"
>
<el-date-picker
v-model=
"form.createTime"
type=
"datetime"
disabled
:placeholder=
"$t('请选择')"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('最后更新人')"
>
<el-select
v-model=
"form.updaterName"
disabled
>
<el-option
v-for=
"item in allSimplList"
:key=
"item.id"
:label=
"item.nickname"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('最后更新时间')"
>
<el-date-picker
v-model=
"form.updateTime"
type=
"datetime"
disabled
:placeholder=
"$t('请选择')"
>
</el-date-picker>
</el-form-item>
...
...
@@ -166,7 +173,7 @@
<
script
>
import
{
createCustomerFollow
,
getCustomerFollowPage
,
getCustomerFollowPage2
,
addCustomerFollow
,
getCustomerFollowList
,
editCustomerFollow
,
getFollowupNewNumber
}
from
"
@/api/ecw/customerFollow
"
import
{
getCustomerContactsSelect
}
from
"
@/api/ecw/customerContacts
"
import
{
getOfferPage
}
from
"
@/api/ecw/offer
"
import
{
getOfferPage
,
getOfferNumber
}
from
"
@/api/ecw/offer
"
import
{
DICT_TYPE
,
getDictDataLabel
}
from
"
@/utils/dict
"
import
{
getCustomerContactsListByCustomer
}
from
"
@/api/ecw/customerContacts
"
import
{
listAllSimpl
,
listServiceUser
,
listSimpleUsers
}
from
"
@/api/system/user
"
...
...
@@ -213,7 +220,9 @@ export default {
}
},
offerDialogVisible
:
true
,
form
:
{},
form
:
{
offerId
:
undefined
},
pageNo
:
1
,
pageSize
:
10
,
total
:
10
,
...
...
@@ -247,6 +256,17 @@ export default {
this
.
allSimplList
=
r
.
data
})
},
watch
:
{
"
form.offerId
"
(
v
)
{
if
(
v
)
{
getOfferNumber
(
v
).
then
((
r
)
=>
{
this
.
form
.
offerNumber
=
r
.
data
})
}
else
{
this
.
form
.
offerNumber
=
""
}
}
},
methods
:
{
selectOffer
(
offerId
)
{
this
.
form
.
offerId
=
offerId
...
...
@@ -317,7 +337,6 @@ export default {
handleFollowType
(
val
)
{
console
.
log
(
val
)
if
(
val
==
2
)
{
this
.
CustomerFollowSelectOffer
=
true
}
else
{
this
.
form
.
offerId
=
undefined
}
...
...
@@ -339,6 +358,7 @@ export default {
nextTime
:
undefined
,
number
:
undefined
,
offerId
:
this
.
offerId
,
offerNumber
:
undefined
,
parentId
:
undefined
,
parentNumber
:
undefined
,
purpose
:
undefined
,
...
...
@@ -386,6 +406,10 @@ export default {
this
.
$modal
.
msgError
(
this
.
$t
(
"
请选择跟进方式
"
))
return
}
if
(
!
this
.
form
.
offerId
&&
this
.
form
.
followType
==
2
)
{
this
.
$modal
.
msgError
(
this
.
$t
(
"
请选择报价单
"
))
return
}
if
(
status
===
0
)
{
this
.
saveSubmitData
(
status
)
...
...
src/views/ecw/customer/index.vue
View file @
1ad37a34
...
...
@@ -228,21 +228,21 @@
-->
<el-table-column
:label=
"$t('主联系人')"
prop=
"defaultContactName"
></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{ row }">-->
<!-- +{{ row.defaultContactPhone }} <br />-->
<!-- <contacts :id="row.id">-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{ row }">-->
<!-- +{{ row.defaultContactPhone }} <br />-->
<!-- <contacts :id="row.id">-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column
:label=
"$t('最新跟进时间')"
width=
"120"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
{{
parseTime
(
scope
.
row
.
followupBackVO
.
followTime
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('最新跟进记录')"
width=
"120"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<a
href=
"javascript:void(0)"
@
click=
"handleCustomerFollowLink(scope.row.followupBackVO)"
class=
"link-type"
>
{{
scope
.
row
.
followupBackVO
.
number
}}
</a>
</
template
>
</el-table-column>
...
...
@@ -667,7 +667,7 @@
</div>
</el-dialog>
<customer-follow-list
:customer-id=
"customerId"
:id=
"customerId"
:customer-service=
"customerService"
:customer-number=
"customerNumber"
ref=
"CustomerFollowList"
v-if=
"customerFollowVisible"
></customer-follow-list>
<customer-follow
ref=
"customerFollow"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
/>
<customer-follow
ref=
"customerFollow"
@
refresh=
"handleQuery"
@
close=
"customerFollowVisible = false"
v-if=
"customerFollowVisible"
/>
<customer-complaints
:customer-id=
"customerId"
ref=
"customerComplaints"
></customer-complaints>
<transfer-customer
:show.sync=
"transferShow"
:customer-ids.sync=
"selectCustomerList"
></transfer-customer>
<add-potential-custom
ref=
"potentialCustom"
@
change=
"getList"
></add-potential-custom>
...
...
@@ -719,10 +719,10 @@ import { getCustomerSelect } from "@/api/ecw/customer"
import
{
getProductTypeList
}
from
"
@/api/ecw/productType
"
import
{
getProductList
}
from
"
@/api/ecw/product
"
import
{
listMySimpleDepts
}
from
"
@/api/system/dept
"
import
UserSelector
from
"
@/components/UserSelector/index.vue
"
;
import
CustomerFollow
from
"
@/views/ecw/customer/components/customerFollow.vue
"
;
import
ProductSelector
from
"
@/components/ProductSelector/index.vue
"
;
import
CompetitorSelector
from
"
@/components/CompetitorSelector/index.vue
"
;
import
UserSelector
from
"
@/components/UserSelector/index.vue
"
import
CustomerFollow
from
"
@/views/ecw/customer/components/customerFollow.vue
"
import
ProductSelector
from
"
@/components/ProductSelector/index.vue
"
import
CompetitorSelector
from
"
@/components/CompetitorSelector/index.vue
"
export
default
{
name
:
"
EcwCustomerIndex
"
,
components
:
{
...
...
@@ -1011,7 +1011,6 @@ export default {
this
.
getList
()
},
methods
:
{
onCompetitorChange
(
row
,
competitor
)
{
// row.goodsType = product ? product.typeId : null
row
.
id
=
!
competitor
...
...
src/views/ecw/customer/query.vue
View file @
1ad37a34
...
...
@@ -672,7 +672,7 @@
</div>
</el-dialog>
<customer-follow
ref=
"customerFollow"
v-if=
"customerFollowVisible"
:customer-id=
"id"
:customer-service=
"customer.customerService"
:customer-number=
"customer.number"
@
refresh=
"logListCommonRefresh"
/>
<customer-follow
ref=
"customerFollow"
v-if=
"customerFollowVisible"
@
close=
"customerFollowVisible = false"
:customer-id=
"id"
:customer-service=
"customer.customerService"
:customer-number=
"customer.number"
@
refresh=
"logListCommonRefresh"
/>
</div>
</template>
...
...
src/views/ecw/customerConfirm/index.vue
View file @
1ad37a34
...
...
@@ -168,12 +168,10 @@
<!-- 操作工具栏 -->
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"$router.push({path:'/customer/add-edit/0',query:{isCustomerServiceConfirmed:true,}})"
v-hasPermi=
"['ecw:customer: treat-create']"
>
{{$t('新增')}}
</el-button>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"$router.push({ path: '/customer/add-edit/0', query: { isCustomerServiceConfirmed: true } })"
v-hasPermi=
"['ecw:customer: treat-create']"
>
{{ $t("新增") }}
</el-button>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
:loading=
"exportLoading"
v-hasPermi=
"['ecw:customer:treat-export']"
>
{{$t('导出')}}
</el-button>
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
:loading=
"exportLoading"
v-hasPermi=
"['ecw:customer:treat-export']"
>
{{ $t("导出") }}
</el-button>
</el-col>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
...
...
@@ -182,15 +180,15 @@
<el-table
ref=
"multipleTable"
v-loading=
"loading"
:data=
"list"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
fixed
></el-table-column>
<el-table-column
:label=
"$t('客户编号')"
align=
"center"
fixed
>
<
template
v-slot=
"{
row
}"
>
<
template
v-slot=
"{
row
}"
>
<router-link
:to=
"`/customer/query/$
{row.id}`" class="link-type">
{{
row
.
number
}}
</router-link>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('客户名称')"
align=
"center"
fixed
>
<
template
v-slot=
"{
row
}"
>
<p
style=
"display:
inline-block;white-space: pre-wrap;"
>
{{
$l
(
row
,
'
name
'
)
}}
</p>
<
template
v-slot=
"{
row
}"
>
<p
style=
"display:
inline-block; white-space: pre-wrap"
>
{{
$l
(
row
,
"
name
"
)
}}
</p>
</
template
>
</el-table-column>
<!--
...
...
@@ -207,41 +205,49 @@
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('主联系人')"
prop=
"defaultContactName"
></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{row}">-->
<!-- +{{row.defaultContactPhone}} <br/>-->
<!-- <contacts :id="row.id" >-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{row}">-->
<!-- +{{row.defaultContactPhone}} <br/>-->
<!-- <contacts :id="row.id" >-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column
:label=
"$t('最新跟进时间')"
width=
"120"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
{{
parseTime
(
scope
.
row
.
followupBackVO
.
followTime
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('最新跟进记录')"
width=
"120"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<a
href=
"javascript:void(0)"
@
click=
"handleCustomerFollowLink(scope.row.followupBackVO)"
class=
"link-type"
>
{{
scope
.
row
.
followupBackVO
.
number
}}
</a>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('客户类别')"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"{ row }"
>
{{
getDictDatas2
(
DICT_TYPE
.
CUSTOMER_TYPE
,
(
row
.
type
||
''
).
split
(
'
,
'
)).
map
(
e
=>
isChinese
?
e
.
label
:
e
.
labelEn
).
join
(
'
,
'
)
}}
<!--
<dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"-->
<!-- :value="scope.row.type"-->
<!-- />-->
{{
getDictDatas2
(
DICT_TYPE
.
CUSTOMER_TYPE
,
(
row
.
type
||
""
).
split
(
"
,
"
))
.
map
((
e
)
=>
(
isChinese
?
e
.
label
:
e
.
labelEn
))
.
join
(
"
,
"
)
}}
<!--
<dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"-->
<!-- :value="scope.row.type"-->
<!-- />-->
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('角色')"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"{ row }"
>
{{
getDictDatas2
(
DICT_TYPE
.
CUSTOMER_ROLE
,
(
row
.
roles
||
''
).
split
(
'
,
'
)).
map
(
e
=>
isChinese
?
e
.
label
:
e
.
labelEn
).
join
(
'
,
'
)
}}
<!--
<dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"-->
<!-- :value="scope.row.roles"-->
<!-- />-->
{{
getDictDatas2
(
DICT_TYPE
.
CUSTOMER_ROLE
,
(
row
.
roles
||
""
).
split
(
"
,
"
))
.
map
((
e
)
=>
(
isChinese
?
e
.
label
:
e
.
labelEn
))
.
join
(
"
,
"
)
}}
<!--
<dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"-->
<!-- :value="scope.row.roles"-->
<!-- />-->
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('客户经理')"
align=
"center"
prop=
"customerServiceName"
></el-table-column>
...
...
@@ -253,10 +259,7 @@
</el-table-column>
<el-table-column
:label=
"$t('客户来源')"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_SOURCE"
:value=
"scope.row.source"
/>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_SOURCE"
:value=
"scope.row.source"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('业务国家')"
>
...
...
@@ -279,8 +282,7 @@
{{
getProductTypeNames
(
row
.
productTypes
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('主要竞争对手')"
prop=
"competitorNames"
>
</el-table-column>
<el-table-column
:label=
"$t('主要竞争对手')"
prop=
"competitorNames"
>
</el-table-column>
<el-table-column
:label=
"$t('年度发货次数')"
align=
"center"
>
<
template
slot-scope=
"{ row }"
>
{{
row
.
numYearly
}}
...
...
@@ -293,13 +295,13 @@
</el-table-column>
<el-table-column
:label=
"$t('入公海时间')"
align=
"center"
width=
"160"
>
<
template
v-slot=
"{ row }"
>
{{
parseTime
(
row
.
enterOpenSeaTime
?
row
.
enterOpenSeaTime
:
row
.
estimateEnterOpenSeaTime
)
}}
{{
parseTime
(
row
.
enterOpenSeaTime
?
row
.
enterOpenSeaTime
:
row
.
estimateEnterOpenSeaTime
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('入仓确认')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<el-tag
type=
"success"
v-if=
"scope.row.arrivalConfirm == 1"
>
{{
$t
(
'
是
'
)
}}
</el-tag>
<el-tag
type=
"info"
v-else
>
{{
$t
(
'
否
'
)
}}
</el-tag>
<el-tag
type=
"success"
v-if=
"scope.row.arrivalConfirm == 1"
>
{{
$t
(
"
是
"
)
}}
</el-tag>
<el-tag
type=
"info"
v-else
>
{{
$t
(
"
否
"
)
}}
</el-tag>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('控货无收货人')"
align=
"center"
>
...
...
@@ -324,14 +326,10 @@
</el-table-column>
<el-table-column
:label=
"$t('获取方式')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_GET_METHOD"
:value=
"scope.row.getMethod"
/>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_GET_METHOD"
:value=
"scope.row.getMethod"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('创建人')"
prop=
"createUsername"
align=
"center"
>
</el-table-column>
<el-table-column
:label=
"$t('创建人')"
prop=
"createUsername"
align=
"center"
>
</el-table-column>
<el-table-column
:label=
"$t('创建时间')"
align=
"center"
width=
"160"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
...
...
@@ -339,51 +337,38 @@
</el-table-column>
<el-table-column
:label=
"$t('最后更新时间')"
align=
"center"
width=
"160"
>
<
template
slot-scope=
"scope"
>
<span
>
{{
parseTime
(
scope
.
row
.
updateTime
)
}}
</span>
<span>
{{
parseTime
(
scope
.
row
.
updateTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('分配时间')"
align=
"center"
width=
"180"
>
<
template
v-slot=
"{row
}"
>
<span>
{{
parseTime
(
row
.
customerServiceAssignedTime
)
}}
</span>
<
template
v-slot=
"{ row
}"
>
<span>
{{
parseTime
(
row
.
customerServiceAssignedTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
width=
"200px"
:label=
"$t('操作')"
align=
"center"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<router-link
:to=
"'/customer/query/' + scope.row.id"
>
<el-button
v-has-permi=
"['ecw:customer:treat-view']"
size=
"mini"
style=
"margin-right: 10px"
type=
"text"
>
查看
</el-button>
<el-button
v-has-permi=
"['ecw:customer:treat-view']"
size=
"mini"
style=
"margin-right: 10px"
type=
"text"
>
查看
</el-button>
</router-link>
<el-button
size=
"mini"
type=
"text"
@
click=
"handleConfirmService(scope.row)"
v-hasPermi=
"['ecw:customer:treat-accept']"
>
{{
$t
(
'
确认接收
'
)
}}
</el-button>
<el-button
size=
"mini"
type=
"text"
@
click=
"handOver(scope.row)"
v-hasPermi=
"['ecw:customer:treat-transfer']"
>
{{
$t
(
'
移交
'
)
}}
</el-button>
<router-link
style=
"margin: 0 10px;"
to=
"/offer/create"
>
<el-button
size=
"mini"
type=
"text"
@
click=
"handleConfirmService(scope.row)"
v-hasPermi=
"['ecw:customer:treat-accept']"
>
{{
$t
(
"
确认接收
"
)
}}
</el-button>
<el-button
size=
"mini"
type=
"text"
@
click=
"handOver(scope.row)"
v-hasPermi=
"['ecw:customer:treat-transfer']"
>
{{
$t
(
"
移交
"
)
}}
</el-button>
<router-link
style=
"margin: 0 10px"
to=
"/offer/create"
>
<el-button
v-has-permi=
"['ecw:customer:treat-quoted-price']"
size=
"mini"
type=
"text"
>
{{
$t
(
'
报价
'
)
}}
{{
$t
(
"
报价
"
)
}}
</el-button>
</router-link>
<el-button
size=
"mini"
type=
"text"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['ecw:customer:treat-perfect']"
>
{{
$t
(
'
完善
'
)
}}
</el-button>
<el-button
size=
"mini"
type=
"text"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['ecw:customer:treat-perfect']"
>
{{
$t
(
"
完善
"
)
}}
</el-button>
<!--
<el-button
v-has-permi=
"['ecw:customer:treat-recovery']"
size=
"mini"
type=
"text"
@
click=
"recovery(scope.row)"
>
{{
$t
(
'
回收客户
'
)
}}
</el-button>
-->
<el-button
v-has-permi=
"['ecw:customer:setting']"
size=
"mini"
type=
"text"
icon=
"el-icon-user"
@
click=
"handleSetting(scope.row)"
>
{{
$t
(
"
设置
"
)
}}
</el-button
>
<el-button
v-has-permi=
"['ecw:customer:setting']"
size=
"mini"
type=
"text"
icon=
"el-icon-user"
@
click=
"handleSetting(scope.row)"
>
{{
$t
(
"
设置
"
)
}}
</el-button>
</
template
>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<!-- 对话框(添加 / 修改) -->
<el-dialog
:title=
"title"
:visible.sync=
"open"
width=
"500px"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('客户名称')"
prop=
"name"
>
<el-input
v-model=
"form.name"
:placeholder=
"$t('请输入客户名称')"
/>
...
...
@@ -392,24 +377,21 @@
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('国家')"
prop=
"country"
>
<el-select
v-model=
"form.country"
:placeholder=
"$t('请选择国家')"
>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)"
:key=
"dict.value"
:label=
"dict.label"
:value=
"parseInt(dict.value)"
/>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)"
:key=
"dict.value"
:label=
"dict.label"
:value=
"parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('客户等级')"
prop=
"level"
>
<el-select
v-model=
"form.level"
:placeholder=
"$t('请选择客户等级')"
>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('所属代理')"
prop=
"agentId"
>
<el-select
v-model=
"form.agentId"
:placeholder=
"$t('请选择所属代理')"
>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
...
...
@@ -421,8 +403,7 @@
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('客户类别')"
prop=
"type"
>
<el-select
v-model=
"form.type"
:placeholder=
"$t('请选择客户类别')"
>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_TYPE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_TYPE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
</el-col>
...
...
@@ -434,13 +415,11 @@
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('公司名称')"
prop=
"company"
>
<el-input
v-model=
"form.company"
:placeholder=
"$t('请输入公司名称')"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('客户生日')"
prop=
"birthday"
>
<el-input
v-model=
"form.birthday"
:placeholder=
"$t('请输入客户生日')"
/>
</el-form-item>
...
...
@@ -456,44 +435,35 @@
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('客户来源')"
prop=
"source"
>
<el-select
v-model=
"form.source"
:placeholder=
"$t('请选择客户来源')"
>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('结算方式')"
prop=
"balance"
>
<el-select
v-model=
"form.balance"
:placeholder=
"$t('请选择结算方式')"
>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_BALANCE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_BALANCE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('客户经理')"
prop=
"customerService"
>
<el-select
v-model=
"form.customerService"
:placeholder=
"$t('请选择客户经理')"
>
<el-option
v-for=
"dict in serviceStaffOptions"
:key=
"dict.id"
:label=
"dict.nickname"
:value=
"dict.id"
/>
<el-option
v-for=
"dict in serviceStaffOptions"
:key=
"dict.id"
:label=
"dict.nickname"
:value=
"dict.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('图片')"
prop=
"picture"
>
<el-input
v-model=
"form.picture"
:placeholder=
"$t('请输入图片')"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('客户状态')"
prop=
"status"
>
<el-select
v-model=
"form.status"
:placeholder=
"$t('请选择客户状态')"
>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_STATUS)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_STATUS)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
...
...
@@ -528,9 +498,6 @@
</el-form-item>
</el-col>
<el-form-item
:label=
"$t('关联会员账号')"
prop=
"memberId"
>
<el-input
v-model=
"form.memberId"
:placeholder=
"$t('请输入关联会员账号')"
/>
</el-form-item>
...
...
@@ -564,8 +531,8 @@
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitForm"
>
{{
$t('确 定')
}}
</el-button>
<el-button
@
click=
"cancel"
>
{{
$t('取 消')
}}
</el-button>
<el-button
type=
"primary"
@
click=
"submitForm"
>
{{
$t("确 定")
}}
</el-button>
<el-button
@
click=
"cancel"
>
{{
$t("取 消")
}}
</el-button>
</div>
</el-dialog>
...
...
@@ -575,65 +542,52 @@
<el-form
ref=
"handOverForm"
:model=
"handOverForm"
:rules=
"rules"
label-width=
"80px"
>
<el-form-item
:label=
"$t('客户经理')"
prop=
"customerServiceId"
>
<el-select
v-model=
"handOverForm.customerServiceId"
:placeholder=
"$t('请选择客户经理')"
clearable
filterable
>
<el-option
v-for=
"user in serviceStaffOptions"
:key=
"user.id"
:value=
"user.id"
:label=
"user.nickname"
/>
<el-option
v-for=
"user in serviceStaffOptions"
:key=
"user.id"
:value=
"user.id"
:label=
"user.nickname"
/>
</el-select>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitHandOverForm"
>
{{
$t('确 定')
}}
</el-button>
<el-button
@
click=
"cancelHandOver"
>
{{
$t('取 消')
}}
</el-button>
<el-button
type=
"primary"
@
click=
"submitHandOverForm"
>
{{
$t("确 定")
}}
</el-button>
<el-button
@
click=
"cancelHandOver"
>
{{
$t("取 消")
}}
</el-button>
</div>
</el-dialog>
<transfer-customer
:show.sync=
"openHandOver"
:customer-ids.sync=
"handOverForm.customerIdList"
></transfer-customer>
<customer-follow
ref=
"customerFollow"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
/>
<customer-setting
ref=
"customerSetting"
@
refresh=
"getList"
></customer-setting>
<customer-follow
ref=
"customerFollow"
@
close=
"customerFollowVisible = false"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
/>
<customer-setting
ref=
"customerSetting"
@
refresh=
"getList"
></customer-setting>
</div>
</template>
<
script
>
import
{
updateCustomer
,
getCustomer
,
exportCustomerExcel
,
getWaitForConfirmList
,
confirm
,
waiteConfirmExportExcel
,
waiteConfirEexportExcel
,
recycleUnconfirmedCustomer
,
competitorListAll
}
from
"
@/api/ecw/customer
"
;
import
{
updateCustomer
,
getCustomer
,
exportCustomerExcel
,
getWaitForConfirmList
,
confirm
,
waiteConfirmExportExcel
,
waiteConfirEexportExcel
,
recycleUnconfirmedCustomer
,
competitorListAll
}
from
"
@/api/ecw/customer
"
import
{
listServiceUser
,
listAllSimpl
}
from
"
@/api/system/user
"
import
{
getDictDatas
,
DICT_TYPE
,
getDictDatas2
}
from
'
@/utils/dict
'
import
{
CommonStatusEnum
}
from
'
@/utils/constants
'
import
{
handOverCustomer
}
from
"
../../../api/ecw/customer
"
;
import
{
getCountryListAll
}
from
"
@/api/ecw/country
"
;
import
{
getCreditPage
}
from
"
@/api/customer/credit
"
;
import
transferCustomer
from
"
@/views/ecw/customer/transferCustomer.vue
"
;
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
;
import
CustomerSetting
from
"
../customer/components/customerSetting.vue
"
;
import
AreaCodeSelector
from
"
@/components/AreaCodeSelector/index.vue
"
;
import
{
getNodeList
}
from
"
@/api/ecw/node
"
;
import
{
getCustomerSelect
,
changeCustomerDefaultPay
,
changeCustomerNoConsignee
,
changeCustomerDefaultBilling
}
from
"
@/api/ecw/customer
"
;
import
{
getProductTypeList
}
from
"
@/api/ecw/productType
"
;
import
{
getProductList
}
from
"
@/api/ecw/product
"
;
import
{
listMySimpleDepts
}
from
"
@/api/system/dept
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
CustomerFollow
from
"
@/views/ecw/customer/components/customerFollow.vue
"
;
import
CompetitorSelector
from
"
@/components/CompetitorSelector/index.vue
"
;
import
{
getDictDatas
,
DICT_TYPE
,
getDictDatas2
}
from
"
@/utils/dict
"
import
{
CommonStatusEnum
}
from
"
@/utils/constants
"
import
{
handOverCustomer
}
from
"
../../../api/ecw/customer
"
import
{
getCountryListAll
}
from
"
@/api/ecw/country
"
import
{
getCreditPage
}
from
"
@/api/customer/credit
"
import
transferCustomer
from
"
@/views/ecw/customer/transferCustomer.vue
"
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
import
CustomerSetting
from
"
../customer/components/customerSetting.vue
"
import
AreaCodeSelector
from
"
@/components/AreaCodeSelector/index.vue
"
import
{
getNodeList
}
from
"
@/api/ecw/node
"
import
{
getCustomerSelect
,
changeCustomerDefaultPay
,
changeCustomerNoConsignee
,
changeCustomerDefaultBilling
}
from
"
@/api/ecw/customer
"
import
{
getProductTypeList
}
from
"
@/api/ecw/productType
"
import
{
getProductList
}
from
"
@/api/ecw/product
"
import
{
listMySimpleDepts
}
from
"
@/api/system/dept
"
import
Template
from
"
@/views/cms/template/index.vue
"
import
CustomerFollow
from
"
@/views/ecw/customer/components/customerFollow.vue
"
import
CompetitorSelector
from
"
@/components/CompetitorSelector/index.vue
"
export
default
{
name
:
"
EcwCustomerconfirmIndex
"
,
activated
()
{
this
.
getList
()
;
this
.
getList
()
},
computed
:{
computed
:
{
DICT_TYPE
()
{
return
DICT_TYPE
},
isChinese
(){
return
this
.
$i18n
.
locale
===
'
zh_CN
'
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
},
channel
()
{
return
(
val
)
=>
{
...
...
@@ -642,20 +596,18 @@ export default {
.
filter
((
i
)
=>
(
val
.
split
(
"
,
"
)
||
[]).
includes
(
i
.
value
))
.
map
((
i
)
=>
(
this
.
isChinese
?
i
.
label
:
i
.
labelEn
))
.
join
(
"
,
"
)
:
""
;
}
;
:
""
}
},
customerSelectFn
()
{
if
(
this
.
recommended
.
length
>
0
)
{
let
i
=
this
.
customerSelect
.
find
(
(
item
)
=>
item
.
id
===
this
.
recommended
[
0
].
id
);
let
i
=
this
.
customerSelect
.
find
((
item
)
=>
item
.
id
===
this
.
recommended
[
0
].
id
)
if
(
!
i
)
{
this
.
customerSelect
.
push
(
this
.
recommended
[
0
])
;
this
.
customerSelect
.
push
(
this
.
recommended
[
0
])
}
return
this
.
customerSelect
;
return
this
.
customerSelect
}
else
{
return
this
.
customerSelect
;
return
this
.
customerSelect
}
},
combinedQueryParams
()
{
...
...
@@ -677,26 +629,26 @@ export default {
queryParams
.
endFirstDealTime
=
this
.
firstDealTime
[
1
]
}
if
(
this
.
weightYearly
.
value
)
{
let
key
=
'
eqWeightYearly
'
if
(
this
.
weightYearly
.
key
==
'
leNumberKey
'
)
{
key
=
'
leWeightYearly
'
}
else
if
(
this
.
weightYearly
.
key
==
'
geNumberKey
'
)
{
key
=
'
geWeightYearly
'
let
key
=
"
eqWeightYearly
"
if
(
this
.
weightYearly
.
key
==
"
leNumberKey
"
)
{
key
=
"
leWeightYearly
"
}
else
if
(
this
.
weightYearly
.
key
==
"
geNumberKey
"
)
{
key
=
"
geWeightYearly
"
}
queryParams
[
key
]
=
this
.
weightYearly
.
value
;
queryParams
[
key
]
=
this
.
weightYearly
.
value
}
if
(
this
.
numYearly
.
value
)
{
let
key
=
'
eqNumYearly
'
if
(
this
.
numYearly
.
key
==
'
leNumberKey
'
)
{
key
=
'
leNumYearly
'
}
else
if
(
this
.
numYearly
.
key
==
'
geNumberKey
'
)
{
key
=
'
geNumYearly
'
let
key
=
"
eqNumYearly
"
if
(
this
.
numYearly
.
key
==
"
leNumberKey
"
)
{
key
=
"
leNumYearly
"
}
else
if
(
this
.
numYearly
.
key
==
"
geNumberKey
"
)
{
key
=
"
geNumYearly
"
}
queryParams
[
key
]
=
this
.
numYearly
.
value
;
queryParams
[
key
]
=
this
.
numYearly
.
value
}
return
queryParams
;
}
,
return
queryParams
}
},
components
:
{
CompetitorSelector
,
...
...
@@ -730,7 +682,7 @@ export default {
// 查询参数
queryParams
:
{
pageNo
:
1
,
pageSize
:
10
,
pageSize
:
10
/*number: null,
name: null,
level: null,
...
...
@@ -751,14 +703,14 @@ export default {
handOverForm
:
{},
// 表单校验
rules
:
{
name
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户名称不能为空
'
),
trigger
:
"
blur
"
}],
weightUnit
:
[{
required
:
true
,
message
:
this
.
$t
(
'
重货标准(CBM)不能为空
'
),
trigger
:
"
blur
"
}],
name
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户名称不能为空
"
),
trigger
:
"
blur
"
}],
weightUnit
:
[{
required
:
true
,
message
:
this
.
$t
(
"
重货标准(CBM)不能为空
"
),
trigger
:
"
blur
"
}]
},
serviceStaffOptions
:
[],
customerServiceList
:[],
countryList
:[],
creditList
:[],
customerServiceList
:
[],
countryList
:
[],
creditList
:
[],
selectCustomerList
:
[],
enterOpenSeaTime
:
[],
customerServiceConfirmedTime
:
[],
...
...
@@ -769,47 +721,47 @@ export default {
allSimplList
:
[],
weightYearly
:
{
key
:
"
eqNumberKey
"
,
value
:
""
,
value
:
""
},
numYearly
:
{
key
:
"
eqNumberKey
"
,
value
:
""
,
value
:
""
},
productTypeList
:
[],
productList
:
[],
competitorList
:
[],
deptList
:
[]
,
}
;
deptList
:
[]
}
},
created
()
{
this
.
getList
()
;
getCreditPage
({
page
:
1
,
rows
:
999
}).
then
(
r
=>
{
this
.
getList
()
getCreditPage
({
page
:
1
,
rows
:
999
}).
then
((
r
)
=>
{
this
.
creditList
=
r
.
data
.
list
})
// 获得客服人员列表
listServiceUser
().
then
(
response
=>
{
this
.
serviceStaffOptions
=
response
.
data
;
listServiceUser
().
then
(
(
response
)
=>
{
this
.
serviceStaffOptions
=
response
.
data
})
listServiceUser
().
then
(
r
=>
{
this
.
customerServiceList
=
r
.
data
;
listServiceUser
().
then
(
(
r
)
=>
{
this
.
customerServiceList
=
r
.
data
})
getCountryListAll
().
then
(
r
=>
{
getCountryListAll
().
then
(
(
r
)
=>
{
this
.
countryList
=
r
.
data
})
this
.
getCustomerSelect
()
;
this
.
getCustomerSelect
()
getNodeList
().
then
((
r
)
=>
{
this
.
getNodeLists
=
r
.
data
;
})
;
this
.
getNodeLists
=
r
.
data
})
listAllSimpl
().
then
((
r
)
=>
{
this
.
allSimplList
=
r
.
data
;
})
;
this
.
allSimplList
=
r
.
data
})
getProductTypeList
().
then
((
r
)
=>
{
this
.
productTypeList
=
r
.
data
;
})
;
this
.
productTypeList
=
r
.
data
})
competitorListAll
().
then
((
r
)
=>
{
this
.
competitorList
=
r
.
data
;
this
.
competitorList
=
r
.
data
})
listMySimpleDepts
().
then
(
response
=>
{
listMySimpleDepts
().
then
(
(
response
)
=>
{
this
.
deptList
=
response
.
data
})
},
...
...
@@ -839,38 +791,36 @@ export default {
const
country
=
this
.
countryList
.
find
((
e
)
=>
e
.
id
===
cellValue
)
return
this
.
isChinese
?
country
?.
nameZh
:
country
?.
nameEn
},
handleSelectionChange
(
val
){
this
.
selectCustomerList
=
val
.
map
(
i
=>
i
.
id
);
handleSelectionChange
(
val
)
{
this
.
selectCustomerList
=
val
.
map
(
(
i
)
=>
i
.
id
)
},
/** 查询列表 */
getList
()
{
this
.
loading
=
true
;
this
.
loading
=
true
// 处理查询参数
let
params
=
{
...
this
.
queryParams
,
...
this
.
combinedQueryParams
};
let
params
=
{
...
this
.
queryParams
,
...
this
.
combinedQueryParams
}
// this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime', false);
// 执行查询
getWaitForConfirmList
(
params
).
then
(
response
=>
{
this
.
list
=
response
.
data
.
list
;
this
.
total
=
response
.
data
.
total
;
this
.
loading
=
false
;
})
;
getWaitForConfirmList
(
params
).
then
(
(
response
)
=>
{
this
.
list
=
response
.
data
.
list
this
.
total
=
response
.
data
.
total
this
.
loading
=
false
})
},
remoteMethod
(
val
)
{
this
.
getCustomerSelect
(
val
)
;
this
.
getCustomerSelect
(
val
)
},
getCustomerSelect
(
val
=
""
)
{
getCustomerSelect
({
pageNo
:
1
,
pageSize
:
30
,
searchKey
:
val
}).
then
(
(
res
)
=>
{
this
.
customerSelect
=
res
.
data
.
list
;
}
);
getCustomerSelect
({
pageNo
:
1
,
pageSize
:
30
,
searchKey
:
val
}).
then
((
res
)
=>
{
this
.
customerSelect
=
res
.
data
.
list
})
},
handleSelectProductType
(
val
)
{
if
(
val
&&
val
.
length
>=
1
)
{
this
.
queryParams
.
productIds
=
[]
getProductList
({
typeIds
:
val
}).
then
((
r
)
=>
{
this
.
productList
=
r
.
data
})
;
})
}
else
{
this
.
queryParams
.
productIds
=
[]
this
.
productList
=
[]
...
...
@@ -878,8 +828,8 @@ export default {
},
/** 取消按钮 */
cancel
()
{
this
.
open
=
false
;
this
.
reset
()
;
this
.
open
=
false
this
.
reset
()
},
/** 表单重置 */
reset
()
{
...
...
@@ -916,49 +866,49 @@ export default {
taxRate
:
undefined
,
remarks
:
undefined
,
arrivalConfirm
:
undefined
,
weightUnit
:
undefined
,
}
;
this
.
resetForm
(
"
form
"
)
;
weightUnit
:
undefined
}
this
.
resetForm
(
"
form
"
)
},
/** 表单重置 */
resetHandOverForm
()
{
this
.
form
=
{
customerIdList
:
undefined
,
customerServiceId
:
undefined
}
;
this
.
resetForm
(
"
handOverForm
"
)
;
}
this
.
resetForm
(
"
handOverForm
"
)
},
/** 搜索按钮操作 */
handleQuery
()
{
this
.
queryParams
.
pageNo
=
1
;
this
.
getList
()
;
this
.
queryParams
.
pageNo
=
1
this
.
getList
()
},
/** 重置按钮操作 */
resetQuery
()
{
this
.
dateRangeCreateTime
=
[]
;
this
.
dateRangeCreateTime
=
[]
this
.
enterOpenSeaTime
=
[]
this
.
customerServiceConfirmedTime
=
[]
this
.
firstDealTime
=
[]
this
.
resetForm
(
"
queryForm
"
)
;
this
.
resetForm
(
"
queryForm
"
)
this
.
queryParams
=
{
pageNo
:
1
,
pageSize
:
10
,
}
;
this
.
weightYearly
.
value
=
""
;
this
.
numYearly
.
value
=
""
;
this
.
handleQuery
()
;
pageSize
:
10
}
this
.
weightYearly
.
value
=
""
this
.
numYearly
.
value
=
""
this
.
handleQuery
()
},
/** 新增按钮操作 */
handleAdd
()
{
this
.
reset
()
;
this
.
open
=
true
;
this
.
title
=
this
.
$t
(
'
添加客户
'
);
this
.
reset
()
this
.
open
=
true
this
.
title
=
this
.
$t
(
"
添加客户
"
)
},
/** 修改按钮操作 */
handleUpdate
(
row
)
{
this
.
reset
()
;
const
id
=
row
.
id
;
this
.
$router
.
push
({
path
:
'
/customer/perfect/
'
+
id
,
query
:{
isCustomerServiceConfirmed
:
true
,}});
this
.
reset
()
const
id
=
row
.
id
this
.
$router
.
push
({
path
:
"
/customer/perfect/
"
+
id
,
query
:
{
isCustomerServiceConfirmed
:
true
}
})
// getCustomer(id).then(response => {
// this.form = response.data;
// this.open = true;
...
...
@@ -967,49 +917,56 @@ export default {
},
/** 修改按钮操作 */
handleConfirmService
(
row
)
{
const
id
=
row
.
id
;
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认接收客户
'
)
+
'
["
'
+
row
.
name
+
'
"]?
'
).
then
(
function
()
{
return
confirm
({
"
customerId
"
:
id
});
}).
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
接收成功
'
));
}).
catch
(()
=>
{});
const
id
=
row
.
id
this
.
$modal
.
confirm
(
this
.
$t
(
"
是否确认接收客户
"
)
+
'
["
'
+
row
.
name
+
'
"]?
'
)
.
then
(
function
()
{
return
confirm
({
customerId
:
id
})
})
.
then
(()
=>
{
this
.
getList
()
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
接收成功
"
))
})
.
catch
(()
=>
{})
},
/** 修改按钮操作 */
handOver
(
row
)
{
// this.resetHandOverForm();
this
.
openHandOver
=
true
;
this
.
openHandOver
=
true
this
.
handOverForm
.
customerIdList
=
[
row
.
id
];
this
.
handOverForm
.
customerIdList
=
[
row
.
id
]
},
/** 提交按钮 */
submitForm
()
{
this
.
$refs
[
"
form
"
].
validate
(
valid
=>
{
this
.
$refs
[
"
form
"
].
validate
(
(
valid
)
=>
{
if
(
!
valid
)
{
return
;
return
}
// 修改的提交
if
(
this
.
form
.
id
!=
null
)
{
updateCustomer
(
this
.
form
).
then
(
response
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
修改成功
'
));
this
.
open
=
false
;
this
.
getList
()
;
})
;
return
;
updateCustomer
(
this
.
form
).
then
(
(
response
)
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
修改成功
"
))
this
.
open
=
false
this
.
getList
()
})
return
}
})
;
})
},
/** 删除按钮操作 */
handleDelete
(
row
)
{
const
id
=
row
.
id
;
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认删除客户编号为"
'
)
+
id
+
this
.
$t
(
'
"的数据项?
'
)).
then
(
function
()
{
return
deleteCustomer
(
id
);
}).
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
删除成功
'
));
}).
catch
(()
=>
{});
const
id
=
row
.
id
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认删除客户编号为"
'
)
+
id
+
this
.
$t
(
'
"的数据项?
'
))
.
then
(
function
()
{
return
deleteCustomer
(
id
)
})
.
then
(()
=>
{
this
.
getList
()
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
删除成功
"
))
})
.
catch
(()
=>
{})
},
/** 导出按钮操作 */
handleExport
()
{
...
...
@@ -1019,85 +976,86 @@ export default {
// params.pageSize = undefined;
// this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行导出
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认导出我的待接受客户数据项?
'
)).
then
(()
=>
{
waiteConfirEexportExcel
().
then
(()
=>
{
this
.
$message
.
success
(
this
.
$t
(
'
已加入导出队列,请稍后在下载日志中下载
'
))
this
.
$modal
.
confirm
(
this
.
$t
(
"
是否确认导出我的待接受客户数据项?
"
))
.
then
(()
=>
{
waiteConfirEexportExcel
().
then
(()
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
已加入导出队列,请稍后在下载日志中下载
"
))
})
})
}).
catch
(()
=>
{});
.
catch
(()
=>
{})
},
/** 提交按钮 */
submitHandOverForm
()
{
// 移交的提交
handOverCustomer
(
this
.
handOverForm
).
then
(
response
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
移交成功
'
));
this
.
openHandOver
=
false
;
this
.
getList
()
;
})
;
handOverCustomer
(
this
.
handOverForm
).
then
(
(
response
)
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
移交成功
"
))
this
.
openHandOver
=
false
this
.
getList
()
})
},
/** 取消按钮 */
cancelHandOver
()
{
this
.
openHandOver
=
false
;
this
.
openHandOver
=
false
this
.
handOverForm
=
{
customerId
:
undefined
,
customerIdList
:
undefined
}
;
customerIdList
:
undefined
}
},
handleSetting
(
row
)
{
this
.
$refs
[
'
customerSetting
'
].
dialogVisible
=
true
this
.
$nextTick
(
_
=>
{
this
.
$refs
[
'
customerSetting
'
].
init
(
row
.
id
)
this
.
$refs
[
"
customerSetting
"
].
dialogVisible
=
true
this
.
$nextTick
(
(
_
)
=>
{
this
.
$refs
[
"
customerSetting
"
].
init
(
row
.
id
)
})
},
getBusiCountryNames
(
ids
)
{
if
(
ids
)
{
const
idsArr
=
ids
.
split
(
'
,
'
)
const
idsArr
=
ids
.
split
(
"
,
"
)
const
strArr
=
[]
this
.
countryList
.
forEach
(
item
=>
{
this
.
countryList
.
forEach
(
(
item
)
=>
{
if
(
idsArr
.
includes
(
item
.
id
.
toString
()))
{
strArr
.
push
(
this
.
isChinese
?
item
.
nameZh
:
item
.
nameEn
)
}
})
return
strArr
.
length
>
0
?
strArr
.
join
(
'
,
'
)
:
null
return
strArr
.
length
>
0
?
strArr
.
join
(
"
,
"
)
:
null
}
else
{
return
null
}
},
getPickupPointNames
(
ids
)
{
if
(
ids
)
{
const
idsArr
=
ids
.
split
(
'
,
'
)
const
idsArr
=
ids
.
split
(
"
,
"
)
const
strArr
=
[]
this
.
getNodeLists
.
forEach
(
item
=>
{
this
.
getNodeLists
.
forEach
(
(
item
)
=>
{
if
(
idsArr
.
includes
(
item
.
id
.
toString
()))
{
strArr
.
push
(
this
.
isChinese
?
item
.
titleZh
:
item
.
titleEn
)
}
})
return
strArr
.
length
>
0
?
strArr
.
join
(
'
,
'
)
:
null
return
strArr
.
length
>
0
?
strArr
.
join
(
"
,
"
)
:
null
}
else
{
return
null
}
},
getProductTypeNames
(
ids
)
{
if
(
ids
)
{
const
idsArr
=
ids
.
toString
().
split
(
'
,
'
)
const
idsArr
=
ids
.
toString
().
split
(
"
,
"
)
const
strArr
=
[]
this
.
productTypeList
.
forEach
(
item
=>
{
this
.
productTypeList
.
forEach
(
(
item
)
=>
{
if
(
idsArr
.
includes
(
item
.
id
.
toString
()))
{
strArr
.
push
(
this
.
isChinese
?
item
.
titleZh
:
item
.
titleEn
)
}
})
return
strArr
.
length
>
0
?
strArr
.
join
(
'
,
'
)
:
null
return
strArr
.
length
>
0
?
strArr
.
join
(
"
,
"
)
:
null
}
else
{
return
null
}
},
getPromoterName
(
id
)
{
if
(
id
)
{
let
strName
=
''
for
(
const
item
of
this
.
customerSelectFn
)
{
let
strName
=
""
for
(
const
item
of
this
.
customerSelectFn
)
{
if
(
item
.
id
==
id
)
{
strName
=
item
.
name
break
...
...
@@ -1109,5 +1067,5 @@ export default {
}
}
}
}
;
}
</
script
>
src/views/ecw/customerToBeAssigned/index.vue
View file @
1ad37a34
<
template
>
<div
class=
"app-container"
>
<!-- 搜索工作栏 -->
...
...
@@ -169,17 +168,14 @@
<!-- 操作工具栏 -->
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAdd"
v-hasPermi=
"['ecw:customer:distribution-create']"
>
{{$t('新增')}}
</el-button>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAdd"
v-hasPermi=
"['ecw:customer:distribution-create']"
>
{{ $t("新增") }}
</el-button>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
:loading=
"exportLoading"
v-hasPermi=
"['ecw:customer:distribution-export']"
>
{{$t('导出')}}
</el-button>
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
:loading=
"exportLoading"
v-hasPermi=
"['ecw:customer:distribution-export']"
>
{{ $t("导出") }}
</el-button>
</el-col>
<el-col
:span=
"1.5"
>
<el-col
:span=
"1.5"
>
<el-button
:disabled=
"selectCustomerList.length === 0"
type=
"primary"
size=
"mini"
@
click=
"batchTransferShow = true;"
v-hasPermi=
"['ecw:customer:distribution-transfer']"
>
{{$t('批量移交')}}
</el-button>
<el-col
:span=
"1.5"
>
<el-button
:disabled=
"selectCustomerList.length === 0"
type=
"primary"
size=
"mini"
@
click=
"batchTransferShow = true"
v-hasPermi=
"['ecw:customer:distribution-transfer']"
>
{{ $t("批量移交") }}
</el-button>
</el-col>
</el-col>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
...
...
@@ -189,13 +185,13 @@
<el-table
ref=
"multipleTable"
v-loading=
"loading"
:data=
"list"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
fixed
></el-table-column>
<el-table-column
:label=
"$t('客户编号')"
align=
"center"
prop=
"number"
>
<
template
v-slot=
"{
row
}"
>
{{
row
.
number
}}
<
template
v-slot=
"{
row
}"
>
{{
row
.
number
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('客户名称')"
align=
"center"
prop=
"name"
>
<
template
v-slot=
"{
row
}"
>
<p
style=
"display:
inline-block;white-space: pre-wrap;"
>
{{
$l
(
row
,
'
name
'
)
}}
</p>
<el-table-column
:label=
"$t('客户名称')"
align=
"center"
prop=
"name"
>
<
template
v-slot=
"{
row
}"
>
<p
style=
"display:
inline-block; white-space: pre-wrap"
>
{{
$l
(
row
,
"
name
"
)
}}
</p>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('客户状态')"
align=
"center"
prop=
"status"
>
...
...
@@ -204,41 +200,49 @@
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('主联系人')"
prop=
"defaultContactName"
></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{row}">-->
<!-- +{{row.defaultContactPhone}} <br/>-->
<!-- <contacts :id="row.id" >-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{row}">-->
<!-- +{{row.defaultContactPhone}} <br/>-->
<!-- <contacts :id="row.id" >-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column
:label=
"$t('最新跟进时间')"
width=
"120"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
{{
parseTime
(
scope
.
row
.
followupBackVO
.
followTime
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('最新跟进记录')"
width=
"120"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<a
href=
"javascript:void(0)"
@
click=
"handleCustomerFollowLink(scope.row.followupBackVO)"
class=
"link-type"
>
{{
scope
.
row
.
followupBackVO
.
number
}}
</a>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('客户类别')"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"{ row }"
>
{{
getDictDatas2
(
DICT_TYPE
.
CUSTOMER_TYPE
,
(
row
.
type
||
''
).
split
(
'
,
'
)).
map
(
e
=>
isChinese
?
e
.
label
:
e
.
labelEn
).
join
(
'
,
'
)
}}
<!--
<dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"-->
<!-- :value="scope.row.type"-->
<!-- />-->
{{
getDictDatas2
(
DICT_TYPE
.
CUSTOMER_TYPE
,
(
row
.
type
||
""
).
split
(
"
,
"
))
.
map
((
e
)
=>
(
isChinese
?
e
.
label
:
e
.
labelEn
))
.
join
(
"
,
"
)
}}
<!--
<dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"-->
<!-- :value="scope.row.type"-->
<!-- />-->
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('角色')"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"{ row }"
>
{{
getDictDatas2
(
DICT_TYPE
.
CUSTOMER_ROLE
,
(
row
.
roles
||
''
).
split
(
'
,
'
)).
map
(
e
=>
isChinese
?
e
.
label
:
e
.
labelEn
).
join
(
'
,
'
)
}}
<!--
<dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"-->
<!-- :value="scope.row.roles"-->
<!-- />-->
{{
getDictDatas2
(
DICT_TYPE
.
CUSTOMER_ROLE
,
(
row
.
roles
||
""
).
split
(
"
,
"
))
.
map
((
e
)
=>
(
isChinese
?
e
.
label
:
e
.
labelEn
))
.
join
(
"
,
"
)
}}
<!--
<dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"-->
<!-- :value="scope.row.roles"-->
<!-- />-->
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('客户经理')"
align=
"center"
prop=
"customerServiceName"
></el-table-column>
...
...
@@ -250,10 +254,7 @@
</el-table-column>
<el-table-column
:label=
"$t('客户来源')"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_SOURCE"
:value=
"scope.row.source"
/>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_SOURCE"
:value=
"scope.row.source"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('业务国家')"
>
...
...
@@ -276,8 +277,7 @@
{{
getProductTypeNames
(
row
.
productTypes
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('主要竞争对手')"
prop=
"competitorNames"
>
</el-table-column>
<el-table-column
:label=
"$t('主要竞争对手')"
prop=
"competitorNames"
>
</el-table-column>
<el-table-column
:label=
"$t('年度发货次数')"
align=
"center"
>
<
template
slot-scope=
"{ row }"
>
{{
row
.
numYearly
}}
...
...
@@ -290,13 +290,13 @@
</el-table-column>
<el-table-column
:label=
"$t('入公海时间')"
align=
"center"
width=
"160"
>
<
template
v-slot=
"{ row }"
>
{{
parseTime
(
row
.
enterOpenSeaTime
?
row
.
enterOpenSeaTime
:
row
.
estimateEnterOpenSeaTime
)
}}
{{
parseTime
(
row
.
enterOpenSeaTime
?
row
.
enterOpenSeaTime
:
row
.
estimateEnterOpenSeaTime
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('入仓确认')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<el-tag
type=
"success"
v-if=
"scope.row.arrivalConfirm == 1"
>
{{
$t
(
'
是
'
)
}}
</el-tag>
<el-tag
type=
"info"
v-else
>
{{
$t
(
'
否
'
)
}}
</el-tag>
<el-tag
type=
"success"
v-if=
"scope.row.arrivalConfirm == 1"
>
{{
$t
(
"
是
"
)
}}
</el-tag>
<el-tag
type=
"info"
v-else
>
{{
$t
(
"
否
"
)
}}
</el-tag>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('控货无收货人')"
align=
"center"
>
...
...
@@ -321,14 +321,10 @@
</el-table-column>
<el-table-column
:label=
"$t('获取方式')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_GET_METHOD"
:value=
"scope.row.getMethod"
/>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_GET_METHOD"
:value=
"scope.row.getMethod"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('创建人')"
prop=
"createUsername"
align=
"center"
>
</el-table-column>
<el-table-column
:label=
"$t('创建人')"
prop=
"createUsername"
align=
"center"
>
</el-table-column>
<el-table-column
:label=
"$t('创建时间')"
align=
"center"
width=
"160"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
...
...
@@ -336,85 +332,63 @@
</el-table-column>
<el-table-column
:label=
"$t('最后更新时间')"
align=
"center"
width=
"160"
>
<
template
slot-scope=
"scope"
>
<span
>
{{
parseTime
(
scope
.
row
.
updateTime
)
}}
</span>
<span>
{{
parseTime
(
scope
.
row
.
updateTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
width=
"200px"
:label=
"$t('操作')"
align=
"center"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<router-link
:to=
"'/customer/query/' + scope.row.id"
>
<el-button
v-has-permi=
"['ecw:customer:distribution-view']"
size=
"mini"
style=
"margin-right: 10px"
type=
"text"
>
查看
</el-button>
<el-button
v-has-permi=
"['ecw:customer:distribution-view']"
size=
"mini"
style=
"margin-right: 10px"
type=
"text"
>
查看
</el-button>
</router-link>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['ecw:customer:distribution-update']"
>
{{
$t
(
'
编辑
'
)
}}
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.row)"
v-hasPermi=
"['ecw:customer:distribution-delete']"
>
{{
$t
(
'
删除
'
)
}}
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-delete"
@
click=
"distribution(scope.row)"
v-hasPermi=
"['ecw:customer:distribution-customer-service']"
>
{{
$t
(
'
分配客服
'
)
}}
</el-button>
<el-button
v-has-permi=
"['ecw:customer:setting']"
size=
"mini"
type=
"text"
icon=
"el-icon-user"
@
click=
"handleSetting(scope.row)"
>
{{
$t
(
"
设置
"
)
}}
</el-button
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['ecw:customer:distribution-update']"
>
{{
$t
(
"
编辑
"
)
}}
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.row)"
v-hasPermi=
"['ecw:customer:distribution-delete']"
>
{{
$t
(
"
删除
"
)
}}
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-delete"
@
click=
"distribution(scope.row)"
v-hasPermi=
"['ecw:customer:distribution-customer-service']"
>
{{
$t
(
"
分配客服
"
)
}}
</el-button>
<el-button
v-has-permi=
"['ecw:customer:setting']"
size=
"mini"
type=
"text"
icon=
"el-icon-user"
@
click=
"handleSetting(scope.row)"
>
{{
$t
(
"
设置
"
)
}}
</el-button>
</
template
>
</el-table-column>
</el-table>
<!-- 移交 -->
<el-dialog
center
:title=
"$t('客服')"
:visible.sync=
"transferShow"
width=
"30%"
>
<div
style=
"width: 100%;min-height: 200px;text-align: center;"
>
<!-- <el-radio-group v-model="service">-->
<!-- <el-radio style="margin: 5px;" v-for="(item,index) in customerServiceList" :key="index" :label="item.id">{{item.nickname}}</el-radio>-->
<!-- </el-radio-group>-->
<el-dialog
center
:title=
"$t('客服')"
:visible.sync=
"transferShow"
width=
"30%"
>
<div
style=
"width: 100%; min-height: 200px; text-align: center"
>
<!-- <el-radio-group v-model="service">-->
<!-- <el-radio style="margin: 5px;" v-for="(item,index) in customerServiceList" :key="index" :label="item.id">{{item.nickname}}</el-radio>-->
<!-- </el-radio-group>-->
<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-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
@
click=
"transferShow = false"
>
{{$t('取 消')
}}
</el-button>
<el-button
type=
"primary"
@
click=
"transferFn"
>
{{$t('确 定')
}}
</el-button>
<el-button
@
click=
"transferShow = false"
>
{{ $t("取 消")
}}
</el-button>
<el-button
type=
"primary"
@
click=
"transferFn"
>
{{ $t("确 定")
}}
</el-button>
</span>
</el-dialog>
<!-- 分页组件 -->
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<transfer-customer
:show.sync=
"batchTransferShow"
:customer-ids.sync=
"selectCustomerList"
></transfer-customer>
<customer-follow
ref=
"customerFollow"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
/>
<customer-setting
ref=
"customerSetting"
@
refresh=
"getList"
></customer-setting>
<customer-follow
ref=
"customerFollow"
@
close=
"customerFollowVisible = false"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
/>
<customer-setting
ref=
"customerSetting"
@
refresh=
"getList"
></customer-setting>
</div>
</template>
<
script
>
import
{
createCustomer
,
updateCustomer
,
deleteCustomer
,
getCustomer
,
handOverCustomer
,
exportCustomerExcel
,
getCustomerToBeAssigned
,
waitDistributionExportExcel
,
competitorListAll
}
from
"
@/api/ecw/customer
"
;
import
{
getDictDatas
,
DICT_TYPE
,
getDictDatas2
}
from
'
@/utils/dict
'
;
import
upload
from
'
@/components/ImageUpload
'
import
{
listServiceUser
,
listAllSimpl
}
from
"
@/api/system/user
"
;
import
{
getCountryListAll
}
from
"
@/api/ecw/country
"
;
import
{
getCreditPage
}
from
"
@/api/customer/credit
"
;
import
transferCustomer
from
"
@/views/ecw/customer/transferCustomer
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
;
import
CustomerSetting
from
"
../customer/components/customerSetting.vue
"
;
import
AreaCodeSelector
from
"
@/components/AreaCodeSelector/index.vue
"
;
import
CustomerFollow
from
"
@/views/ecw/customer/components/customerFollow.vue
"
;
import
CompetitorSelector
from
"
@/components/CompetitorSelector/index.vue
"
;
import
{
getNodeList
}
from
"
@/api/ecw/node
"
;
import
{
getCustomerSelect
,
changeCustomerDefaultPay
,
changeCustomerNoConsignee
,
changeCustomerDefaultBilling
}
from
"
@/api/ecw/customer
"
;
import
{
getProductTypeList
}
from
"
@/api/ecw/productType
"
;
import
{
getProductList
}
from
"
@/api/ecw/product
"
;
import
{
listMySimpleDepts
}
from
"
@/api/system/dept
"
;
import
{
createCustomer
,
updateCustomer
,
deleteCustomer
,
getCustomer
,
handOverCustomer
,
exportCustomerExcel
,
getCustomerToBeAssigned
,
waitDistributionExportExcel
,
competitorListAll
}
from
"
@/api/ecw/customer
"
import
{
getDictDatas
,
DICT_TYPE
,
getDictDatas2
}
from
"
@/utils/dict
"
import
upload
from
"
@/components/ImageUpload
"
import
{
listServiceUser
,
listAllSimpl
}
from
"
@/api/system/user
"
import
{
getCountryListAll
}
from
"
@/api/ecw/country
"
import
{
getCreditPage
}
from
"
@/api/customer/credit
"
import
transferCustomer
from
"
@/views/ecw/customer/transferCustomer
"
import
Template
from
"
@/views/cms/template/index.vue
"
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
import
CustomerSetting
from
"
../customer/components/customerSetting.vue
"
import
AreaCodeSelector
from
"
@/components/AreaCodeSelector/index.vue
"
import
CustomerFollow
from
"
@/views/ecw/customer/components/customerFollow.vue
"
import
CompetitorSelector
from
"
@/components/CompetitorSelector/index.vue
"
import
{
getNodeList
}
from
"
@/api/ecw/node
"
import
{
getCustomerSelect
,
changeCustomerDefaultPay
,
changeCustomerNoConsignee
,
changeCustomerDefaultBilling
}
from
"
@/api/ecw/customer
"
import
{
getProductTypeList
}
from
"
@/api/ecw/productType
"
import
{
getProductList
}
from
"
@/api/ecw/product
"
import
{
listMySimpleDepts
}
from
"
@/api/system/dept
"
export
default
{
name
:
"
EcwCustomertobeassignedIndex
"
,
...
...
@@ -434,7 +408,7 @@ export default {
data
()
{
return
{
customerFollowVisible
:
false
,
batchTransferShow
:
false
,
batchTransferShow
:
false
,
getDictDatas
,
getDictDatas2
,
DICT_TYPE
,
...
...
@@ -453,11 +427,11 @@ export default {
// 是否显示弹出层
open
:
false
,
dateRangeCreateTime
:
[],
customerServiceList
:[],
customerServiceList
:
[],
// 查询参数
queryParams
:
{
pageNo
:
1
,
pageSize
:
10
,
pageSize
:
10
/*number: null,
name: null,
level: null,
...
...
@@ -477,25 +451,25 @@ export default {
form
:
{},
// 表单校验
rules
:
{
name
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户名称不能为空
'
),
trigger
:
"
blur
"
}],
country
:
[{
required
:
true
,
message
:
this
.
$t
(
'
国家不能为空
'
),
trigger
:
"
blur
"
}],
level
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户等级不能为空
'
),
trigger
:
"
blur
"
}],
type
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户类别不能为空
'
),
trigger
:
"
blur
"
}],
name
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户名称不能为空
"
),
trigger
:
"
blur
"
}],
country
:
[{
required
:
true
,
message
:
this
.
$t
(
"
国家不能为空
"
),
trigger
:
"
blur
"
}],
level
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户等级不能为空
"
),
trigger
:
"
blur
"
}],
type
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户类别不能为空
"
),
trigger
:
"
blur
"
}],
// createTime: [{ required: true, message: this.$t("创建时间不能为空"), trigger: "blur" }],
source
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户来源不能为空
'
),
trigger
:
"
blur
"
}],
customerService
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户经理不能为空
'
),
trigger
:
"
blur
"
}],
status
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户状态不能为空
'
),
trigger
:
"
blur
"
}],
founder
:
[{
required
:
true
,
message
:
this
.
$t
(
'
创建人不能为空
'
),
trigger
:
"
blur
"
}],
source
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户来源不能为空
"
),
trigger
:
"
blur
"
}],
customerService
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户经理不能为空
"
),
trigger
:
"
blur
"
}],
status
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户状态不能为空
"
),
trigger
:
"
blur
"
}],
founder
:
[{
required
:
true
,
message
:
this
.
$t
(
"
创建人不能为空
"
),
trigger
:
"
blur
"
}]
},
// 网点
nodeList
:
[],
showLine
:
false
,
service
:
undefined
,
//客服
transferData
:
undefined
,
//移交数据
transferShow
:
false
,
creditList
:[],
selectCustomerList
:[],
countryList
:[],
service
:
undefined
,
//客服
transferData
:
undefined
,
//移交数据
transferShow
:
false
,
creditList
:
[],
selectCustomerList
:
[],
countryList
:
[],
enterOpenSeaTime
:
[],
customerServiceConfirmedTime
:
[],
firstDealTime
:
[],
...
...
@@ -505,48 +479,48 @@ export default {
allSimplList
:
[],
weightYearly
:
{
key
:
"
eqNumberKey
"
,
value
:
""
,
value
:
""
},
numYearly
:
{
key
:
"
eqNumberKey
"
,
value
:
""
,
value
:
""
},
productTypeList
:
[],
productList
:
[],
competitorList
:
[],
deptList
:
[]
,
}
;
deptList
:
[]
}
},
created
()
{
getCountryListAll
().
then
(
r
=>
{
console
.
log
(
r
,
'
国家
'
)
getCountryListAll
().
then
(
(
r
)
=>
{
console
.
log
(
r
,
"
国家
"
)
this
.
countryList
=
r
.
data
})
getCreditPage
({
page
:
1
,
rows
:
999
}).
then
(
r
=>
{
getCreditPage
({
page
:
1
,
rows
:
999
}).
then
((
r
)
=>
{
this
.
creditList
=
r
.
data
.
list
})
this
.
getList
()
;
listServiceUser
().
then
(
r
=>
{
console
.
log
(
r
,
'
客服
'
);
this
.
customerServiceList
=
r
.
data
;
this
.
getList
()
listServiceUser
().
then
(
(
r
)
=>
{
console
.
log
(
r
,
"
客服
"
)
this
.
customerServiceList
=
r
.
data
})
// getNodeList().then(r => {
// this.nodeList = r.data
// })
this
.
getCustomerSelect
()
;
this
.
getCustomerSelect
()
getNodeList
().
then
((
r
)
=>
{
this
.
getNodeLists
=
r
.
data
;
})
;
this
.
getNodeLists
=
r
.
data
})
listAllSimpl
().
then
((
r
)
=>
{
this
.
allSimplList
=
r
.
data
;
})
;
this
.
allSimplList
=
r
.
data
})
getProductTypeList
().
then
((
r
)
=>
{
this
.
productTypeList
=
r
.
data
;
})
;
this
.
productTypeList
=
r
.
data
})
competitorListAll
().
then
((
r
)
=>
{
this
.
competitorList
=
r
.
data
;
this
.
competitorList
=
r
.
data
})
listMySimpleDepts
().
then
(
response
=>
{
listMySimpleDepts
().
then
(
(
response
)
=>
{
this
.
deptList
=
response
.
data
})
},
...
...
@@ -560,8 +534,8 @@ export default {
const
country
=
this
.
countryList
.
find
((
e
)
=>
e
.
id
===
cellValue
)
return
this
.
isChinese
?
country
?.
nameZh
:
country
?.
nameEn
},
handleSelectionChange
(
val
){
this
.
selectCustomerList
=
val
.
map
(
i
=>
i
.
id
);
handleSelectionChange
(
val
)
{
this
.
selectCustomerList
=
val
.
map
(
(
i
)
=>
i
.
id
)
},
handleCustomerFollowLink
(
row
)
{
this
.
customerFollowVisible
=
true
...
...
@@ -571,33 +545,31 @@ export default {
},
/** 查询列表 */
getList
()
{
this
.
loading
=
true
;
this
.
loading
=
true
// 处理查询参数
let
params
=
{
...
this
.
queryParams
,
...
this
.
combinedQueryParams
};
this
.
addBeginAndEndTime
(
params
,
this
.
dateRangeCreateTime
,
'
createTime
'
,
false
);
let
params
=
{
...
this
.
queryParams
,
...
this
.
combinedQueryParams
}
this
.
addBeginAndEndTime
(
params
,
this
.
dateRangeCreateTime
,
"
createTime
"
,
false
)
// 执行查询
getCustomerToBeAssigned
(
params
).
then
(
response
=>
{
this
.
list
=
response
.
data
.
list
;
this
.
total
=
response
.
data
.
total
;
this
.
loading
=
false
;
})
;
getCustomerToBeAssigned
(
params
).
then
(
(
response
)
=>
{
this
.
list
=
response
.
data
.
list
this
.
total
=
response
.
data
.
total
this
.
loading
=
false
})
},
remoteMethod
(
val
)
{
this
.
getCustomerSelect
(
val
)
;
this
.
getCustomerSelect
(
val
)
},
getCustomerSelect
(
val
=
""
)
{
getCustomerSelect
({
pageNo
:
1
,
pageSize
:
30
,
searchKey
:
val
}).
then
(
(
res
)
=>
{
this
.
customerSelect
=
res
.
data
.
list
;
}
);
getCustomerSelect
({
pageNo
:
1
,
pageSize
:
30
,
searchKey
:
val
}).
then
((
res
)
=>
{
this
.
customerSelect
=
res
.
data
.
list
})
},
handleSelectProductType
(
val
)
{
if
(
val
&&
val
.
length
>=
1
)
{
this
.
queryParams
.
productIds
=
[]
getProductList
({
typeIds
:
val
}).
then
((
r
)
=>
{
this
.
productList
=
r
.
data
})
;
})
}
else
{
this
.
queryParams
.
productIds
=
[]
this
.
productList
=
[]
...
...
@@ -605,8 +577,8 @@ export default {
},
/** 取消按钮 */
cancel
()
{
this
.
open
=
false
;
this
.
reset
()
;
this
.
open
=
false
this
.
reset
()
},
/** 表单重置 */
reset
()
{
...
...
@@ -645,44 +617,44 @@ export default {
taxRate
:
undefined
,
remarks
:
undefined
,
arrivalConfirm
:
undefined
,
weightUnit
:
undefined
,
}
;
this
.
resetForm
(
"
form
"
)
;
weightUnit
:
undefined
}
this
.
resetForm
(
"
form
"
)
},
/** 搜索按钮操作 */
handleQuery
()
{
this
.
queryParams
.
pageNo
=
1
;
this
.
getList
()
;
this
.
queryParams
.
pageNo
=
1
this
.
getList
()
},
/** 重置按钮操作 */
resetQuery
()
{
this
.
dateRangeCreateTime
=
[]
;
this
.
dateRangeCreateTime
=
[]
this
.
enterOpenSeaTime
=
[]
this
.
customerServiceConfirmedTime
=
[]
this
.
firstDealTime
=
[]
this
.
resetForm
(
"
queryForm
"
)
;
this
.
resetForm
(
"
queryForm
"
)
this
.
queryParams
=
{
pageNo
:
1
,
pageSize
:
10
,
}
;
this
.
weightYearly
.
value
=
""
;
this
.
numYearly
.
value
=
""
;
this
.
handleQuery
()
;
pageSize
:
10
}
this
.
weightYearly
.
value
=
""
this
.
numYearly
.
value
=
""
this
.
handleQuery
()
},
/** 新增按钮操作 */
handleAdd
()
{
this
.
$router
.
push
(
'
/customer/add-edit/0
'
)
this
.
$router
.
push
(
"
/customer/add-edit/0
"
)
// this.reset();
// this.open = true;
// this.title = this.$t("添加客户");
},
/** 查看按钮操作 */
handleView
(
row
)
{
this
.
$router
.
push
(
'
/customer/query/
'
+
row
.
id
)
this
.
$router
.
push
(
"
/customer/query/
"
+
row
.
id
)
},
/** 修改按钮操作 */
handleUpdate
(
row
)
{
this
.
$router
.
push
(
'
/customer/edit-distribution/
'
+
row
.
id
)
this
.
$router
.
push
(
"
/customer/edit-distribution/
"
+
row
.
id
)
// this.reset();
// const id = row.id;
// getCustomer(id).then(response => {
...
...
@@ -693,120 +665,127 @@ export default {
},
/** 提交按钮 */
submitForm
()
{
this
.
$refs
[
"
form
"
].
validate
(
valid
=>
{
this
.
$refs
[
"
form
"
].
validate
(
(
valid
)
=>
{
if
(
!
valid
)
{
// return;
}
// 修改的提交
if
(
this
.
form
.
id
!=
null
)
{
updateCustomer
(
this
.
form
).
then
(
response
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
修改成功
'
));
this
.
open
=
false
;
this
.
getList
()
;
})
;
return
;
updateCustomer
(
this
.
form
).
then
(
(
response
)
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
修改成功
"
))
this
.
open
=
false
this
.
getList
()
})
return
}
// 添加的提交
createCustomer
(
this
.
form
).
then
(
response
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
新增成功
'
));
this
.
open
=
false
;
this
.
getList
()
;
})
;
})
;
createCustomer
(
this
.
form
).
then
(
(
response
)
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
新增成功
"
))
this
.
open
=
false
this
.
getList
()
})
})
},
/** 移交按钮操作 */
handleDelete
(
row
)
{
const
id
=
row
.
id
;
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认删除客户编号为"
'
)
+
row
.
number
+
this
.
$t
(
'
"的数据项?
'
)).
then
(
function
()
{
return
deleteCustomer
(
id
);
}).
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
删除成功
'
));
}).
catch
(()
=>
{});
const
id
=
row
.
id
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认删除客户编号为"
'
)
+
row
.
number
+
this
.
$t
(
'
"的数据项?
'
))
.
then
(
function
()
{
return
deleteCustomer
(
id
)
})
.
then
(()
=>
{
this
.
getList
()
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
删除成功
"
))
})
.
catch
(()
=>
{})
},
//分配客服
distribution
(
row
){
distribution
(
row
)
{
// this.service = row.customerService;
// this.transferData = row;
this
.
selectCustomerList
=
[
row
.
id
]
this
.
batchTransferShow
=
true
;
this
.
batchTransferShow
=
true
},
transferFn
(){
if
(
!
this
.
service
)
{
return
this
.
$message
.
warning
(
this
.
$t
(
'
请选择客户经理!
'
));
transferFn
()
{
if
(
!
this
.
service
)
{
return
this
.
$message
.
warning
(
this
.
$t
(
"
请选择客户经理!
"
))
}
handOverCustomer
({
customerServiceId
:
this
.
service
,
customerIdList
:
[
this
.
transferData
.
id
]
}).
then
(
r
=>
{
if
(
r
.
code
===
0
)
{
this
.
transferShow
=
false
;
this
.
service
=
''
;
this
.
getList
()
;
this
.
$message
.
success
(
this
.
$t
(
'
移交成功!
'
));
customerServiceId
:
this
.
service
,
customerIdList
:
[
this
.
transferData
.
id
]
}).
then
(
(
r
)
=>
{
if
(
r
.
code
===
0
)
{
this
.
transferShow
=
false
this
.
service
=
""
this
.
getList
()
this
.
$message
.
success
(
this
.
$t
(
"
移交成功!
"
))
}
})
},
/** 导出按钮操作 */
handleExport
()
{
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认导出待分配客户数据项?
'
)).
then
(
response
=>
{
waitDistributionExportExcel
().
then
(()
=>
{
this
.
$message
.
success
(
this
.
$t
(
'
已加入导出队列,请稍后在下载日志中下载
'
))
this
.
$modal
.
confirm
(
this
.
$t
(
"
是否确认导出待分配客户数据项?
"
))
.
then
((
response
)
=>
{
waitDistributionExportExcel
().
then
(()
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
已加入导出队列,请稍后在下载日志中下载
"
))
})
}).
catch
(()
=>
{});
})
.
catch
(()
=>
{})
},
handleSetting
(
row
)
{
this
.
$refs
[
'
customerSetting
'
].
dialogVisible
=
true
this
.
$nextTick
(
_
=>
{
this
.
$refs
[
'
customerSetting
'
].
init
(
row
.
id
)
this
.
$refs
[
"
customerSetting
"
].
dialogVisible
=
true
this
.
$nextTick
(
(
_
)
=>
{
this
.
$refs
[
"
customerSetting
"
].
init
(
row
.
id
)
})
},
getBusiCountryNames
(
ids
)
{
if
(
ids
)
{
const
idsArr
=
ids
.
split
(
'
,
'
)
const
idsArr
=
ids
.
split
(
"
,
"
)
const
strArr
=
[]
this
.
countryList
.
forEach
(
item
=>
{
this
.
countryList
.
forEach
(
(
item
)
=>
{
if
(
idsArr
.
includes
(
item
.
id
.
toString
()))
{
strArr
.
push
(
this
.
isChinese
?
item
.
nameZh
:
item
.
nameEn
)
}
})
return
strArr
.
length
>
0
?
strArr
.
join
(
'
,
'
)
:
null
return
strArr
.
length
>
0
?
strArr
.
join
(
"
,
"
)
:
null
}
else
{
return
null
}
},
getPickupPointNames
(
ids
)
{
if
(
ids
)
{
const
idsArr
=
ids
.
split
(
'
,
'
)
const
idsArr
=
ids
.
split
(
"
,
"
)
const
strArr
=
[]
this
.
getNodeLists
.
forEach
(
item
=>
{
this
.
getNodeLists
.
forEach
(
(
item
)
=>
{
if
(
idsArr
.
includes
(
item
.
id
.
toString
()))
{
strArr
.
push
(
this
.
isChinese
?
item
.
titleZh
:
item
.
titleEn
)
}
})
return
strArr
.
length
>
0
?
strArr
.
join
(
'
,
'
)
:
null
return
strArr
.
length
>
0
?
strArr
.
join
(
"
,
"
)
:
null
}
else
{
return
null
}
},
getProductTypeNames
(
ids
)
{
if
(
ids
)
{
const
idsArr
=
ids
.
toString
().
split
(
'
,
'
)
const
idsArr
=
ids
.
toString
().
split
(
"
,
"
)
const
strArr
=
[]
this
.
productTypeList
.
forEach
(
item
=>
{
this
.
productTypeList
.
forEach
(
(
item
)
=>
{
if
(
idsArr
.
includes
(
item
.
id
.
toString
()))
{
strArr
.
push
(
this
.
isChinese
?
item
.
titleZh
:
item
.
titleEn
)
}
})
return
strArr
.
length
>
0
?
strArr
.
join
(
'
,
'
)
:
null
return
strArr
.
length
>
0
?
strArr
.
join
(
"
,
"
)
:
null
}
else
{
return
null
}
},
getPromoterName
(
id
)
{
if
(
id
)
{
let
strName
=
''
for
(
const
item
of
this
.
customerSelectFn
)
{
let
strName
=
""
for
(
const
item
of
this
.
customerSelectFn
)
{
if
(
item
.
id
==
id
)
{
strName
=
item
.
name
break
...
...
@@ -821,7 +800,7 @@ export default {
changeCustomerDefaultPay
({
customerIdList
:
this
.
selectCustomerList
,
defaultPay
:
true
}).
then
(
_
=>
{
}).
then
(
(
_
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
操作成功
"
))
this
.
getList
()
})
...
...
@@ -830,7 +809,7 @@ export default {
changeCustomerNoConsignee
({
customerIdList
:
this
.
selectCustomerList
,
noConsigee
:
true
}).
then
(
_
=>
{
}).
then
(
(
_
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
操作成功
"
))
this
.
getList
()
})
...
...
@@ -839,23 +818,23 @@ export default {
changeCustomerDefaultBilling
({
customerIdList
:
this
.
selectCustomerList
,
defaultBilling
:
true
}).
then
(
_
=>
{
}).
then
(
(
_
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
操作成功
"
))
this
.
getList
()
})
}
},
},
watch
:{
selectCustomerList
(
val
){
if
(
val
.
length
===
0
){
watch
:
{
selectCustomerList
(
val
)
{
if
(
val
.
length
===
0
)
{
this
.
getList
()
this
.
$refs
.
multipleTable
.
clearSelection
();
this
.
$refs
.
multipleTable
.
clearSelection
()
}
}
},
},
computed
:{
isChinese
(){
return
this
.
$i18n
.
locale
===
'
zh_CN
'
computed
:
{
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
},
channel
()
{
return
(
val
)
=>
{
...
...
@@ -864,20 +843,18 @@ export default {
.
filter
((
i
)
=>
(
val
.
split
(
"
,
"
)
||
[]).
includes
(
i
.
value
))
.
map
((
i
)
=>
(
this
.
isChinese
?
i
.
label
:
i
.
labelEn
))
.
join
(
"
,
"
)
:
""
;
}
;
:
""
}
},
customerSelectFn
()
{
if
(
this
.
recommended
.
length
>
0
)
{
let
i
=
this
.
customerSelect
.
find
(
(
item
)
=>
item
.
id
===
this
.
recommended
[
0
].
id
);
let
i
=
this
.
customerSelect
.
find
((
item
)
=>
item
.
id
===
this
.
recommended
[
0
].
id
)
if
(
!
i
)
{
this
.
customerSelect
.
push
(
this
.
recommended
[
0
])
;
this
.
customerSelect
.
push
(
this
.
recommended
[
0
])
}
return
this
.
customerSelect
;
return
this
.
customerSelect
}
else
{
return
this
.
customerSelect
;
return
this
.
customerSelect
}
},
combinedQueryParams
()
{
...
...
@@ -899,26 +876,26 @@ export default {
queryParams
.
endFirstDealTime
=
this
.
firstDealTime
[
1
]
}
if
(
this
.
weightYearly
.
value
)
{
let
key
=
'
eqWeightYearly
'
if
(
this
.
weightYearly
.
key
==
'
leNumberKey
'
)
{
key
=
'
leWeightYearly
'
}
else
if
(
this
.
weightYearly
.
key
==
'
geNumberKey
'
)
{
key
=
'
geWeightYearly
'
let
key
=
"
eqWeightYearly
"
if
(
this
.
weightYearly
.
key
==
"
leNumberKey
"
)
{
key
=
"
leWeightYearly
"
}
else
if
(
this
.
weightYearly
.
key
==
"
geNumberKey
"
)
{
key
=
"
geWeightYearly
"
}
queryParams
[
key
]
=
this
.
weightYearly
.
value
;
queryParams
[
key
]
=
this
.
weightYearly
.
value
}
if
(
this
.
numYearly
.
value
)
{
let
key
=
'
eqNumYearly
'
if
(
this
.
numYearly
.
key
==
'
leNumberKey
'
)
{
key
=
'
leNumYearly
'
}
else
if
(
this
.
numYearly
.
key
==
'
geNumberKey
'
)
{
key
=
'
geNumYearly
'
let
key
=
"
eqNumYearly
"
if
(
this
.
numYearly
.
key
==
"
leNumberKey
"
)
{
key
=
"
leNumYearly
"
}
else
if
(
this
.
numYearly
.
key
==
"
geNumberKey
"
)
{
key
=
"
geNumYearly
"
}
queryParams
[
key
]
=
this
.
numYearly
.
value
;
queryParams
[
key
]
=
this
.
numYearly
.
value
}
return
queryParams
;
}
,
return
queryParams
}
}
}
;
}
</
script
>
src/views/ecw/myCustomerService/index.vue
View file @
1ad37a34
...
...
@@ -17,16 +17,16 @@
<el-form-item
:label=
"$t('联系方式')"
>
<el-input
:placeholder=
"$t('请输入联系方式')"
clearable
v-model.trim=
"queryParams.defaultContactPhone"
@
input=
"queryParams.defaultContactPhone = queryParams.defaultContactPhone.replace(/\s+/g, '')"
></el-input>
</el-form-item>
<!--
<el-form-item
:label=
"$t('部门')"
v-if=
"path != '/customer/department-customers'"
>
-->
<!--
<el-select
v-model=
"queryParams.deptIds"
:placeholder=
"$t('请选择部门')"
>
-->
<!--
<el-option
v-for=
"item in deptList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
-->
<!--
</el-select>
-->
<!--
</el-form-item>
-->
<!--
<el-form-item
:label=
"$t('客户经理')"
prop=
"customerService"
>
-->
<!--
<el-select
multiple
clearable
v-model=
"queryParams.customerService"
:placeholder=
"$t('请选择客户经理')"
size=
"small"
@
change=
"handleQuery"
>
-->
<!--
<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=
"$t('部门')"
v-if=
"path != '/customer/department-customers'"
>
-->
<!--
<el-select
v-model=
"queryParams.deptIds"
:placeholder=
"$t('请选择部门')"
>
-->
<!--
<el-option
v-for=
"item in deptList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
-->
<!--
</el-select>
-->
<!--
</el-form-item>
-->
<!--
<el-form-item
:label=
"$t('客户经理')"
prop=
"customerService"
>
-->
<!--
<el-select
multiple
clearable
v-model=
"queryParams.customerService"
:placeholder=
"$t('请选择客户经理')"
size=
"small"
@
change=
"handleQuery"
>
-->
<!--
<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=
"$t('客户来源')"
prop=
"source"
>
<el-select
multiple
clearable
v-model=
"queryParams.source"
:placeholder=
"$t('请选择客户来源')"
size=
"small"
@
change=
"handleQuery"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
...
...
@@ -222,21 +222,21 @@
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('主联系人')"
prop=
"defaultContactName"
></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{ row }">-->
<!-- +{{ row.defaultContactPhone }} <br />-->
<!-- <contacts :id="row.id">-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{ row }">-->
<!-- +{{ row.defaultContactPhone }} <br />-->
<!-- <contacts :id="row.id">-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column
:label=
"$t('最新跟进时间')"
width=
"120"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
{{
parseTime
(
scope
.
row
.
followupBackVO
.
followTime
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('最新跟进记录')"
width=
"120"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<a
href=
"javascript:void(0)"
@
click=
"handleCustomerFollowLink(scope.row.followupBackVO)"
class=
"link-type"
>
{{
scope
.
row
.
followupBackVO
.
number
}}
</a>
</
template
>
</el-table-column>
...
...
@@ -373,7 +373,7 @@
<!-- 分页组件 -->
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<customer-follow-list
:customer-id=
"customerId"
:id=
"customerId"
:customer-service=
"customerService"
:customer-number=
"customerNumber"
ref=
"CustomerFollowList"
v-if=
"customerFollowVisible"
></customer-follow-list>
<customer-follow
ref=
"customerFollow"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
/>
<customer-follow
ref=
"customerFollow"
@
close=
"customerFollowVisible = false"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
/>
<customer-complaints
ref=
"customerComplaint"
:customer-id.sync=
"customerId"
></customer-complaints>
<transfer-customer
:show.sync=
"show"
:customer-ids.sync=
"selectCustomerList"
></transfer-customer>
<customer-setting
ref=
"customerSetting"
@
refresh=
"getList"
></customer-setting>
...
...
@@ -399,7 +399,7 @@ import { getNodeList } from "@/api/ecw/node"
import
{
getCustomerSelect
,
changeCustomerDefaultPay
,
changeCustomerNoConsignee
,
changeCustomerDefaultBilling
}
from
"
@/api/ecw/customer
"
import
{
getProductTypeList
}
from
"
@/api/ecw/productType
"
import
{
getProductList
}
from
"
@/api/ecw/product
"
import
CompetitorSelector
from
"
@/components/CompetitorSelector/index.vue
"
;
import
CompetitorSelector
from
"
@/components/CompetitorSelector/index.vue
"
export
default
{
name
:
"
EcwMyCustomerServiceIndex
"
,
components
:
{
...
...
src/views/ecw/offer/detail.vue
View file @
1ad37a34
...
...
@@ -7,7 +7,7 @@
<span
style=
"font-size: 15px"
></span>
<div
class=
"btns"
>
<el-button
v-hasPermi=
"['ecw:offer:update']"
size=
"mini"
type=
"primary"
v-if=
"[4, 5, 6].indexOf(list.status) == -1"
@
click=
"$router.push('edit?id=' + offerId)"
>
{{
$t
(
"
编辑
"
)
}}
</el-button>
<el-button
v-hasPermi=
"['ecw:offer:loglist']"
type=
"primary"
v-if=
"[1, 3, 7].indexOf(list.status) > -1"
size=
"mini"
@
click=
"handleAdd"
>
{{
$t
(
"
跟进
"
)
}}
</el-button>
<el-button
v-hasPermi=
"['ecw:offer:loglist']"
type=
"primary"
v-if=
"[1, 3, 7].indexOf(list.status) > -1"
size=
"mini"
@
click=
"handleAdd
Offer
"
>
{{
$t
(
"
跟进
"
)
}}
</el-button>
<el-button
v-hasPermi=
"['ecw:offer:result']"
type=
"primary"
v-if=
"[3, 7].indexOf(list.status) > -1"
size=
"mini"
@
click=
"toResult"
>
{{
$t
(
"
结果
"
)
}}
</el-button>
<el-button
v-hasPermi=
"['ecw:offer:discount', 'ecw:offer:commission']"
size=
"mini"
v-if=
"[1, 3, 7].indexOf(list.status) > -1"
type=
"primary"
@
click.native=
"$router.push('/offer/special?offerId=' + offerId)"
>
{{
$t
(
"
特价
"
)
}}
</el-button>
<el-button
v-hasPermi=
"['ecw:offer:delete']"
type=
"danger"
size=
"mini"
@
click=
"handleDelete"
>
{{
$t
(
"
删除
"
)
}}
</el-button>
...
...
@@ -313,7 +313,7 @@
</el-descriptions-item>
</el-descriptions>
</el-card>
<customer-follow
ref=
"customerFollow"
v-if=
"customerFollowVisible"
:customerService=
"curData.salesmanId"
:customerNumber=
"curData.customerNumber"
:offerId=
"offerId"
/>
<customer-follow
ref=
"customerFollow"
v-if=
"customerFollowVisible"
@
close=
"customerFollowVisible = false"
:customerService=
"curData.salesmanId"
:customerNumber=
"curData.customerNumber"
:offerId=
"offerId"
/>
</div>
</template>
...
...
@@ -521,14 +521,13 @@ export default {
getTradeCityList
().
then
((
res
)
=>
(
this
.
tradeCityList
=
res
.
data
))
getProductAttrList
().
then
((
res
)
=>
(
this
.
productAttrList
=
res
.
data
))
if
(
this
.
$route
.
query
.
offerId
)
{
this
.
offerId
=
this
.
$route
.
query
.
offerId
this
.
offerId
=
parseInt
(
this
.
$route
.
query
.
offerId
)
this
.
getList
()
}
},
methods
:
{
handleAddOffer
(
row
)
{
console
.
log
(
row
)
this
.
curData
=
row
handleAddOffer
()
{
this
.
curData
=
this
.
list
this
.
customerFollowVisible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
[
"
customerFollow
"
].
handleAdd
()
...
...
@@ -784,4 +783,13 @@ export default {
.card
{
margin-top
:
20px
;
}
/
deep
/
.el-table__fixed-footer-wrapper
tbody
td
.el-table__cell
{
font-size
:
16px
;
font-weight
:
bold
;
}
/
deep
/
.el-table__footer-wrapper
tbody
td
.el-table__cell
{
font-size
:
20px
;
font-weight
:
bold
;
}
</
style
>
src/views/ecw/offer/logListCommon.vue
View file @
1ad37a34
...
...
@@ -52,10 +52,8 @@
</el-form-item>
</div>
</el-form>
</div>
<!-- 操作工具栏 -->
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
...
...
@@ -125,7 +123,7 @@
</el-table>
<pagination
:total=
"customerFollowTotal"
:page.sync=
"followForm.pageNo"
:limit.sync=
"followForm.pageSize"
@
pagination=
"getCustomerFollowList"
/>
</el-card>
<customer-follow
ref=
"customerFollow"
@
handleCustomerFollowAdd=
"handleCustomerFollowAdd"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
:customer-id=
"customerId"
:customerService=
"customerService"
:customerNumber=
"customerNumber"
/>
<customer-follow
ref=
"customerFollow"
@
close=
"customerFollowVisible = false"
@
handleCustomerFollowAdd=
"handleCustomerFollowAdd"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
:customer-id=
"customerId"
:customerService=
"customerService"
:customerNumber=
"customerNumber"
/>
<customer-follow-update-status
:show.sync=
"updateStatus"
:followup-ids.sync=
"selectCustomerFollowList"
></customer-follow-update-status>
</div>
</template>
...
...
@@ -135,10 +133,10 @@ import { getCustomerFollowList, exportCustomerFollow } from "@/api/ecw/customerF
import
{
getDictDatas
,
DICT_TYPE
,
getDictDatas2
}
from
"
@/utils/dict
"
import
CustomerFollow
from
"
@/views/ecw/customer/components/customerFollow
"
import
UserSelector
from
"
@/components/UserSelector
"
import
customerFollowUpdateStatus
from
"
@/views/ecw/customer/components/customerFollowUpdateStatus.vue
"
;
import
customerFollowUpdateStatus
from
"
@/views/ecw/customer/components/customerFollowUpdateStatus.vue
"
export
default
{
name
:
"
logListCommon
"
,
components
:
{
customerFollowUpdateStatus
,
UserSelector
,
CustomerFollow
},
components
:
{
customerFollowUpdateStatus
,
UserSelector
,
CustomerFollow
},
props
:
[
"
customerId
"
,
"
offerId
"
,
"
customerService
"
,
"
customerNumber
"
],
data
()
{
return
{
...
...
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