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
1d24137d
Commit
1d24137d
authored
Apr 08, 2022
by
crushh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update: dist
parent
b3cd6d13
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
61 additions
and
88 deletions
+61
-88
ruleFilter.vue
src/components/dm-new-rule/ruleFilter.vue
+7
-28
index.vue
src/components/layout/index.vue
+6
-42
ai.js
src/router/modules/ai.js
+3
-1
form.vue
src/views/ai/task/form.vue
+15
-15
task.vue
src/views/ai/task/task.vue
+30
-2
No files found.
src/components/dm-new-rule/ruleFilter.vue
View file @
1d24137d
...
...
@@ -158,6 +158,7 @@ export default {
}
});
this
.
echoData
=
this
.
handleEchoData
(
filterFrontShow
);
console
.
log
(
this
.
echoData
);
}
});
},
...
...
@@ -192,25 +193,6 @@ export default {
});
return
arr
;
},
echoStoreSelectorData
(
key
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
this
.
$refs
.
storeSelector
[
0
]
.
getStoreConfig
()
.
then
(
async
data
=>
{
console
.
log
(
data
);
if
(
data
.
type
==
0
)
{
resolve
(
false
);
}
else
{
const
str
=
data
.
list
.
map
(
item
=>
item
.
name
).
join
(
','
);
resolve
(
str
);
}
})
.
catch
(()
=>
{
resolve
(
false
);
});
});
// 取得门店筛选器的文字回显
},
delAll
()
{
this
.
conditionTypeList
.
forEach
(
item
=>
{
item
.
selectValue
=
[];
...
...
@@ -236,15 +218,12 @@ export default {
},
storeChange
(
uuid
,
esScreeningWidgetChainId
)
{
const
obj
=
this
.
conditionTypeList
.
find
(
item
=>
item
.
esScreeningWidgetChainId
==
esScreeningWidgetChainId
);
this
.
$nextTick
(()
=>
{
this
.
echoStoreSelectorData
(
uuid
).
then
(
res
=>
{
if
(
res
)
{
obj
.
selectValue
=
res
;
obj
.
value
=
uuid
;
}
});
});
console
.
log
(
this
.
conditionTypeList
);
const
res
=
this
.
$refs
.
storeSelector
[
0
].
getList
();
console
.
log
(
res
);
if
(
res
&&
res
.
length
&&
res
[
0
]
==
1
)
return
;
const
str
=
res
.
map
(
item
=>
(
item
.
name
?
item
.
name
:
item
.
id
)).
join
(
','
);
obj
.
value
=
uuid
;
obj
.
selectValue
=
str
;
},
onTabsClick
(
val
)
{
const
{
name
}
=
val
;
...
...
src/components/layout/index.vue
View file @
1d24137d
<
template
>
<!--
<div
class=
"layout-container"
>
<vue-gic-header
class=
"user-header-pop"
style=
"z-index: 1999;"
:projectName=
"projectName"
:collapseFlag=
"collapseFlag"
@
collapseTag=
"collapseTagHandler"
@
toRouterView=
"toRouterView"
></vue-gic-header>
<div
class=
"layout"
>
<aside-menu
class=
"layout-left"
v-if=
"asideShow"
:projectName=
"projectName"
:leftModulesName=
"leftModulesName"
:collapseFlag
.
sync=
"collapseFlag"
></aside-menu>
<div
class=
"layout-right"
:class=
"[
{ asideShow: asideShow }, { collapseFlag: asideShow
&&
collapseFlag }]">
<div
class=
"layout-title"
>
<el-breadcrumb
class=
"dm-breadcrumb"
separator=
"/"
>
<el-breadcrumb-item
:to=
"
{ path: '' }">
<a
href=
"/report/#/memberSummary"
>
首页
</a></el-breadcrumb-item>
<el-breadcrumb-item
:class=
"
{ 'no-link': !v.path, 'can-link': v.path }" v-for="(v, i) in breadcrumb" :key="i" :to="{ path: v.path }">
{{
v
.
name
}}
</el-breadcrumb-item>
</el-breadcrumb>
<h3>
<div>
<span
class=
"content-title"
>
{{
contentTitle
}}
<span
v-if=
"contentTitle == '触达效果'"
class=
"title_tip"
>
每日上午更新昨日数据
</span></span>
<div
v-html=
"layoutTips"
class=
"layout--tips--wrap"
></div>
</div>
<div
v-if=
"showDescription"
class=
"intro_wrap"
><i
class=
"iconfont icon-zhibiaoshuoming introlIcon"
alt=
""
/><span
class=
"intro"
@
click=
"() => (drawer = true)"
>
指标说明
</span></div>
</h3>
</div>
<div
class=
"layout-content__wrap"
>
<div
class=
"layout-content"
:class=
"[
{ asideShow: asideShow }, { collapseFlag: asideShow
&&
collapseFlag }]">
<router-view></router-view>
</div>
</div>
</div>
</div>
<description
:drawer
.
sync=
"drawer"
:direction=
"direction"
:contentTitle=
"contentTitle"
/>
</div>
-->
<div>
<dm-layout
:projectName=
"projectName"
>
<router-view
/></dm-layout>
<dm-layout
:projectName=
"projectName"
>
<keep-alive>
<router-view
v-if=
"$route.meta.keepAlive"
/>
</keep-alive>
<router-view
v-if=
"!this.$route.meta.keepAlive"
/>
</dm-layout>
</div>
</
template
>
<
script
>
...
...
@@ -52,28 +30,14 @@ export default {
this
.
bodyHeight
=
document
.
body
.
clientHeight
||
document
.
documentElement
.
clientHeight
;
},
computed
:
{
// asideShow() {
// return this.$store.state.marketing.asideShow;
// },
contentTitle
()
{
const
name
=
(
this
.
$route
.
meta
&&
this
.
$route
.
meta
.
aliasName
)
||
this
.
$route
.
name
;
// 有些params跳转的需要用到route.name 这种情况如果meta中有aliasName,优先aliasName
return
name
;
},
// breadcrumb() {
// return this.$store.state.marketing.breadcrumb;
// },
// layoutTips() {
// return this.$store.state.marketing.layoutTips;
// },
showDescription
()
{
return
(
this
.
$route
.
path
.
indexOf
(
'ecm/list'
)
>=
0
&&
this
.
$store
.
state
.
marketing
.
xsxsFlag
)
||
this
.
$route
.
path
.
indexOf
(
'ecm/touch'
)
>=
0
;
}
},
// watch:{
// asideShow(val) {
// this.collapseFlag = this.asideShow;
// }
// },
methods
:
{
// 处理路由跳转
toRouterView
(
val
)
{
...
...
src/router/modules/ai.js
View file @
1d24137d
...
...
@@ -9,7 +9,9 @@ export default {
path
:
'list'
,
name
:
'列表'
,
component
:
()
=>
import
(
'../../views/ai/list.vue'
),
meta
:
{}
meta
:
{
keepAlive
:
true
}
},
{
path
:
'add/:scene'
,
...
...
src/views/ai/task/form.vue
View file @
1d24137d
...
...
@@ -18,7 +18,7 @@
<span
class=
"tips"
>
仅支持选择已上线的话术,若需要增加话术,请联系运营经理
</span>
</el-form-item>
</div>
<dm-sub-title
line
>
活动时间
<
span
class=
"tips"
>
每天16:00之后不支持创建当天开始的活动
</span><
/dm-sub-title>
<dm-sub-title
line
>
活动时间
</dm-sub-title>
<div
class=
"section"
>
<birthSense
ref=
"activeTime1"
:data=
"birthTimeData"
v-show=
"form.scene == 1"
@
change=
"getMemberCount"
/>
<holidaySense
ref=
"activeTime2"
:data=
"holidayTimeData"
v-show=
"form.scene == 2"
@
change=
"getMemberCount"
/>
...
...
@@ -45,15 +45,15 @@
<el-form-item
label=
"消费条件"
v-if=
"form.scene == 4 && form.memberType == 0"
>
<div
class=
"consumeLine"
>
<el-checkbox
v-model=
"form.consume_days_flag0"
:true-label=
"1"
:false-label=
"0"
:disabled=
"disabledCheck"
@
change=
"handleLastconsume"
>
最近消费间隔
</el-checkbox>
<el-input-number
v-model=
"form.consume_days0"
@
change=
"handleChangeNum(form.consume_days_flag0)"
controls-position=
"right"
:max=
"730"
:min=
"30"
size=
"small"
style=
"margin:0 10px;"
/>
天
<el-input-number
v-model=
"form.consume_days0"
@
change=
"handleChangeNum(form.consume_days_flag0)"
controls-position=
"right"
:max=
"730"
:min=
"30"
:precision=
"0"
size=
"small"
style=
"margin:0 10px;"
/>
天
</div>
<div
class=
"consumeLine"
>
<el-checkbox
v-model=
"form.consume_times_flag0"
:true-label=
"1"
:false-label=
"0"
:disabled=
"disabledCheck"
@
change=
"handleLastconsume"
>
最近消费次数
</el-checkbox>
<el-input-number
v-model=
"form.consume_times0"
@
change=
"handleChangeNum(form.consume_times_flag0)"
controls-position=
"right"
:max=
"100"
:min=
"1"
size=
"small"
style=
"margin:0 10px;"
/>
次
<el-input-number
v-model=
"form.consume_times0"
@
change=
"handleChangeNum(form.consume_times_flag0)"
controls-position=
"right"
:max=
"100"
:min=
"1"
:precision=
"0"
size=
"small"
style=
"margin:0 10px;"
/>
次
</div>
<div
class=
"consumeLine"
>
<el-checkbox
v-model=
"form.consume_amount_flag0"
:true-label=
"1"
:false-label=
"0"
:disabled=
"disabledCheck"
@
change=
"handleLastconsume"
>
累计消费金额
</el-checkbox>
<el-input-number
v-model=
"form.consume_amount0"
@
change=
"handleChangeNum(form.consume_amount_flag0)"
controls-position=
"right"
:max=
"100000"
:min=
"1"
size=
"small"
style=
"margin:0 10px;"
/>
元
<el-input-number
v-model=
"form.consume_amount0"
@
change=
"handleChangeNum(form.consume_amount_flag0)"
controls-position=
"right"
:
precision=
"0"
:
max=
"100000"
:min=
"1"
size=
"small"
style=
"margin:0 10px;"
/>
元
</div>
<el-button
size=
"small"
@
click=
"ruleVisible2 = true"
v-if=
"!memberCrowdWidgetId"
>
添加其它条件
</el-button>
<ruleFilter
:visiable
.
sync=
"ruleVisible2"
@
save=
"handleRuleFilterSave"
:memberCrowdWidgetId=
"memberCrowdWidgetId"
:hideId=
"hideId"
/>
...
...
@@ -62,15 +62,15 @@
<el-form-item
label=
"消费条件"
v-if=
"form.scene == 4 && form.memberType == 1"
>
<div
class=
"consumeLine"
>
<el-checkbox
v-model=
"form.consume_days_flag1"
@
change=
"getMemberCount"
:true-label=
"1"
:false-label=
"0"
>
最近消费间隔
</el-checkbox>
<el-input-number
v-model=
"form.consume_days1"
@
change=
"handleChangeNum(form.consume_days_flag1)"
controls-position=
"right"
:max=
"730"
:min=
"30"
size=
"small"
style=
"margin:0 10px;"
/>
天
<el-input-number
v-model=
"form.consume_days1"
@
change=
"handleChangeNum(form.consume_days_flag1)"
controls-position=
"right"
:max=
"730"
:
precision=
"0"
:
min=
"30"
size=
"small"
style=
"margin:0 10px;"
/>
天
</div>
<div
class=
"consumeLine"
>
<el-checkbox
v-model=
"form.consume_times_flag1"
@
change=
"getMemberCount"
:true-label=
"1"
:false-label=
"0"
>
最近消费次数
</el-checkbox>
<el-input-number
v-model=
"form.consume_times1"
@
change=
"handleChangeNum(form.consume_times_flag1)"
controls-position=
"right"
:max=
"100"
:min=
"1"
size=
"small"
style=
"margin:0 10px;"
/>
次
<el-input-number
v-model=
"form.consume_times1"
@
change=
"handleChangeNum(form.consume_times_flag1)"
controls-position=
"right"
:max=
"100"
:
precision=
"0"
:
min=
"1"
size=
"small"
style=
"margin:0 10px;"
/>
次
</div>
<div
class=
"consumeLine"
>
<el-checkbox
v-model=
"form.consume_amount_flag1"
@
change=
"getMemberCount"
:true-label=
"1"
:false-label=
"0"
>
累计消费金额
</el-checkbox>
<el-input-number
v-model=
"form.consume_amount1"
@
change=
"handleChangeNum(form.consume_amount1)"
controls-position=
"right"
:max=
"100000"
:min=
"1"
size=
"small"
style=
"margin:0 10px;"
/>
元
<el-input-number
v-model=
"form.consume_amount1"
@
change=
"handleChangeNum(form.consume_amount1)"
controls-position=
"right"
:max=
"100000"
:
precision=
"0"
:
min=
"1"
size=
"small"
style=
"margin:0 10px;"
/>
元
</div>
</el-form-item>
<el-form-item
label=
"预计覆盖人数"
>
...
...
@@ -212,7 +212,7 @@
</el-select>
</td>
<td
class=
"tagSelectCell"
style=
"width:170px"
>
<el-input-number
v-model=
"item.interval"
controls-position=
"right"
:max=
"60"
:min=
"1"
size=
"small"
/>
<el-input-number
v-model=
"item.interval"
controls-position=
"right"
:max=
"60"
:min=
"1"
size=
"small"
:precision=
"0"
/>
</td>
<td
class=
"tagSelectCell"
>
<div
class=
"delIcon"
v-show=
"recallList.length > 1"
type=
"text"
@
click=
"delRecallList(index)"
>
...
...
@@ -240,7 +240,7 @@
</el-form-item>
<div
v-if=
"form.analyseFlag == 1"
>
<el-form-item
label=
"分析天数"
prop=
"analyseDays"
>
触达日期起
<el-input-number
style=
"width:128px;margin:0 5px;"
v-model=
"form.analyseDays"
controls-position=
"right"
:max=
"31"
:min=
"1"
size=
"small"
/>
天之内
触达日期起
<el-input-number
style=
"width:128px;margin:0 5px;"
v-model=
"form.analyseDays"
controls-position=
"right"
:
precision=
"0"
:
max=
"31"
:min=
"1"
size=
"small"
/>
天之内
<div
class=
"analyseTips"
>
设置从客户被成功触达的日期计算,14 天以内的转化会被被作为此营销活动的转化收益;
<br
/>
注:最短 1 天,最长 31 天 (以自然日计算),时长越长,会员的转化与此次营销的相关度越低,请酌情填写分析天数
...
...
@@ -248,7 +248,7 @@
</el-form-item>
<el-form-item
label=
"活动目标"
prop=
"analyseAmount"
>
销售额
<el-input-number
style=
"width:128px;margin:0 5px;"
v-model=
"form.analyseAmount"
placeholder=
"1-99999"
controls-position=
"right"
:max=
"99999"
:min=
"1"
size=
"small"
/>
<el-input-number
style=
"width:128px;margin:0 5px;"
v-model=
"form.analyseAmount"
placeholder=
"1-99999"
controls-position=
"right"
:
precision=
"0"
:
max=
"99999"
:min=
"1"
size=
"small"
/>
万元
</el-form-item>
</div>
...
...
@@ -457,7 +457,9 @@ export default {
this
.
form
.
scene
=
scene
&&
Number
(
scene
);
this
.
getTemplateList
();
this
.
getAiDictList
();
if
(
!
this
.
isAdd
)
{
if
(
this
.
isAdd
)
{
this
.
$route
.
meta
.
refresh
=
false
;
}
else
{
this
.
getActivityDetail
(
id
);
}
if
(
scene
==
3
)
{
...
...
@@ -586,10 +588,6 @@ export default {
const
{
startDate
,
endDate
,
callFlag
,
callTime
,
birth_type
,
birth_days
,
holiday_date
,
holiday_type
,
holiday_name
}
=
activeTimeData
;
if
(
new
Date
(
startDate
).
getFullYear
()
==
new
Date
().
getFullYear
()
&&
new
Date
(
startDate
).
getMonth
()
+
1
==
new
Date
().
getMonth
()
+
1
&&
new
Date
(
startDate
).
getDate
()
==
new
Date
().
getDate
())
{
if
(
new
Date
().
getHours
()
>=
16
)
{
this
.
$message
.
error
(
'16:00之后不支持创建当天生效的活动'
);
return
;
}
if
(
callFlag
==
1
)
{
let
arr
=
callTime
.
map
(
item
=>
item
.
split
(
'-'
)[
1
]);
let
endTime
=
arr
.
reduce
((
p
,
v
)
=>
(
p
<
v
?
v
:
p
));
...
...
@@ -685,6 +683,8 @@ export default {
try
{
const
{
result
}
=
await
initActivity
(
data
);
if
(
result
)
{
this
.
$message
.
success
(
'保存成功'
);
this
.
$route
.
meta
.
refresh
=
true
;
this
.
$router
.
go
(
-
1
);
}
}
finally
{
...
...
src/views/ai/task/task.vue
View file @
1d24137d
<
template
>
<div
class=
"contain"
v-loding=
"loading"
>
<div
class=
"contain"
>
<div
class=
"cardList"
>
<div
class=
"card"
v-for=
"item in cardContent"
:key=
"item.title"
>
<div
class=
"cardTitle"
>
...
...
@@ -35,7 +35,7 @@
</el-form-item>
</el-form>
</div>
<el-table
:data=
"tableData"
style=
"width:100%"
>
<el-table
:data=
"tableData"
style=
"width:100%"
v-loading=
"loading"
>
<el-table-column
prop=
"activityName"
label=
"活动名称"
show-overflow-tooltip
/>
<el-table-column
prop=
"scene"
label=
"活动场景"
show-overflow-tooltip
>
<template
slot-scope=
"
{ row }">
...
...
@@ -273,6 +273,34 @@ export default {
this
.
getRechargeCenter
();
this
.
getAiAccountCheck
();
},
activated
()
{
if
(
this
.
$route
.
meta
.
refresh
)
{
this
.
form
=
{
activityName
:
''
,
scene
:
''
,
activityPlanStatus
:
''
,
time
:
[],
pageNum
:
1
,
pageSize
:
20
};
}
this
.
getTableData
();
},
beforeRouteEnter
(
to
,
from
,
next
)
{
const
{
meta
:
{
type
,
path
,
refresh
}
}
=
from
;
if
(
path
!==
'/list'
)
{
to
.
meta
.
refresh
=
true
;
}
else
{
if
(
type
===
'add'
&&
refresh
)
{
to
.
meta
.
refresh
=
true
;
}
else
{
to
.
meta
.
refresh
=
false
;
}
}
next
();
},
components
:
{
dmDropdown
},
...
...
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