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
4bf6e675
Commit
4bf6e675
authored
3 months ago
by
zs嵩
Browse files
Options
Browse Files
Download
Plain Diff
代码冲突
parents
f56fe670
9482381f
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
1252 additions
and
1262 deletions
+1252
-1262
main.js
src/main.js
+1
-0
custom.scss
src/styles/custom.scss
+17
-0
index.scss
src/styles/index.scss
+58
-37
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
index.vue
src/views/ecw/customer/index.vue
+148
-228
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 @
4bf6e675
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
src/styles/custom.scss
0 → 100644
View file @
4bf6e675
.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
;
}
This diff is collapsed.
Click to expand it.
src/styles/index.scss
View file @
4bf6e675
$editorTabsborderColor
:
#121315
;
body
,
html
{
body
,
html
{
margin
:
0
;
padding
:
0
;
background
:
#fff
;
-moz-osx-font-smoothing
:
grayscale
;
-webkit-font-smoothing
:
antialiased
;
text-rendering
:
optimizeLegibility
;
font-family
:
-
apple-system
,
BlinkMacSystemFont
,
Segoe
UI
,
Helvetica
,
Arial
,
sans-serif
,
Apple
Color
Emoji
,
Segoe
UI
Emoji
;
font-family
:
-
apple-system
,
BlinkMacSystemFont
,
Segoe
UI
,
Helvetica
,
Arial
,
sans-serif
,
Apple
Color
Emoji
,
Segoe
UI
Emoji
;
}
input
,
textarea
{
font-family
:
-
apple-system
,
BlinkMacSystemFont
,
Segoe
UI
,
Helvetica
,
Arial
,
sans-serif
,
Apple
Color
Emoji
,
Segoe
UI
Emoji
;
input
,
textarea
{
font-family
:
-
apple-system
,
BlinkMacSystemFont
,
Segoe
UI
,
Helvetica
,
Arial
,
sans-serif
,
Apple
Color
Emoji
,
Segoe
UI
Emoji
;
}
.editor-tabs
{
.editor-tabs
{
background
:
$editorTabsborderColor
;
.el-tabs__header
{
.el-tabs__header
{
margin
:
0
;
border-bottom-color
:
$editorTabsborderColor
;
.el-tabs__nav
{
.el-tabs__nav
{
border-color
:
$editorTabsborderColor
;
}
}
.el-tabs__item
{
.el-tabs__item
{
height
:
32px
;
line-height
:
32px
;
color
:
#888a8e
;
border-left
:
1px
solid
$editorTabsborderColor
!
important
;
border-left
:
1px
solid
$editorTabsborderColor
!
important
;
background
:
#363636
;
margin-right
:
5px
;
user-select
:
none
;
}
.el-tabs__item.is-active
{
.el-tabs__item.is-active
{
background
:
#1e1e1e
;
border-bottom-color
:
#1e1e1e
!
important
;
border-bottom-color
:
#1e1e1e
!
important
;
color
:
#fff
;
}
.el-icon-edit
{
.el-icon-edit
{
color
:
#f1fa8c
;
}
.el-icon-document
{
.el-icon-document
{
color
:
#a95812
;
}
:focus
.is-active.is-focus
:not
(
:active
)
{
box-shadow
:
none
;
border-radius
:
0
;
...
...
@@ -54,29 +64,35 @@ input, textarea{
padding
:
12px
18px
15px
15px
;
}
}
.el-scrollbar__wrap
{
box-sizing
:
border-box
;
overflow-x
:
hidden
!
important
;
margin-bottom
:
0
!
important
;
}
.center-tabs
{
.el-tabs__header
{
margin-bottom
:
0
!
important
;
.center-tabs
{
.el-tabs__header
{
margin-bottom
:
0
!
important
;
}
.el-tabs__item
{
.el-tabs__item
{
width
:
50%
;
text-align
:
center
;
}
.el-tabs__nav
{
.el-tabs__nav
{
width
:
100%
;
}
}
.reg-item
{
.reg-item
{
padding
:
12px
6px
;
background
:
#f8f8f8
;
position
:
relative
;
border-radius
:
4px
;
.close-btn
{
.close-btn
{
position
:
absolute
;
right
:
-6px
;
top
:
-6px
;
...
...
@@ -91,18 +107,22 @@ input, textarea{
z-index
:
1
;
cursor
:
pointer
;
font-size
:
12px
;
&
:hover
{
background
:
rgba
(
210
,
23
,
23
,
0
.5
)
&
:hover
{
background
:
rgba
(
210
,
23
,
23
,
0
.5
);
}
}
&
+
.reg-item
{
&
+
.reg-item
{
margin-top
:
18px
;
}
}
.action-bar
{
.action-bar
{
&
.el-button
+
.el-button
{
margin-left
:
15px
;
}
&
i
{
font-size
:
20px
;
vertical-align
:
middle
;
...
...
@@ -111,31 +131,32 @@ input, textarea{
}
}
.custom-tree-node
{
.custom-tree-node
{
width
:
100%
;
font-size
:
14px
;
.node-operation
{
.node-operation
{
float
:
right
;
}
i
[
class
*=
"el-icon"
]
+
i
[
class
*=
"el-icon"
]
{
i
[
class
*=
"el-icon"
]+
i
[
class
*=
"el-icon"
]
{
margin-left
:
6px
;
}
.el-icon-plus
{
color
:
#409EFF
;
.el-icon-plus
{
color
:
#409eff
;
}
.el-icon-delete
{
.el-icon-delete
{
color
:
#157a0c
;
}
}
.el-scrollbar__view
{
/*overflow-x: hidden;*/
}
.el-rate
{
.el-rate
{
display
:
inline-block
;
vertical-align
:
text-top
;
}
.el-upload__tip
{
.el-upload__tip
{
line-height
:
1
.2
;
}
\ No newline at end of file
}
This diff is collapsed.
Click to expand it.
src/views/ecw/customer/components/customerFollow.vue
View file @
4bf6e675
...
...
@@ -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
({
...
...
@@ -308,7 +315,7 @@ export default {
handleFollowType
(
val
)
{
console
.
log
(
val
)
if
(
val
==
"
2
"
)
{
this
.
$refs
[
"
customerFollowSelectOffer
"
].
offerDialogVisible
=
true
this
.
CustomerFollowSelectOffer
=
true
}
else
{
this
.
form
.
offerId
=
undefined
}
...
...
@@ -329,7 +336,7 @@ export default {
nextPlan
:
undefined
,
nextTime
:
undefined
,
number
:
undefined
,
offerId
:
undefine
d
,
offerId
:
this
.
offerI
d
,
parentId
:
undefined
,
parentNumber
:
undefined
,
purpose
:
undefined
,
...
...
This diff is collapsed.
Click to expand it.
src/views/ecw/customer/components/customerFollowSelectOffer.vue
View file @
4bf6e675
<
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
>
This diff is collapsed.
Click to expand it.
src/views/ecw/customer/edit.vue
View file @
4bf6e675
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
src/views/ecw/customer/index.vue
View file @
4bf6e675
This diff is collapsed.
Click to expand it.
src/views/ecw/customer/query.vue
View file @
4bf6e675
This diff is collapsed.
Click to expand it.
src/views/ecw/offer/detail.vue
View file @
4bf6e675
This diff is collapsed.
Click to expand it.
src/views/ecw/offer/edit.vue
View file @
4bf6e675
...
...
@@ -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
({
...
...
This diff is collapsed.
Click to expand it.
src/views/ecw/offer/index.vue
View file @
4bf6e675
...
...
@@ -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
)
...
...
This diff is collapsed.
Click to expand it.
src/views/ecw/offer/logListCommon.vue
View file @
4bf6e675
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
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