Commit 4b34f258 by chenxin

Merge branch 'feature/m10' into 'master'

Feature/m10

See merge request !114
parents 0fe121c1 60c1382a
<!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.a5ce9ca631a967a2d8a4a1afe8042d56.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.13.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.18.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-new.2.0.571.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.42.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.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script type=text/javascript src=/marketing/static/js/manifest.2460c2af8efdd848d348.js></script><script type=text/javascript src=/marketing/static/js/vendor.fef1c3d3b3b586faaee2.js></script><script type=text/javascript src=/marketing/static/js/main.a2ce008183bf0c9a9655.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.c29fc09ae0eaa6bd3ff1554f4f6e13de.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.13.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.18.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-new.2.0.571.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.42.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.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script type=text/javascript src=/marketing/static/js/manifest.9148ee6e1dfce54d78ba.js></script><script type=text/javascript src=/marketing/static/js/vendor.fef1c3d3b3b586faaee2.js></script><script type=text/javascript src=/marketing/static/js/main.a2ce008183bf0c9a9655.js></script></body></html>
\ No newline at end of file
!function(e){var r=window.webpackJsonp;window.webpackJsonp=function(n,o,c){for(var i,f,u,d=0,s=[];d<n.length;d++)f=n[d],t[f]&&s.push(t[f][0]),t[f]=0;for(i in o)Object.prototype.hasOwnProperty.call(o,i)&&(e[i]=o[i]);for(r&&r(n,o,c);s.length;)s.shift()();if(c)for(d=0;d<c.length;d++)u=a(a.s=c[d]);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 o=document.getElementsByTagName("head")[0],c=document.createElement("script");c.type="text/javascript",c.charset="utf-8",c.async=!0,c.timeout=12e4,a.nc&&c.setAttribute("nonce",a.nc),c.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:"2498d2d97f9406c1349e",1:"0264c33f4f01117a0edf",2:"46c9be506057a77934c5",3:"09547865dfa13de327a0",4:"391130c8f773cb8775d6",5:"f9698829b629c8ef4758",6:"69341cd9777b2efe8452",7:"63a1a6d2b30b644fe2b0",8:"262d5730485583a8e9ea",9:"b28ab42e4c850a719a9e",10:"deed87acac924fb81b10",11:"68885a5b2ba02a163454",12:"374fb631de99b469adc8"}[e]+".js";var i=setTimeout(f,12e4);function f(){c.onerror=c.onload=null,clearTimeout(i);var r=t[e];0!==r&&(r&&r[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return c.onerror=c.onload=f,o.appendChild(c),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,o,c){for(var i,d,u,f=0,s=[];f<n.length;f++)d=n[f],t[d]&&s.push(t[d][0]),t[d]=0;for(i in o)Object.prototype.hasOwnProperty.call(o,i)&&(e[i]=o[i]);for(r&&r(n,o,c);s.length;)s.shift()();if(c)for(f=0;f<c.length;f++)u=a(a.s=c[f]);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 o=document.getElementsByTagName("head")[0],c=document.createElement("script");c.type="text/javascript",c.charset="utf-8",c.async=!0,c.timeout=12e4,a.nc&&c.setAttribute("nonce",a.nc),c.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:"b598b89611936b759ddd",1:"0264c33f4f01117a0edf",2:"1d47f0e373d9a32b6732",3:"4582d2e974560d0b3923",4:"391130c8f773cb8775d6",5:"40de7c20d03e3d2c9423",6:"69341cd9777b2efe8452",7:"63a1a6d2b30b644fe2b0",8:"262d5730485583a8e9ea",9:"b28ab42e4c850a719a9e",10:"deed87acac924fb81b10",11:"68885a5b2ba02a163454",12:"374fb631de99b469adc8"}[e]+".js";var i=setTimeout(d,12e4);function d(){c.onerror=c.onload=null,clearTimeout(i);var r=t[e];0!==r&&(r&&r[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return c.onerror=c.onload=d,o.appendChild(c),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
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.
......@@ -15,7 +15,7 @@
<span class="vertical-middle">领取时间:</span><el-date-picker class="w280" v-model="receiveTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="refresh"></el-date-picker><span class="vertical-middle">核销时间:</span><el-date-picker class="w280" v-model="verifyTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="refresh"></el-date-picker>
</div>
<!-- 成功table -->
<el-table v-show="listParams.putonType === 1" tooltipEffect="light" :data="recordList" style="width: 100%" row-key="putonTime" v-loading="loading">
<el-table v-show="listParams.putonType === 1" tooltipEffect="light" :data="recordList" style="width: 100%" v-loading="loading">
<el-table-column align="left" :min-width="200" prop="memberId" label="会员信息">
<template slot-scope="scope">
<member-info :row="{ memberId: scope.row.memberId, imageUrl: scope.row.thirdimgurl, memberName: scope.row.memberName, cardNum: scope.row.cardNum }"></member-info>
......@@ -45,7 +45,7 @@
</el-table-column>
</el-table>
<!-- 失败table -->
<el-table v-show="listParams.putonType === 0" tooltipEffect="light" :data="recordList" style="width: 100%" row-key="putonTime" v-loading="loading">
<el-table v-show="listParams.putonType === 0" tooltipEffect="light" :data="recordList" style="width: 100%" v-loading="loading">
<el-table-column align="left" :min-width="200" prop="memberId" label="会员信息">
<template slot-scope="scope">
<member-info :row="{ memberId: scope.row.memberId, imageUrl: scope.row.photoUrl, memberName: scope.row.memberName, cardNum: scope.row.cardNum }"></member-info>
......
......@@ -13,6 +13,16 @@ export default {
name: 'scan-form',
mixins: [xxSysp_mix],
data() {
const checkEcmTime = (rule, value, callback) => {
if (!(this.form.beginDate && this.form.endDate)) {
console.log(this.form.beginDate, this.form.endDate);
return callback(new Error('计划时间不完整'));
}
if (new Date(this.form.beginDate) > new Date(this.form.endDate)) {
return callback(new Error('开始时间不能大于结束时间'));
}
callback();
};
return {
ecmPlanId: '', // 必传,
info: {
......@@ -95,7 +105,8 @@ export default {
}
},
rules: {
ecmPlanName: { type: 'string', required: true, message: '计划名称不能为空', trigger: 'blur' },
ecmPlanName: { type: 'string', required: true, message: '请填写计划名称', trigger: 'blur' },
ecmTime: { validator: checkEcmTime, required: true, trigger: 'blur' },
gradeIds: [{ type: 'array', required: true, message: '请至少选择一个卡类型', trigger: 'change' }]
},
isEdit: this.$route.meta.type === 'edit',
......
......@@ -32,7 +32,7 @@
<vue-gic-store-new :options="storeOptions" :isAdd="!disabled" :creatorId="storeCreatorId" :scenesVal="scenes" scenes="auth" :uuid="effectTriggerJson.store_widget_id" ref="storeNew" @store-change="storeChange"></vue-gic-store-new>
<span v-if="disabled && info.effectTriggerJson.store_widget_id != effectTriggerJson.store_widget_id" class="gray fz12 ml10"><i class="el-icon-warning mr5 red fz12"></i>数据对话已生效,门店修改无效</span>
</div>
<el-checkbox :disabled="disabled" v-model="effectTriggerJson.first_subscribe" :true-label="1" :false-label="0">限制用户首次关注服务号触发</el-checkbox>
<el-checkbox :disabled="disabled" v-model="effectTriggerJson.first_subscribe" :true-label="1" :false-label="0">限制用户首次关注服务号触发</el-checkbox>
</el-form-item>
<!-- 适用人群start -->
<h3 class="title mt46">
......
......@@ -10,7 +10,7 @@
<el-input v-model="listParams.search" class="w200" placeholder="输入模板名称/ID/内容" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-button class="fr" type="primary" @click="$router.push('/message/record/add')">新建群发</el-button>
</div>
<el-table tooltipEffect="light" :data="messageList" style="width: 100%" row-key="sendTime">
<el-table tooltipEffect="light" :data="messageList" style="width: 100%">
<el-table-column :min-width="100" align="left" label="发送时间" prop="sendTime">
<template slot-scope="scope">
<p class="cell-time">
......
......@@ -17,7 +17,7 @@
</el-tooltip>
<el-button v-else class="fr" type="primary" @click="$router.push('/wechat/record/add')">新建群发</el-button>
</div>
<el-table tooltipEffect="light" :data="recordList" style="width: 100%" row-key="sendTime">
<el-table tooltipEffect="light" :data="recordList" style="width: 100%">
<el-table-column min-width="100" align="left" prop="clerkName" label="用户名称" fixed="left"></el-table-column>
<el-table-column :min-width="100" align="left" label="时间" prop="createTime">
<template slot-scope="scope">
......@@ -28,22 +28,15 @@
</el-table-column>
<el-table-column :min-width="120" align="left" label="标题">
<template slot-scope="{ row }">
<template v-if="row.content && row.content.length > 10">
<template v-if="row.content && row.content.length > 5">
<el-tooltip class="item" effect="dark" open-delay="300" placement="top-start">
<div style="max-width:400px;" slot="content">
<pre v-html="row.content"></pre>
</div>
<div class="ellipsis">{{ row.content | filterHtml }}</div>
<div class="ellipsis"><div v-html="formatterTitle(row)"></div></div>
</el-tooltip>
</template>
<template v-else-if="row.mediaUrl">
<p v-if="row.couponType === 1">
<i class="iconfont icon-qiapian- blue" />
<a :href="row.mediaUrl" target="_blank">{{ row.content }}</a>
</p>
<a v-else :href="row.mediaUrl" target="_blank">{{ row.content }}</a>
</template>
<span v-else>{{ row.content }}</span>
<div v-else v-html="formatterTitle(row)"></div>
</template>
</el-table-column>
<el-table-column v-for="(v, i) in recordHeader" :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" :fixed="v.fixed" :render-header="v.renderHeader"></el-table-column>
......@@ -217,6 +210,26 @@ export default {
},
methods: {
formatDateTimeByType,
formatterTitle(row) {
let temp = null;
if (row.mediaUrl) {
if (row.couponType === 1) {
temp = `<p>
<i class="iconfont icon-qiapian- blue" />
<a href=${row.mediaUrl} target="_blank">
${row.content}
</a>
</p>`;
} else {
temp = `<a href=${row.mediaUrl} target="_blank">
${row.content}
</a>`;
}
} else {
temp = `<span>${row.content}</span>`;
}
return temp;
},
search() {
this.listParams.currentPage = 1;
this.sendRecordList();
......
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