Commit 394c9577 by 黑潮

Merge branch 'feature/9月迭代'

parents aaeefba3 7e490518
......@@ -32,7 +32,7 @@
<script src="//web-1251519181.file.myqcloud.com/components/store-new.2.0.71.js"></script><!-- 新版门店选择器 -->
<script src="//web-1251519181.file.myqcloud.com/components/confirm-people.2.0.06.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/export-excel.2.0.24.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.29.js"></script>
......
......@@ -2,9 +2,10 @@
<div class="dm-avatar">
<label class="dm-avatar__upload " :class="{ 'is-disabled': disabled || unused }" :style="`width:${width}px;height:${height}px;`" v-loading="loading">
<input type="file" style="display:none;" :disabled="disabled || unused" accept="image/gif, image/jpeg,image/png" ref="uploader" v-upload="this" />
<img v-show="model.imgUrl && showImg" :src="model.imgUrl || ''" :class="className" class="dm-avatar__img" />
<img v-show="model.imgUrl && showImg" :src="model.imgUrl || ''" :class="className" style="object-fit: contain" class="dm-avatar__img" />
<i class="el-icon-plus dm-avatar__icon" v-show="!model.imgUrl" :style="'line-height:' + height + 'px;'"></i>
</label>
<div v-if="name" style="font-size:14px;color:#303133;line-height:1;margin-bottom:10px">{{ name }}</div>
<div class="dm-avatar__tips" :style="tipsStyle">{{ tips }}</div>
</div>
</template>
......@@ -24,6 +25,7 @@ export default {
};
}
},
name: String,
unused: {
// 是否禁用
type: Boolean,
......
......@@ -41,8 +41,9 @@ function verificationPicFile(file, l_width, l_height) {
export default {
inserted: function(el, binding) {
el.addEventListener('change', function() {
binding.value.loading = true;
el.addEventListener('change', function(e) {
if (e.target.value) binding.value.loading = true;
else return;
const size = binding.value.limit && binding.value.limit.maxSize ? binding.value.limit.maxSize : 2; // 默认最大2M限制
if (el.files[0].size > size * 1024 * 1024) {
binding.value.$tips({ type: 'warning', message: `上传图片不能大于${size}M` });
......
......@@ -59,7 +59,7 @@ export default {
},
{
path: 'batchlist/:id',
name: '批次记录',
name: '批次提交日志',
component: () => import(/* webpackChunkName: "ecm" */ '../../views/ecm/batch-list.vue'),
meta: {
path: '/ecm/list'
......@@ -67,7 +67,7 @@ export default {
},
{
path: 'oncelist/:id',
name: '立即发送记录',
name: '提交日志',
component: () => import(/* webpackChunkName: "ecm" */ '../../views/ecm/current-list.vue'),
meta: {
path: '/ecm/list',
......@@ -76,7 +76,7 @@ export default {
},
{
path: 'currentlist/:id',
name: '实时发送记录',
name: '提交日志',
component: () => import(/* webpackChunkName: "ecm" */ '../../views/ecm/current-list.vue'),
meta: {
path: '/ecm/list',
......
......@@ -19,7 +19,8 @@ const state = {
xsxsFlag: false, // 是否开启销售线索
userId: '',
departAuth: 0,
superAdmin: 0
superAdmin: 0,
keepAlive: []
};
// getters
......@@ -116,6 +117,9 @@ const mutations = {
},
updateUserId(state, val) {
state.userId = val;
},
setKeepAlive(state, val) {
state.keepAlive = val;
}
};
......
<template>
<el-dialog title="批次记录" :visible.sync="show" width="80%" :before-close="close">
<el-dialog title="批次提交日志" :visible.sync="show" width="80%" :before-close="close">
<div v-loading="loading">
<div class="pb22 clearfix">
<el-input v-model="listParams.memberInfo" class="w200" placeholder="输入会员昵称/名字/手机号" clearable @change="search"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-select class="dm-select" clearable v-model="listParams.success" placeholder="所有条件" @change="search">
<el-select class="dm-select" clearable v-model="listParams.success" placeholder="所有提交状态" @change="search">
<el-option v-for="(v, i) in successOptions" :key="i" :label="v.label" :value="v.value"></el-option>
</el-select>
<el-button icon="iconfont icon-icon_yunxiazai" class="fr" type="primary" @click="exportBatchSendDetails"> 导出列表</el-button>
......@@ -54,7 +54,7 @@ export default {
},
data() {
return {
successOptions: [{ value: '', label: '发送条件' }, { value: 0, label: '不满足' }, { value: 1, label: '满足' }], // eslint-disable-line
successOptions: [{ value: 0, label: '提交失败' }, { value: 1, label: '提交成功' }], // eslint-disable-line
listParams: {
ecmPlanQuartzLogId: '',
success: '',
......@@ -68,17 +68,17 @@ export default {
{ label: '会员信息', prop: 'marketingType', minWidth: '120', align: 'left', component: 'member-info' },
{ label: '手机号码', prop: 'phoneNumber', minWidth: '120', align: 'left' },
{
label: '发送条件',
label: '提交状态',
prop: 'errCode',
width: '100',
align: 'left',
formatter(row) {
return row.errCode === '0' ? '满足' : '不满足';
return row.errCode === '0' ? '提交成功' : '提交失败';
}
},
{ label: '主门店', prop: 'mainStoreName', minWidth: '120', align: 'left' },
{ label: '专属导购', prop: 'mainClerkName', minWidth: '120', align: 'left' },
{ label: '备注', prop: 'errMsg', minWidth: '120', align: 'left' }
{ label: '提交失败原因', prop: 'errMsg', minWidth: '120', align: 'left' }
],
tableList: [],
projectName: 'marketing', // 当前项目名
......@@ -122,6 +122,7 @@ export default {
this.dialogVisible = true;
this.excelUrl = exportBatchSendDetails;
this.params = {
ecmId: this.$route.params.id,
memberInfo: this.listParams.memberInfo,
success: this.listParams.success,
ecmPlanName: this.ecmPlanName,
......
......@@ -19,6 +19,21 @@
</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">
<span>
<span>{{ v.label }}</span>
<el-tooltip v-if="v.prop == 'successCount'" placement="top" :open-delay="200">
<i class="iconfont icon-xinxixianshi" style="color:#909399;font-size:14px"></i>
<div slot="content">
<div>指的是GIC系统成功提交针对这些用户的营销行为,并不是指的实际触达成功,如:</div>
成功通过服务号接口进行消息群发;<br />
成功向短信运营商提交需要发送短信的用户名单;<br />
成功通过企微群发接口下发群发任务;<br />
成功通过话务任务接口下发话务任务;<br />
</div>
</el-tooltip>
</span>
</template>
<template slot-scope="scope">
<span v-if="v.formatter" v-html="v.formatter(scope.row)"></span>
<component v-else-if="v.component" :is="v.component"></component>
......@@ -107,9 +122,9 @@ export default {
return result;
}
},
{ label: '批次人次', prop: 'totalCount', width: '160', align: 'left' },
{ label: '预计发送人次', prop: 'filterCount', width: '160', align: 'left' },
{ label: '实际送达人次', prop: 'successCount', width: '160', align: 'left' }
// { label: '批次人次', prop: 'totalCount', width: '160', align: 'left' },
{ label: '应发人次', prop: 'filterCount', minWidth: '160', align: 'left' },
{ label: '提交成功人次', prop: 'successCount', minWidth: '160', align: 'left' }
],
tableList: [],
dialogShow: false,
......@@ -133,7 +148,7 @@ export default {
}
});
this.ecmBatchSendInfos();
this.$store.commit('mutations_breadcrumb', [{ name: '营销管理', path: '' }, { name: '智能营销', path: '/ecm' }, { name: this.$route.query.name + ' - 批次记录', path: '' }]); // eslint-disable-line
this.$store.commit('mutations_breadcrumb', [{ name: '营销管理', path: '' }, { name: '智能营销', path: '/ecm' }, { name: this.$route.query.name + ' - 批次提交日志', path: '' }]); // eslint-disable-line
},
mounted() {
this.$store.commit(
......@@ -176,7 +191,7 @@ export default {
this.listParams.beginTime = formatDateTimeByType(this.dateTime[0], 'yyyy-MM-dd');
this.listParams.endTime = formatDateTimeByType(this.dateTime[1], 'yyyy-MM-dd');
} else {
this.listParams.beginTime = this.listParams.senendTimedEndTime = '';
this.listParams.beginTime = this.listParams.endTime = '';
}
let res = await ecmBatchSendInfos(this.listParams);
console.log(res);
......
......@@ -27,6 +27,31 @@
</template>
</el-table-column>
<el-table-column v-for="(v, i) in infoHeader" :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">
<span>
<span>{{ v.label }}</span>
<el-tooltip v-if="v.prop == 'successCount'" placement="top" :open-delay="200">
<i class="iconfont icon-xinxixianshi" style="color:#909399;font-size:14px"></i>
<div slot="content">
<div>指的是GIC系统成功提交针对这些用户的营销行为,并不是指的实际触达成功,如:</div>
成功通过服务号接口进行消息群发;<br />
成功向短信运营商提交需要发送短信的用户名单;<br />
成功通过企微群发接口下发群发任务;<br />
成功通过话务任务接口下发话务任务;
</div>
</el-tooltip>
<el-tooltip v-else-if="v.prop == 'failedCount'" placement="top" :open-delay="200">
<i class="iconfont icon-xinxixianshi" style="color:#909399;font-size:14px"></i>
<div slot="content">
<div>指的是GIC系统未成功提交针对这些用户的营销行为,如:</div>
未成功通过服务号接口进行消息群发;<br />
未成功向短信运营商提交需要发送短信的用户名单;<br />
未成功通过企微群发接口下发群发任务;<br />
未成功通过话务任务接口下发话务任务;
</div>
</el-tooltip>
</span>
</template>
<template slot-scope="scope">
<span v-if="v.formatter" v-html="v.formatter(scope.row)"></span>
<component v-else-if="v.component" :is="v.component"></component>
......@@ -80,7 +105,7 @@ export default {
data() {
return {
dateTime: [Date.now() - 30 * 24 * 60 * 60 * 1000, Date.now()],
successOptions: [{ value: '', label: '所有状态' }, { value: 1, label: '成功' }, { value: 0, label: '失败' }], // eslint-disable-line
successOptions: [{ value: '', label: '所有状态' }, { value: 1, label: '提交成功' }, { value: 0, label: '提交失败' }], // eslint-disable-line
listParams: {
ecmPlanId: this.$route.params.id,
ecmMarketingTypeRelationIds: '',
......@@ -110,8 +135,8 @@ export default {
}
},
{ label: '应发数量', prop: 'sendCount', align: 'left' },
{ label: '成功发送', prop: 'successCount', align: 'left' },
{ label: '发送失败', prop: 'failedCount', align: 'left' },
{ label: '提交成功', prop: 'successCount', align: 'left' },
{ label: '提交失败', prop: 'failedCount', align: 'left' },
{
label: '使用状态',
prop: 'status',
......@@ -148,12 +173,12 @@ export default {
}
},
{
label: '状态',
label: '提交状态',
prop: 'errCode',
width: '100',
align: 'left',
formatter(row) {
return row.errCode === '0' ? '<span class="dm-status--success">成功</span>' : '<span class="dm-status--erroe">失败</span>';
return row.errCode === '0' ? '<span class="dm-status--success">提交成功</span>' : '<span class="dm-status--erroe">提交失败</span>';
}
},
{ label: '备注', prop: 'errMsg', minWidth: '120', align: 'left' }
......@@ -172,10 +197,13 @@ export default {
// }, 5000);
}
},
created() {
this.ecmCurrentSendInfos();
async created() {
await this.ecmCurrentSendInfos();
this.$nextTick(_ => {
this.$refs.multipleTable.toggleAllSelection();
});
if (!this.isComponet) {
this.$store.commit('mutations_breadcrumb', [{ name: '营销管理', path: '' }, { name: '智能营销', path: '/ecm' }, { name: this.$route.query.name + ` - ${ this.$route.meta.type == 'current' ? '实时' : '立即' }发送记录`, path: '' }]); // eslint-disable-line
this.$store.commit('mutations_breadcrumb', [{ name: '营销管理', path: '' }, { name: '智能营销', path: '/ecm' }, { name: this.$route.query.name + ' - 提交日志', path: '' }]); // eslint-disable-line
}
},
beforeDestroy() {
......@@ -184,6 +212,7 @@ export default {
methods: {
formatDateTimeByType,
handleSelectionChange(val) {
this.selectedId = val.map(v => v.ecmMarketingTypeRelationId);
let list = val
.map(v => v.ecmMarketingTypeRelationId)
.filter(v => v)
......@@ -225,9 +254,18 @@ export default {
status: this.listParams.status
});
this.infoList = res.result || [];
this.$nextTick(_ => {
this.$refs.multipleTable.toggleAllSelection();
});
// this.$nextTick(_ => {
// this.$refs.multipleTable.toggleAllSelection();
// });
if (this.selectedId && this.selectedId.length > 0) {
const selectedRows = this.infoList.filter(el => this.selectedId.includes(el.ecmMarketingTypeRelationId));
this.$nextTick(_ => {
selectedRows.forEach(el => {
this.$refs.multipleTable.toggleRowSelection(el);
});
});
}
let list = this.infoList
.map(v => v.ecmMarketingTypeRelationId)
.filter(v => v)
......
......@@ -438,7 +438,7 @@
<section class="dm-form__wrap" v-if="xsxsFlag == 1">
<h3 class="dm-title__label">
<span class="inline-block mr10">营销分析设置</span>
<span class="gray fz12">开启后,可用于统计这次线索挖掘计划的收益情况。</span>
<span class="gray fz12">开启后,可用于统计这次营销计划的触达转化收益情况。</span>
<!-- <el-switch :disabled="!isAdd" v-model="analyseConfig.open_flag" :active-value="1" :inactive-value="0" @change="onChangeAnalyseConfig($event, true)"></el-switch> -->
</h3>
<div style="padding-bottom:10px;color:#303133">
......@@ -464,15 +464,19 @@
<span>分析天数</span>
<el-tooltip slot="label" open-delay="200" placement="top">
<i style="cursor:pointer;color:#909399;font-size:14px;" class="iconfont icon-xinxixianshi"></i>
<div slot="content" style="width:340px;line-height: 22px;">设置从触达到客户的那天起,{{ analyseConfig.marke_days || '--' }}天以内会被纳入到数据分析中</div>
<div slot="content" style="width:340px;line-height: 22px;">设置从客户被成功触达的那天起,{{ analyseConfig.marke_days || '--' }}天以内的转化会被作为此营销计划的转化收益</div>
</el-tooltip>
</label>
</div>
<span class="mr10">触达日期起</span>
<el-input-number :disabled="!isAdd" controls-position="right" class="w150" :min="1" :max="31" step-strictly v-model="analyseConfig.marke_days"></el-input-number>
<el-input-number :disabled="!isAdd" controls-position="right" class="w150" :min="1" :max="90" step-strictly v-model="analyseConfig.marke_days"></el-input-number>
<span class="ml10">天之内</span>
</div>
<div style="margin-top:6px;color:#A5A7AD;font-size:12px;margin-left:164px">最长 31 天,最短 1 天 (以自然日计算)</div>
<div style="margin-top:6px;color:#909399;font-size:12px;margin-left:164px;line-height:18px">
最短 1 天,最长 90 天 (以自然日计算)
<br />
注:时间越长,会员的转化与此次营销的相关度越低,分析触达日期起&lt;31天内的转化数据更为合理,请酌情填写分析天数。
</div>
<div class="mt20" v-show="[1, 2].includes(form.effectType)">
<div class="w150 text-right inline-block mr10">
<label class="cursor">
......
<template>
<div>
<router-view></router-view>
<keep-alive :include="$store.state.marketing.keepAlive">
<router-view></router-view>
</keep-alive>
</div>
</template>
......
......@@ -80,7 +80,7 @@
<span class="squre"></span>
<div class="text">
<p>转化收益</p>
<p>当前智能营销实际触达顾客中,在收益有效期内消费的顾客实付订单金额。只计销售单,不看退货单和换货单。</p>
<p>当前智能营销实际触达顾客中,在收益有效期内消费的顾客应收订单金额。只计销售单,不看退货单和换货单。</p>
</div>
</li>
<li>
......
......@@ -8,7 +8,10 @@
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.shareFlag === 1" label="分享图" prop="shareImg.imgUrl" class="width50" :rules="{ required: true, message: '请上传分享图片', trigger: 'blur' }">
<dm-upload-avatar :limit="{ maxSize: 1 }" :model.sync="form.shareImg" fileType="fileShare" label="上传图片" tips="图片建议尺寸:200*200,格式为jpg/png/gif。图片大小不超过1MB,点击图片可重新上传。" :disabled="isInfo"></dm-upload-avatar>
<dm-upload-avatar :limit="{ maxSize: 1 }" name="H5分享图" :model.sync="form.shareImg" fileType="fileShare" label="上传图片" tips="图片建议尺寸:200*200,格式为jpg/png/gif。图片大小不超过1MB,点击图片可重新上传。" :disabled="isInfo"></dm-upload-avatar>
</el-form-item>
<el-form-item v-if="form.shareFlag === 1" prop="shareAppImg.imgUrl" class="width50">
<dm-upload-avatar :limit="{ maxSize: 1 }" name="小程序分享图" :model.sync="form.shareAppImg" fileType="fileShare" label="上传图片" tips="图片建议尺寸:320*240,格式为jpg/png。图片大小不超过1MB,点击图片可重新上传。" :disabled="isInfo"></dm-upload-avatar>
</el-form-item>
<el-form-item v-if="form.shareFlag === 1" label="分享标题" prop="shareTitle" class="width50" :rules="{ required: true, message: '标题不能为空', trigger: 'blur' }">
<dm-input v-model="form.shareTitle" class="w400" placeholder="请输入分享标题" :disabled="isInfo" :maxlength="20"></dm-input>
......@@ -34,6 +37,11 @@ export default {
code: '',
imgUrl: '', // eslint-disable-line
wxImg: ''
},
shareAppImg: {
code: '',
imgUrl: '', // eslint-disable-line
wxImg: ''
}
};
}
......
......@@ -160,6 +160,7 @@ import editAlertMixin from '../common/editAlertMixin.js';
import prizeMixins from '../common/prizeMixins.js';
import dmShare from '../common/share.vue';
import dmThreshold from '../common/threshold.vue';
const appImg = 'https://pic01-10001430.cos.ap-shanghai.myqcloud.com/lALPDgfLSk0gYNTM8M0BQA_320_240.png_720x720g.jpg';
export default {
mixins: [editAlertMixin, prizeMixins],
data() {
......@@ -203,6 +204,11 @@ export default {
imgUrl: require("../common/img/share/dzp.png"), // eslint-disable-line
wxImg: ''
},
shareAppImg: {
code: '',
imgUrl: appImg, // eslint-disable-line
wxImg: ''
},
// 参与门槛
memberType: 0,
gameActivityAttendConditionId: '',
......@@ -311,6 +317,10 @@ export default {
const backupCurrent = this.backupTableList[index];
// 差值,如果奖品类型或是卡券改变直接给目标值,否则给差值 count >0增加库存,<0减少库存
let count = 0;
if (!this.tableList.some(v => v.prizeType === 3)) {
this.$tips({ type: 'warning', message: `必须有一个奖项为谢谢参与` });
return;
}
if (current.prizeType == 1) {
// 积分
count = backupCurrent.prizeType != 1 || backupCurrent.prizeIntegral != current.prizeIntegral ? current.prizeCount : current.prizeCount - backupCurrent.prizeCount;
......@@ -425,7 +435,7 @@ export default {
}
// 分享
if (gameDetail.shareFlag === 1) {
const { shareTitle, shareTextInfo, shareImgFieldCode, shareImgUrl, shareImgUrlWX, gameShareSettingId } = gameDetail.shareSetting;
const { shareTitle, shareTextInfo, shareImgFieldCode, shareImgUrl, shareImgUrlWX, gameShareSettingId, shareImgUrlMini } = gameDetail.shareSetting;
this.form = Object.assign(this.form, {
shareTitle,
shareTextInfo,
......@@ -434,6 +444,11 @@ export default {
code: shareImgFieldCode,
imgUrl: shareImgUrl,
wxImg: shareImgUrlWX
},
shareAppImg: {
code: '',
imgUrl: shareImgUrlMini || appImg,
wxImg: shareImgUrlMini || appImg
}
});
}
......@@ -570,13 +585,14 @@ export default {
// 游戏分享
let shareSetting = {};
if (this.form.shareFlag) {
const { shareTitle, shareTextInfo, shareImg, gameShareSettingId } = this.form;
const { shareTitle, shareTextInfo, shareImg, gameShareSettingId, shareAppImg } = this.form;
shareSetting = {
shareTitle,
shareTextInfo,
shareImgUrl: shareImg.imgUrl,
shareImgFieldCode: shareImg.code,
shareImgUrlWX: shareImg.wxImg
shareImgUrlWX: shareImg.wxImg,
shareImgUrlMini: shareAppImg.imgUrl
};
if (this.isEdit) {
shareSetting.GameShareSettingId = gameShareSettingId;
......
......@@ -144,6 +144,7 @@ import dmUploadAvatar from '@/components/upload/avatar';
import editAlertMixin from '../common/editAlertMixin.js';
import dmShare from '../common/share.vue';
import dmThreshold from '../common/threshold.vue';
const appImg = 'https://pic01-10001430.cos.ap-shanghai.myqcloud.com/lALPDgfLSk0kJx3M8M0BQA_320_240.png_720x720g.jpg';
export default {
mixins: [editAlertMixin, prizeMixins],
data() {
......@@ -187,6 +188,11 @@ export default {
imgUrl: require("../common/img/share/ggk.png"), // eslint-disable-line
wxImg: ''
},
shareAppImg: {
code: '',
imgUrl: appImg, // eslint-disable-line
wxImg: ''
},
// 参与门槛
gameActivityAttendConditionId: '',
tipTitle: '尚未满足游戏参与条件,请多多努力。',
......@@ -427,7 +433,7 @@ export default {
// 分享
if (gameDetail.shareFlag === 1) {
const { shareTitle, shareTextInfo, shareImgFieldCode, shareImgUrl, shareImgUrlWX, gameShareSettingId } = gameDetail.shareSetting;
const { shareTitle, shareTextInfo, shareImgFieldCode, shareImgUrl, shareImgUrlWX, gameShareSettingId, shareImgUrlMini } = gameDetail.shareSetting;
this.form = Object.assign(this.form, {
shareTitle,
shareTextInfo,
......@@ -436,6 +442,11 @@ export default {
code: shareImgFieldCode,
imgUrl: shareImgUrl,
wxImg: shareImgUrlWX
},
shareAppImg: {
code: '',
imgUrl: shareImgUrlMini || appImg,
wxImg: shareImgUrlMini || appImg
}
});
}
......@@ -556,13 +567,14 @@ export default {
let shareSetting = {};
// 游戏分享
if (this.form.shareFlag) {
const { shareTitle, shareTextInfo, shareImg, gameShareSettingId } = this.form;
const { shareTitle, shareTextInfo, shareImg, gameShareSettingId, shareAppImg } = this.form;
shareSetting = {
shareTitle,
shareTextInfo,
shareImgUrl: shareImg.imgUrl,
shareImgFieldCode: shareImg.code,
shareImgUrlWX: shareImg.wxImg
shareImgUrlWX: shareImg.wxImg,
shareImgUrlMini: shareAppImg.imgUrl
};
if (this.isEdit) {
shareSetting.GameShareSettingId = gameShareSettingId;
......
......@@ -217,6 +217,7 @@ import config from '@/config';
import dmShare from '../common/share.vue';
import dmThreshold from '../common/threshold.vue';
let result = {};
const appImg = 'https://pic01-10001430.cos.ap-shanghai.myqcloud.com/lALPDhJzxjugiiXM8M0BQA_320_240.png_720x720g.jpg';
export default {
mixins: [editAlertMixin],
data() {
......@@ -268,6 +269,11 @@ export default {
imgUrl: require("../common/img/share/klfl.png"), // eslint-disable-line
wxImg: ''
},
shareAppImg: {
code: '',
imgUrl: appImg, // eslint-disable-line
wxImg: ''
},
// 参与门槛
memberType: 0,
gameActivityAttendConditionId: '',
......@@ -541,7 +547,7 @@ export default {
// 分享
if (result.game.shareFlag === 1) {
const { shareTitle, shareTextInfo, shareImgFieldCode, shareImgUrl, shareImgUrlWX, gameShareSettingId } = result.game.shareSetting;
const { shareTitle, shareTextInfo, shareImgFieldCode, shareImgUrl, shareImgUrlWX, gameShareSettingId, shareImgUrlMini } = result.game.shareSetting;
this.form = Object.assign(this.form, {
shareTitle,
shareTextInfo,
......@@ -550,6 +556,11 @@ export default {
code: shareImgFieldCode,
imgUrl: shareImgUrl,
wxImg: shareImgUrlWX
},
shareAppImg: {
code: '',
imgUrl: shareImgUrlMini || appImg,
wxImg: shareImgUrlMini || appImg
}
});
}
......@@ -694,6 +705,7 @@ export default {
shareImgUrlWX: this.form.shareImg.wxImg,
shareTitle: this.form.shareTitle,
shareTextInfo: this.form.shareTextInfo,
shareImgUrlMini: this.form.shareAppImg.imgUrl,
strategyIds: this.tableList.map(v => v.gamePrizeStrategyId).join(','),
gameActivityId: this.isEdit ? this.form.gameActivityId : '',
activityCustom: {
......@@ -711,13 +723,14 @@ export default {
// 游戏分享
let shareSetting = {};
if (this.form.shareFlag) {
const { shareTitle, shareTextInfo, shareImg, gameShareSettingId } = this.form;
const { shareTitle, shareTextInfo, shareImg, gameShareSettingId, shareAppImg } = this.form;
shareSetting = {
shareTitle,
shareTextInfo,
shareImgUrl: shareImg.imgUrl,
shareImgFieldCode: shareImg.code,
shareImgUrlWX: shareImg.wxImg
shareImgUrlWX: shareImg.wxImg,
shareImgUrlMini: shareAppImg.imgUrl
};
if (this.isEdit) {
shareSetting.GameShareSettingId = gameShareSettingId;
......
......@@ -125,6 +125,7 @@ import dmShare from '../common/share.vue';
import dmThreshold from '../common/threshold.vue';
let gameInfo = {};
// 实例化一个全局的music
const appImg = 'https://pic01-10001430.cos.ap-shanghai.myqcloud.com/lALPDhJzxjujjZHM8M0BQA_320_240.png_720x720g.jpg';
const music = new Audio();
export default {
name: 'ptyx-form',
......@@ -174,6 +175,11 @@ export default {
imgUrl: require("../common/img/share/ptyx.png"), // eslint-disable-line
wxImg: ''
},
shareAppImg: {
code: '',
imgUrl: appImg, // eslint-disable-line
wxImg: ''
},
// 参与门槛
memberType: 0,
gameActivityAttendConditionId: '',
......@@ -317,7 +323,7 @@ export default {
// 分享
if (gameInfo.shareFlag === 1) {
const { shareTitle, shareTextInfo, shareImgFieldCode, shareImgUrl, shareImgUrlWX, gameShareSettingId } = gameInfo.shareSetting;
const { shareTitle, shareTextInfo, shareImgFieldCode, shareImgUrl, shareImgUrlWX, gameShareSettingId, shareImgUrlMini } = gameInfo.shareSetting;
this.form = Object.assign(this.form, {
shareTitle,
shareTextInfo,
......@@ -326,6 +332,11 @@ export default {
code: shareImgFieldCode,
imgUrl: shareImgUrl,
wxImg: shareImgUrlWX
},
shareAppImg: {
code: '',
imgUrl: shareImgUrlMini || appImg,
wxImg: shareImgUrlMini || appImg
}
});
}
......@@ -465,13 +476,14 @@ export default {
// 游戏分享
let shareSetting = {};
if (this.form.shareFlag) {
const { shareTitle, shareTextInfo, shareImg, gameShareSettingId } = this.form;
const { shareTitle, shareTextInfo, shareImg, gameShareSettingId, shareAppImg } = this.form;
shareSetting = {
shareTitle,
shareTextInfo,
shareImgUrl: shareImg.imgUrl,
shareImgFieldCode: shareImg.code,
shareImgUrlWX: shareImg.wxImg
shareImgUrlWX: shareImg.wxImg,
shareImgUrlMini: shareAppImg.imgUrl
};
if (this.isEdit) {
shareSetting.GameShareSettingId = gameShareSettingId;
......
......@@ -105,6 +105,7 @@ import editAlertMixin from '../common/editAlertMixin.js';
import dmShare from '../common/share.vue';
import dmThreshold from '../common/threshold.vue';
let cardType = 'firstStrategy';
const appImg = 'https://pic01-10001430.cos.ap-shanghai.myqcloud.com/lALPDhJzxjudO2LM8M0BQA_320_240.png_720x720g.jpg';
export default {
mixins: [editAlertMixin],
data() {
......@@ -144,6 +145,11 @@ export default {
imgUrl: require("../common/img/share/znm.png"), // eslint-disable-line
wxImg: ''
},
shareAppImg: {
code: '',
imgUrl: appImg, // eslint-disable-line
wxImg: ''
},
// 参与门槛
memberType: 0,
gameActivityAttendConditionId: '',
......@@ -276,7 +282,7 @@ export default {
});
// 分享
if (gameDetail.shareFlag === 1) {
const { shareTitle, shareTextInfo, shareImgFieldCode, shareImgUrl, shareImgUrlWX, gameShareSettingId } = gameDetail.shareSetting;
const { shareTitle, shareTextInfo, shareImgFieldCode, shareImgUrl, shareImgUrlWX, gameShareSettingId, shareImgUrlMini } = gameDetail.shareSetting;
this.form = Object.assign(this.form, {
shareTitle,
shareTextInfo,
......@@ -285,6 +291,11 @@ export default {
code: shareImgFieldCode,
imgUrl: shareImgUrl,
wxImg: shareImgUrlWX
},
shareAppImg: {
code: '',
imgUrl: shareImgUrlMini || appImg,
wxImg: shareImgUrlMini || appImg
}
});
}
......@@ -366,6 +377,7 @@ export default {
shareImgUrl: this.form.shareImg.imgUrl, // 是 string 分享图片 url
shareImgFieldCode: this.form.shareImg.code, // 是 string 分享图片 code
shareImgUrlWX: this.form.shareImg.wxImg, // 是 string 分享图片 wx
shareImgUrlMini: this.form.shareAppImg.imgUrl,
shareTitle: this.form.shareTitle, // 是 string 分享标题
shareTextInfo: this.form.shareTextInfo, // 是 string 分享描述
shareFlag: this.form.shareFlag || 0
......@@ -379,13 +391,14 @@ export default {
let shareSetting = {};
// 游戏分享
if (this.form.shareFlag) {
const { shareTitle, shareTextInfo, shareImg, gameShareSettingId } = this.form;
const { shareTitle, shareTextInfo, shareImg, gameShareSettingId, shareAppImg } = this.form;
shareSetting = {
shareTitle,
shareTextInfo,
shareImgUrl: shareImg.imgUrl,
shareImgFieldCode: shareImg.code,
shareImgUrlWX: shareImg.wxImg
shareImgUrlWX: shareImg.wxImg,
shareImgUrlMini: shareAppImg.imgUrl
};
if (this.isEdit) {
shareSetting.GameShareSettingId = gameShareSettingId;
......
......@@ -62,9 +62,17 @@
<vue-gic-member-group v-if="info.memberType === 2" :defaltSelected="defaltSelected" :height="500" :projectName="projectName" :headerList="headerList" @handleDataTransferred="handleDataTransferred" @handleDataLeft="handleDataLeft"></vue-gic-member-group>
</section>
<section class="dm-form__wrap">
<h3 class="dm-title__label">
提交记录
<div class="layout--tips" style="margin-top:0;width:400px;display:inline-block;margin-left:20px">
<i class="el-icon-info"></i>
当天的短信提交记录数据可在隔天下载完整内容
</div>
</h3>
<div class="clearfix pb22">
<el-select class="dm-select" v-model="listParams.sendStatus" placeholder="选择发送状态" @change="LoadMessageDetailList"> <el-option v-for="(v, i) in sendStatusOptions" :key="i" :label="v.label" :value="v.value"></el-option></el-select>
<!-- <el-select class="dm-select" v-model="listParams.sendStatus" placeholder="选择发送状态" @change="LoadMessageDetailList"> <el-option v-for="(v, i) in sendStatusOptions" :key="i" :label="v.label" :value="v.value"></el-option></el-select> -->
<el-input v-model="listParams.memberName" class="w200" placeholder="会员昵称/手机号/卡号" clearable @change="LoadMessageDetailList"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-select class="dm-select" v-model="listParams.sendStatus" placeholder="所有提交状态" @change="LoadMessageDetailList" clearable> <el-option v-for="(v, i) in sendStatusOptions" :key="i" :label="v.label" :value="v.value"></el-option></el-select>
<el-button icon="iconfont icon-icon_yunxiazai fz14" type="primary" class="fr" @click="exportExcel"> 下载Excel</el-button>
</div>
<el-table tooltipEffect="light" :data="messageList" style="width: 100%" v-loading="messageLoading">
......@@ -130,12 +138,12 @@ export default {
messageHeader: [
{ label: '手机号码', prop: 'telephone', minWidth: '100', align: 'left' },
{
label: '发送状态',
label: '提交状态',
prop: 'sendStatus',
minWidth: '80',
align: 'left',
formatter: function(row) {
return row.sendStatus === 0 ? '成功' : row.sendStatus === 1 ? '未发送' : '失败';
return row.sendStatus === 0 ? '提交成功' : row.sendStatus === 1 ? '未提交' : '提交失败';
}
}
// {
......@@ -168,7 +176,7 @@ export default {
pageSize: 20
},
total: 0,
sendStatusOptions: [{ value: '', label: '所有状态' }, { value: 0, label: '成功' }, { value: 1, label: '未发送' }, { value: 2, label: '失败' }], // eslint-disable-line
sendStatusOptions: [{ value: 0, label: '提交成功' }, { value: 1, label: '未提交' }, { value: 2, label: '提交失败' }], // eslint-disable-line
errorCodeShow: false,
// 人群筛选器可传参数
sceneValue: 'member', // 场景值
......
......@@ -43,9 +43,17 @@
</el-row>
</el-form>
<section class="dm-form__wrap">
<h3 class="dm-title__label">
提交记录
<div class="layout--tips" style="margin-top:0;width:400px;display:inline-block;margin-left:20px">
<i class="el-icon-info"></i>
当天的短信提交记录数据可在隔天下载完整内容
</div>
</h3>
<div class="clearfix pb22">
<el-select class="dm-select" v-model="listParams.sendStatus" placeholder="选择发送状态" @change="smsSmportPlanLogPage"> <el-option v-for="(v, i) in sendStatusOptions" :key="i" :label="v.label" :value="v.value"></el-option></el-select>
<!-- <el-select class="dm-select" v-model="listParams.sendStatus" placeholder="选择发送状态" @change="smsSmportPlanLogPage"> <el-option v-for="(v, i) in sendStatusOptions" :key="i" :label="v.label" :value="v.value"></el-option></el-select> -->
<el-input v-model="listParams.search" class="w200" placeholder="会员昵称/手机号/卡号" clearable @change="smsSmportPlanLogPage"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-select class="dm-select" v-model="listParams.sendStatus" placeholder="全部提交状态" @change="smsSmportPlanLogPage" clearable> <el-option v-for="(v, i) in sendStatusOptions" :key="i" :label="v.label" :value="v.value"></el-option></el-select>
<el-button icon="iconfont icon-icon_yunxiazai fz14" type="primary" class="fr" @click="exportExcel"> 下载Excel</el-button>
</div>
<el-table tooltipEffect="light" :data="messageList" style="width: 100%" v-loading="messageLoading">
......@@ -110,12 +118,12 @@ export default {
messageHeader: [
{ label: '手机号码', prop: 'telephone', width: '120', align: 'left' },
{
label: '发送状态',
label: '提交状态',
prop: 'sendStatus',
width: '80',
align: 'left',
formatter: function(row) {
return row.sendStatus === 0 ? '成功' : row.sendStatus === 1 ? '未发送' : '失败';
return row.sendStatus === 0 ? '提交成功' : row.sendStatus === 1 ? '未提交' : '提交失败';
}
},
{
......@@ -137,7 +145,7 @@ export default {
pageSize: 20
},
total: 0,
sendStatusOptions: [{ value: '', label: '所有状态' }, { value: 0, label: '成功' }, { value: 1, label: '未发送' }, { value: 2, label: '失败' }], // eslint-disable-line
sendStatusOptions: [{ value: 0, label: '提交成功' }, { value: 1, label: '未提交' }, { value: 2, label: '提交失败' }], // eslint-disable-line
errorCodeShow: false,
// 人群筛选器可传参数
sceneValue: '', // 场景值
......
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