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
9482381f
Commit
9482381f
authored
Nov 09, 2024
by
zs嵩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
报价单,客户等相关优化 bug处理
parent
bed4bb1d
Changes
11
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
1048 additions
and
1015 deletions
+1048
-1015
main.js
src/main.js
+1
-0
custom.scss
src/styles/custom.scss
+17
-0
index.scss
src/styles/index.scss
+2
-18
customerFollow.vue
src/views/ecw/customer/components/customerFollow.vue
+9
-2
customerFollowSelectOffer.vue
...ews/ecw/customer/components/customerFollowSelectOffer.vue
+44
-48
edit.vue
src/views/ecw/customer/edit.vue
+0
-1
query.vue
src/views/ecw/customer/query.vue
+118
-110
detail.vue
src/views/ecw/offer/detail.vue
+777
-784
edit.vue
src/views/ecw/offer/edit.vue
+3
-1
index.vue
src/views/ecw/offer/index.vue
+16
-3
logListCommon.vue
src/views/ecw/offer/logListCommon.vue
+61
-48
No files found.
src/main.js
View file @
9482381f
...
...
@@ -96,6 +96,7 @@ import '@/icons'
import
axios
from
'
axios
'
Vue
.
prototype
.
$axios
=
axios
import
'
@/styles/index.scss
'
import
'
@/styles/custom.scss
'
/**
* If you don't want to use mock-server
...
...
src/styles/custom.scss
0 → 100644
View file @
9482381f
.search-z
{
.el-form-item--small.el-form-item
{
width
:
360px
;
}
}
.search-time
{
.el-form-item--small.el-form-item
{
width
:
520px
;
}
}
.flex-c-c
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
}
src/styles/index.scss
View file @
9482381f
...
...
@@ -109,7 +109,7 @@ textarea {
font-size
:
12px
;
&
:hover
{
background
:
rgba
(
210
,
23
,
23
,
0
.5
)
background
:
rgba
(
210
,
23
,
23
,
0
.5
)
;
}
}
...
...
@@ -144,7 +144,7 @@ textarea {
}
.el-icon-plus
{
color
:
#409
EFF
;
color
:
#409
eff
;
}
.el-icon-delete
{
...
...
@@ -152,10 +152,6 @@ textarea {
}
}
.el-scrollbar__view
{
/*overflow-x: hidden;*/
}
.el-rate
{
display
:
inline-block
;
vertical-align
:
text-top
;
...
...
@@ -164,15 +160,3 @@ textarea {
.el-upload__tip
{
line-height
:
1
.2
;
}
.search-z
{
.el-form-item--small.el-form-item
{
width
:
360px
;
}
}
.search-time
{
.el-form-item--small.el-form-item
{
width
:
520px
;
}
}
src/views/ecw/customer/components/customerFollow.vue
View file @
9482381f
...
...
@@ -146,6 +146,7 @@
</div>
</el-dialog>
<choose-contact-dialog
v-if=
"ChooseContactDialog"
:type=
"2"
@
choose=
"changeAllContactUser"
@
close=
"ChooseContactDialog = false"
/>
<CustomerFollowSelectOffer
v-if=
"CustomerFollowSelectOffer"
:customer-id=
"customerId"
ref=
"customerFollowSelectOffer"
@
select=
"selectOffer"
@
close=
"CustomerFollowSelectOffer = false"
/>
</div>
</
template
>
<
style
lang=
"scss"
scoped
>
...
...
@@ -172,6 +173,7 @@ import { parseTime } from "@/utils/ruoyi"
import
FileUpload
from
"
@/components/FileUpload/fileUpload
"
import
{
formatDate
}
from
"
@/utils/index
"
import
ChooseContactDialog
from
"
@/components/ChooseContactDialog
"
import
CustomerFollowSelectOffer
from
"
./customerFollowSelectOffer
"
export
default
{
/**
* 客户跟进
...
...
@@ -188,10 +190,12 @@ export default {
},
components
:
{
ChooseContactDialog
,
CustomerFollowSelectOffer
,
FileUpload
},
data
()
{
return
{
CustomerFollowSelectOffer
:
false
,
ChooseContactDialog
:
false
,
fileType
:
[
"
doc
"
,
"
xls
"
,
"
ppt
"
,
"
txt
"
,
"
pdf
"
,
"
png
"
,
"
jpg
"
,
"
jpeg
"
],
DICT_TYPE
,
...
...
@@ -242,6 +246,9 @@ export default {
})
},
methods
:
{
selectOffer
(
offerId
)
{
this
.
form
.
offerId
=
offerId
},
init
()
{
if
(
this
.
form
.
customerId
)
{
getCustomerContactsListByCustomer
({
...
...
@@ -305,7 +312,7 @@ export default {
handleFollowType
(
val
)
{
console
.
log
(
val
)
if
(
val
==
"
2
"
)
{
this
.
$refs
[
"
customerFollowSelectOffer
"
].
offerDialogVisible
=
true
this
.
CustomerFollowSelectOffer
=
true
}
else
{
this
.
form
.
offerId
=
undefined
}
...
...
@@ -326,7 +333,7 @@ export default {
nextPlan
:
undefined
,
nextTime
:
undefined
,
number
:
undefined
,
offerId
:
undefine
d
,
offerId
:
this
.
offerI
d
,
parentId
:
undefined
,
parentNumber
:
undefined
,
purpose
:
undefined
,
...
...
src/views/ecw/customer/components/customerFollowSelectOffer.vue
View file @
9482381f
<
template
>
<el-dialog
append-to-body
:title=
"$t('报价单')"
:visible.sync=
"offerDialogVisible"
:close-on-click-modal=
"false"
width=
"80%"
>
<el-dialog
append-to-body
:title=
"$t('报价单')"
:visible.sync=
"offerDialogVisible"
:close-on-click-modal=
"false"
width=
"80%"
@
close=
"$emit('close')"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
label-width=
"100px"
>
<el-form-item
:label=
"$t('编号')"
prop=
"searchNumber"
>
<el-input
v-model=
"queryParams.searchNumber"
:placeholder=
"$t('请输入报价单号、订单号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
<el-input
v-model=
"queryParams.searchNumber"
:placeholder=
"$t('请输入报价单号、订单号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('客户')"
prop=
"searchCustomer"
>
<el-input
v-model=
"queryParams.searchCustomer"
:placeholder=
"$t('请输入客户')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
<el-input
v-model=
"queryParams.searchCustomer"
:placeholder=
"$t('请输入客户')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('客户经理')"
prop=
"followUpSalesmanId"
>
<user-selector
v-model=
"queryParams.followUpSalesmanId"
clearable
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
'
重置
'
)
}}
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
"
搜索
"
)
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
"
重置
"
)
}}
</el-button>
</el-form-item>
</el-form>
<el-table
:data=
"offerList"
border
size=
"mini"
>
<el-table-column
align=
"center"
width=
"80"
>
<template
slot-scope=
"
{
row
}">
<template
slot-scope=
"
{
row
}">
<el-radio
v-model=
"offerId"
:label=
"row.offerId"
>
</el-radio>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('报价单号')"
min-width=
"160px"
>
<
template
slot-scope=
"{
row
}"
>
<el-link
type=
"primary"
@
click.native=
"$router.push('/offer/detail?offerId=' + row.offerId)"
>
{{
row
.
number
}}
</el-link>
<
template
slot-scope=
"{
row
}"
>
<el-link
type=
"primary"
@
click.native=
"$router.push('/offer/detail?offerId=' + row.offerId)"
>
{{
row
.
number
}}
</el-link>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('销售阶段')"
min-width=
"120"
>
<
template
slot-scope=
"{
row
}"
>
<
template
slot-scope=
"{
row
}"
>
<dict-tag
:type=
"DICT_TYPE.ECW_OFFER_STATUS"
:value=
"row.status"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('订单编号')"
min-width=
"150px"
>
<
template
slot-scope=
"{
row
}"
>
<el-link
type=
"primary"
@
click.native=
"$router.push('/order/detail?orderId=' + row.orderId)"
>
{{
row
.
orderNo
}}
</el-link>
<
template
slot-scope=
"{
row
}"
>
<el-link
type=
"primary"
@
click.native=
"$router.push('/order/detail?orderId=' + row.orderId)"
>
{{
row
.
orderNo
}}
</el-link>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('客户编号')"
align=
"center"
min-width=
"100"
>
<
template
slot-scope=
"{
row
}"
>
<el-link
type=
"primary"
@
click.native=
"$router.push('/customer/query/' + row.relationId)"
>
{{
row
.
customerNumber
}}
</el-link>
<
template
slot-scope=
"{
row
}"
>
<el-link
type=
"primary"
@
click.native=
"$router.push('/customer/query/' + row.relationId)"
>
{{
row
.
customerNumber
}}
</el-link>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('客户名称')"
align=
"center"
prop=
"relationName"
min-width=
"100"
/>
<el-table-column
:label=
"$t('联系方式')"
>
<
template
slot-scope=
"scope"
>
+
{{
scope
.
row
.
relationAreaCode
}}{{
scope
.
row
.
relationPhone
}}
</
template
>
<
template
slot-scope=
"scope"
>
+
{{
scope
.
row
.
relationAreaCode
}}{{
scope
.
row
.
relationPhone
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('运输方式')"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
:value=
"scope.row.transportId"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('渠道')"
align=
"center"
min-width=
"120"
prop=
"channelName"
>
</el-table-column>
<el-table-column
:label=
"$t('始发地')"
align=
"center"
min-width=
"120"
prop=
"departureName"
>
</el-table-column>
<el-table-column
:label=
"$t('渠道')"
align=
"center"
min-width=
"120"
prop=
"channelName"
>
</el-table-column>
<el-table-column
:label=
"$t('始发地')"
align=
"center"
min-width=
"120"
prop=
"departureName"
>
</el-table-column>
<el-table-column
:label=
"$t('目的地')"
align=
"center"
prop=
"objectiveName"
min-width=
"120"
/>
<el-table-column
:label=
"$t('预计销售额')"
min-width=
"160"
>
<
template
slot-scope=
"{
row
}"
>
<
template
slot-scope=
"{
row
}"
>
<div
class=
""
v-for=
"(item, feeIndex) in row.estCostVO.feeDtoList"
:key=
"feeIndex"
>
<dict-tag
:type=
"DICT_TYPE.ECW_COST_FEE_TYPE"
:value=
"item.feeType"
/>
{{
item
.
amount
}}
{{
currencyMap
[
item
.
currencyId
]
}}
{{
item
.
amount
}}
{{
currencyMap
[
item
.
currencyId
]
}}
</div>
</
template
>
</el-table-column>
...
...
@@ -73,18 +69,17 @@
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination
v-show=
"offerTotal > 0"
:total=
"offerTotal"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getOfferList"
/>
<pagination
v-show=
"offerTotal > 0"
:total=
"offerTotal"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getOfferList"
/>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"confirm"
>
{{
$t('确 定')
}}
</el-button>
<el-button
type=
"primary"
@
click=
"confirm"
>
{{
$t("确 定")
}}
</el-button>
</div>
</el-dialog>
</template>
<
script
>
import
{
getCurrencyList
}
from
'
@/api/ecw/currency
'
;
import
{
getCurrencyList
}
from
"
@/api/ecw/currency
"
import
{
getOfferPage
}
from
"
@/api/ecw/offer
"
import
UserSelector
from
'
@/components/UserSelector
'
import
UserSelector
from
"
@/components/UserSelector
"
export
default
{
name
:
"
CustomerFollowSelectOffer
"
,
...
...
@@ -104,35 +99,36 @@ export default {
},
offerList
:
[],
offerTotal
:
0
,
currencyList
:
[]
,
currencyList
:
[]
}
},
created
()
{
getCurrencyList
().
then
(
res
=>
{
getCurrencyList
().
then
(
(
res
)
=>
{
this
.
currencyList
=
res
.
data
})
this
.
getOfferList
()
this
.
offerDialogVisible
=
true
},
computed
:{
currencyMap
(){
let
map
=
{}
this
.
currencyList
.
forEach
(
item
=>
{
map
[
item
.
id
]
=
this
.
$l
(
item
,
'
title
'
)
})
return
map
computed
:
{
currencyMap
()
{
let
map
=
{}
this
.
currencyList
.
forEach
((
item
)
=>
{
map
[
item
.
id
]
=
this
.
$l
(
item
,
"
title
"
)
})
return
map
},
exportCityList
()
{
return
this
.
tradeCityList
.
filter
(
item
=>
item
.
type
==
2
)
return
this
.
tradeCityList
.
filter
(
(
item
)
=>
item
.
type
==
2
)
},
importCityList
()
{
return
this
.
tradeCityList
.
filter
(
item
=>
item
.
type
==
1
)
}
,
return
this
.
tradeCityList
.
filter
(
(
item
)
=>
item
.
type
==
1
)
}
},
methods
:
{
/** 搜索按钮操作 */
handleQuery
()
{
this
.
queryParams
.
pageNo
=
1
;
this
.
queryParams
.
pageNo
=
1
this
.
getOfferList
()
},
/** 重置按钮操作 */
...
...
@@ -141,20 +137,20 @@ export default {
pageNo
:
1
,
pageSize
:
10
}
this
.
handleQuery
()
;
this
.
handleQuery
()
},
getOfferList
()
{
getOfferPage
({
...
this
.
queryParams
,
customerId
:
this
.
customerId
}).
then
(
response
=>
{
this
.
offerList
=
response
.
data
.
list
;
this
.
offerTotal
=
response
.
data
.
total
;
})
;
}).
then
(
(
response
)
=>
{
this
.
offerList
=
response
.
data
.
list
this
.
offerTotal
=
response
.
data
.
total
})
},
confirm
()
{
if
(
this
.
offerId
)
{
this
.
$emit
(
'
select
'
,
this
.
offerId
)
this
.
$emit
(
"
select
"
,
this
.
offerId
)
this
.
offerDialogVisible
=
false
}
else
{
this
.
$message
.
error
(
this
.
$t
(
"
请选择报价单
"
))
...
...
@@ -162,4 +158,4 @@ export default {
}
}
}
</
script
>
\ No newline at end of file
</
script
>
src/views/ecw/customer/edit.vue
View file @
9482381f
...
...
@@ -1005,7 +1005,6 @@ export default {
this
.
$refs
.
bankForm
.
validate
((
valid3
,
err3
)
=>
{
console
.
log
(
valid3
,
"
valid3
"
,
err3
)
if
(
!
valid1
||
!
valid2
||
!
valid3
)
{
console
.
log
(
333
)
this
.
$showFormValidateErrors
({
...
err1
,
...
err2
,
...
err3
})
this
.
showBaseFlag
=
true
...
...
src/views/ecw/customer/query.vue
View file @
9482381f
This diff is collapsed.
Click to expand it.
src/views/ecw/offer/detail.vue
View file @
9482381f
This diff is collapsed.
Click to expand it.
src/views/ecw/offer/edit.vue
View file @
9482381f
...
...
@@ -411,7 +411,7 @@
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('竞争对手')"
prop=
"competitor"
>
<el-select
clearable
v-model=
"form.competitor"
:placeholder=
"$t('请选择')"
class=
"w-200"
@
change=
"changeCompetitor"
>
<el-select
filterable
clearable
v-model=
"form.competitor"
:placeholder=
"$t('请选择')"
class=
"w-200"
@
change=
"changeCompetitor"
>
<el-option
v-for=
"item in competitorList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.name"
/>
<el-option
:label=
"$t('其他')"
:value=
"0"
/>
</el-select>
...
...
@@ -1185,6 +1185,8 @@ export default {
formData
.
stopTime
=
""
}
formData
.
channelId
=
formData
.
channelId
||
null
this
.
$set
(
this
,
"
form
"
,
formData
)
// 接口只返回了发货人和收货人ID,还需要调用接口获取详细信息回显
getCustomerContactsSelect
({
...
...
src/views/ecw/offer/index.vue
View file @
9482381f
...
...
@@ -180,7 +180,7 @@
<
el
-
dropdown
-
item
@
click
.
native
=
"
$router.push('detail?offerId=' + scope.row.offerId)
"
v
-
hasPermi
=
"
['ecw:offer:show']
"
>
{{
$t
(
"
详情
"
)
}}
<
/el-dropdown-item
>
<
el
-
dropdown
-
item
@
click
.
native
=
"
$router.push('edit?id=' + scope.row.offerId)
"
v
-
if
=
"
[1, 2, 3, 7].indexOf(scope.row.status) > -1
"
v
-
hasPermi
=
"
['ecw:offer:update']
"
>
{{
$t
(
"
编辑
"
)
}}
<
/el-dropdown-item
>
<
el
-
dropdown
-
item
@
click
.
native
=
"
$router.push('create?copyId=' + scope.row.offerId)
"
v
-
if
=
"
[1, 2, 3, 7].indexOf(scope.row.status) > -1
"
v
-
hasPermi
=
"
['ecw:offer:update']
"
>
{{
$t
(
"
复制
"
)
}}
<
/el-dropdown-item
>
<
el
-
dropdown
-
item
@
click
.
native
=
"
$router.push(`logList?offerId=${scope.row.offerId
}
&customerId=${scope.row.customerId
}
`)
"
v
-
if
=
"
[1, 3, 7].indexOf(scope.row.status) > -1
"
v
-
hasPermi
=
"
['ecw:offer:loglist']
"
>
{{
$t
(
"
跟进
"
)
}}
<
/el-dropdown-item
>
<
el
-
dropdown
-
item
@
click
.
native
=
"
handleAddOffer(scope.row)
"
v
-
if
=
"
[1, 3, 7].indexOf(scope.row.status) > -1
"
>
{{
$t
(
"
跟进
"
)
}}
<
/el-dropdown-item
>
<
el
-
dropdown
-
item
@
click
.
native
=
"
$router.push(`result?offerId=${scope.row.offerId
}
&number=${scope.row.number
}
`)
"
v
-
if
=
"
[3, 7].indexOf(scope.row.status) > -1
"
v
-
hasPermi
=
"
['ecw:offer:result']
"
>
{{
$t
(
"
结果
"
)
}}
<
/el-dropdown-item
>
<
el
-
dropdown
-
item
@
click
.
native
=
"
$router.push('/offer/special?offerId=' + scope.row.offerId)
"
v
-
if
=
"
[1, 3, 7].indexOf(scope.row.status) > -1
"
v
-
hasPermi
=
"
['ecw:offer:discount', 'ecw:offer:commission']
"
>
{{
$t
(
"
特价
"
)
}}
<
/el-dropdown-item
>
<
el
-
dropdown
-
item
@
click
.
native
=
"
cancel(scope.row.offerId)
"
v
-
if
=
"
[1, 3, 7].indexOf(scope.row.status) > -1
"
v
-
hasPermi
=
"
['ecw:offer:cancel']
"
>
{{
$t
(
"
取消
"
)
}}
<
/el-dropdown-item
>
...
...
@@ -193,6 +193,7 @@
<
/el-table
>
<!--
分页组件
-->
<
pagination
v
-
show
=
"
total > 0
"
:
total
=
"
total
"
:
page
.
sync
=
"
queryParams.pageNo
"
:
limit
.
sync
=
"
queryParams.pageSize
"
@
pagination
=
"
getList
"
/>
<
CustomerFollow
ref
=
"
customerFollow
"
@
refresh
=
"
handleQuery
"
v
-
if
=
"
customerFollowVisible
"
:
customer
-
id
=
"
curData.relationId
"
:
customerService
=
"
curData.salesmanId
"
:
customerNumber
=
"
curData.customerNumber
"
:
offerId
=
"
curData.offerId
"
/>
<
/div
>
<
/template
>
...
...
@@ -205,16 +206,19 @@ import { getTradeCityList } from "@/api/ecw/region"
import
{
getWarehouseList
}
from
"
@/api/ecw/warehouse
"
import
UserSelector
from
"
@/components/UserSelector
"
import
Selector
from
"
@/components/Selector
"
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
import
CustomerFollow
from
"
@/views/ecw/customer/components/customerFollow
"
export
default
{
name
:
"
EcwOfferIndex
"
,
components
:
{
Template
,
Selector
,
UserSelector
UserSelector
,
CustomerFollow
}
,
data
()
{
return
{
customerFollowVisible
:
false
,
// 遮罩层
loading
:
true
,
// 导出遮罩层
...
...
@@ -259,6 +263,7 @@ export default {
cityList
:
[],
//目的仓
destWarehouseList
:
[],
curData
:
{
}
,
dept
:
false
// 是否部门订单
}
}
,
...
...
@@ -440,6 +445,14 @@ export default {
}
}
,
methods
:
{
handleAddOffer
(
row
)
{
console
.
log
(
row
)
this
.
curData
=
row
this
.
customerFollowVisible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
[
"
customerFollow
"
].
handleAdd
()
}
)
}
,
init
()
{
//加载时发起请求获取所有省份值
getRegionList
(
1
,
1
)
...
...
src/views/ecw/offer/logListCommon.vue
View file @
9482381f
...
...
@@ -3,52 +3,58 @@
<el-card
class=
"box-card"
>
<div
slot=
"header"
class=
"clearfix"
>
<el-form
size=
"small"
:inline=
"true"
label-width=
"100px"
>
<el-form-item
:label=
"$t('编号')"
prop=
"number"
>
<el-input
v-model.trim=
"followForm.number"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('报价单号')"
prop=
"offerNumber"
>
<el-input
v-model.trim=
"followForm.offerNumber"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('联系人')"
prop=
"contactName"
>
<el-input
v-model.trim=
"followForm.contactName"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('联系方式')"
prop=
"contactPhone"
>
<el-input
v-model.trim=
"followForm.contactPhone"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('客户经理')"
prop=
"followUserIds"
>
<user-selector
v-model=
"followForm.followUserIds"
multiple
clearable
@
input=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('下次跟进时间')"
>
<el-date-picker
v-model=
"followFormTmp.nextTime"
type=
"datetimerange"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
value-format=
"yyyy-MM-dd HH:mm:ss"
@
change=
"handleQuery"
>
</el-date-picker>
</el-form-item>
<el-form-item
:label=
"$t('关联跟进记录')"
prop=
"parentNumber"
>
<el-input
v-model.trim=
"followForm.parentNumber"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<div
class=
"search-z"
>
<el-form-item
:label=
"$t('编号')"
prop=
"number"
>
<el-input
v-model.trim=
"followForm.number"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('报价单号')"
prop=
"offerNumber"
>
<el-input
v-model.trim=
"followForm.offerNumber"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('联系人')"
prop=
"contactName"
>
<el-input
v-model.trim=
"followForm.contactName"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('联系方式')"
prop=
"contactPhone"
>
<el-input
v-model.trim=
"followForm.contactPhone"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('客户经理')"
prop=
"followUserIds"
>
<user-selector
v-model=
"followForm.followUserIds"
multiple
clearable
@
input=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('关联跟进记录')"
prop=
"parentNumber"
>
<el-input
v-model.trim=
"followForm.parentNumber"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('跟进类型')"
>
<dict-selector
clearable
:type=
"DICT_TYPE.CUSTOMER_FOLLOWUP_TYPE"
v-model=
"followForm.followType"
@
input=
"handleQuery"
></dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('跟进方式')"
>
<dict-selector
clearable
:type=
"DICT_TYPE.CUSTOMER_FOLLOWUP_METHOD"
v-model=
"followForm.followMethod"
@
input=
"handleQuery"
></dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('跟进结果')"
>
<el-select
clearable
v-model=
"followForm.resultType"
:placeholder=
"$t('请选择')"
size=
"small"
@
change=
"handleQuery"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_RESULT_TYPE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('跟进状态')"
>
<el-select
clearable
v-model=
"followForm.status"
:placeholder=
"$t('请选择')"
size=
"small"
@
change=
"handleQuery"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_STATUS)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"getCustomerFollowList"
>
{{
$t
(
"
搜索
"
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"reset"
>
{{
$t
(
"
重置
"
)
}}
</el-button>
<el-button
type=
"success"
@
click=
"handleAdd"
v-hasPermi=
"['ecw:customer:follow-create']"
>
{{
$t
(
"
新增
"
)
}}
</el-button>
<el-button
type=
"warning"
@
click=
"handleExport"
v-hasPermi=
"['ecw:customer:follow-export']"
>
{{
$t
(
"
导出
"
)
}}
</el-button>
</el-form-item>
<el-form-item
:label=
"$t('跟进类型')"
>
<dict-selector
clearable
:type=
"DICT_TYPE.CUSTOMER_FOLLOWUP_TYPE"
v-model=
"followForm.followType"
@
input=
"handleQuery"
></dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('跟进方式')"
>
<dict-selector
clearable
:type=
"DICT_TYPE.CUSTOMER_FOLLOWUP_METHOD"
v-model=
"followForm.followMethod"
@
input=
"handleQuery"
></dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('跟进结果')"
>
<el-select
clearable
v-model=
"followForm.resultType"
:placeholder=
"$t('请选择')"
size=
"small"
@
change=
"handleQuery"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_RESULT_TYPE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('跟进状态')"
>
<el-select
clearable
v-model=
"followForm.status"
:placeholder=
"$t('请选择')"
size=
"small"
@
change=
"handleQuery"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_STATUS)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
</div>
<div
class=
"search-time"
>
<el-form-item
:label=
"$t('下次跟进时间')"
>
<el-date-picker
v-model=
"followFormTmp.nextTime"
type=
"datetimerange"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
value-format=
"yyyy-MM-dd HH:mm:ss"
@
change=
"handleQuery"
>
</el-date-picker>
</el-form-item>
<el-form-item
style=
"padding-left: 20px; width: auto"
>
<div
class=
"flex-c-c"
>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"getCustomerFollowList"
>
{{
$t
(
"
搜索
"
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"reset"
>
{{
$t
(
"
重置
"
)
}}
</el-button>
<el-button
type=
"success"
@
click=
"handleAdd"
v-hasPermi=
"['ecw:customer:follow-create']"
>
{{
$t
(
"
新增
"
)
}}
</el-button>
<el-button
type=
"warning"
@
click=
"handleExport"
v-hasPermi=
"['ecw:customer:follow-export']"
>
{{
$t
(
"
导出
"
)
}}
</el-button>
</div>
</el-form-item>
</div>
</el-form>
</div>
<el-table
:data=
"customerFollowList"
style=
"width: 100%"
>
...
...
@@ -60,7 +66,11 @@
<el-table-column
prop=
"followType"
:label=
"$t('跟进类型')"
:formatter=
"(row, column, cellValue) => getDictDataLabel(DICT_TYPE.CUSTOMER_FOLLOWUP_TYPE, cellValue)"
></el-table-column>
<el-table-column
prop=
"offerNumber"
:label=
"$t('报价单号')"
>
</el-table-column>
<el-table-column
prop=
"followTime"
:label=
"$t('跟进时间')"
:formatter=
"(row, column, cellValue) => parseTime(cellValue)"
></el-table-column>
<el-table-column
prop=
"customerNumber"
:label=
"$t('客户编号')"
></el-table-column>
<el-table-column
prop=
"customerNumber"
:label=
"$t('客户编号')"
>
<
template
slot-scope=
"scope"
>
<a
href=
"javascript:void(0)"
@
click=
"handleCustomerViewLink(scope.row)"
class=
"link-type"
>
{{
scope
.
row
.
customerNumber
}}
</a>
</
template
>
</el-table-column>
<el-table-column
prop=
"contactName"
:label=
"$t('联系人')"
></el-table-column>
<el-table-column
prop=
"contactPhone"
:label=
"$t('联系方式')"
></el-table-column>
<el-table-column
prop=
"followUserName"
:label=
"$t('客户经理')"
></el-table-column>
...
...
@@ -101,7 +111,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"
:
offerId=
"offerId
"
/>
<customer-follow
ref=
"customerFollow"
@
handleCustomerFollowAdd=
"handleCustomerFollowAdd"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
:customer-id=
"customerId"
:
customerService=
"customerService"
:customerNumber=
"customerNumber
"
/>
</div>
</template>
...
...
@@ -112,7 +122,7 @@ import UserSelector from "@/components/UserSelector"
export
default
{
name
:
"
logListCommon
"
,
components
:
{
UserSelector
,
CustomerFollow
},
props
:
[
"
customerId
"
,
"
offerId
"
],
props
:
[
"
customerId
"
,
"
offerId
"
,
"
customerService
"
,
"
customerNumber
"
],
data
()
{
return
{
customerFollowVisible
:
false
,
...
...
@@ -172,6 +182,9 @@ export default {
this
.
$refs
[
"
customerFollow
"
].
handleView
(
row
)
})
},
handleCustomerViewLink
(
row
)
{
this
.
$router
.
push
(
`/customer/query/
${
row
.
customerId
}
`
)
},
formatQuery
()
{
let
obj
=
{}
obj
.
customerId
=
this
.
customerId
||
null
...
...
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