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
4061ceb8
Commit
4061ceb8
authored
Nov 11, 2024
by
zs嵩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
客户反馈问题处理
parent
4ab7754d
Changes
5
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
322 additions
and
408 deletions
+322
-408
customerFollow.vue
src/views/ecw/customer/components/customerFollow.vue
+7
-5
query.vue
src/views/ecw/customer/query.vue
+23
-19
detail.vue
src/views/ecw/offer/detail.vue
+27
-62
index.vue
src/views/ecw/offer/index.vue
+1
-2
detail.vue
src/views/ecw/order/detail.vue
+264
-320
No files found.
src/views/ecw/customer/components/customerFollow.vue
View file @
4061ceb8
...
...
@@ -22,7 +22,7 @@
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('跟进类型')"
required
>
<el-select
v-model=
"form.followType"
clearable
:placeholder=
"$t('请选择')"
@
change=
"handleFollowType"
:disabled=
"isView"
>
<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>
...
...
@@ -106,7 +106,7 @@
<el-col
:span=
"20"
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>
-->
<!--
<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>
-->
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-collection"
@
click=
"handleUpdate(form, true)"
v-has-permi=
"['ecw:customer:follow-add-plan']"
>
{{
$t
(
"
增加计划
"
)
}}
</el-button>
</div>
</el-form-item>
...
...
@@ -185,6 +185,7 @@ export default {
/**
* 如果是客户投诉跟进,则id为客户投诉id;如果是客户跟进,则id为客户id
*/
offerId
:
Number
,
customerId
:
Number
,
customerNumber
:
String
,
customerService
:
Number
...
...
@@ -208,7 +209,7 @@ export default {
customerFollow
:
{
dialogVisible
:
false
,
form
:
{
followType
:
"
3
"
followType
:
3
}
},
offerDialogVisible
:
true
,
...
...
@@ -315,7 +316,7 @@ export default {
},
handleFollowType
(
val
)
{
console
.
log
(
val
)
if
(
val
==
"
2
"
)
{
if
(
val
==
2
)
{
this
.
CustomerFollowSelectOffer
=
true
}
else
{
this
.
form
.
offerId
=
undefined
...
...
@@ -332,7 +333,7 @@ export default {
feedback
:
undefined
,
followMethod
:
undefined
,
followTime
:
new
Date
().
getTime
(),
followType
:
undefined
,
followType
:
this
.
offerId
?
2
:
undefined
,
followUserId
:
this
.
customerService
,
nextPlan
:
undefined
,
nextTime
:
undefined
,
...
...
@@ -423,6 +424,7 @@ export default {
},
customerFollowClose
()
{
this
.
customerFollow
.
dialogVisible
=
false
this
.
$emit
(
"
close
"
)
},
handleView
(
row
)
{
this
.
form
=
row
...
...
src/views/ecw/customer/query.vue
View file @
4061ceb8
...
...
@@ -33,6 +33,7 @@
<el-descriptions-item
:label=
"$t('客户状态')"
>
{{ getDictDataLabel(DICT_TYPE.CUSTOMER_STATUS, customer.status) }}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('客户经理')"
>
{{ customer.customerServiceName }}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('询盘信息')"
>
{{ customer.inquiry }}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('备注')"
>
{{ customer.remarks }}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('图片')"
>
...
...
@@ -46,7 +47,7 @@
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('推介人')"
>
{{ customer.promoterName }}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('客户生日')"
>
{{ parseTime(customer.birthday, "{y}-{m}-{d}") }}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('
客户经理')"
>
{{ customer.customerServiceName }}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('
业绩类型')"
>
{{ customer.isNew ? $t("新客户") : $t("老客户") }}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('资源类型')"
>
<dict-tag
:type=
"DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE"
:value=
"customer.resourceType"
></dict-tag>
</el-descriptions-item>
...
...
@@ -70,7 +71,6 @@
<el-descriptions-item
:label=
"$t('创建时间')"
>
{{
parseTime
(
customer
.
createTime
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('最后更新人')"
>
{{
customer
.
updaterName
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('最后更新时间')"
>
{{
customer
.
updateTime
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('业绩类型')"
>
{{
customer
.
isNew
?
$t
(
"
新客户
"
)
:
$t
(
"
老客户
"
)
}}
</el-descriptions-item>
</
template
>
</el-descriptions>
</el-card>
...
...
@@ -496,7 +496,13 @@
<el-descriptions-item
:label=
"$t('业务国家')"
>
{{ isChinese ? customer.busiCountryNameZh : customer.busiCountryNameEn }}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('主营类别')"
>
{{ $l(customer, "productTypeName") }}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('主营类别')"
>
<div>
<div
v-for=
"(item, index) in productTypeName"
:key=
"index"
>
<b>
{{ $l(item, "title") }}:
</b><span>
{{ item.productList || "-" }}
</span>
</div>
</div>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('年度发货量')"
>
{{ customer.weightYearly }}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('主要竞争对手')"
>
{{ customer.competitorNames }}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('年度发货次数')"
>
{{ customer.numYearly }}
</el-descriptions-item>
...
...
@@ -671,21 +677,7 @@
</template>
<
script
>
import
{
getCustomer
,
getCustomerSelect
,
getBrankByCustomer
,
levelLogPage
,
customerCreditLogPage
,
infoListOrderPage
,
orderStatistics
,
creditLogCreate
,
creditScoreStatistic
,
infoListReceiptPage
,
memberUserList
,
deleteCustomer
,
infoListStatisticsOrder
}
from
"
@/api/ecw/customer
"
import
{
getCustomer
,
getCustomerSelect
,
getBrankByCustomer
,
levelLogPage
,
customerCreditLogPage
,
infoListOrderPage
,
orderStatistics
,
creditLogCreate
,
creditScoreStatistic
,
infoListReceiptPage
,
memberUserList
,
deleteCustomer
,
infoListStatisticsOrder
}
from
"
@/api/ecw/customer
"
import
{
getOfferPage
as
infoListOfferPage
}
from
"
@/api/ecw/offer
"
import
{
DICT_TYPE
,
getDictDataLabel
,
getDictDatas2
}
from
"
@/utils/dict
"
import
{
getProductTypeList
}
from
"
@/api/ecw/productType
"
...
...
@@ -929,7 +921,8 @@ export default {
remarks
:
undefined
,
arrivalConfirm
:
undefined
,
weightUnit
:
undefined
,
createTime
:
undefined
createTime
:
undefined
,
productTypeList
:
[]
},
brandAuthorizationFrom
:
{
pageNo
:
1
,
...
...
@@ -993,6 +986,17 @@ export default {
}
},
computed
:
{
productTypeName
()
{
return
this
.
customer
.
productTypeList
.
map
((
item
)
=>
{
return
{
...
item
,
productList
:
this
.
customer
.
productList
.
filter
((
i
)
=>
i
.
typeId
===
item
.
id
)
.
map
((
i
)
=>
this
.
$l
(
i
,
"
title
"
))
.
join
(
"
;
"
)
}
})
},
exportCityList
()
{
return
this
.
tradeCityList
.
filter
((
item
)
=>
item
.
type
==
2
)
},
...
...
src/views/ecw/offer/detail.vue
View file @
4061ceb8
...
...
@@ -17,7 +17,7 @@
<div
class=
"title-font"
>
<label>
{{
$t
(
"
报价单所属
"
)
}}
:
{{
list
.
relation
?
(
list
.
relation
==
1
?
$t
(
"
发货人
"
)
:
$t
(
"
收货人
"
))
:
$t
(
"
发货人
"
)
}}
</label>
</div>
<el-descriptions
:column=
"3"
border
class=
"card"
v-if=
"list.consignorId"
>
<el-descriptions
:column=
"3"
border
class=
"card"
v-if=
"list.consignorId"
:labelStyle=
"
{ width: '110px' }"
>
<el-descriptions-item
:label=
"$t('发货人') + ':'"
>
{{
consignorData
.
contactsName
||
$t
(
"
无
"
)
}}
</el-descriptions-item>
...
...
@@ -39,7 +39,7 @@
</el-descriptions-item>
</el-descriptions>
<el-descriptions
:column=
"3"
border
class=
"card"
v-if=
"list.consigneeId"
>
<el-descriptions
:column=
"3"
border
class=
"card"
v-if=
"list.consigneeId"
:labelStyle=
"
{ width: '110px' }"
>
<el-descriptions-item
:label=
"$t('收货人') + ':'"
>
{{
consigneeData
.
contactsName
||
$t
(
"
无
"
)
}}
</el-descriptions-item>
...
...
@@ -60,50 +60,39 @@
{{
consigneeData
.
socialNumber
?
"
(
"
+
consigneeData
.
socialNumber
+
"
)
"
:
""
}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions
:column=
"4"
class=
"card"
>
</div>
</el-card>
<el-card
class=
"card"
>
<div
slot=
"header"
class=
"card-title"
>
{{
$t
(
"
运输
"
)
}}
</div>
<div
style=
"overflow: auto"
>
<el-descriptions
:column=
"5"
border
class=
"card"
v-if=
"list.consignorId"
:labelStyle=
"
{ width: '110px' }">
<el-descriptions-item
:label=
"$t('始发仓')"
>
{{
$l
(
list
.
logisticsInfoDto
,
"
startTitle
"
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('目的仓')"
>
{{
$l
(
list
.
logisticsInfoDto
,
"
destCountryTitle
"
)
}}
-
{{
$l
(
list
.
logisticsInfoDto
,
"
destCityTitle
"
)
}}
-
{{
$l
(
list
.
logisticsInfoDto
,
"
destTitle
"
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('运输方式')"
>
<dict-tag
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
:value=
"list.transportId"
/>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('出货渠道')"
v-if=
"[3, 4].indexOf(list.transportId) > -1"
>
{{
channelName
}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions
:column=
"4"
class=
"card"
>
<el-descriptions-item
:label=
"$t('始发城市')"
>
{{
getCity
(
list
.
departureId
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('目的城市')"
>
{{
getCity
(
list
.
objectiveId
)
}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions
:column=
"4"
class=
"card"
>
<el-descriptions-item
:label=
"$t('线路')"
>
{{
getRouterNameById
(
list
.
lineId
)
}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions
:column=
"4"
class=
"card"
>
<el-descriptions-item
:label=
"$t('报价单状态')"
>
<dict-tag
:type=
"DICT_TYPE.ECW_OFFER_STATUS"
:value=
"list.status"
/>
</el-descriptions-item>
</el-descriptions>
<el-descriptions
:column=
"4"
class=
"card"
v-if=
"list.status == 5"
>
<el-descriptions-item
:label=
"$t('输单原因')"
>
{{
list
.
reason
}}
<el-descriptions-item
v-if=
"getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, list.transportId).cssClass == 'channel'"
:label=
"$t('出货渠道')"
>
{{
list
.
channelName
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('服务')"
>
<el-tag
v-if=
"list.type && list.type.indexOf('1') > -1"
>
{{
$t
(
"
集运
"
)
}}
</el-tag>
<el-tag
v-if=
"list.type && list.type.indexOf('2') > -1"
>
{{
$t
(
"
海外仓
"
)
}}
</el-tag>
</el-descriptions-item>
</el-descriptions>
</div>
</el-card>
<el-card
class=
"card"
>
<div
slot=
"header"
class=
"card-title"
>
{{
$t
(
"
商品
信息
"
)
}}
</div>
<div
slot=
"header"
class=
"card-title"
>
{{
$t
(
"
商品
"
)
}}
</div>
<div
style=
"overflow: auto"
>
<el-table
v-loading=
"loading"
border
:data=
"list.offerProdRespVOList"
>
<el-table
v-loading=
"loading"
border
show-summary
:data=
"list.offerProdRespVOList"
>
<el-table-column
:label=
"$t('序号')"
width=
"60px"
fixed
>
<template
slot-scope=
"scope"
>
{{
scope
.
$index
+
1
}}
</
template
>
</el-table-column>
<!-- <el-table-column :label="商品类型" align="center" prop="goodsType" /> -->
<el-table-column
:label=
"$t('中文品名')"
align=
"center"
prop=
"prodTitleZh"
/>
<el-table-column
:label=
"$t('英文品名')"
align=
"center"
prop=
"prodTitleEn"
/>
<el-table-column
:label=
"$t('品牌')"
width=
"100px"
>
...
...
@@ -146,36 +135,9 @@
</el-table>
</div>
</el-card>
<el-card
class=
"card"
>
<div
slot=
"header"
class=
"card-title"
>
{{ $t("费用小计") }}
</div>
<el-descriptions
border
class=
"card"
:column=
"5"
>
<el-descriptions-item
:label=
"$t('总件数') + ':'"
>
{{ list.estCostVO ? list.estCostVO.totalNum || "0" : 0 }}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('总体积') + ':'"
>
{{ list.estCostVO ? list.estCostVO.totalVolume + "m³" || "0" : 0 }}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('总重量') + ':'"
>
{{ list.estCostVO ? list.estCostVO.totalWeight + "kg" || "0" : 0 }}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('总数量') + ':'"
>
{{ list.estCostVO ? list.estCostVO.totalQuantity || "0" : 0 }}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('总货值(RMB)') + ':'"
>
{{ list.estCostVO ? list.estCostVO.totalWorth || "0" : 0 }}
</el-descriptions-item>
<!-- <el-descriptions-item :label="报价费:">
{{list.estCostVO?list.estCostVO.insuranceFee||'0':0}}
</el-descriptions-item> -->
</el-descriptions>
<!-- <el-descriptions border class="card">
<el-descriptions-item :label="佣金类型" :span="2" class="card">
<dict-selector :type="DICT_TYPE.COMMISSION_TYPE" form-type="radio" fomtter="number" :value="list.commissionType" defaultable />
</el-descriptions-item>
</el-descriptions> -->
</el-card>
<el-card
class=
"mt-10"
>
<div
class=
"card-title"
slot=
"header"
>
{{ $t("
预计
费用") }}
</div>
<div
class=
"card-title"
slot=
"header"
>
{{ $t("费用") }}
</div>
<el-descriptions
:column=
"5"
border
>
<el-descriptions-item
:label=
"$t('保价费')"
>
{{ list.estCostVO ? list.estCostVO.insuranceFee : 0 }} {{ selectedRouter ? currentcyMap[selectedRouter.currencyUnit || 1] : "" }}
</el-descriptions-item>
...
...
@@ -356,7 +318,7 @@
</template>
<
script
>
import
{
DICT_TYPE
,
getDictDatas
}
from
"
@/utils/dict
"
import
{
DICT_TYPE
,
getDictDatas
,
getDictData
}
from
"
@/utils/dict
"
import
{
getOffer
,
deleteOffer
}
from
"
@/api/ecw/offer
"
import
{
getProductAttrList
}
from
"
@/api/ecw/productAttr
"
import
{
getCustomerList
,
getCustomer
}
from
"
@/api/ecw/customer
"
...
...
@@ -408,6 +370,9 @@ export default {
}
},
computed
:
{
getDictData
()
{
return
(
type
,
value
)
=>
getDictData
(
type
,
value
)
||
{}
},
// 根据id获取商品名称(显示优惠列表的时候用)
getProductName
()
{
return
(
prodId
)
=>
{
...
...
src/views/ecw/offer/index.vue
View file @
4061ceb8
...
...
@@ -52,7 +52,6 @@
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('运输方式')"
prop=
"transportId"
v-show=
"showSearch"
>
<dict-selector
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
v-model=
"queryParams.transportId"
multiple
formatter=
"number"
clearable
@
change=
"handleQuery"
/>
</el-form-item>
...
...
@@ -193,7 +192,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
"
/>
<
CustomerFollow
ref
=
"
customerFollow
"
@
refresh
=
"
handleQuery
"
v
-
if
=
"
customerFollowVisible
"
@
close
=
"
customerFollowVisible = false
"
:
customer
-
id
=
"
curData.relationId
"
:
customerService
=
"
curData.salesmanId
"
:
customerNumber
=
"
curData.customerNumber
"
:
offerId
=
"
curData.offerId
"
/>
<
/div
>
<
/template
>
...
...
src/views/ecw/order/detail.vue
View file @
4061ceb8
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