Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
marketing
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
marketing-web
marketing
Commits
ac6bdfa2
Commit
ac6bdfa2
authored
Jul 28, 2021
by
liuchenxi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update: 触达效果
parent
7385aa28
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
242 additions
and
113 deletions
+242
-113
index.vue
src/components/tip/index.vue
+16
-2
ecmApi.js
src/service/api/ecmApi.js
+11
-17
touch-clue.vue
src/views/ecm/touch-clue.vue
+0
-0
batch-fail-msg.vue
src/views/ecm/touch-components/batch-send/batch-fail-msg.vue
+16
-5
batch-fail-phone.vue
...iews/ecm/touch-components/batch-send/batch-fail-phone.vue
+19
-7
batch-send-sum.vue
src/views/ecm/touch-components/batch-send/batch-send-sum.vue
+20
-7
index.vue
src/views/ecm/touch-components/batch-send/index.vue
+7
-6
card-profit-sum.vue
src/views/ecm/touch-components/card/card-profit-sum.vue
+16
-5
description.vue
src/views/ecm/touch-components/description.vue
+17
-20
market-list.vue
src/views/ecm/touch-components/market-list.vue
+24
-5
index.vue
src/views/ecm/touch-components/phone-traffic/index.vue
+1
-1
phone-traffic-sum.vue
.../ecm/touch-components/phone-traffic/phone-traffic-sum.vue
+18
-6
short-msg-sum.vue
src/views/ecm/touch-components/short-msg/short-msg-sum.vue
+16
-5
touch-charts.vue
src/views/ecm/touch-components/touch-charts.vue
+17
-6
index.vue
src/views/ecm/touch-components/wechat/index.vue
+20
-2
wechat-sum.vue
src/views/ecm/touch-components/wechat/wechat-sum.vue
+7
-6
touch-effect.vue
src/views/ecm/touch-effect.vue
+17
-13
No files found.
src/components/tip/index.vue
View file @
ac6bdfa2
<
template
>
<i
class=
"iconfont icon-xinxixianshi"
></i>
<el-tooltip
placement=
"top"
>
<template
slot=
"content"
>
<p
class=
"tip-popover"
>
{{
text
}}
</p>
</
template
>
<i
class=
"iconfont icon-xinxixianshi"
></i>
</el-tooltip>
</template>
<
script
>
export
default
{};
export
default
{
name
:
'tip'
,
props
:
{
text
:
String
}
};
</
script
>
<
style
scoped
>
...
...
@@ -12,4 +22,8 @@ i {
font-size
:
13px
;
color
:
#909399
;
}
.tip-popover
{
max-width
:
400px
;
color
:
#ffffff
;
}
</
style
>
src/service/api/ecmApi.js
View file @
ac6bdfa2
...
...
@@ -50,26 +50,20 @@ export const exportCurrentSendDetails = config.api + PREFIX + 'export-current-se
export
const
ecmTouchEffectColumnDiagram
=
params
=>
requests
(
PREFIX
+
'ecmTouchEffectColumnDiagram'
,
params
);
export
const
ecmTouchEffectTable
=
params
=>
requests
(
PREFIX
+
'ecmTouchEffectTable'
,
params
);
export
const
ecmTouchTypeTableList
=
params
=>
requests
(
PREFIX
+
'ecmTouchTypeTableList'
,
params
);
// 获取(1 群发任务、2 群发失败-话务、3 群发失败-短信、4 话务、5 短信、6 微信)列表
// export const ecmTouchEffectFunnelChart = params => requests(PREFIX + 'ecmTouchEffectFunnelChart', params);
export
const
ecmPlanTouchConfig
=
params
=>
requests
(
PREFIX
+
'ecmPlanTouchConfig'
,
params
);
export
const
getCardLeads
=
params
=>
requests
(
PREFIX
+
'getCardLeads'
,
params
);
// 卡券收益
export
const
getCardLeadsList
=
params
=>
requests
(
PREFIX
+
'getCardLeadsList'
,
params
);
// 卡券收益表格
// 智能营销--导购线索
export
const
ecmGuideCluesColumnDiagram
=
params
=>
requests
(
PREFIX
+
'ecmGuideCluesColumnDiagram'
,
params
);
export
const
ecmGuideCluesTable
=
params
=>
requests
(
PREFIX
+
'ecmGuideCluesTable'
,
params
);
export
const
ecmGuideCluesTaskTable
=
params
=>
requests
(
PREFIX
+
'ecmGuideCluesTaskTable'
,
params
);
// 任务完成情况表格
export
const
ecmGuideCluesTouchEffectTotalTab
=
params
=>
requests
(
PREFIX
+
'ecmGuideCluesTouchEffectTotalTab'
,
params
);
// 触达效果-整体转化-表格
export
const
ecmGuideCluesTouchEffectTab
=
params
=>
requests
(
PREFIX
+
'ecmGuideCluesTouchEffectTab'
,
params
);
// 触达效果-其他tab-表格
// 智能营销--后台线索
export
const
ecmHeadCluesColumnDiagram
=
params
=>
requests
(
PREFIX
+
'ecmHeadCluesColumnDiagram'
,
params
);
export
const
ecmHeadGuideCluesTable
=
params
=>
requests
(
PREFIX
+
'ecmHeadGuideCluesTable'
,
params
);
export
const
ecmHeadCluesTaskTab
=
params
=>
requests
(
PREFIX
+
'ecmHeadCluesTaskTab'
,
params
);
// 表格
// 智能营销--表格的合计和计划整体数据
export
const
ecmGuideCluesTouchEffectTotalTabHead
=
params
=>
requests
(
PREFIX
+
'ecmGuideCluesTouchEffectTotalTabHead'
,
params
);
// 导购线索-触达效果整体计划表头
export
const
ecmGuideCluesTouchEffectTabHead
=
params
=>
requests
(
PREFIX
+
'ecmGuideCluesTouchEffectTabHead'
,
params
);
//导购线索--触达效果其他表格表头
export
const
ecmGuideCluesTaskTableHead
=
params
=>
requests
(
PREFIX
+
'ecmGuideCluesTaskTableHead'
,
params
);
// 触达效果-导购线索-任务完成情况表头
export
const
ecmHeadCluesTaskTabHead
=
params
=>
requests
(
PREFIX
+
'ecmHeadCluesTaskTabHead'
,
params
);
// 总部线索表头
// 计划整体详情
export
const
overAllList
=
params
=>
requests
(
PREFIX
+
'ecmOverAllTable'
,
params
);
// 单独数据
export
const
overAllTable
=
params
=>
requests
(
PREFIX
+
'ecmOverAllPage'
,
params
);
// 下钻表格
// 话务详情
export
const
telTaskDiagram
=
params
=>
requests
(
PREFIX
+
'ecmTelTaskColumnDiagram'
,
params
);
// 柱线图
export
const
telTaskList
=
params
=>
requests
(
PREFIX
+
'ecmTelTaskTable'
,
params
);
// 单独数据
export
const
telTaskTable
=
params
=>
requests
(
PREFIX
+
'ecmTelTaskPage'
,
params
);
// 下钻表格
// 群发详情
export
const
massDiagram
=
params
=>
requests
(
PREFIX
+
'ecmMassColumnDiagram'
,
params
);
// 柱线图
export
const
massList
=
params
=>
requests
(
PREFIX
+
'ecmMassTaskTable'
,
params
);
// 单独数据
export
const
massTable
=
params
=>
requests
(
PREFIX
+
'ecmMassTaskPage'
,
params
);
// 下钻表格
// 智能营销线索页tree
export
const
getGroupTree
=
params
=>
requests
(
PREFIX
+
'getGroupTree'
,
params
);
// export
...
...
src/views/ecm/touch-clue.vue
View file @
ac6bdfa2
This diff is collapsed.
Click to expand it.
src/views/ecm/touch-components/batch-send/batch-fail-msg.vue
View file @
ac6bdfa2
...
...
@@ -3,7 +3,7 @@
<div
class=
"middle"
>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div>
<p>
计划触达人数
<tip
/></p>
<p>
计划触达人数
<tip
:text=
"tipText.planMbrNum"
/></p>
<p>
{{
formatterNum
(
data
.
planMbrNum
)
}}
</p>
</div>
</div>
...
...
@@ -13,7 +13,7 @@
</div>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div>
<p>
实际触达人数
<tip
/></p>
<p>
实际触达人数
<tip
:text=
"tipText.touchMbrNum"
/></p>
<p>
{{
formatterNum
(
data
.
touchMbrNum
)
}}
</p>
</div>
</div>
...
...
@@ -23,17 +23,17 @@
</div>
<div
class=
"item-bg bg-purper center_flex min-w-212"
>
<div>
<p>
触达顾客转化人数
<tip
/></p>
<p>
触达顾客转化人数
<tip
:text=
"tipText.convMbrNum"
/></p>
<p>
{{
formatterNum
(
data
.
convMbrNum
)
}}
</p>
</div>
</div>
<div
class=
"item-bg bg-purper min-w-489"
>
<div>
<p>
触达顾客订单数
<tip
/></p>
<p>
触达顾客订单数
<tip
:text=
"tipText.convOrderCnt"
/></p>
<p>
{{
formatterNum
(
data
.
convOrderCnt
)
}}
</p>
</div>
<div>
<p>
触达顾客转化收益(元)
<tip
/></p>
<p>
触达顾客转化收益(元)
<tip
:text=
"tipText.convSalesAmt"
/></p>
<p>
{{
formatterNumAndFixed
(
data
.
convSalesAmt
)
}}
</p>
</div>
</div>
...
...
@@ -52,6 +52,17 @@ export default {
default
:
()
=>
{}
}
},
data
()
{
return
{
tipText
:
{
planMbrNum
:
'计划使用短信触达的顾客人数。如果当前计划在不同时间用短信多次触达同一个顾客,会进行去重统计,仅计算为1个人。'
,
touchMbrNum
:
'发送短信成功的顾客人数。如果当前计划在不同时间用短信多次触达同一个顾客,会进行去重统计,仅计算为1个人。'
,
convMbrNum
:
'发送短信成功的顾客中,在收益有效期内消费的顾客人数。无论顾客消费了几次,会进行去重统计,仅计算为1个人。'
,
convOrderCnt
:
'发送短信成功的顾客中,在收益有效期内消费的顾客订单数。'
,
convSalesAmt
:
'发送短信成功的顾客中,在收益有效期内消费的顾客订单金额。'
}
};
},
mixins
:
[
formatterNum
]
};
</
script
>
...
...
src/views/ecm/touch-components/batch-send/batch-fail-phone.vue
View file @
ac6bdfa2
...
...
@@ -3,7 +3,7 @@
<div
class=
"middle"
>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div>
<p
class=
"key"
>
计划触达人数
<tip
/></p>
<p
class=
"key"
>
计划触达人数
<tip
:text=
"tipText.planMbrNum"
/></p>
<p
class=
"value"
>
{{
formatterNum
(
data
.
planMbrNum
)
}}
</p>
</div>
<div
class=
"item-arrow purper"
>
...
...
@@ -13,7 +13,7 @@
</div>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div>
<p
class=
"key"
>
任务执行
人数
<tip
/></p>
<p
class=
"key"
>
任务执行
顾客数
<tip
:text=
"tipText.taskExecuteNum"
/></p>
<p
class=
"value"
>
{{
formatterNum
(
data
.
taskExecuteNum
)
}}
</p>
</div>
<div
class=
"item-arrow purper"
>
...
...
@@ -23,7 +23,7 @@
</div>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div>
<p
class=
"key"
>
实际触达人数
<tip
/></p>
<p
class=
"key"
>
实际触达人数
<tip
:text=
"tipText.touchMbrNum"
/></p>
<p
class=
"value"
>
{{
formatterNum
(
data
.
touchMbrNum
)
}}
</p>
</div>
<div
class=
"item-arrow green"
>
...
...
@@ -33,17 +33,17 @@
</div>
<div
class=
"item-bg bg-green center_flex min-w-200"
>
<div
style=
"padding-left: 10px"
>
<p
class=
"key"
>
触达顾客转化人数
<tip
/></p>
<p
class=
"key"
>
触达顾客转化人数
<tip
:text=
"tipText.convMbrNum"
/></p>
<p
class=
"value"
>
{{
formatterNum
(
data
.
convMbrNum
)
}}
</p>
</div>
</div>
<div
class=
"item-bg bg-green min-w-403"
>
<div>
<p
class=
"key"
>
触达顾客订单数
<tip
/></p>
<p
class=
"key"
>
触达顾客订单数
<tip
:text=
"tipText.convOrderCnt"
/></p>
<p
class=
"value"
>
{{
formatterNum
(
data
.
convOrderCnt
)
}}
</p>
</div>
<div>
<p
class=
"key"
>
触达顾客转化收益(元)
<tip
/></p>
<p
class=
"key"
>
触达顾客转化收益(元)
<tip
:text=
"tipText.convSalesAmt"
/></p>
<p
class=
"value"
>
{{
formatterNumAndFixed
(
data
.
convSalesAmt
)
}}
</p>
</div>
</div>
...
...
@@ -54,7 +54,7 @@
import
formatterNum
from
'@/mixins/validateNum'
;
import
tip
from
'@/components/tip'
;
export
default
{
name
:
'batch-
send
-phone'
,
name
:
'batch-
fail
-phone'
,
components
:
{
tip
},
props
:
{
data
:
{
...
...
@@ -62,6 +62,18 @@ export default {
default
:
()
=>
{}
}
},
data
()
{
return
{
tipText
:
{
planMbrNum
:
'计划使用话务任务触达的顾客人数。如果当前计划在不同时间,通过不同区域(门店),用话务任务多次触达同一个顾客,会进行去重统计,仅计算为1个人。'
,
taskExecuteNum
:
'导购实际执行话务任务的顾客人数,包括“完成”任务和“放弃”任务的人数。如果当前计划在不同时间,通过不同区域(门店),用话务任务多次触达同一个顾客,会进行去重统计,仅计算为1个人。'
,
touchMbrNum
:
'导购执行并完成话务任务的顾客人数。如果当前计划在不同时间,通过不同区域(门店),用话务任务多次触达同一个顾客,会进行去重统计,仅计算为1个人。'
,
convMbrNum
:
'导购执行并完成话务任务的顾客人数,在收益有效期内消费的顾客人数。无论顾客消费了几次,会进行去重统计,仅计算为1个人。'
,
convOrderCnt
:
'导购执行并完成话务任务的顾客中,在收益有效期内消费的顾客订单数。'
,
convSalesAmt
:
'导购执行并完成话务任务的顾客中,在收益有效期内消费的顾客订单金额。'
}
};
},
mixins
:
[
formatterNum
]
};
</
script
>
...
...
src/views/ecm/touch-components/batch-send/batch-send-sum.vue
View file @
ac6bdfa2
...
...
@@ -3,7 +3,7 @@
<div
class=
"middle"
>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div>
<p
class=
"key"
>
计划触达人数
<tip
/></p>
<p
class=
"key"
>
计划触达人数
<tip
:text=
"tipText.planMbrNum"
/></p>
<p
class=
"value"
>
{{
formatterNum
(
data
.
planMbrNum
)
}}
</p>
</div>
<div
class=
"item-arrow purper"
>
...
...
@@ -13,7 +13,7 @@
</div>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div
style=
"padding-left: 20px"
>
<p
class=
"key"
>
任务创建成功顾客数
<tip
/></p>
<p
class=
"key"
>
任务创建成功顾客数
<tip
:text=
"tipText.taskCreateNum"
/></p>
<p
class=
"value"
>
{{
formatterNum
(
data
.
taskCreateNum
)
}}
</p>
</div>
<div
class=
"item-arrow purper"
>
...
...
@@ -23,7 +23,7 @@
</div>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div>
<p
class=
"key"
>
群发执行顾客数
<tip
/></p>
<p
class=
"key"
>
群发执行顾客数
<tip
:text=
"tipText.massExecuteNum"
/></p>
<p
class=
"value"
>
{{
formatterNum
(
data
.
massExecuteNum
)
}}
</p>
</div>
<div
class=
"item-arrow purper"
>
...
...
@@ -33,7 +33,7 @@
</div>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div>
<p
class=
"key"
>
实际触达人数
<tip
/></p>
<p
class=
"key"
>
实际触达人数
<tip
:text=
"tipText.touchMbrNum"
/></p>
<p
class=
"value"
>
{{
formatterNum
(
data
.
touchMbrNum
)
}}
</p>
</div>
<div
class=
"item-arrow green"
>
...
...
@@ -43,18 +43,18 @@
</div>
<div
class=
"item-bg bg-green center_flex min-w-188 h143"
>
<div
style=
"padding-left: 10px"
>
<p
class=
"key"
>
触达顾客转化人数
<tip
/></p>
<p
class=
"key"
>
触达顾客转化人数
<tip
:text=
"tipText.convMbrNum"
/></p>
<p
class=
"value"
>
{{
formatterNum
(
data
.
convMbrNum
)
}}
</p>
</div>
</div>
<div
class=
"item-bg bg-green min-w-235 h143"
>
<div
class=
"center_wrap"
>
<div>
<p
class=
"key"
>
触达顾客订单数
<tip
/></p>
<p
class=
"key"
>
触达顾客订单数
<tip
:text=
"tipText.convOrderCnt"
/></p>
<p
class=
"value"
>
{{
formatterNum
(
data
.
convOrderCnt
)
}}
</p>
</div>
<div>
<p
class=
"key"
>
触达顾客转化收益(元)
<tip
/></p>
<p
class=
"key"
>
触达顾客转化收益(元)
<tip
:text=
"tipText.convSalesAmt"
/></p>
<p
class=
"value"
>
{{
formatterNumAndFixed
(
data
.
convSalesAmt
)
}}
</p>
</div>
</div>
...
...
@@ -74,6 +74,19 @@ export default {
default
:
()
=>
{}
}
},
data
()
{
return
{
tipText
:
{
planMbrNum
:
'计划使用群发任务触达的顾客人数。如果当前计划在不同时间,通过不同区域(门店),用群发多次触达同一个顾客,会进行去重统计,仅计算为1个人。'
,
taskCreateNum
:
'成功创建群发任务的人数。若该计划在不同时间通过不同区域(门店)用群发多次触达同一个顾客,仅计算为1个人。导致群发任务创建不成功的原因可能是:①非所选企业下的客户好友;②该好友每月群发消息接收次数已达上限'
,
massExecuteNum
:
'导购使用企业微信执行群发的顾客人数。如果当前计划在不同时间,通过不同区域(门店),用群发多次触达同一个顾客,会进行去重统计,仅计算为1个人。点击“查看详情”可以找到群发任务执行率较低的门店,推动门店导购在企业微信中执行群发。'
,
touchMbrNum
:
'导购执行群发后,群发消息发送成功的顾客数,按照顾客人数进行统计。如果当前计划在不同时间,通过不同区域(门店),用群发多次触达同一个顾客,会进行去重统计,仅计算为1个人。可能导致群发消息发送失败的原因是:①群发任务下发后,到导购执行群发的时间段内,顾客删除了企业微信好友,使得发送失败。②顾客是多个门店导购的企微好友,已经有某一导购群发成功,其他导购执行群发会发送失败'
,
convMbrNum
:
'导购执行群发消息发送成功的顾客中,在收益有效期内消费的顾客人数。无论顾客消费了几次,会进行去重统计,仅计算为1个人。'
,
convOrderCnt
:
'导购执行群发消息发送成功的顾客中,在收益有效期内消费的顾客订单数。'
,
convSalesAmt
:
'导购执行群发消息发送成功的顾客中,在收益有效期内消费的顾客订单金额。'
}
};
},
mixins
:
[
formatterNum
]
};
</
script
>
...
...
src/views/ecm/touch-components/batch-send/index.vue
View file @
ac6bdfa2
...
...
@@ -6,16 +6,19 @@
<img
:src=
"require('@/assets/img/icon-send.png')"
class=
"img"
/>
<h2>
群发任务
</h2>
</div>
<el-link
type=
"primary"
:underline=
"false"
style=
"color: #1890ff"
>
查看详情
<i
class=
"el-icon-arrow-right"
style=
"margin-left: 10px"
></i></el-link>
<el-link
type=
"primary"
:underline=
"false"
style=
"color: #1890ff"
@
click=
"$emit('toClue', '群发')"
>
查看详情
<i
class=
"el-icon-arrow-right"
style=
"margin-left: 10px"
></i></el-link>
</div>
<batch-send-sum
v-if=
"taskList"
:data=
"taskList"
/>
<div
class=
"wrap"
>
<div
v-if=
"telTrafficList"
>
<h3>
群发失败-话务
</h3>
<div
class=
"flex_between"
style=
"margin-bottom: 12px;padding-right: 20px"
>
<h3>
群发失败-话务
</h3>
<el-link
type=
"primary"
:underline=
"false"
style=
"color: #1890ff"
@
click=
"$emit('toClue', '群发转话务')"
>
查看详情
<i
class=
"el-icon-arrow-right"
style=
"margin-left: 10px"
></i></el-link>
</div>
<div
style=
"padding: 0px 20px"
><batch-fail-phone
:data=
"telTrafficList"
/></div>
</div>
<div
v-if=
"msgList"
:style=
"
{ marginTop: telTrafficList ? '26px' : '0' }">
<h3>
群发失败-话务
</h3>
<h3
style=
"margin-bottom: 12px"
>
群发失败-话务
</h3>
<div
style=
"padding: 0px 20px"
><batch-fail-msg
:data=
"msgList"
/></div>
</div>
</div>
...
...
@@ -44,8 +47,7 @@ export default {
msgList
:
{
type
:
Object
||
undefined
}
},
methods
:
{}
}
};
</
script
>
...
...
@@ -91,7 +93,6 @@ export default {
color
:
#303133
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-weight
:
600
;
margin-bottom
:
12px
;
}
}
</
style
>
src/views/ecm/touch-components/card/card-profit-sum.vue
View file @
ac6bdfa2
...
...
@@ -3,7 +3,7 @@
<div
class=
"middle"
>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div>
<p>
触达人数
<tip
/></p>
<p>
触达人数
<tip
:text=
"tipText.touchMbrNum"
/></p>
<p>
{{
formatterNum
(
list
.
touchMbrNum
)
}}
</p>
</div>
</div>
...
...
@@ -13,7 +13,7 @@
</div>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div>
<p>
领取人数
<tip
/></p>
<p>
领取人数
<tip
:text=
"tipText.getMbrNum"
/></p>
<p>
{{
formatterNum
(
list
.
getMbrNum
)
}}
</p>
</div>
</div>
...
...
@@ -23,17 +23,17 @@
</div>
<div
class=
"item-bg bg-purper center_flex min-w-214"
>
<div>
<p>
使用人数
<tip
/></p>
<p>
使用人数
<tip
:text=
"tipText.useMbrNum"
/></p>
<p>
{{
formatterNum
(
list
.
useMbrNum
)
}}
</p>
</div>
</div>
<div
class=
"item-bg bg-purper min-w-527"
>
<div>
<p>
销售单数
<tip
/></p>
<p>
销售单数
<tip
:text=
"tipText.orderCnt"
/></p>
<p>
{{
formatterNum
(
list
.
orderCnt
)
}}
</p>
</div>
<div>
<p>
销售单金额(元)
<tip
/></p>
<p>
销售单金额(元)
<tip
:text=
"tipText.salesAmt"
/></p>
<p>
{{
formatterNumAndFixed
(
list
.
salesAmt
)
}}
</p>
</div>
</div>
...
...
@@ -52,6 +52,17 @@ export default {
default
:
()
=>
{}
}
},
data
()
{
return
{
tipText
:
{
touchMbrNum
:
'当前智能营销计划发出优惠券的顾客数,如果对同一个顾客发送了超过1张优惠券,仅计算为1个人。'
,
getMbrNum
:
'当前智能营销计划发出优惠券后,领取优惠券的顾客人数。如果同一个顾客领取了超过1张优惠券,仅计算为1个人。'
,
useMbrNum
:
'"当前智能营销计划发出优惠券后,使用优惠券的顾客人数。如果同一个顾客使用了超过1张优惠券,仅计算为1个人。由于是单独从“卡券”维度统计,因此只要是使用了该计划所发送优惠券的都会计入,即使顾客使用该优惠券的订单超过了收益有效期"'
,
orderCnt
:
'"当前智能营销计划发出优惠券后,使用优惠券的订单数。如果一个订单使用了超过1张优惠券,仅计算为1个订单。由于是单独从“卡券”维度统计,因此只要是使用了该计划所发送优惠券的订单都会计入,即使该订单超过了收益有效期,也会将该订单计入销售单数。"'
,
salesAmt
:
'"当前智能营销计划发出优惠券后,使用优惠券的订单金额。如果一笔订单使用了超过1张优惠券,该金额仅计算一次。由于是单独从“卡券”维度统计,因此只要是使用了该计划所发送优惠券的订单都会计入,即使该订单超过了收益有效期,也会将该订单金额计入。"'
}
};
},
mixins
:
[
formatterNum
]
};
</
script
>
...
...
src/views/ecm/touch-components/description.vue
View file @
ac6bdfa2
...
...
@@ -6,45 +6,41 @@
<li>
<span
class=
"squre"
></span>
<div
class=
"text"
>
<p>
1.转化
效果趋势图
</p>
<p>
按日展示。当天转化人数可能是因为之前的触达影响的,所以当日触达转化额人数可能大于触达人数
。
</p>
<p>
1.转化
收益计算方式
</p>
<p>
通过智能营销触达到顾客后,顾客在收益有效期内进行消费,会被视为该智能营销计划的转化。如:1月1日智能营销计划下发话务任务,让导购联系1月生日会员到店消费,收益有效期设置为14天。导购在1月3日完成任务联系到顾客。如果该顾客在1月17日前来店消费,则将该顾客记入触达顾客转化人数,该顾客消费订单数和金额记入触达顾客订单数和转化收益。如果顾客在消费后退单,该订单数据仍然会被计算在转化收益中。如果出现补单,补单时间在七天以内的订单,会按照收益计算规则进行统计,其它订单不统计入转化收益
。
</p>
</div>
</li>
<li>
<span
class=
"squre"
></span>
<div
class=
"text"
>
<p>
2.计划整体效果
</p>
<p>
配置了参照组的,展示参照组转化情况,即计划中设定的非触达人群的转化情况;
</p>
</div>
</li>
<li>
<span
class=
"squre"
></span>
<div
class=
"text"
>
<p>
3.线索转化对比
</p>
<p>
导购线索:计划中触达到门店导购端的都归入导购线索,包括话务、企微任务;
<br
/>
后台线索:计划中非导购线索的触达,包括图文、文本、小程序、图片、卡券等。
</p>
<p>
统计整个计划的营销效果。任意一个渠道触达顾客即视为触达。如果计划中多个渠道触达同一个顾客,统计人数时会进行去重,仅计算为1个人
</p>
</div>
</li>
<li>
<span
class=
"squre"
></span>
<div
class=
"text"
>
<p>
4.转化
收益
</p>
<p>
3.卡券
收益
</p>
<p>
① 触达后产生的消费在触达收益计算有效期内的,计入转化效益,有效期见计划配置;
<br
/>
② 导购和后台线索均有触达,消费在两者触达的有效期内的,收益归给导购线索;
<br
/>
③ 一个触达转化消费,在多个导购触达任务的收益计算有效期内的,该笔转化只记给第一个触达任务;
<br
/>
④ 转化收益只计销售单,不看退货单和换货单;金额是应付还是实付看ERP传入的值。
<br
/>
⑤『触达率』:触达人数 / 计划触达人数
<br
/>
⑥『转化率』:转化人数 / 触达人数; 参照组不存在触达人数,转化率 = 转化人数 / 计划人数
①智能营销计划中投放卡券所产生的营销效果,仅有通过当前智能营销任务发出的卡券才会被统计,其他渠道投放卡券的数据不会包含。
<br
/>
②由于是单独从“卡券”维度统计,因此只要是使用了该计划所发送优惠券的都会计入,即使顾客使用该优惠券的订单超过了收益有效期,比如实际使用该卡券发生在被触达之后很久,远远超过了收益有效期,在此收益模块中,也会将该订单纳入统计,而“计划整体效果”中不会包含该超过了收益有效期的订单相关数据。
<br
/>
③如果一个顾客使用了多张卡券,在统计单个卡券效果时,会根据实际情况分别计算(这可能导致每个优惠券的数据相加求和大于计划整体)。
</p>
</div>
</li>
<li>
<span
class=
"squre"
></span>
<div
class=
"text"
>
<p>
5. 卡券收益
</p>
<p>
4.各渠道触达效果(企微群发任务、话务任务、短信、微信)
</p>
<p>
① 计划中的卡券,计划中卡券触达的人群使用该卡券消费的收益,包含已过计划收益有效期的数据。
<br
/>
② 一个计划中使用多张卡券的,计划粒度上卡券收益去重,各卡券数据相加可能不等于整体数据。
① 计划中触达渠道的营销效果,会对每个触达渠道分别进行统计。
<br
/>
② 如果计划中使用了多种触达渠道触达了某个顾客,且该顾客在收益有效期内进行了消费。在统计单个触达渠道的效果时,会在每个触达渠道中都算上该顾客(这可能导致每个渠道的数据相加求和大于计划整体,因为“计划整体”的触达转化效果是会去重的)。
<br
/>
各触达渠道“实际触达”的定义如下:
<br
/>
③ 一个触达转化消费,在多个导购触达任务的收益计算有效期内的,该笔转化只记给第一个触达任务;
<br
/>
④ 群发任务:通过企业微信实际发送群发消息成功即视为触达
<br
/>
⑤ 短信:运营商返回发送成功的即视为触达
<br
/>
⑥ 微信:微信发送接口返回成功即视为触达。
<br
/>
⑦ 话务:导购完成话务任务(不含放弃)即视为触达。
</p>
</div>
</li>
...
...
@@ -188,6 +184,7 @@ export default {
}
.h790
{
height
:
790px
!important
;
overflow-y
:
scroll
;
}
.h762
{
height
:
762px
!important
;
...
...
src/views/ecm/touch-components/market-list.vue
View file @
ac6bdfa2
...
...
@@ -27,7 +27,7 @@
<div
class=
"right"
>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div>
<p>
{{ item.isSales == 1 ? '计划触达人数' : '参照组人数' }}
<tip
/></p>
<p>
{{ item.isSales == 1 ? '计划触达人数' : '参照组人数' }}
<tip
:text=
"item.isSales == 1 ? experText.planMbrText : controText.planMbrText"
/></p>
<p>
{{ formatterNum(item.planMbrNum) }}
</p>
</div>
</div>
...
...
@@ -38,7 +38,7 @@
<div
v-else
style=
"width: 96px"
></div>
<div
class=
"item-bg bg-purper center_flex min-w-173"
v-if=
"item.isSales == 1"
>
<div>
<p>
实际触达人数
<tip
/></p>
<p>
实际触达人数
<tip
:text=
"experText.touchMbrText"
/></p>
<p>
{{ formatterNum(item.touchMbrNum) }}
</p>
</div>
</div>
...
...
@@ -49,17 +49,17 @@
</div>
<div
class=
"item-bg bg-green center_flex min-w-206"
>
<div>
<p>
{{ item.isSales == 1 ? '触达顾客转化人数' : '转化人数' }}
<tip
/></p>
<p>
{{ item.isSales == 1 ? '触达顾客转化人数' : '转化人数' }}
<tip
:text=
"item.isSales == 1 ? experText.convMbrText : controText.convMbrText"
/></p>
<p>
{{ formatterNum(item.convMbrNum) }}
</p>
</div>
</div>
<div
class=
"item-bg bg-green min-w-389"
>
<div>
<p>
{{ item.isSales == 1 ? '触达顾客订单数' : '转化订单数' }}
<tip
/></p>
<p>
{{ item.isSales == 1 ? '触达顾客订单数' : '转化订单数' }}
<tip
:text=
"item.isSales == 1 ? experText.convOrderText : controText.convOrderText"
/></p>
<p>
{{ formatterNum(item.convOrderCnt) }}
</p>
</div>
<div>
<p>
{{ item.isSales == 1 ? '触达顾客转化收益' : '转化收益' }}
<tip
/></p>
<p>
{{ item.isSales == 1 ? '触达顾客转化收益' : '转化收益' }}
<tip
:text=
"item.isSales == 1 ? experText.convOrderText : controText.convSalesText"
/></p>
<p>
{{ formatterNumAndFixed(item.convSalesAmt) }}
</p>
</div>
</div>
...
...
@@ -98,6 +98,25 @@ export default {
batchTimes
:
String
,
batchNum
:
Number
|
String
},
data
()
{
return
{
// 实验组tip
experText
:
{
planMbrText
:
'当前智能营销在计划创建时,按照条件圈选的顾客人数。如果当前计划中,通过不同触达方式或不同时间,计划触达同一个顾客,会进行去重统计,仅计算为1个人。'
,
touchMbrText
:
'当前智能营销通过指定触达方式,实际触达到的顾客数。如果当前计划中,通过不同触达方式或不同时间,实际触达了同一个顾客,会进行去重统计,仅计算为1个人。'
,
convMbrText
:
'当前智能营销实际触达顾客中,在收益有效期内消费的顾客人数。无论顾客消费了几次,会进行去重统计,仅计算为1个人。'
,
convOrderText
:
'当前智能营销实际触达顾客中,在收益有效期内消费的顾客订单数。'
,
convSalesText
:
'当前智能营销实际触达顾客中,在收益有效期内消费的顾客订单金额。'
},
// 参照组tip
controText
:
{
planMbrText
:
'当前智能营销计划选择顾客范围中,未进行营销触达的顾客人数。用于与实验组进行对比,评估营销/未营销所带来的转化效果差异。'
,
convMbrText
:
'当前智能营销计划选择顾客范围中,未进行营销触达的顾客人数,在收益有效期内产生消费的顾客人数。收益有效期按照实验组首次进行营销触达时间加收益分析天数统计。'
,
convOrderText
:
'当前智能营销计划选择顾客范围中,未进行营销触达的顾客,在收益有效期内产生消费的订单数量。收益有效期按照实验组首次进行营销触达时间加收益分析天数统计。'
,
convSalesText
:
'当前智能营销计划选择顾客范围里,未进行营销触达的顾客,在收益有效期内产生消费的订单金额。收益有效期按照实验组首次进行营销触达时间加收益分析天数统计。'
}
};
},
mixins
:
[
formatterNum
]
};
</
script
>
...
...
src/views/ecm/touch-components/phone-traffic/index.vue
View file @
ac6bdfa2
...
...
@@ -5,7 +5,7 @@
<img
:src=
"require('@/assets/img/icon-phone.png')"
class=
"img"
/>
<h2>
话务
</h2>
</div>
<el-link
type=
"primary"
:underline=
"false"
style=
"color: #1890ff"
>
查看详情
<i
class=
"el-icon-arrow-right"
style=
"margin-left: 10px"
></i></el-link>
<el-link
type=
"primary"
:underline=
"false"
style=
"color: #1890ff"
@
click=
"$emit('toClue', '话务')"
>
查看详情
<i
class=
"el-icon-arrow-right"
style=
"margin-left: 10px"
></i></el-link>
</div>
<phone-traffic-sum
v-bind=
"$attrs"
/>
</div>
...
...
src/views/ecm/touch-components/phone-traffic/phone-traffic-sum.vue
View file @
ac6bdfa2
...
...
@@ -3,7 +3,7 @@
<div
class=
"middle"
>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div>
<p
class=
"key"
>
计划触达人数
<tip
/></p>
<p
class=
"key"
>
计划触达人数
<tip
:text=
"tipText.planMbrNum"
/></p>
<p
class=
"value"
>
{{
formatterNum
(
data
.
planMbrNum
)
}}
</p>
</div>
<div
class=
"item-arrow purper"
>
...
...
@@ -13,7 +13,7 @@
</div>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div>
<p
class=
"key"
>
任务执行
人数
<tip
/></p>
<p
class=
"key"
>
任务执行
顾客数
<tip
:text=
"tipText.taskExecuteNum"
/></p>
<p
class=
"value"
>
{{
formatterNum
(
data
.
taskExecuteNum
)
}}
</p>
</div>
<div
class=
"item-arrow purper"
>
...
...
@@ -23,7 +23,7 @@
</div>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div>
<p
class=
"key"
>
实际触达人数
<tip
/></p>
<p
class=
"key"
>
实际触达人数
<tip
:text=
"tipText.touchMbrNum"
/></p>
<p
class=
"value"
>
{{
formatterNum
(
data
.
touchMbrNum
)
}}
</p>
</div>
<div
class=
"item-arrow green"
>
...
...
@@ -33,17 +33,17 @@
</div>
<div
class=
"item-bg bg-green center_flex min-w-210"
>
<div>
<p
class=
"key"
>
触达顾客转化人数
<tip
/></p>
<p
class=
"key"
>
触达顾客转化人数
<tip
:text=
"tipText.convMbrNum"
/></p>
<p
class=
"value"
>
{{
formatterNum
(
data
.
convMbrNum
)
}}
</p>
</div>
</div>
<div
class=
"item-bg bg-green min-w-433"
>
<div>
<p
class=
"key"
>
触达顾客订单数
<tip
/></p>
<p
class=
"key"
>
触达顾客订单数
<tip
:text=
"tipText.convOrderCnt"
/></p>
<p
class=
"value"
>
{{
formatterNum
(
data
.
convOrderCnt
)
}}
</p>
</div>
<div>
<p
class=
"key"
>
触达顾客转化收益(元)
<tip
/></p>
<p
class=
"key"
>
触达顾客转化收益(元)
<tip
:text=
"tipText.convSalesAmt"
/></p>
<p
class=
"value"
>
{{
formatterNumAndFixed
(
data
.
convSalesAmt
)
}}
</p>
</div>
</div>
...
...
@@ -62,6 +62,18 @@ export default {
default
:
()
=>
{}
}
},
data
()
{
return
{
tipText
:
{
planMbrNum
:
'计划使用话务任务触达的顾客人数。如果当前计划在不同时间,通过不同区域(门店),用话务任务多次触达同一个顾客,会进行去重统计,仅计算为1个人。'
,
taskExecuteNum
:
'导购实际执行话务任务的顾客人数,包括“完成”任务和“放弃”任务的人数。如果当前计划在不同时间,通过不同区域(门店),用话务任务多次触达同一个顾客,会进行去重统计,仅计算为1个人。'
,
touchMbrNum
:
'导购执行并完成话务任务的顾客人数。如果当前计划在不同时间,通过不同区域(门店),用话务任务多次触达同一个顾客,会进行去重统计,仅计算为1个人。'
,
convMbrNum
:
'导购执行并完成话务任务的顾客人数,在收益有效期内消费的顾客人数。无论顾客消费了几次,会进行去重统计,仅计算为1个人。'
,
convOrderCnt
:
'导购执行并完成话务任务的顾客中,在收益有效期内消费的顾客订单数。'
,
convSalesAmt
:
'导购执行并完成话务任务的顾客中,在收益有效期内消费的顾客订单金额。'
}
};
},
mixins
:
[
formatterNum
]
};
</
script
>
...
...
src/views/ecm/touch-components/short-msg/short-msg-sum.vue
View file @
ac6bdfa2
...
...
@@ -3,7 +3,7 @@
<div
class=
"middle"
>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div>
<p>
计划触达人数
<tip
/></p>
<p>
计划触达人数
<tip
:text=
"tipText.planMbrNum"
/></p>
<p>
{{
formatterNum
(
data
.
planMbrNum
)
}}
</p>
</div>
</div>
...
...
@@ -13,7 +13,7 @@
</div>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div>
<p>
实际触达人数
<tip
/></p>
<p>
实际触达人数
<tip
:text=
"tipText.touchMbrNum"
/></p>
<p>
{{
formatterNum
(
data
.
touchMbrNum
)
}}
</p>
</div>
</div>
...
...
@@ -23,17 +23,17 @@
</div>
<div
class=
"item-bg bg-green center_flex min-w-214"
>
<div>
<p>
触达顾客转化人数
<tip
/></p>
<p>
触达顾客转化人数
<tip
:text=
"tipText.convMbrNum"
/></p>
<p>
{{
formatterNum
(
data
.
convMbrNum
)
}}
</p>
</div>
</div>
<div
class=
"item-bg bg-green min-w-527"
>
<div>
<p>
触达顾客订单数
<tip
/></p>
<p>
触达顾客订单数
<tip
:text=
"tipText.convOrderCnt"
/></p>
<p>
{{
formatterNum
(
data
.
convOrderCnt
)
}}
</p>
</div>
<div>
<p>
触达顾客转化收益(元)
<tip
/></p>
<p>
触达顾客转化收益(元)
<tip
:text=
"tipText.convSalesAmt"
/></p>
<p>
{{
formatterNumAndFixed
(
data
.
convSalesAmt
)
}}
</p>
</div>
</div>
...
...
@@ -52,6 +52,17 @@ export default {
default
:
()
=>
{}
}
},
data
()
{
return
{
tipText
:
{
planMbrNum
:
'计划使用短信触达的顾客人数。如果当前计划在不同时间用短信多次触达同一个顾客,会进行去重统计,仅计算为1个人。'
,
touchMbrNum
:
'发送短信成功的顾客人数。如果当前计划在不同时间用短信多次触达同一个顾客,会进行去重统计,仅计算为1个人。'
,
convMbrNum
:
'发送短信成功的顾客中,在收益有效期内消费的顾客人数。无论顾客消费了几次,会进行去重统计,仅计算为1个人。'
,
convOrderCnt
:
'发送短信成功的顾客中,在收益有效期内消费的顾客订单数。'
,
convSalesAmt
:
'发送短信成功的顾客中,在收益有效期内消费的顾客订单金额。'
}
};
},
mixins
:
[
formatterNum
]
};
</
script
>
...
...
src/views/ecm/touch-components/touch-charts.vue
View file @
ac6bdfa2
...
...
@@ -9,11 +9,11 @@
</
template
>
<
script
>
import
*
as
G2
from
'@antv/g2'
;
import
{
ecmTouchEffectColumnDiagram
,
ecmGuideCluesColumnDiagram
,
ecmHeadCluesColumn
Diagram
}
from
'@/service/api/ecmApi.js'
;
import
{
ecmTouchEffectColumnDiagram
,
telTaskDiagram
,
mass
Diagram
}
from
'@/service/api/ecmApi.js'
;
export
default
{
name
:
'touch-charts'
,
props
:
{
type
:
String
,
// 0是触达效果 1导购线索 2后台线索
type
:
String
,
createTime
:
Number
},
data
()
{
...
...
@@ -115,10 +115,21 @@ export default {
},
getChartData
()
{
let
meth
;
if
(
this
.
type
==
0
)
meth
=
ecmTouchEffectColumnDiagram
;
else
if
(
this
.
type
==
1
)
meth
=
ecmGuideCluesColumnDiagram
;
else
meth
=
ecmHeadCluesColumnDiagram
;
meth
({
ecmPlanId
:
this
.
$route
.
query
.
id
||
this
.
$route
.
params
.
id
}).
then
(
res
=>
{
let
params
=
{
ecmPlanId
:
this
.
$route
.
query
.
id
||
this
.
$route
.
params
.
id
};
if
(
!
this
.
type
)
{
meth
=
ecmTouchEffectColumnDiagram
;
}
else
if
(
this
.
type
==
'话务'
)
{
meth
=
telTaskDiagram
;
params
.
convType
=
1
;
}
else
if
(
this
.
type
==
'群发转话务'
)
{
meth
=
telTaskDiagram
;
params
.
convType
=
2
;
}
else
if
(
this
.
type
==
'群发'
)
{
meth
=
massDiagram
;
}
meth
(
params
).
then
(
res
=>
{
if
(
!
res
.
result
||
!
res
.
result
.
length
)
{
// 没数据的情况
this
.
isNone
=
true
;
...
...
src/views/ecm/touch-components/wechat/index.vue
View file @
ac6bdfa2
...
...
@@ -8,11 +8,11 @@
</div>
<div
v-if=
"customServiceData"
>
<h3>
{{
$route
.
query
.
effectType
==
0
?
'客服接口(文本、图文、图片、小程序)'
:
'客服接口(小程序)'
}}
</h3>
<wechat-sum
:data=
"customServiceData"
/>
<wechat-sum
:data=
"customServiceData"
:tipText=
"customText"
/>
</div>
<div
v-if=
"batchData"
style=
"margin-top: 30px"
>
<h3>
群发接口(文本、图文、图片)
</h3>
<wechat-sum
:data=
"batchData"
/>
<wechat-sum
:data=
"batchData"
:tipText=
"batchText"
/>
</div>
</div>
</
template
>
...
...
@@ -29,6 +29,24 @@ export default {
batchData
:
{
type
:
Object
||
undefined
}
},
data
()
{
return
{
customText
:
{
planMbrNum
:
'计划使用微信客服接口触达的顾客人数。如果当前计划在不同时间用微信客服接口触达多次触达同一个顾客,会进行去重统计,仅计算为1个人。'
,
touchMbrNum
:
'使用微信客服接口成功推送触达的顾客人数。如果当前计划在不同时间用微信客服接口触达多次触达同一个顾客,会进行去重统计,仅计算为1个人。微信客服接口成功推送触达需要严格的前置条件,也有相应限制,可能导购触达人数过低。'
,
convMbrNum
:
'使用微信客服接口成功推送触达的顾客中,在收益有效期内消费的顾客人数。无论顾客消费了几次,会进行去重统计,仅计算为1个人。'
,
convOrderCnt
:
'使用微信客服接口成功推送触达的顾客中,在收益有效期内消费的顾客订单数。'
,
convSalesAmt
:
'使用微信客服接口成功推送触达的顾客中,在收益有效期内消费的顾客订单金额。'
},
batchText
:
{
planMbrNum
:
'计划使用微信服务号群发接口进行推送触达的顾客人数。如果当前计划在不同时间用微信服务号群发接口多次触达同一个顾客,会进行去重统计,仅计算为1个人。'
,
touchMbrNum
:
'使用微信服务号群发接口成功推送的顾客人数。如果当前计划在不同时间用微信服务号群发接口触达多次触达同一个顾客,会进行去重统计,仅计算为1个人。由于微信系统限制,无法获取发送的消息是否成功到达顾客手机,所以只要成功向微信接口发出消息,即视为实际触达。'
,
convMbrNum
:
'使用微信服务号群发接口触达的顾客中,在收益有效期内消费的顾客人数。无论顾客消费了几次,会进行去重统计,仅计算为1个人。'
,
convOrderCnt
:
'使用微信服务号群发接口触达的顾客中,在收益有效期内消费的顾客订单数。'
,
convSalesAmt
:
'使用微信服务号群发接口触达的顾客中,在收益有效期内消费的顾客订单金额。'
}
};
}
};
</
script
>
...
...
src/views/ecm/touch-components/wechat/wechat-sum.vue
View file @
ac6bdfa2
...
...
@@ -3,7 +3,7 @@
<div
class=
"middle"
>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div>
<p>
计划触达人数
<tip
/></p>
<p>
计划触达人数
<tip
:text=
"tipText.planMbrNum"
/></p>
<p>
{{
formatterNum
(
data
.
planMbrNum
)
}}
</p>
</div>
</div>
...
...
@@ -13,7 +13,7 @@
</div>
<div
class=
"item-bg bg-purper center_flex min-w-173"
>
<div>
<p>
实际触达人数
<tip
/></p>
<p>
实际触达人数
<tip
:text=
"tipText.touchMbrNum"
/></p>
<p>
{{
formatterNum
(
data
.
touchMbrNum
)
}}
</p>
</div>
</div>
...
...
@@ -23,17 +23,17 @@
</div>
<div
class=
"item-bg bg-green center_flex min-w-214"
>
<div>
<p>
触达顾客转化人数
<tip
/></p>
<p>
触达顾客转化人数
<tip
:text=
"tipText.convMbrNum"
/></p>
<p>
{{
formatterNum
(
data
.
convMbrNum
)
}}
</p>
</div>
</div>
<div
class=
"item-bg bg-green min-w-527"
>
<div>
<p>
触达顾客订单数
<tip
/></p>
<p>
触达顾客订单数
<tip
:text=
"tipText.convOrderCnt"
/></p>
<p>
{{
formatterNum
(
data
.
convOrderCnt
)
}}
</p>
</div>
<div>
<p>
触达顾客转化收益(元)
<tip
/></p>
<p>
触达顾客转化收益(元)
<tip
:text=
"tipText.convSalesAmt"
/></p>
<p>
{{
formatterNumAndFixed
(
data
.
convSalesAmt
)
}}
</p>
</div>
</div>
...
...
@@ -50,7 +50,8 @@ export default {
data
:
{
type
:
Object
,
default
:
()
=>
{}
}
},
tipText
:
Object
},
mixins
:
[
formatterNum
]
};
...
...
src/views/ecm/touch-effect.vue
View file @
ac6bdfa2
...
...
@@ -3,13 +3,14 @@
<div
class=
"dm-wrap effect"
>
<div
class=
"title"
>
<h2>
计划整体效果
</h2>
<el-link
type=
"primary"
:underline=
"false"
style=
"color: #1890ff"
@
click=
"toClue('计划整体')"
>
查看详情
<i
class=
"el-icon-arrow-right"
style=
"margin-left: 10px"
></i></el-link>
</div>
<touch-charts
:type=
"0"
:createTime=
"$route.query.createTime"
/>
<market-list
v-if=
"marketListData.length"
:isRepeat=
"isRepeat"
:data=
"marketListData"
:isReference=
"isReference"
:batchNum=
"batchNum"
:batchTimes=
"batchTime"
/>
<market-list
v-if=
"marketListData.length"
:isRepeat=
"isRepeat"
:data=
"marketListData"
:isReference=
"isReference"
:batchNum=
"batchNum"
:batchTimes=
"batchTime"
@
toClue=
"toClue"
/>
</div>
<card-profit
v-if=
"cardLeadTable.length"
:list=
"cardLead"
:tableData=
"cardLeadTable"
/>
<batch-send
v-if=
"findTypeIsExist(1) || findTypeIsExist(2) || findTypeIsExist(3)"
:task-list=
"findTypeObj(optionsList, 1)"
:tel-traffic-list=
"findTypeObj(optionsList, 2)"
:msg-list=
"findTypeObj(optionsList, 3)"
/>
<phone-traffic
v-if=
"findTypeIsExist(4)"
:data=
"findTypeObj(optionsList, 4)"
/>
<batch-send
v-if=
"findTypeIsExist(1) || findTypeIsExist(2) || findTypeIsExist(3)"
:task-list=
"findTypeObj(optionsList, 1)"
:tel-traffic-list=
"findTypeObj(optionsList, 2)"
:msg-list=
"findTypeObj(optionsList, 3)"
@
toClue=
"toClue"
/>
<phone-traffic
v-if=
"findTypeIsExist(4)"
:data=
"findTypeObj(optionsList, 4)"
@
toClue=
"toClue"
/>
<short-msg
v-if=
"findTypeIsExist(5)"
:data=
"findTypeObj(optionsList, 5)"
/>
<wechat
v-if=
"findTypeIsExist(6) || findTypeIsExist(7)"
:custom-service-data=
"findTypeObj(optionsList, 6)"
:batch-data=
"findTypeObj(optionsList, 7)"
/>
</div>
...
...
@@ -59,14 +60,14 @@ export default {
this
.
getCardLeadTable
();
},
methods
:
{
//
toClue(type) {
//
let planName = this.$route.query.name;
//
let id = this.$route.params.id;
//
let createTime = this.$route.query.createTime;
//
this.ecmPlanId = id;
// // type 1为导购线索 2为后台线索
// this.$router.push({ path: '/ecm/clue', query: { planName, id, type, createTim
e } });
//
},
toClue
(
type
)
{
let
planName
=
this
.
$route
.
query
.
name
;
let
id
=
this
.
$route
.
params
.
id
;
let
createTime
=
this
.
$route
.
query
.
createTime
;
this
.
ecmPlanId
=
id
;
let
effectType
=
this
.
$route
.
query
.
effectType
;
this
.
$router
.
push
({
path
:
'/ecm/clue'
,
query
:
{
planName
,
id
,
type
,
createTime
,
effectTyp
e
}
});
},
// 获取计划整体效果的总数据
getMarketList
()
{
ecmTouchEffectTable
({
ecmPlanId
:
this
.
ecmPlanId
}).
then
(
res
=>
{
...
...
@@ -138,8 +139,11 @@ export default {
padding
:
25px
20px
27px
!important
;
margin-bottom
:
10px
!important
;
.title
{
padding-left
:
12px
;
margin-bottom
:
27px
;
padding
:
0
37px
0
12px
;
margin-bottom
:
37px
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
h2
{
font-size
:
16px
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
...
...
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