Commit 2dd91b8e by caoyanzhi

update: 智能营销选择非实时分组

parent 70f02ded
......@@ -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(',');
}
......
......@@ -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>
<!-- 营销事件组件 -->
......
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment