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
76f0300e
Commit
76f0300e
authored
May 25, 2021
by
liuchenxi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update:触达效果
parent
9e44c4bd
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
51 additions
and
66 deletions
+51
-66
ecmApi.js
src/service/api/ecmApi.js
+13
-4
touch-clue.vue
src/views/ecm/touch-clue.vue
+0
-0
card-profit.vue
src/views/ecm/touch-components/card-profit.vue
+6
-10
funnel.vue
src/views/ecm/touch-components/funnel.vue
+0
-7
market-list.vue
src/views/ecm/touch-components/market-list.vue
+16
-22
touch-charts.vue
src/views/ecm/touch-components/touch-charts.vue
+1
-0
touch-effect.vue
src/views/ecm/touch-effect.vue
+15
-23
No files found.
src/service/api/ecmApi.js
View file @
76f0300e
...
...
@@ -58,17 +58,26 @@ export const ecmGuideCluesColumnDiagram = params => requests(PREFIX + 'ecmGuideC
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
ecmGuideCluesTouchEffectTabTotalHead
=
params
=>
requests
(
PREFIX
+
'ecmGuideCluesTouchEffectTabTotalHead'
,
params
);
// 触达效果-整体转化-表头
export
const
ecmGuideCluesTouchEffectTab
=
params
=>
requests
(
PREFIX
+
'ecmGuideCluesTouchEffectTab'
,
params
);
// 触达效果-其他tab-表格
export
const
ecmGuideCluesTouchEffectTabHead
=
params
=>
requests
(
PREFIX
+
'ecmGuideCluesTouchEffectTabHead'
,
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
ecmHeadCluesTaskTabHead
=
params
=>
requests
(
PREFIX
+
'ecmHeadCluesTaskTabHead'
,
params
);
//表头1 计划整体
export
const
ecmGuideCluesTouchEffectTabTotalHead1
=
params
=>
requests
(
PREFIX
+
'ecmGuideCluesTouchEffectTabTotalHead1'
,
params
);
//表头2 区域合计
// 智能营销--表格的合计和计划整体数据
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
);
// 总部线索表头
// 智能营销线索页tree
export
const
getGroupTree
=
params
=>
requests
(
PREFIX
+
'getGroupTree'
,
params
);
// export
export
const
getTabList
=
params
=>
requests
(
PREFIX
+
'ecmGuideCluesTableLabel'
,
params
);
// 智能营销导出表格
export
const
otherTableExoport
=
config
.
api
+
PREFIX
+
'ecmGuideCluesTouchEffectTabExport'
;
// // 触达效果-其他tab-表格
export
const
allConvTableExport
=
config
.
api
+
PREFIX
+
'ecmGuideCluesTouchEffectTotalTabExport'
;
// 触达效果-整体转化-表格
export
const
taskTableExport
=
config
.
api
+
PREFIX
+
'ecmGuideCluesTaskTableExport'
;
// 触达效果-任务完成情况表格
export
const
headClueTableExport
=
config
.
api
+
PREFIX
+
'ecmHeadCluesTaskTabExport'
;
// 触达效果-后台线索表格
export
const
getUseStoredFalg
=
params
=>
requests
(
PREFIX
+
'get-ecm-store-flag'
,
params
);
...
...
src/views/ecm/touch-clue.vue
View file @
76f0300e
This diff is collapsed.
Click to expand it.
src/views/ecm/touch-components/card-profit.vue
View file @
76f0300e
...
...
@@ -31,7 +31,7 @@
</div>
<div>
<p>
销售单金额(元)
</p>
<p>
{{
formatterNum
(
list
.
salesAmt
,
true
)
}}
</p>
<p>
{{
parseInt
(
list
.
salesAmt
||
0
).
toLocaleString
(
'zh'
,
{
minimumFractionDigits
:
2
}
)
}}
<
/p
>
<
/div
>
<
/div
>
<
/div
>
...
...
@@ -41,9 +41,9 @@
<
div
class
=
"name"
v
-
if
=
"scope.row.cardName"
>
<
div
class
=
"top"
>
{{
scope
.
row
.
cardName
}}
<span
class=
"type"
>
折扣券
</span>
<
span
class
=
"type"
>
{{
scope
.
row
.
cardName
==
0
?
'抵金券'
:
scope
.
row
.
cardName
==
1
?
'折扣券'
:
scope
.
row
.
cardName
==
2
?
'兑换券'
:
'--'
}}
<
/span
>
<
/div
>
<p>
卡券副标题
</p>
<
p
>
{{
scope
.
row
.
subTitle
}}
<
/p
>
<
/div
>
<
/template
>
<
/el-table-column
>
...
...
@@ -93,14 +93,10 @@ export default {
}
,
computed
:
{
formatterNum
()
{
return
(
val
,
isToFixed
)
=>
{
return
!
val
&&
val
!=
0
?
'--'
:
isToFixed
?
parseInt
(
val
).
toLocaleString
(
'zh'
,
{
minimumFractionDigits
:
2
})
:
parseInt
(
val
).
toLocaleString
();
};
return
val
=>
(
!
val
?
'0'
:
parseInt
(
val
).
toLocaleString
());
}
,
formatterRate
()
{
return
val
=>
{
return
!
val
&&
val
!=
0
?
'--'
:
parseFloat
(
val
).
toFixed
(
2
)
+
'%'
;
};
return
val
=>
(
!
val
?
'0.00%'
:
parseFloat
(
val
).
toFixed
(
2
)
+
'%'
);
}
}
}
;
...
...
@@ -196,7 +192,7 @@ export default {
border
:
1
px
solid
#
ffa39e
;
font
-
size
:
12
px
;
color
:
#
f5222d
;
margin-left
:
4
px
;
margin
-
left
:
6
px
;
}
}
p
{
...
...
src/views/ecm/touch-components/funnel.vue
View file @
76f0300e
...
...
@@ -97,17 +97,10 @@ export default {
height
:
20px
;
line-height
:
20px
;
&:nth-child(1)
{
//
margin
:
0
0
23px
15px
;
margin-bottom
:
23px
;
//
margin-left
:
15px
;
}
&
:nth-child
(
2
)
{
//
margin
:
0
0
33px
-14px
;
margin-bottom
:
33px
;
//
margin-left
:
-14px
;
}
&
:nth-child
(
3
)
{
//
margin
:
0
0
0
-44px
;
}
}
span
{
...
...
src/views/ecm/touch-components/market-list.vue
View file @
76f0300e
...
...
@@ -23,38 +23,39 @@
<div
class=
"right"
:class=
"[isCluePage ? 'cluePage' : '']"
ref=
"right"
>
<div
v-if=
"!isCluePage"
>
<p>
计划人次
</p>
<p>
{{ item.planMbrTimes ? item.planMbrTimes.toLocaleString() : 0 }}
</p>
<!-- <p>{{ item.planMbrTimes ? item.planMbrTimes.toLocaleString() : 0 }}</p> -->
<p>
{{ formatterNum(item.planMbrTimes) }}
</p>
</div>
<div>
<p>
{{ isCluePage ? '计划触达人数' : '计划人数' }}
</p>
<p>
{{
item.planMbrNum ? item.planMbrNum.toLocaleString() : 0
}}
</p>
<p>
{{
formatterNum(item.planMbrNum)
}}
</p>
</div>
<div
v-if=
"isCluePage && item.flag"
class=
"taskRate"
>
<p>
任务完成率
<span>
(任务总数 {{
item.taskCnt ? item.taskCnt.toLocaleString() : 0
}})
</span>
任务完成率
<span>
(任务总数 {{
formatterNum(item.taskCnt)
}})
</span>
</p>
<p>
{{
item.taskRate ? item.taskRate.toFixed(2) + '%' : '0.00%'
}}
</p>
<p>
{{
formatterRate(item.taskRate)
}}
</p>
</div>
<div
v-if=
"isCluePage || item.isSales == 1"
class=
"touchMbr"
>
<p>
触达人数
<span>
(触达率 {{
item.touchRate ? item.touchRate + '%' : '0.00%'
}})
</span>
触达人数
<span>
(触达率 {{
formatterRate(item.touchRate)
}})
</span>
</p>
<p>
{{
item.touchMbrNum ? item.touchMbrNum.toLocaleString() : 0
}}
</p>
<p>
{{
formatterNum(item.touchMbrNum)
}}
</p>
</div>
<div
v-else
class=
"touchMbr touchMbr2"
>
- -
</div>
<div
class=
"convMbr"
>
<p>
转化人数
<span
:class=
"{ active: isReference && item.isSales == 1 && data[0].transformRate < data[1].transformRate }"
>
(转化率 {{
item.transformRate ? item.transformRate + '%' : '0.00%'
}})
</span>
转化人数
<span
:class=
"{ active: isReference && item.isSales == 1 && data[0].transformRate < data[1].transformRate }"
>
(转化率 {{
formatterRate(item.transformRate)
}})
</span>
</p>
<p>
{{
item.convMbrNum ? item.convMbrNum.toLocaleString() : 0
}}
</p>
<p>
{{
formatterNum(item.convMbrNum)
}}
</p>
</div>
<div>
<p>
转化订单数
</p>
<p>
{{
item.convOrderCnt ? item.convOrderCnt.toLocaleString() : 0
}}
</p>
<p>
{{
formatterNum(item.convOrderCnt)
}}
</p>
</div>
<div>
<p>
转化收益
</p>
<p>
{{
convSalesAmt(item.convSalesAmt
) }}
</p>
<p>
{{
parseInt(item.convSalesAmt || 0).toLocaleString('zh', { minimumFractionDigits: 2 }
) }}
</p>
</div>
</div>
</div>
...
...
@@ -89,18 +90,11 @@ export default {
batchNum
:
Number
|
String
},
computed
:
{
convSalesAmt
(
num
)
{
return
num
=>
{
if
(
num
)
{
num
=
parseFloat
(
num
).
toFixed
(
2
);
let
i
=
num
.
indexOf
(
'.'
);
let
before
=
parseInt
(
num
.
slice
(
0
,
i
)).
toLocaleString
();
let
last
=
num
.
slice
(
i
);
return
before
+
last
;
}
else
{
return
'0.00'
;
}
};
formatterNum
()
{
return
val
=>
(
!
val
?
'0'
:
parseInt
(
val
).
toLocaleString
());
},
formatterRate
()
{
return
val
=>
(
!
val
?
'0.00%'
:
parseFloat
(
val
).
toFixed
(
2
)
+
'%'
);
}
}
};
...
...
src/views/ecm/touch-components/touch-charts.vue
View file @
76f0300e
...
...
@@ -28,6 +28,7 @@ export default {
methods
:
{
draw
()
{
this
.
chartData
=
this
.
formatterData
(
this
.
chartData
);
if
(
!
this
.
chartData
.
length
)
return
(
this
.
isNone
=
true
);
// 营销开始时间为当天
let
valueArr
=
this
.
chartData
.
filter
(
item
=>
item
.
value
>=
0
);
let
rateArr
=
this
.
chartData
.
filter
(
item
=>
item
.
rate
>=
0
);
let
valueFlag
=
valueArr
.
every
(
item
=>
item
.
value
==
0
);
// value是否出现全为0的情况
...
...
src/views/ecm/touch-effect.vue
View file @
76f0300e
...
...
@@ -121,7 +121,6 @@ export default {
item
.
transformRate
=
item
.
touchMbrNum
*
1
&&
item
.
planMbrNum
*
1
?
((
item
.
convMbrNum
/
item
.
planMbrNum
)
*
100
).
toFixed
(
2
)
:
0
;
return
item
;
});
console
.
log
(
this
.
marketListData
);
});
},
getFunnelData
()
{
...
...
@@ -140,17 +139,7 @@ export default {
return
item
;
});
this
.
funnelData
=
this
.
formatFunnelData
(
checkData
);
this
.
clueRate
=
checkData
.
map
(
item
=>
{
if
(
item
.
线索转化收益
&&
parseFloat
(
item
.
线索转化收益
))
{
item
=
parseFloat
(
item
.
线索转化收益
).
toFixed
(
2
);
let
i
=
item
.
indexOf
(
'.'
);
let
before
=
parseInt
(
item
.
slice
(
0
,
i
)).
toLocaleString
();
let
last
=
item
.
slice
(
i
);
return
before
+
last
;
}
else
{
return
'0.00'
;
}
});
this
.
clueRate
=
checkData
.
map
(
item
=>
parseInt
(
item
.
convSalesAmt
||
0
).
toLocaleString
(
'zh'
,
{
minimumFractionDigits
:
2
}));
this
.
loading
=
false
;
});
},
...
...
@@ -163,14 +152,14 @@ export default {
action
:
i
,
value
:
parseInt
(
item
[
i
])
?
item
[
i
]
*
1
:
0
,
// 防止字符串的null
rateAction
:
'触达率'
,
rate
:
(
item
.
触达人数
/
item
.
计划触达人数
)
*
100
?
((
item
.
触达人数
/
item
.
计划触达人数
)
*
100
).
toFixed
(
2
)
+
'%'
:
'0.00%'
rate
:
this
.
formatterRate
((
item
.
触达人数
/
item
.
计划触达人数
)
*
100
)
});
}
else
if
(
i
!=
'收益'
&&
i
==
'转化人数'
&&
item
[
i
]
&&
item
.
计划触达人数
)
{
obj
.
unshift
({
action
:
i
,
value
:
parseInt
(
item
[
i
])
?
item
[
i
]
*
1
:
0
,
rateAction
:
'转化率'
,
rate
:
(
item
.
转化人数
/
item
.
触达人数
)
*
100
?
((
item
.
转化人数
/
item
.
触达人数
)
*
100
).
toFixed
(
2
)
+
'%'
:
'0.00%'
rate
:
this
.
formatterRate
((
item
.
转化人数
/
item
.
触达人数
)
*
100
)
});
}
else
{
if
(
i
!=
'线索转化收益'
)
{
...
...
@@ -188,11 +177,7 @@ export default {
getTouchConfig
()
{
ecmPlanTouchConfig
({
ecmPlanId
:
this
.
ecmPlanId
}).
then
(
res
=>
{
this
.
batchNum
=
res
.
result
.
times
?
res
.
result
.
times
:
0
;
if
(
res
.
result
.
lastTime
)
{
this
.
batchTime
=
new
Date
(
parseInt
(
res
.
result
.
lastTime
)).
toLocaleString
(
'zh'
,
{
hour12
:
false
}).
replace
(
/
[\/]
/g
,
'-'
);
}
else
{
this
.
batchTime
=
'--'
;
}
this
.
batchTime
=
res
.
result
.
lastTime
?
new
Date
(
parseInt
(
res
.
result
.
lastTime
)).
toLocaleString
(
'zh'
,
{
hour12
:
false
}).
replace
(
/
[\/]
/g
,
'-'
)
:
'--'
;
let
analyseJson
=
JSON
.
parse
(
res
.
result
.
analyseJson
);
if
(
analyseJson
&&
analyseJson
.
crowd_flag
==
1
)
{
// 是否开启了参照组开关
...
...
@@ -204,21 +189,28 @@ export default {
if
(
item
.
isSales
==
0
)
this
.
marketListData
.
splice
(
index
,
1
);
});
}
if
(
res
.
result
.
effectType
==
1
)
this
.
isRepeat
=
true
;
else
this
.
isRepeat
=
false
;
this
.
isRepeat
=
res
.
result
.
effectType
==
1
?
true
:
false
;
});
},
// 获取卡券收益数据
getCardLeadsSum
()
{
getCardLeads
({
ecmPlanId
:
this
.
$route
.
params
.
id
}).
then
(
res
=>
{
this
.
cardLead
=
res
.
result
;
this
.
cardLead
=
res
.
result
||
{}
;
});
},
getCardLeadTable
()
{
getCardLeadsList
({
ecmPlanId
:
this
.
$route
.
params
.
id
}).
then
(
res
=>
{
this
.
cardLeadTable
=
res
.
result
;
this
.
cardLeadTable
=
res
.
result
||
[]
;
});
}
},
computed
:
{
formatterNum
()
{
return
val
=>
(
!
val
?
'0'
:
parseInt
(
val
).
toLocaleString
());
},
formatterRate
()
{
return
val
=>
(
!
val
?
'0.00%'
:
parseFloat
(
val
).
toFixed
(
2
)
+
'%'
);
}
}
};
</
script
>
...
...
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