Commit 3f649568 by chenxin

fix: 隐藏ecm的更改

parent 769e373e
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><link rel="shortcut icon" href=./static/img/favicon.ico><title>GIC后台</title><link rel=stylesheet type=text/css href=static/fonts/iconfont.css><link rel=stylesheet type=text/css href=static/css/common.css><link rel=stylesheet href=//web-1251519181.file.myqcloud.com/components/element.2.12.0.css><link href=/marketing/static/css/main.7f07e72873415a5dd259434f24c21547.css rel=stylesheet></head><body><div id=app></div><script src=//web-1251519181.file.myqcloud.com/lib/vue/2.5.2/vue.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vue-router/3.0.2/vue-router.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vuex/3.1.0/vuex.min.js></script><script src=//web-1251519181.file.myqcloud.com/components/element.2.12.0.js></script><script src=//web-1251519181.file.myqcloud.com/components/header.2.0.40.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.04.js></script><script src=//web-1251519181.file.myqcloud.com/components/card.2.0.19.js></script><script src=//web-1251519181.file.myqcloud.com/components/store.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/img-preview.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/member-group.2.2.24.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-card.2.0.24.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-new.2.0.65.js></script><script src=//web-1251519181.file.myqcloud.com/components/confirm-people.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/people.2.0.43.js></script><script src=//web-1251519181.file.myqcloud.com/components/export-excel.2.0.16.js></script><script src=//web-1251519181.file.myqcloud.com/components/input.2.0.20.js></script><script src=//web-1251519181.file.myqcloud.com/components/delete.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/selector.1.2.20.js></script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script src=//web-1251519181.file.myqcloud.com/components/activity-select.1.0.2.1.js></script><script type=text/javascript src=/marketing/static/js/manifest.d31767b44d56c8fe8293.js></script><script type=text/javascript src=/marketing/static/js/vendor.fef1c3d3b3b586faaee2.js></script><script type=text/javascript src=/marketing/static/js/main.42b83750b6050a394ad3.js></script></body></html>
\ No newline at end of file
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><link rel="shortcut icon" href=./static/img/favicon.ico><title>GIC后台</title><link rel=stylesheet type=text/css href=static/fonts/iconfont.css><link rel=stylesheet type=text/css href=static/css/common.css><link rel=stylesheet href=//web-1251519181.file.myqcloud.com/components/element.2.12.0.css><link href=/marketing/static/css/main.e8ec652dcafc71797da86415f4f314b0.css rel=stylesheet></head><body><div id=app></div><script src=//web-1251519181.file.myqcloud.com/lib/vue/2.5.2/vue.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vue-router/3.0.2/vue-router.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vuex/3.1.0/vuex.min.js></script><script src=//web-1251519181.file.myqcloud.com/components/element.2.12.0.js></script><script src=//web-1251519181.file.myqcloud.com/components/header.2.0.40.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.04.js></script><script src=//web-1251519181.file.myqcloud.com/components/card.2.0.19.js></script><script src=//web-1251519181.file.myqcloud.com/components/store.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/img-preview.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/member-group.2.2.24.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-card.2.0.24.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-new.2.0.65.js></script><script src=//web-1251519181.file.myqcloud.com/components/confirm-people.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/people.2.0.43.js></script><script src=//web-1251519181.file.myqcloud.com/components/export-excel.2.0.16.js></script><script src=//web-1251519181.file.myqcloud.com/components/input.2.0.20.js></script><script src=//web-1251519181.file.myqcloud.com/components/delete.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/selector.1.2.20.js></script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script src=//web-1251519181.file.myqcloud.com/components/activity-select.1.0.2.1.js></script><script type=text/javascript src=/marketing/static/js/manifest.d4f05d715eb2d9e0b7ea.js></script><script type=text/javascript src=/marketing/static/js/vendor.fef1c3d3b3b586faaee2.js></script><script type=text/javascript src=/marketing/static/js/main.42b83750b6050a394ad3.js></script></body></html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
!function(e){var r=window.webpackJsonp;window.webpackJsonp=function(n,c,o){for(var f,i,u,s=0,d=[];s<n.length;s++)i=n[s],t[i]&&d.push(t[i][0]),t[i]=0;for(f in c)Object.prototype.hasOwnProperty.call(c,f)&&(e[f]=c[f]);for(r&&r(n,c,o);d.length;)d.shift()();if(o)for(s=0;s<o.length;s++)u=a(a.s=o[s]);return u};var n={},t={15:0};function a(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,a),t.l=!0,t.exports}a.e=function(e){var r=t[e];if(0===r)return new Promise(function(e){e()});if(r)return r[2];var n=new Promise(function(n,a){r=t[e]=[n,a]});r[2]=n;var c=document.getElementsByTagName("head")[0],o=document.createElement("script");o.type="text/javascript",o.charset="utf-8",o.async=!0,o.timeout=12e4,a.nc&&o.setAttribute("nonce",a.nc),o.src=a.p+"static/js/"+({0:"card",1:"game",2:"wechat",3:"message",4:"ewash",5:"scan",6:"ecm",7:"evaluation",8:"activity",9:"cdKey",10:"recharge",11:"msg",12:"calllog"}[e]||e)+"."+{0:"2aaaf2d7a557f84fbbf4",1:"13dab37beda20959629e",2:"2bc295c93adcee55a98f",3:"0378b23ea9e2767987cf",4:"8793097017f82a71f64b",5:"c96a7f29c775b2723766",6:"982efd7bec6e216f9324",7:"99e49bc49f2439ac7253",8:"35efeb2ae926b54b4341",9:"1bc2336dbaf1112fbdc8",10:"e5cd16e4f5e1229ea313",11:"00a6edc9657c9e4c34fa",12:"f1c9fa1ccd0d36ae0602"}[e]+".js";var f=setTimeout(i,12e4);function i(){o.onerror=o.onload=null,clearTimeout(f);var r=t[e];0!==r&&(r&&r[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return o.onerror=o.onload=i,c.appendChild(o),n},a.m=e,a.c=n,a.d=function(e,r,n){a.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(r,"a",r),r},a.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},a.p="/marketing/",a.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
!function(e){var r=window.webpackJsonp;window.webpackJsonp=function(n,c,o){for(var f,i,u,s=0,d=[];s<n.length;s++)i=n[s],t[i]&&d.push(t[i][0]),t[i]=0;for(f in c)Object.prototype.hasOwnProperty.call(c,f)&&(e[f]=c[f]);for(r&&r(n,c,o);d.length;)d.shift()();if(o)for(s=0;s<o.length;s++)u=a(a.s=o[s]);return u};var n={},t={15:0};function a(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,a),t.l=!0,t.exports}a.e=function(e){var r=t[e];if(0===r)return new Promise(function(e){e()});if(r)return r[2];var n=new Promise(function(n,a){r=t[e]=[n,a]});r[2]=n;var c=document.getElementsByTagName("head")[0],o=document.createElement("script");o.type="text/javascript",o.charset="utf-8",o.async=!0,o.timeout=12e4,a.nc&&o.setAttribute("nonce",a.nc),o.src=a.p+"static/js/"+({0:"card",1:"game",2:"wechat",3:"message",4:"ewash",5:"scan",6:"ecm",7:"evaluation",8:"activity",9:"cdKey",10:"recharge",11:"msg",12:"calllog"}[e]||e)+"."+{0:"2aaaf2d7a557f84fbbf4",1:"13dab37beda20959629e",2:"2bc295c93adcee55a98f",3:"0378b23ea9e2767987cf",4:"8793097017f82a71f64b",5:"c96a7f29c775b2723766",6:"22f5a6ced6bc68f8c708",7:"99e49bc49f2439ac7253",8:"35efeb2ae926b54b4341",9:"1bc2336dbaf1112fbdc8",10:"e5cd16e4f5e1229ea313",11:"00a6edc9657c9e4c34fa",12:"f1c9fa1ccd0d36ae0602"}[e]+".js";var f=setTimeout(i,12e4);function i(){o.onerror=o.onload=null,clearTimeout(f);var r=t[e];0!==r&&(r&&r[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return o.onerror=o.onload=i,c.appendChild(o),n},a.m=e,a.c=n,a.d=function(e,r,n){a.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(r,"a",r),r},a.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},a.p="/marketing/",a.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
......@@ -13,6 +13,45 @@ export default {
name: 'ecm-manage',
mixins: [xxSysp_mix],
data() {
// 校验执行日期
const checkExecDate = (rule, value, callback) => {
// 1按天执行 2按周 3按月
const { execDateType, execDate } = this.form;
if (execDateType !== 1) {
if (execDate && execDate.length) {
callback();
}
callback(new Error(rule.message));
} else {
callback();
}
};
// 校验执行时间
const checkExecTime = (rule, value, callback) => {
if (this.isAdd) {
const { singleFlag, execType, execTime } = this.form;
// 1单次 2循环执行
if (singleFlag === 2 && !execTime) {
// 重复
callback(new Error('执行时间不能为空'));
}
if (singleFlag === 1 && execType === 0) {
// 单次 定时
if (!execTime) {
callback(new Error('执行时间不能为空'));
} else {
// 执行时间得大于当前时间至少30min
const minDate = Date.now() + 1 * 30 * 60 * 1000;
if (new Date(execTime).getTime() < minDate) {
callback(new Error('执行时间得大于当前时间至少30min'));
}
}
}
}
callback();
};
return {
ecmPlanId: '', // 必传,
creatorId: '',
......@@ -20,6 +59,11 @@ export default {
loading: false,
effectActionOptions: [{ value: 'subscribe', label: '关注触发' }, { value: 'authentication', label: '认证触发' }, { value: 'consume', label: '消费触发' }, { value: 'upgrade', label: '会员卡升级触发' }, { value: 'degrade', label: '会员卡降级触发' }], // eslint-disable-line
marketingTimesTypeOptions: [{ value: 0, label: '总共触发' }, { value: 1, label: '每天触发' }, { value: 2, label: '每周触发' }, { value: 3, label: '每月触发' }, { value: 4, label: '每年触发' }, { value: -1, label: '无限次触发' }], // eslint-disable-line
execDateType: [
{ label: '每天', value: 1 },
{ label: '每周', value: 2 },
{ label: '每月', value: 3 }
], // 1按天执行 2按周 3按月
dayOptions: Array(24)
.fill()
.map((v, i) => ({ value: i, label: i + ':00' })),
......@@ -32,6 +76,10 @@ export default {
memberType: 0,
ecmPlanName: '',
effectType: 0,
execDateType: 1, // 1按天执行 2按周 3按月
execDate: [], // 1,2,3,4,5,6,7,8,0(月底)
execTime: '08:00:00', // 重复 执行时间 10:30:00
execType: 1, // 1立即执行0定时执行
effectTime: 0,
effectAction: 'subscribe',
marketingActivityId: '',
......@@ -57,7 +105,7 @@ export default {
// 判断模板消息能否使用
templateUseEnable: 1,
marketingTimesType: 0,
marketingOnceFlag: 1,
marketingOnceFlag: 1, // 默认开启 限制对每个用户营销一次
marketingTimes: 1,
gradeIds: [],
//消费触发
......@@ -88,10 +136,20 @@ export default {
return time.getTime() < Date.now() - 8.64e7;
}
},
pickerOptions: {
start: '00:00',
step: '01:00',
end: '23:00'
},
checked: [],
rules: {
ecmPlanName: { type: 'string', required: true, message: '计划名称不能为空', trigger: 'blur' },
gradeIds: [{ type: 'array', required: true, message: '请至少选择一个卡类型', trigger: 'change' }]
gradeIds: [{ type: 'array', required: true, message: '请至少选择一个卡类型', trigger: 'change' }],
execDate: { validator: checkExecDate, required: true, message: '执行日期填写不完整', trigger: 'change' },
execTime: [
{ required: true, message: '执行时间不能为空', trigger: 'change' },
{ validator: checkExecTime, trigger: 'change' }
]
},
isEdit: this.$route.meta.type === 'edit',
isAdd: this.$route.meta.type === 'add',
......@@ -136,6 +194,9 @@ export default {
'var-dialog': varDialog
},
watch: {
'form.effectType'(val) {
this.form.execTime = '08:00:00';
},
checked(val) {
switch (val[0]) {
case 'brithday_day':
......@@ -168,6 +229,33 @@ export default {
}
},
computed: {
execDateList() {
// 1按天执行 2按周 3按月
const { execDateType } = this.form;
if (execDateType === 1) {
return [];
}
if (execDateType === 2) {
return [
{ label: '周一', value: '1' },
{ label: '周二', value: '2' },
{ label: '周三', value: '3' },
{ label: '周四', value: '4' },
{ label: '周五', value: '5' },
{ label: '周六', value: '6' },
{ label: '周日', value: '7' }
];
}
if (execDateType === 3) {
return Array(28)
.fill('')
.map((v, idx) => {
return { label: `${idx + 1}号`, value: `${idx + 1}` };
})
.concat({ label: '月底', value: '0' });
}
return [];
},
asideShow() {
return this.$store.state.marketing.asideShow;
},
......
......@@ -17,9 +17,9 @@
<div class="layout--tips mt10" v-if="form.effectType == 1 || form.effectType == 2">
<!-- <i class="el-icon-info inline-block"></i> -->
<div class="layout--tips__content">
<p><span class="dm-status--primary pl10"></span>{{ form.effectType == 1 ? '每天发送' : '立即发送' }}<b class="bold">图文、文本、图片</b>将使用微信群发接口,占用每个用户每月4条的群发次数</p>
<p><span class="dm-status--primary pl10"></span>{{ form.effectType == 1 ? '每天发送' : '立即发送' }}<b class="bold">小程序</b>使用客服接口,但客服接口需要用户在24小时之内与微信公众号互动才能发送成功,可能导致成功率过低,不占用每个用户每月4条的群发次数。</p>
<p><span class="dm-status--primary pl10"></span>{{ form.effectType == 1 ? '每天发送' : '立即发送' }}<b class="bold">短信、话务</b>均不占用群发次数,卡券详见卡券通知方式配置不同投放方式说明。</p>
<p><span class="dm-status--primary pl10"></span>{{ form.effectType == 1 ? '单次发送' : '重复发送' }}<b class="bold">图文、文本、图片</b>将使用微信群发接口,占用每个用户每月4条的群发次数</p>
<p><span class="dm-status--primary pl10"></span>{{ form.effectType == 1 ? '单次发送' : '重复发送' }}<b class="bold">小程序</b>使用客服接口,但客服接口需要用户在24小时之内与微信公众号互动才能发送成功,可能导致成功率过低,不占用每个用户每月4条的群发次数。</p>
<p><span class="dm-status--primary pl10"></span>{{ form.effectType == 1 ? '单次发送' : '重复发送' }}<b class="bold">短信、话务</b>均不占用群发次数,卡券详见卡券通知方式配置不同投放方式说明。</p>
</div>
</div>
<div class="layout--tips" v-else>
......@@ -32,6 +32,37 @@
<el-option v-for="(v, i) in effectActionOptions" :key="i" :label="v.label" :value="v.value"></el-option>
</el-select>
</el-form-item>
<!-- <template v-if="form.effectType == 2">
<el-form-item label="执行频率" prop="execDate">
<div class="flex">
<el-select :disabled="!isAdd" style="width:220px;" class="mr20" v-model="form.execDateType" placeholder="请选择" @change="form.execDate = []">
<el-option v-for="(v, i) in execDateType" :key="i" :label="`${v.label}执行`" :value="v.value"></el-option>
</el-select>
<el-select v-if="form.execDateType !== 1" style="width:220px;" :disabled="!isAdd" class="w180" multiple v-model="form.execDate" clearable placeholder="可多选">
<el-option v-for="(v, i) in execDateList" :key="i" :label="v.label" :value="v.value"></el-option>
</el-select>
</div>
</el-form-item>
<el-form-item label="执行时间" prop="execTime" class="mt10">
<el-time-picker :disabled="!isAdd" class="w220" v-model="form.execTime" value-format="HH:mm:ss" placeholder="请设置" />
</el-form-item>
</template> -->
<!-- 单次执行 -->
<!-- <template v-if="form.effectType === 1">
<el-form-item label="执行时间">
<el-radio-group :disabled="!isAdd" v-model="form.execType">
<el-radio :label="1">立即执行</el-radio>
<el-radio :label="0">
<el-tooltip content="最多只能选择当前时间的30分钟之后" placement="top" open-delay="300">
<span class="tooltip-icon">定时执行</span>
</el-tooltip>
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.execType === 0" prop="execTime" key="execTime2">
<el-time-select :disabled="!isAdd" v-model="form.execTime" :picker-options="pickerOptions" value-format="HH:mm:ss" placeholder="请选择" />
</el-form-item>
</template> -->
<el-form-item label="常用场景" v-if="form.effectType == 1">
<div class="fz12 gray">选填,勾选后生效</div>
<el-checkbox-group v-model="checked" :max="1">
......@@ -156,18 +187,18 @@
</el-form-item>
</section>
<!-- 营销次数配置 重复 -->
<section class="dm-form__wrap" v-if="form.effectType == 2">
<!-- <section class="dm-form__wrap" v-if="form.effectType == 2">
<h3 class="dm-title__label">
营销次数配置
<i class="dm-title__label--icon iconfont icon-xinxixianshi"></i>
<span class="gray fz13">设置本营销计划对同个会员的触发次数</span>
</h3>
<div>
<label>限制对每个用户营销一次</label>
<div style="padding:20px 0;">
<label class="mr5">限制对每个用户营销一次</label>
<el-switch v-model="form.marketingOnceFlag" :active-value="1" :inactive-value="0"></el-switch>
该营销计划对每个用户执行一次 该营销计划对每个用户不限制执行次数
<span class="gray ml10 fz13">{{ form.marketingOnceFlag ? '该营销计划对每个用户执行一次' : '该营销计划对每个用户不限制执行次数' }}</span>
</div>
</section>
</section> -->
<!-- 营销次数配置 实时触点 -->
<section class="dm-form__wrap" v-if="form.effectType == 0 && ['consume', 'upgrade', 'degrade'].includes(form.effectAction)">
<h3 class="dm-title__label">
......
......@@ -50,7 +50,7 @@ export default {
name: 'ecm',
data() {
return {
effectTypeOption: [{ value: '', label: '所有时效' }, { value: 0, label: '实时' }, { value: 1, label: '定时' }, { value: 2, label: '立即发送' }], // eslint-disable-line
effectTypeOption: [{ value: '', label: '所有时效' }, { value: 0, label: '触点' }, { value: 1, label: '重复' }, { value: 2, label: '单次' }], // eslint-disable-line
onlineOptions: [{ value: '', label: '所有上线状态' }, { value: 0, label: '待上线' }, { value: 1, label: '已上线' }, { value: 2, label: '已下线' }], // eslint-disable-line
marketingTypeOptions,
listParams: {
......@@ -74,7 +74,7 @@ export default {
align: 'left',
formatter(row) {
if (row.effectType == 0) {
return '实时';
return '触点';
} else if (row.effectType == 1) {
return `<span><i class="el-icon-time fz18 vertical-middle"></i><span class="vertical-middle"> 每天${row.effectTime}:00</span></span>`;
} else if (row.effectType == 2) {
......
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