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
2dd91b8e
Commit
2dd91b8e
authored
Jan 14, 2022
by
caoyanzhi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update: 智能营销选择非实时分组
parent
70f02ded
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
111 additions
and
28 deletions
+111
-28
form.js
src/views/ecm/form.js
+55
-3
form.vue
src/views/ecm/form.vue
+10
-7
list.vue
src/views/ecm/list.vue
+46
-18
No files found.
src/views/ecm/form.js
View file @
2dd91b8e
...
...
@@ -172,7 +172,9 @@ export default {
gicList
:
[],
// gic支付方式
paymentList
:
[],
//商户支付方式
checkList
:
[],
paymentFlag
:
1
paymentFlag
:
1
,
// 是否选择了非实时分组 true:是 false:否
hasRealTime
:
false
};
},
components
:
{
...
...
@@ -269,6 +271,45 @@ export default {
break
;
}
return
tips
;
},
getRealTimeType
()
{
let
result
=
[
0
,
1
];
if
(
this
.
canSelectRealTime
)
{
result
.
shift
(
0
);
}
return
result
;
},
canSelectRealTime
()
{
let
flag
=
false
;
// 时效选择重复,时间选择非9-23
// 失效选择单次,
// 执行选择立即执行,且当前时间非9-23
// 执行选择定时执行,且时间选择非9-23
if
(
this
.
form
.
effectType
==
1
)
{
let
effectTime
=
this
.
form
.
effectTime
;
if
(
typeof
effectTime
==
'string'
&&
effectTime
.
length
>
0
)
{
effectTime
=
Number
(
effectTime
.
slice
(
0
,
2
));
flag
=
effectTime
<
9
||
effectTime
>
23
;
}
}
if
(
this
.
form
.
effectType
==
2
)
{
if
(
this
.
form
.
execType
==
0
)
{
let
execTime
=
this
.
form
.
execTime
;
if
(
typeof
execTime
==
'string'
&&
execTime
.
length
>
0
)
{
execTime
=
execTime
.
split
(
' '
)[
1
]
.
split
(
':'
)
.
map
(
el
=>
Number
(
el
));
flag
=
execTime
[
0
]
<
9
||
(
execTime
[
0
]
==
23
&&
(
execTime
[
1
]
>
0
||
execTime
[
2
]
>
0
));
}
}
// 小于9 或者大于23
const
now
=
new
Date
().
getHours
();
if
(
this
.
form
.
execType
==
1
)
{
flag
=
now
<
9
||
now
>
23
;
}
}
return
flag
;
}
},
methods
:
{
...
...
@@ -990,6 +1031,10 @@ export default {
this
.
$tips
({
type
:
'warning'
,
message
:
`修改卡券目前不支持微信客服/群发接口`
});
return
false
;
}
if
(
this
.
canSelectRealTime
&&
this
.
hasRealTime
)
{
this
.
$tips
({
type
:
'warning'
,
message
:
'计划执行时间在9:00-23:00之外,无法选择“非实时”的会员分组'
});
return
false
;
}
if
(
this
.
form
.
effectType
!=
0
)
{
let
count
=
await
this
.
checkMessageSendCount
();
params
.
forecastMemberCount
=
count
;
...
...
@@ -1201,7 +1246,10 @@ export default {
// 只有新增时处理数据
if
(
this
.
form
.
memberType
===
1
&&
this
.
isAdd
)
{
this
.
form
.
memberGroupIds
=
data
.
map
(
v
=>
v
.
memberTagGroupId
)
.
map
(
v
=>
{
this
.
hasRealTime
=
this
.
hasRealTime
||
v
.
isRealTime
==
0
;
return
v
.
memberTagGroupId
;
})
.
filter
(
v
=>
v
)
.
join
(
','
);
}
...
...
@@ -1209,8 +1257,12 @@ export default {
handleDataLeft
(
selectedData
,
selectionToRemove
)
{
// 不可编辑
if
(
this
.
form
.
memberType
===
1
&&
this
.
isAdd
)
{
this
.
hasRealTime
=
false
;
this
.
form
.
memberGroupIds
=
selectedData
.
map
(
v
=>
v
.
memberTagGroupId
)
.
map
(
v
=>
{
this
.
hasRealTime
=
this
.
hasRealTime
||
v
.
isRealTime
==
0
;
return
v
.
memberTagGroupId
;
})
.
filter
(
v
=>
v
)
.
join
(
','
);
}
...
...
src/views/ecm/form.vue
View file @
2dd91b8e
...
...
@@ -45,7 +45,7 @@
</div>
</el-form-item>
<el-form-item
label=
"执行时间"
class=
"mt10 is-required"
>
<el-time-select
v-model=
"form.effectTime"
:disabled=
"!isAdd"
:picker-options=
"
{ start: '00:00', step: '01:00', end: '23:00' }" placeholder="请设置">
</el-time-select>
<el-time-select
v-model=
"form.effectTime"
:disabled=
"!isAdd"
:picker-options=
"
{ start:
hasRealTime ? '09:00' :
'00:00', step: '01:00', end: '23:00' }" placeholder="请设置">
</el-time-select>
</el-form-item>
</
template
>
<!-- 单次执行 -->
...
...
@@ -61,7 +61,7 @@
</el-radio-group>
</el-form-item>
<el-form-item
v-if=
"form.execType === 0"
>
<el-date-picker
:
disabled=
"!isAdd"
class=
"inputTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
@
change=
"changeExecTime"
v-model=
"form.execTime"
:picker-options=
"pickerOptions
"
type=
"datetime"
placeholder=
"请选择"
/>
<el-date-picker
:
key=
"hasRealTime ? 1 : 2"
:disabled=
"!isAdd"
class=
"inputTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
@
change=
"changeExecTime"
v-model=
"form.execTime"
:picker-options=
"Object.assign(
{}, pickerOptions, hasRealTime ? { selectableRange: '09:00:00-23:00:00' } : {})
" type="datetime" placeholder="请选择" />
</el-form-item>
</
template
>
<el-form-item
label=
"常用场景"
v-if=
"form.effectType == 1"
>
...
...
@@ -312,10 +312,13 @@
<i
class=
"dm-title__label--icon iconfont icon-xinxixianshi"
></i>
<span
class=
"gray fz13"
>
适用人群创建后不支持修改
</span>
</h3>
<el-radio-group
class=
"pl20 pb20"
v-model=
"form.memberType"
>
<el-radio
:disabled=
"!isAdd"
:label=
"0"
>
会员筛选
</el-radio>
<el-radio
:disabled=
"!isAdd"
:label=
"1"
>
会员分组
</el-radio>
</el-radio-group>
<div
class=
"pl20 pb20"
style=
"display:flex;align-items:center"
>
<el-radio-group
style=
"width: 240px"
v-model=
"form.memberType"
>
<el-radio
:disabled=
"!isAdd"
:label=
"0"
>
会员筛选
</el-radio>
<el-radio
:disabled=
"!isAdd"
:label=
"1"
>
会员分组
</el-radio>
</el-radio-group>
<el-alert
v-if=
"form.memberType == 1 && (form.effectType == 1 || form.effectType == 2)"
style=
"width: 450px"
title=
"执行时间为9:00-23:00之外时,无法选择“非实时”会员分组"
type=
"info"
:closable=
"false"
show-icon
></el-alert>
</div>
<div
class=
"mb20"
v-if=
"form.memberType === 0"
>
<vue-gic-people
v-bind=
"storeParams"
:projectName=
"projectName"
:isAdd=
"isAdd"
:triggerReset=
"true"
:useId=
"useId"
:hasSearchData=
"hasSearchData"
:sceneValue=
"sceneValue"
ref=
"peopleFilter"
@
findFilter=
"findFilter"
@
getBackData=
"getBackData"
@
editHide=
"editHide"
@
editShow=
"editShow"
@
hideBtn=
"hideBtn"
/>
<div
class=
"gic-people--button"
v-show=
"toggleTag"
>
...
...
@@ -324,7 +327,7 @@
</div>
</div>
<div
:class=
"!isAdd ? 'el-view-mask' : ''"
>
<vue-gic-member-group
v-
if=
"form.memberType === 1"
v-bind=
"storeParams
"
:defaltSelected=
"defaltSelected"
:height=
"500"
:projectName=
"projectName"
:headerList=
"headerList"
@
handleDataTransferred=
"handleDataTransferred"
@
handleDataLeft=
"handleDataLeft"
></vue-gic-member-group>
<vue-gic-member-group
v-
bind=
"storeParams"
:real-time-type=
"getRealTimeType
"
:defaltSelected=
"defaltSelected"
:height=
"500"
:projectName=
"projectName"
:headerList=
"headerList"
@
handleDataTransferred=
"handleDataTransferred"
@
handleDataLeft=
"handleDataLeft"
></vue-gic-member-group>
</div>
</section>
<!-- 营销事件组件 -->
...
...
src/views/ecm/list.vue
View file @
2dd91b8e
...
...
@@ -63,7 +63,7 @@
</
template
>
</el-table-column>
<el-table-column
v-for=
"(v, i) in tableHeader"
:fixed=
"v.fixed"
:show-overflow-tooltip=
"v.tooltip"
:width=
"v.width"
:min-width=
"v.minWidth"
:align=
"v.align"
:key=
"i"
:prop=
"v.prop"
:label=
"v.label"
:formatter=
"v.formatter"
>
<
template
slot=
"header"
slot-scope=
"scope"
>
<
template
slot=
"header"
>
<span>
<span>
{{
v
.
label
}}
</span>
<el-tooltip
v-if=
"v.prop == 'timesForPeople'"
content=
"刷新获取最新营销人次统计"
placement=
"top"
:open-delay=
"200"
>
...
...
@@ -72,7 +72,32 @@
</span>
</
template
>
<
template
slot-scope=
"scope"
>
<span
class=
"vertical-middle"
v-if=
"v.formatter"
v-html=
"v.formatter(scope.row)"
></span>
<template
v-if=
"v.prop == 'onlineStatus'"
>
<el-tooltip
v-if=
"scope.row.remarkForMemberLabel"
:content=
"scope.row.remarkForMemberLabel"
placement=
"top"
>
<span>
<span
class=
"dm-status--info has-remark"
></span>
<span
v-if=
"scope.row.onlineStatus == 0"
>
未开始
</span>
<span
v-if=
"scope.row.onlineStatus == 1"
>
进行中
</span>
<span
v-if=
"scope.row.onlineStatus == 2"
>
已结束
</span>
</span>
</el-tooltip>
<template
v-else
>
<span
v-if=
"scope.row.onlineStatus == 0"
>
<span
class=
"dm-status--primary"
></span>
<span>
未开始
</span>
</span>
<span
v-else-if=
"scope.row.onlineStatus == 1"
>
<span
class=
"dm-status--primary--flash"
></span>
<span>
进行中
</span>
</span>
<span
v-else-if=
"scope.row.onlineStatus == 2"
>
<span
class=
"dm-status--info"
></span>
<span>
已结束
</span>
</span>
<span
v-else
>
--
</span>
</
template
>
</template>
<span
class=
"vertical-middle"
v-else-if=
"v.formatter"
v-html=
"v.formatter(scope.row)"
></span>
<span
v-else
>
{{ scope.row[v.prop] }}
</span>
</template>
</el-table-column>
...
...
@@ -199,22 +224,22 @@ export default {
label
:
'状态'
,
prop
:
'onlineStatus'
,
minWidth
:
'140'
,
align
:
'left'
,
formatter
(
row
)
{
let
result
=
'--'
;
switch
(
row
.
onlineStatus
)
{
case
0
:
result
=
'<span class="dm-status--primary">未开始</span>'
;
break
;
case
1
:
result
=
'<span class="dm-status--primary--flash"></span><span class="vertical-middle">进行中</span>'
;
break
;
case
2
:
result
=
'<span class="dm-status--info">已结束</span>'
;
break
;
}
return
result
;
}
align
:
'left'
//
formatter(row) {
//
let result = '--';
//
switch (row.onlineStatus) {
//
case 0:
//
result = '
<
span
class
=
"dm-status--primary"
>
未开始
<
/span>'
;
//
break;
//
case 1:
//
result = '
<
span
class
=
"dm-status--primary--flash"
><
/span><span class="vertical-middle">进行中</
span
>
';
//
break;
//
case 2:
//
result = '
<
span
class
=
"dm-status--info"
>
已结束
<
/span>'
;
//
break;
//
}
//
return result;
//
}
},
{
label
:
'计划触达人数'
,
...
...
@@ -494,6 +519,9 @@ export default {
color
:
#606266
;
}
}
.has-remark
::before
{
background
:
#f5222d
;
}
.senior-search
{
margin-left
:
10px
;
font-size
:
14px
;
...
...
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