Commit d2056904 by 张卿

修复了 marketing 和addmarketing的页面接口

parent 2f908dc2
...@@ -5,7 +5,9 @@ ...@@ -5,7 +5,9 @@
<span class="top-title title">新建图文素材推送</span> <span class="top-title title">新建图文素材推送</span>
<span class="top-tips gray"> <span class="top-tips gray">
<span class="star-red">*</span> <span class="star-red">*</span>
<a href="#">微信公众平台</a>的图文素材,通过<a href="#">会员标签</a>分类投放,实现精准投放
<a href="#">微信公众平台</a>的图文素材,通过
<a href="#">会员标签</a>分类投放,实现精准投放
</span> </span>
</el-col> </el-col>
</el-row> </el-row>
...@@ -15,10 +17,27 @@ ...@@ -15,10 +17,27 @@
<img src="@/assets/images/picture.png" class="iconimg"> <img src="@/assets/images/picture.png" class="iconimg">
</el-col> </el-col>
<el-col :span="18" class="subtitle-tips"> <el-col :span="18" class="subtitle-tips">
<p>在微信触达域中,公众号作为最通用的触达渠道,微信为品牌号提供了 <span class="star-red">适配大批量会员触达</span> 的图文素材触达方式。</p> <p>
<p><span><i class="el-icon-check"></i></span> 通过会员标签画像分群的分批精准推送,建议编辑不同的图文素材面向不同的会员群体。前往 <a href="#">微信公众平台</a> -管理-素材管理</p> 在微信触达域中,公众号作为最通用的触达渠道,微信为品牌号提供了
<p><span><i class="el-icon-check"></i></span> 最大化的利用微信“用户每月只能接受4条”的规则限制,通过舞象云实现多次投放,但每日上限为 <span class="star-red">100次</span></p> <span class="star-red">适配大批量会员触达</span> 的图文素材触达方式。
<p><span><i class="el-icon-check"></i></span> 大批量的微信消息推送,微信端控制最大为80W/分钟,平台将进行资源的动态优化,请耐心等待,推送成功后将发送邮件通知。</p> </p>
<p>
<span>
<i class="el-icon-check"></i>
</span> 通过会员标签画像分群的分批精准推送,建议编辑不同的图文素材面向不同的会员群体。前往
<a href="#">微信公众平台</a> -管理-素材管理
</p>
<p>
<span>
<i class="el-icon-check"></i>
</span> 最大化的利用微信“用户每月只能接受4条”的规则限制,通过舞象云实现多次投放,但每日上限为
<span class="star-red">100次</span>
</p>
<p>
<span>
<i class="el-icon-check"></i>
</span> 大批量的微信消息推送,微信端控制最大为80W/分钟,平台将进行资源的动态优化,请耐心等待,推送成功后将发送邮件通知。
</p>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
......
<template> <template>
<div class="step-info"> <div class="step-info">
<el-form ref="form" :model="form" label-width="100px"> <el-form ref="form" :model="form" label-width="100px">
<el-form-item label="新建推送名称"> <el-form-item label="新建推送名称">
<span class="gray"><span class="star-red">*</span> 推送名称仅供数据中心操作记录查询,您推送的会员将不会看到此信息。</span> <span class="gray">
</el-form-item> <span class="star-red">*</span> 推送名称仅供数据中心操作记录查询,您推送的会员将不会看到此信息。
<el-form-item label="推送名称"> </span>
<el-input v-model.trim="form.name" maxlength="10" placeholder="请输入推送名称,10字以内"></el-input> </el-form-item>
</el-form-item> <el-form-item label="推送名称">
<el-form-item label="选择推送素材" class="step-choose"> <el-input v-model.trim="form.name" maxlength="10" placeholder="请输入推送名称,10字以内"></el-input>
<span class="gray"><span class="star-red">*</span> 推送素材需前往<a href="#">微信公众平台</a>-管理-素材管理维护。</span> </el-form-item>
<div class="add-material" @click="centerDialogVisible = true"> <el-form-item label="选择推送素材" class="step-choose">
<div v-if="!chooseItem"> <span class="gray">
<el-button type="text" class="add-title"> <span class="star-red">*</span> 推送素材需前往
<p><i class="el-icon-plus add-plus"></i></p> <a href="#">微信公众平台</a>-管理-素材管理维护。
添加微信素材 </span>
</el-button> <div class="add-material" @click="showMaterList()" v-if="!isHaveMater">
</div> <div v-if="!chooseItem">
<div v-else> <el-button type="text" class="add-title">
<span v-if="item.content.news_item.length===1" v-for="(art,index) in item.content.news_item" :key="index"> <p>
<div> <i class="el-icon-plus add-plus"></i>
<p style="white-space:normal; </p>添加微信素材
</el-button>
</div>
</div>
<div v-else>
<div
class="mater-item"
@click="showMaterList()"
style=" border: 1px solid #ececec; padding:10px; width:270px;height:230px; margin: 0 20px 20px 0; position: relative;"
>
<div class="mater-wrap">
<span
style=" position: absolute;
left: 35%;
top: 45%;
font-size: 16px;
color: white;"
>替换素材</span>
</div>
<div
class="m-title"
style=" font-size: 14px; color: #3b3a46; line-height:33px"
>{{selectedItem.title}}</div>
<div class="m-img">
<img
width="256px"
:src="selectedItem.thumb_url"
height="135px; font-weight: normal; padding:10px;"
>
</div>
<!-- <div class="m-content" v-html="item.content"></div> -->
</div>
</div>
<el-dialog
title="微信消息素材"
:visible.sync="centerDialogVisible"
width="1000px"
center
class="add-subtitle title"
>
<el-row>
<el-col :span="24">
<div class="add-line"></div>
</el-col>
</el-row>
<el-row :gutter="20" class="add-container">
<el-col v-if="!materList.length">暂无素材</el-col>
<el-col
v-else
:span="8"
v-for="(item,index) in materList"
:key="index"
style=" width: 100%;
display: flex; flex-wrap: wrap;"
>
<div
class="mater-item"
@click="selectMater(item)"
style=" border: 1px solid #ececec; padding:10px; width:270px;height:230px; margin: 0 20px 20px 0; position: relative;"
>
<div class="mater-wrap">
<span
style=" position: absolute;
left: 35%;
top: 45%;
font-size: 16px;
color: white;"
>选择素材</span>
</div>
<div
class="m-title"
style=" font-size: 14px; color: #3b3a46; line-height:33px"
>{{item.title}}</div>
<div class="m-img">
<img
:src="item.thumb_url"
width="256px"
height="135px; font-weight: normal; padding:10px;"
>
</div>
<!-- <div class="m-content" v-html="item.content"></div> -->
</div>
<!-- <div class="add-content" @click="handleChoose(item)">
<span
v-if="item.content.news_item.length===1"
v-for="(art,index) in item.content.news_item"
:key="index"
>
<div>
<p
style="white-space:normal;
word-break:break-all; word-break:break-all;
word-wrap:break-word;padding:15px 0 0 15px;height:30px">{{art.title}}</p> word-wrap:break-word;padding:15px 0 0 15px;height:30px"
<img :src="art.thumb_url" style="width:240px;height:125px;margin:5px 10px;border:1px solid #ccc"> >{{art.title}}</p>
<p v-html="art.content" style="padding-left:10px; <img
:src="art.thumb_url"
style="width:240px;height:125px;margin:5px 10px;border:1px solid #ccc"
>
<p
v-html="art.content"
style="padding-left:10px;
font-size: 8px; font-size: 8px;
line-height: 1.3em; line-height: 1.3em;
color: #a49d96; color: #a49d96;
word-wrap: break-word;"></p> word-wrap: break-word;"
<span style="padding-left:10px;">查看全文</span> ></p>
</div> <span style="padding-left:10px;">查看全文</span>
</span> </div>
<span v-if="item.content.news_item.length===2" v-for="(art,index) in item.content.news_item" :key="index" class="two-item"> </span>
<div style="border-top:1px solid #eee;height:60px;"> <span
<p style="width:185px; v-if="item.content.news_item.length===2"
v-for="(art,index) in item.content.news_item"
:key="index"
class="two-item"
>
<div style="border-top:1px solid #eee;height:60px;">
<p
style="width:185px;
white-space:normal; white-space:normal;
word-break:break-all; word-break:break-all;
word-wrap:break-word;padding: 5px 0 0 5px;display:inline-block;">{{art.title}}</p> word-wrap:break-word;padding: 5px 0 0 5px;display:inline-block;"
<img style="width:40px;heigth:40px; margin-top: 8px;" :src="art.thumb_url"> >{{art.title}}</p>
</div> <img style="width:40px;heigth:40px; margin-top: 8px;" :src="art.thumb_url">
</span> </div>
</span>
<span v-if="item.content.news_item.length>2" v-for="(art,index) in item.content.news_item" :key="index" class="three-item"> <span
<div class="dv clear"> v-if="item.content.news_item.length>2"
<p>{{art.title}}</p> v-for="(art,index) in item.content.news_item"
<img :src="art.thumb_url"> :key="index"
</div> class="three-item"
</span> >
<div class="box-mask"><span>替换素材</span></div> <div class="dv clear">
</div> <p>{{art.title}}</p>
</div> <img :src="art.thumb_url">
<el-dialog title="微信消息素材" :visible.sync="centerDialogVisible" width="1000px" center class="add-subtitle title"> </div>
<el-row> </span>
<el-col :span="24"> <div class="box-mask">
<div class="add-line"></div> <span>选择素材</span>
</el-col> </div>
</el-row> </div>-->
<el-row :gutter="20" class="add-container"> </el-col>
<el-col v-if="!materList.length"> </el-row>
暂无素材 <span slot="footer" class="add-footer">
</el-col> <el-button
<el-col v-else :span="8" v-for="(item,index) in materList" :key="index"> @click="centerDialogVisible = false"
<div class="add-content" @click="handleChoose(item)"> style="color: #fff;background-color: #204d74; border-color: #122b40;"
<span v-if="item.content.news_item.length===1" v-for="(art,index) in item.content.news_item" :key="index"> >取 消</el-button>
<div> </span>
<p style="white-space:normal; </el-dialog>
word-break:break-all; </el-form-item>
word-wrap:break-word;padding:15px 0 0 15px;height:30px">{{art.title}}</p> <el-form-item label="选择推送范围">
<img :src="art.thumb_url" style="width:240px;height:125px;margin:5px 10px;border:1px solid #ccc"> <el-radio-group v-model="form.resource">
<p v-html="art.content" style="padding-left:10px; <el-radio label="全体推送" @change="getAll"></el-radio>
font-size: 8px; <el-radio label="精准推送" @change="getsingele"></el-radio>
line-height: 1.3em; </el-radio-group>
color: #a49d96; <span v-if="isCount">统计中...</span>
word-wrap: break-word;"></p> <span v-else>预计推送数量{{currentTagCount}}(关注微信公众号用户)</span>
<span style="padding-left:10px;">查看全文</span> <div v-if="form.resource === '精准推送'">
</div> <div class="form-tags">
</span> <span v-for="(item,index) in tagList" :key="item.tagId">
<span v-if="item.content.news_item.length===2" v-for="(art,index) in item.content.news_item" :key="index" class="two-item"> <span
<div style="border-top:1px solid #eee;height:60px;"> @click="handleClickTag(item, index)"
<p style="width:185px; class="el-tag tag-info"
white-space:normal; :class="{active:item.isActive}"
word-break:break-all; >{{item.name}}</span>
word-wrap:break-word;padding: 5px 0 0 5px;display:inline-block;">{{art.title}}</p> </span>
<img style="width:40px;heigth:40px; margin-top: 8px;" :src="art.thumb_url"> </div>
</div> </div>
</span> </el-form-item>
<span v-if="item.content.news_item.length>2" v-for="(art,index) in item.content.news_item" :key="index" class="three-item"> <el-form-item label="预览推送数量">
<div class="dv clear"> <span class="gray">
<p>{{art.title}}</p> <span class="star-red">*</span>实际推送成功数量将略有偏差,选中多个标签为同时满足选中标签群体的会员。推送人数必须大于1人。
<img :src="art.thumb_url"> </span>
</div> <div v-if="isCount">
</span> <el-button class="form-button">选中标签,预览</el-button>
<div class="box-mask"><span>选择素材</span></div> <span>统计中,请稍候</span>
</div> </div>
</el-col> <div v-else>
</el-row> <el-button class="form-button" @click="reCheckNum()">重新预览</el-button>
<span slot="footer" class="add-footer"> <span class="form-checknum" v-if="form.resource === '全体推送'">{{this.currentTagCount}}</span>
<el-button @click="centerDialogVisible = false" style="color: #fff;background-color: #204d74; border-color: #122b40;">取 消</el-button> <span class="form-checknum" v-else>{{successNum}}</span>
</span> <span class="form-vipnum">标签会员数: {{tagNum}}</span>
</el-dialog> <span>其中,关注公众号: {{followNum}}</span>
</el-form-item> <span>已推送4次会员: {{fourthNum}}</span>
<el-form-item label="选择推送范围"> </div>
<el-radio-group v-model="form.resource"> </el-form-item>
<el-radio label="全体推送" @change="getAll"></el-radio> <el-form-item label="执行推送任务">
<el-radio label="精准推送" @change="getsingele"></el-radio> <span class="gray">
</el-radio-group> <span class="star-red">*</span>填写邮箱后,勾选免责说明,确认进行推送,推送完成后将发送邮件通知至指定邮箱。
<span v-if="isCount">统计中...</span> </span>
<span v-else>预计推送数量{{currentTagCount}}(关注微信公众号用户)</span> <el-checkbox v-model="checked">本次推送为t测试组商户123自发行为,发放内容请遵守国家相关法律规定..</el-checkbox>
<div v-if="form.resource === '精准推送'"> </el-form-item>
<div class="form-tags"> <el-form-item label="指定接收邮箱">
<span v-for="(item,index) in tagList" :key="item.tagId"> <el-input v-model="email" type="email" placeholder="请输入您要接收任务信息的邮箱"></el-input>
<span @click="handleClickTag(item, index)" class="el-tag tag-info" :class="{active:item.isActive}"> </el-form-item>
{{item.name}} <el-form-item class="submit-dialog">
</span> <el-button
</span> class="form-button"
</div> @click="handleConfirmPush"
</div> :style="isBtnCheckd"
</el-form-item> :disabled="!checked"
<el-form-item label="预览推送数量"> >确认推送</el-button>
<span class="gray"><span class="star-red">*</span>实际推送成功数量将略有偏差,选中多个标签为同时满足选中标签群体的会员。推送人数必须大于1人。</span> <el-dialog title="推送确认" :visible.sync="submitDialogVisible" width="30%" center>
<div v-if="isCount"> <div>
<el-button class="form-button">选中标签,预览</el-button> <img :src="currentImgUrl">
<span>统计中,请稍候</span> <p>{{currentTagCount}}名粉丝推送</p>
</div> </div>
<div v-else> <span slot="footer" class="dialog-footer">
<el-button class="form-button">重新预览</el-button> <el-button type="primary" @click="onSubmit">确 定</el-button>
<span class="form-checknum" v-if="form.resource === '全体推送'">{{this.currentTagCount}}</span> </span>
<span class="form-checknum" v-else>{{successNum}}</span> </el-dialog>
<span class="form-vipnum">标签会员数: {{tagNum}}</span> </el-form-item>
<span>其中,关注公众号: {{followNum}}</span> </el-form>
<span>已推送4次会员: {{fourthNum}}</span> </div>
</div>
</el-form-item>
<el-form-item label="执行推送任务">
<span class="gray"><span class="star-red">*</span>填写邮箱后,勾选免责说明,确认进行推送,推送完成后将发送邮件通知至指定邮箱。</span>
<el-checkbox v-model="checked">本次推送为t测试组商户123自发行为,发放内容请遵守国家相关法律规定..</el-checkbox>
</el-form-item>
<el-form-item label="指定接收邮箱">
<el-input v-model="email" type="email" placeholder="请输入您要接收任务信息的邮箱"></el-input>
</el-form-item>
<el-form-item class="submit-dialog">
<el-button class="form-button" @click="handleConfirmPush" :style="isBtnCheckd" :disabled="!checked">确认推送</el-button>
<el-dialog title="推送确认" :visible.sync="submitDialogVisible" width="30%" center>
<div>
<img :src="currentImgUrl">
<p>{{currentTagCount}}名粉丝推送</p>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="onSubmit">确 定</el-button>
</span>
</el-dialog>
</el-form-item>
</el-form>
</div>
</template> </template>
<script> <script>
import api from '@/tool/api' import api from '@/tool/api'
...@@ -180,13 +260,16 @@ export default { ...@@ -180,13 +260,16 @@ export default {
followNum: 0, followNum: 0,
fourthNum: 0, fourthNum: 0,
successNum: 0, successNum: 0,
currentTagIndex: 0, currentTagIndex: 0,
isHaveMater: false,
tagIds: [], tagIds: [],
tagIdsSave: [], tagIdsSave: [],
tagList: [], tagList: [],
tagIdsList: [], tagIdsList: [],
chooseTag: [], chooseTag: [],
chooseItem: '' chooseItem: '',
selectedItem:{},
materListId: ''
} }
}, },
created() { created() {
...@@ -211,7 +294,28 @@ export default { ...@@ -211,7 +294,28 @@ export default {
this.currentImgId = item.media_id this.currentImgId = item.media_id
this.CHOOSE_ITEM(item) this.CHOOSE_ITEM(item)
this.centerDialogVisible = false this.centerDialogVisible = false
}, },
selectMater(item) {
console.log(item);
this.centerDialogVisible = false;
this.isHaveMater = true;
this.selectedItem = item;
},
async showMaterList() {
this.centerDialogVisible = true;
await this.axios.post(api.add.getMaterial, {
pageNo: 1,
pageSize: 20,
})
.then( res => {
let result = res.data.result;
if(result.result && result.result.length >0 )
this.materList = result.result[0].content.news_item;
this.materListId = result.result[0].media_id;
console.log(this.materList)
})
},
getAll() { getAll() {
this.isCount = true this.isCount = true
this.getTagCountAll() this.getTagCountAll()
...@@ -227,18 +331,13 @@ export default { ...@@ -227,18 +331,13 @@ export default {
type: 'warning', type: 'warning',
}) })
} }
if (!this.currentImgUrl) { if (!this.isHaveMater) {
return this.$message({
message: '请选择推送素材',
type: 'warning',
})
}
if (!this.currentImgUrl) {
return this.$message({ return this.$message({
message: '请选择推送素材', message: '请选择推送素材',
type: 'warning', type: 'warning',
}) })
} }
var reg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/ var reg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/
if (!this.email) { if (!this.email) {
...@@ -255,8 +354,9 @@ export default { ...@@ -255,8 +354,9 @@ export default {
this.submitDialogVisible = true this.submitDialogVisible = true
}, },
handleClickTag(item, index) { handleClickTag(item, index) {
console.log(arguments)
item.isActive = !item.isActive item.isActive = !item.isActive
this.currentTagIndex = index this.currentTagIndex = index
this.isCount = true this.isCount = true
if (item.isActive) { if (item.isActive) {
...@@ -277,7 +377,8 @@ export default { ...@@ -277,7 +377,8 @@ export default {
} }
}) })
} }
this.tagList = this.tagList.splice(0) this.tagList = this.tagList.splice(0)
console.log(this.tagList )
this.getTagCount() this.getTagCount()
this.getViewCount() this.getViewCount()
}, },
...@@ -290,28 +391,66 @@ export default { ...@@ -290,28 +391,66 @@ export default {
} }
this.submitDialogVisible = false this.submitDialogVisible = false
this.save() this.save()
}, },
reCheckNum() {
this.getViewCount();
},
// 确认推送 // 确认推送
async save() { async save() {
await this.axios console.log(this.selectedItem)
.post(api.add.save, { // 构建post对象
mediaId: this.currentImgId, let responseData = {
msgId: '', title: this.form.name,
scope: this.form.resource === '全体推送' ? '0' : '1', scope: this.form.resource === '全体推送' ? 0 :1,
tagArrays: this.form.resource === '全体推送' ? this.tagList : this.tagIdsSave, pushCount:this.currentTagCount,
title: this.form.name, email: this.email,
tmplId: '', type:1,
type: 1, mediaId: this.materListId,
}) }
.then(res => { // 如果是精准推送的话,把所有选中的标签扔进去
if (res && res.data && res.data.code === 0) { if(responseData.scope == '1') {
this.$message({ let tagIds = ''
message: res.data.message, this.tagList.filter(tag => tag.isActive ) .forEach(tag => {
type: 'success', tagIds = tagIds + tag.tagId +','
})
this.$router.push({ path: '/home/marketing' })
}
}) })
tagIds = tagIds.substring(0, tagIds.length - 1);
responseData.tagIds = tagIds;
}
console.log(responseData);
await this.axios.post(api.add.save, responseData)
.then(res =>{
if(res.data.code === 0) {
this.$message({
message: res.data.message,
type: 'success'
})
this.$router.push({ path: '/home/marketing' })
}
})
// await this.axios
// .post(api.add.save, {
// mediaId: this.currentImgId,
// msgId: '',
// scope: this.form.resource === '全体推送' ? '0' : '1',
// tagArrays: this.form.resource === '全体推送' ? this.tagList : this.tagIdsSave,
// title: this.form.name,
// tmplId: '',
// type: 1,
// })
// .then(res => {
// if (res && res.data && res.data.code === 0) {
// this.$message({
// message: res.data.message,
// type: 'success',
// })
// this.$router.push({ path: '/home/marketing' })
// }
// })
}, },
// tagcount // tagcount
async getTagCount() { async getTagCount() {
...@@ -340,7 +479,8 @@ export default { ...@@ -340,7 +479,8 @@ export default {
// 初始化 taglist // 初始化 taglist
async getTagList() { async getTagList() {
await this.axios.post(api.add.customerCacheList).then(res => { await this.axios.post(api.add.customerCacheList).then(res => {
this.tagList = res.data console.log(res);
this.tagList = res.data;
this.tagList.forEach(item => { this.tagList.forEach(item => {
this.tagIdsList.push(item.tagId) this.tagIdsList.push(item.tagId)
}) })
...@@ -372,11 +512,11 @@ export default { ...@@ -372,11 +512,11 @@ export default {
} }
</script> </script>
<style lang="stylus" scoped> <style lang="stylus" scoped>
.two-item:nth-child(1) .two-item:nth-child(1)
div div
height 161px !important height 161px !important
margin-bottom 5px margin-bottom 5px
p p
width 254px !important width 254px !important
float left float left
position relative position relative
...@@ -463,12 +603,12 @@ export default { ...@@ -463,12 +603,12 @@ export default {
cursor pointer cursor pointer
width 100% width 100%
height 100% height 100%
// .two-item:nth-child(1) // .two-item:nth-child(1)
// div // div
// border 1px solid // border 1px solid
// height 132px !important // height 132px !important
// margin-bottom 5px // margin-bottom 5px
// p // p
// width 247px !important // width 247px !important
// float left // float left
// border 1px solid red // border 1px solid red
...@@ -510,4 +650,21 @@ export default { ...@@ -510,4 +650,21 @@ export default {
display inline-block display inline-block
padding-left 26px padding-left 26px
margin-left 26px margin-left 26px
.mater-item:hover .mater-wrap {
// background: black;
display: block;
}
.mater-wrap {
left: -2px;
top: -2px;
padding-right: 2px;
padding-bottom: 2px;
position: absolute;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,0.4);
display: none;
cursor: pointer;
}
</style> </style>
...@@ -80,10 +80,10 @@ export default { ...@@ -80,10 +80,10 @@ export default {
msgUrl: "" msgUrl: ""
}; };
}, },
created() { // created() {
this.authUrl = ctx + "/back/wechat/auth"; // this.authUrl = ctx + "/back/wechat/auth";
this.msgUrl = platformCtx + "/message/marketingSms/list.do"; // this.msgUrl = platformCtx + "/message/marketingSms/list.do";
} // }
}; };
</script> </script>
......
...@@ -31,7 +31,14 @@ ...@@ -31,7 +31,14 @@
</div> </div>
</el-col> </el-col>
<el-col :span="10" class="articleChart"> <el-col :span="10" class="articleChart">
<ve-line :data="item.chartData" height="110px" :grid="grid" :extend="extend" :tooltip-visible="false" :legend-visible="false"></ve-line> <ve-line
:data="item.chartData"
height="110px"
:grid="grid"
:extend="extend"
:tooltip-visible="false"
:legend-visible="false"
></ve-line>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
...@@ -85,6 +92,7 @@ export default { ...@@ -85,6 +92,7 @@ export default {
rows: item.tempList, rows: item.tempList,
} }
}) })
console.log( this.GetarticleList)
return this.GetarticleList return this.GetarticleList
}, },
}, },
...@@ -111,6 +119,10 @@ export default { ...@@ -111,6 +119,10 @@ export default {
font-size 16px font-size 16px
height 30px height 30px
line-height 30px line-height 30px
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
word-break: break-all;
span span
height 50px height 50px
line-height 50px line-height 50px
......
...@@ -7,7 +7,12 @@ ...@@ -7,7 +7,12 @@
</div> </div>
</el-row> </el-row>
<el-form :inline="true" :model="form" class="demo-form-inline" style="min-width:980px;padding:0 25px;"> <el-form
:inline="true"
:model="form"
class="demo-form-inline"
style="min-width:980px;padding:0 25px;"
>
<el-row class="temp-input"> <el-row class="temp-input">
<el-col :span="10"> <el-col :span="10">
<el-form-item label="推送名称:"> <el-form-item label="推送名称:">
...@@ -16,9 +21,21 @@ ...@@ -16,9 +21,21 @@
</el-col> </el-col>
<el-col :span="14"> <el-col :span="14">
<el-form-item label="活动时间:"> <el-form-item label="活动时间:">
<el-date-picker type="date" placeholder="推送时间" v-model="queryDateStart" format="yyyy-MM-dd" value-format="yyyy-MM-dd"></el-date-picker> <el-date-picker
type="date"
placeholder="推送时间"
v-model="queryDateStart"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
></el-date-picker>
<span class="line time-line" :span="2">-</span> <span class="line time-line" :span="2">-</span>
<el-date-picker type="date" placeholder="推送时间" v-model="queryDateEnd" format="yyyy-MM-dd" value-format="yyyy-MM-dd"></el-date-picker> <el-date-picker
type="date"
placeholder="推送时间"
v-model="queryDateEnd"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
></el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -34,17 +51,24 @@ ...@@ -34,17 +51,24 @@
<el-col :span="10"> <el-col :span="10">
<el-form-item label="创建推送节点:"> <el-form-item label="创建推送节点:">
<el-select v-model="clerkId" placeholder="--全部--"> <el-select v-model="clerkId" placeholder="--全部--">
<el-option v-for="(item,index) in dataList" :key="index" :label="item.clerkName" :value="item.clerkId"> <el-option
</el-option> v-for="(item,index) in dataList"
:key="index"
:label="item.clerkName"
:value="item.clerkId"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
<el-table :data="dataList" style="width: 100%" :header-cell-style="{background:'#374a5e', color:'#fff'}"> <el-table
<el-table-column prop="title" label="推送名称" min-width="100" align="center"> :data="dataList"
</el-table-column> style="width: 100%"
:header-cell-style="{background:'#374a5e', color:'#fff'}"
>
<el-table-column prop="title" label="推送名称" min-width="100" align="center"></el-table-column>
<el-table-column prop="type" label="推送类型" min-width="76" align="center"> <el-table-column prop="type" label="推送类型" min-width="76" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.type === 1">微信素材</span> <span v-if="scope.row.type === 1">微信素材</span>
...@@ -53,23 +77,27 @@ ...@@ -53,23 +77,27 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="推送时间" min-width="150" align="center"> <el-table-column label="推送时间" min-width="150" align="center">
<template slot-scope="scope"> <template slot-scope="scope">{{scope.row.pushTime | formatedDate}}</template>
{{scope.row.pushTime | formatedDate}}
</template>
</el-table-column> </el-table-column>
<el-table-column prop="scope" label="推送范围" min-width="260" align="center"> <el-table-column prop="scope" label="推送范围" min-width="260" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.scope === 0">全体推送</span> <span v-if="scope.row.scope === 0">全体推送</span>
<template v-if="scope.row.scope === 1 && scope.row.tagList "> <template v-if="scope.row.scope === 1 && scope.row.tagList ">
<span class="temp-tablespan"> <span class="temp-tablespan">{{scope.row.tagList && scope.row.tagList[0]}}</span>
{{scope.row.tagList && scope.row.tagList[0]}} <span class="temp-tablespan">{{scope.row.tagList && scope.row.tagList[1]}}</span>
</span> <el-popover
<span class="temp-tablespan"> v-if="scope.row.tagList"
{{scope.row.tagList && scope.row.tagList[1]}} placement="bottom"
</span> title="标签"
<el-popover v-if="scope.row.tagList" placement="bottom" title="标签" width="200" trigger="click"> width="200"
trigger="click"
>
<div> <div>
<span v-for="(item,index) in scope.row.tagList" :key="index" class="table-tag" style=" <span
v-for="(item,index) in scope.row.tagList"
:key="index"
class="table-tag"
style="
display: inline-block; display: inline-block;
width: 90px; width: 90px;
border: 1px solid transparent; border: 1px solid transparent;
...@@ -83,21 +111,17 @@ ...@@ -83,21 +111,17 @@
vertical-align: top; vertical-align: top;
margin: 0 5px 5px 0; margin: 0 5px 5px 0;
font-size: 13px; font-size: 13px;
line-height: 28px;"> line-height: 28px;"
{{item}} >{{item}}</span>
</span>
</div> </div>
<el-button class="fr temp-tablesmore" slot="reference">更多</el-button> <el-button class="fr temp-tablesmore" slot="reference">更多</el-button>
</el-popover> </el-popover>
</template> </template>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="pushCount" label="推送人数" align="center"> <el-table-column prop="pushCount" label="推送人数" align="center"></el-table-column>
</el-table-column> <el-table-column prop="sentCount" label="推送成功人数" align="center"></el-table-column>
<el-table-column prop="sentCount" label="推送成功人数" align="center"> <el-table-column prop="clerkName" label="创建消息节点" align="center"></el-table-column>
</el-table-column>
<el-table-column prop="clerkName" label="创建消息节点" align="center">
</el-table-column>
<el-table-column prop="statusMsg" label="推送进度" align="center"> <el-table-column prop="statusMsg" label="推送进度" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.statusMsg === '推送失败'" style="color:red">推送失败</span> <span v-if="scope.row.statusMsg === '推送失败'" style="color:red">推送失败</span>
...@@ -106,10 +130,14 @@ ...@@ -106,10 +130,14 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-pagination @current-change="handleCurrentChange" :current-page="pageNo" :page-size="10" :total="total" layout="total, prev, pager, next, jumper"> <el-pagination
</el-pagination> @current-change="handleCurrentChange"
:current-page="pageNo"
:page-size="10"
:total="total"
layout="total, prev, pager, next, jumper"
></el-pagination>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
...@@ -150,12 +178,13 @@ export default { ...@@ -150,12 +178,13 @@ export default {
const paramsSearch = { const paramsSearch = {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
title: '', type: 2
queryDateStart: '', // title: '',
queryDateEnd: '', // queryDateStart: '',
pushCountStart: '', // queryDateEnd: '',
pushCountEnd: '', // pushCountStart: '',
clerkId: '', // pushCountEnd: '',
// clerkId: '',
} }
this.$emit('reset', paramsSearch) this.$emit('reset', paramsSearch)
this.title = '' this.title = ''
...@@ -169,13 +198,26 @@ export default { ...@@ -169,13 +198,26 @@ export default {
const paramsSearch = { const paramsSearch = {
pageNo: this.pageNo, pageNo: this.pageNo,
pageSize: this.pageSize, pageSize: this.pageSize,
title: this.title, type: 2
queryDateStart: this.queryDateStart, // title: this.title,
queryDateEnd: this.queryDateEnd, // queryDateStart: this.queryDateStart,
pushCountStart: this.pushCountStart, // queryDateEnd: this.queryDateEnd,
pushCountEnd: this.pushCountEnd, // pushCountStart: this.pushCountStart,
clerkId: this.clerkId, // pushCountEnd: this.pushCountEnd,
// clerkId: this.clerkId,
} }
if(this.title)
paramsSearch.title = this.title;
if(this.queryDateStart)
paramsSearch.queryDateStart = this.queryDateStart;
if(this.queryDateEnd)
paramsSearch.queryDateEnd = this.queryDateEnd;
if(this.pushCountStart)
paramsSearch.pushCountStart = this.pushCountStart;
if(this.pushCountEnd)
paramsSearch.pushCountEnd = this.pushCountEnd;
this.$emit('search', paramsSearch) this.$emit('search', paramsSearch)
}, },
}, },
......
...@@ -7,7 +7,12 @@ ...@@ -7,7 +7,12 @@
</div> </div>
</el-row> </el-row>
<el-form :inline="true" :model="form" class="demo-form-inline" style="min-width:980px;padding:0 25px;"> <el-form
:inline="true"
:model="form"
class="demo-form-inline"
style="min-width:980px;padding:0 25px;"
>
<el-row class="temp-input"> <el-row class="temp-input">
<el-col :span="10"> <el-col :span="10">
<el-form-item label="推送名称:"> <el-form-item label="推送名称:">
...@@ -16,9 +21,21 @@ ...@@ -16,9 +21,21 @@
</el-col> </el-col>
<el-col :span="14"> <el-col :span="14">
<el-form-item label="活动时间:"> <el-form-item label="活动时间:">
<el-date-picker type="date" placeholder="推送时间" v-model="queryDateStart" format="yyyy-MM-dd" value-format="yyyy-MM-dd"></el-date-picker> <el-date-picker
type="date"
placeholder="推送时间"
v-model="queryDateStart"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
></el-date-picker>
<span class="line time-line" :span="2">-</span> <span class="line time-line" :span="2">-</span>
<el-date-picker type="date" placeholder="推送时间" v-model="queryDateEnd" format="yyyy-MM-dd" value-format="yyyy-MM-dd"></el-date-picker> <el-date-picker
type="date"
placeholder="推送时间"
v-model="queryDateEnd"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
></el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -34,17 +51,24 @@ ...@@ -34,17 +51,24 @@
<el-col :span="10"> <el-col :span="10">
<el-form-item label="创建推送节点:"> <el-form-item label="创建推送节点:">
<el-select v-model="clerkId" placeholder="--全部--"> <el-select v-model="clerkId" placeholder="--全部--">
<el-option v-for="(item,index) in dataList" :key="index" :label="item.clerkName" :value="item.clerkId"> <el-option
</el-option> v-for="(item,index) in dataList"
:key="index"
:label="item.clerkName"
:value="item.clerkId"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
<el-table :data="dataList" style="width: 100%" :header-cell-style="{background:'#374a5e', color:'#fff'}"> <el-table
<el-table-column prop="title" label="推送名称" min-width="100" align="center"> :data="dataList"
</el-table-column> style="width: 100%"
:header-cell-style="{background:'#374a5e', color:'#fff'}"
>
<el-table-column prop="title" label="推送名称" min-width="100" align="center"></el-table-column>
<el-table-column prop="type" label="推送类型" min-width="76" align="center"> <el-table-column prop="type" label="推送类型" min-width="76" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.type === 1">微信素材</span> <span v-if="scope.row.type === 1">微信素材</span>
...@@ -53,23 +77,26 @@ ...@@ -53,23 +77,26 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="推送时间" min-width="150" align="center"> <el-table-column label="推送时间" min-width="150" align="center">
<template slot-scope="scope"> <template slot-scope="scope">{{scope.row.pushTime | formatedDate}}</template>
{{scope.row.pushTime | formatedDate}}
</template>
</el-table-column> </el-table-column>
<el-table-column prop="scope" label="推送范围" min-width="260" align="center"> <el-table-column prop="scope" label="推送范围" min-width="260" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.scope === 0">全体推送</span> <span v-if="scope.row.scope === 0">全体推送</span>
<template v-if="scope.row.scope === 1 && scope.row.tagList "> <template v-if="scope.row.scope === 1 && scope.row.tagList ">
<span class="temp-tablespan"> <span class="temp-tablespan">{{scope.row.tagList && scope.row.tagList[0]}}</span>
{{scope.row.tagList && scope.row.tagList[0]}} <span class="temp-tablespan">{{scope.row.tagList && scope.row.tagList[1]}}</span>
</span> <el-popover
<span class="temp-tablespan"> v-if="scope.row.tagList"
{{scope.row.tagList && scope.row.tagList[1]}} placement="bottom"
</span> title="标签"
<el-popover v-if="scope.row.tagList" placement="bottom" title="标签" width="200" trigger="click"> width="200"
trigger="click"
>
<div> <div>
<span v-for="(item,index) in scope.row.tagList" :key="index" style=" <span
v-for="(item,index) in scope.row.tagList"
:key="index"
style="
display: inline-block; display: inline-block;
width: 90px; width: 90px;
border: 1px solid transparent; border: 1px solid transparent;
...@@ -83,21 +110,17 @@ ...@@ -83,21 +110,17 @@
vertical-align: top; vertical-align: top;
margin: 0 5px 5px 0; margin: 0 5px 5px 0;
font-size: 13px; font-size: 13px;
line-height: 28px;"> line-height: 28px;"
{{item}} >{{item}}</span>
</span>
</div> </div>
<el-button class="fr temp-tablesmore" slot="reference">更多</el-button> <el-button class="fr temp-tablesmore" slot="reference">更多</el-button>
</el-popover> </el-popover>
</template> </template>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="pushCount" label="推送人数" align="center"> <el-table-column prop="pushCount" label="推送人数" align="center"></el-table-column>
</el-table-column> <el-table-column prop="sentCount" label="推送成功人数" align="center"></el-table-column>
<el-table-column prop="sentCount" label="推送成功人数" align="center"> <el-table-column prop="clerkName" label="创建消息节点" align="center"></el-table-column>
</el-table-column>
<el-table-column prop="clerkName" label="创建消息节点" align="center">
</el-table-column>
<el-table-column prop="statusMsg" label="推送进度" align="center"> <el-table-column prop="statusMsg" label="推送进度" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.statusMsg === '推送失败'" style="color:red">推送失败</span> <span v-if="scope.row.statusMsg === '推送失败'" style="color:red">推送失败</span>
...@@ -106,10 +129,14 @@ ...@@ -106,10 +129,14 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-pagination @current-change="handleCurrentChange" :current-page="pageNo" :page-size="10" :total="total" layout="total, prev, pager, next, jumper"> <el-pagination
</el-pagination> @current-change="handleCurrentChange"
:current-page="pageNo"
:page-size="10"
:total="total"
layout="total, prev, pager, next, jumper"
></el-pagination>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
...@@ -150,12 +177,7 @@ export default { ...@@ -150,12 +177,7 @@ export default {
const paramsSearch = { const paramsSearch = {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
title: '', type: 1
queryDateStart: '',
queryDateEnd: '',
pushCountStart: '',
pushCountEnd: '',
clerkId: '',
} }
this.$emit('reset', paramsSearch) this.$emit('reset', paramsSearch)
this.title = '' this.title = ''
...@@ -168,14 +190,25 @@ export default { ...@@ -168,14 +190,25 @@ export default {
search() { search() {
const paramsSearch = { const paramsSearch = {
pageNo: this.pageNo, pageNo: this.pageNo,
type: 1,
pageSize: this.pageSize, pageSize: this.pageSize,
title: this.title, // title: this.title,
queryDateStart: this.queryDateStart, // queryDateStart: this.queryDateStart,
queryDateEnd: this.queryDateEnd, // queryDateEnd: this.queryDateEnd,
pushCountStart: this.pushCountStart, // pushCountStart: this.pushCountStart,
pushCountEnd: this.pushCountEnd, // pushCountEnd: this.pushCountEnd,
clerkId: this.clerkId, // clerkId: this.clerkId,
} }
if(this.title)
paramsSearch.title = this.title;
if(this.queryDateStart)
paramsSearch.queryDateStart = this.queryDateStart;
if(this.queryDateEnd)
paramsSearch.queryDateEnd = this.queryDateEnd;
if(this.pushCountStart)
paramsSearch.pushCountStart = this.pushCountStart;
if(this.pushCountEnd)
paramsSearch.pushCountEnd = this.pushCountEnd;
this.$emit('search', paramsSearch) this.$emit('search', paramsSearch)
}, },
}, },
......
...@@ -3,14 +3,31 @@ ...@@ -3,14 +3,31 @@
<el-tab-pane label="图文素材消息" name="first"> <el-tab-pane label="图文素材消息" name="first">
<materia-list :imgList="imgList" @sendid="handleId"></materia-list> <materia-list :imgList="imgList" @sendid="handleId"></materia-list>
<push-detail v-loading="loading" v-if="pushlist" :mediaId="mediaId" :pushlist="pushlist"></push-detail> <push-detail v-loading="loading" v-if="pushlist" :mediaId="mediaId" :pushlist="pushlist"></push-detail>
<material-details v-if="materialChartList&&materialChartList.length" :MediaList="MediaList" :materialChartList="materialChartList"></material-details> <material-details
<article-details v-if="GetarticleList&&GetarticleList.length" :GetarticleList="GetarticleList"></article-details> v-if="materialChartList&&materialChartList.length"
:MediaList="MediaList"
:materialChartList="materialChartList"
></material-details>
<article-details
v-if="GetarticleList&&GetarticleList.length"
:GetarticleList="GetarticleList"
></article-details>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="营销模版消息" name="second"> <el-tab-pane label="营销模版消息" name="second">
<temp-list :templist="templist" @search="handleSearch" @reset="handleReset" @pageChange="pageChange"></temp-list> <temp-list
:templist="templist"
@search="handleSearch"
@reset="handleReset"
@pageChange="pageChange"
></temp-list>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="短信营销消息" name="third"> <el-tab-pane label="短信营销消息" name="third">
<message-list :msgList="msgList" @search="handleMsgSearch" @reset="handleMsgReset" @pageChange="msgPageChange"></message-list> <message-list
:msgList="msgList"
@search="handleMsgSearch"
@reset="handleMsgReset"
@pageChange="msgPageChange"
></message-list>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</template> </template>
...@@ -77,6 +94,7 @@ export default { ...@@ -77,6 +94,7 @@ export default {
}, },
async handleGetSearchData(params) { async handleGetSearchData(params) {
await this.axios.post(api.getTempList, params).then(res => { await this.axios.post(api.getTempList, params).then(res => {
console.log(res);
this.templist = res.data.result this.templist = res.data.result
this.msgList = res.data.result this.msgList = res.data.result
}) })
...@@ -109,6 +127,7 @@ export default { ...@@ -109,6 +127,7 @@ export default {
let getPushRes = await this.axios.post(api.getPushList, params) let getPushRes = await this.axios.post(api.getPushList, params)
if (getPushRes.data.code === 0) { if (getPushRes.data.code === 0) {
console.log(getPushRes.data.result)
this.loading = false this.loading = false
this.pushlist = getPushRes.data.result this.pushlist = getPushRes.data.result
...@@ -116,12 +135,58 @@ export default { ...@@ -116,12 +135,58 @@ export default {
mediaId: imgId, mediaId: imgId,
} }
let getArticleRes = await this.axios.post(api.getarticlesummary, params) let getArticleRes = await this.axios.post(api.getarticlesummary, params)
console.log(getArticleRes)
if (getArticleRes.data.code === 0) { if (getArticleRes.data.code === 0) {
// 素材总流量分析 // 素材总流量分析
this.MediaList = getArticleRes.data.result.wechatMediaSummary this.MediaList = getArticleRes.data.result.wechatMediaSummary
// 素材单日流量分析 // 素材单日流量分析
this.materialChartList = getArticleRes.data.result.wechatMediaSummary.mediaGetarticles.reverse() this.materialChartList = getArticleRes.data.result.wechatMediaSummary.mediaGetarticles.reverse()
// this.materialChartList = [
// {
// "refDate": "2018-11-01",
// "intPageReadUser": 10,
// "intPageReadCount": 0,
// "oriPageReadUser": 0,
// "oriPageReadCount": 0,
// "shareUser": 0,
// "shareCount": 0,
// "addToFavUser": 0,
// "addToFavCount": 0
// },
// {
// "refDate": "2018-11-01",
// "intPageReadUser": 100,
// "intPageReadCount": 0,
// "oriPageReadUser": 0,
// "oriPageReadCount": 0,
// "shareUser": 0,
// "shareCount": 0,
// "addToFavUser": 0,
// "addToFavCount": 0
// },
// {
// "refDate": "2018-11-01",
// "intPageReadUser":300,
// "intPageReadCount": 0,
// "oriPageReadUser": 0,
// "oriPageReadCount": 0,
// "shareUser": 0,
// "shareCount": 0,
// "addToFavUser": 0,
// "addToFavCount": 0
// },
// {
// "refDate": "2018-11-01",
// "intPageReadUser": 400,
// "intPageReadCount": 0,
// "oriPageReadUser": 0,
// "oriPageReadCount": 0,
// "shareUser": 0,
// "shareCount": 0,
// "addToFavUser": 0,
// "addToFavCount": 0
// }
// ]
// 文章流量分析 // 文章流量分析
this.GetarticleList = getArticleRes.data.result.mediaGetarticle this.GetarticleList = getArticleRes.data.result.mediaGetarticle
} }
...@@ -207,6 +272,7 @@ export default { ...@@ -207,6 +272,7 @@ export default {
mediaId: imgId, mediaId: imgId,
}) })
.then(res => { .then(res => {
console.log(res);
if (res && res.data && res.data.code === 0) { if (res && res.data && res.data.code === 0) {
this.msgList = res.data.result this.msgList = res.data.result
} }
......
import config from '@/config' import config from "@/config";
export default { export default {
getMenu: `${config.host}/crm/back/menu/getMenu`, getMenu: `${config.host}/crm/back/menu/getMenu`,
...@@ -10,11 +10,12 @@ export default { ...@@ -10,11 +10,12 @@ export default {
getMaterialsList: `${config.host}/back/marketing/push/materials-list`, getMaterialsList: `${config.host}/back/marketing/push/materials-list`,
getPushList: `${config.host}/back/wechat/msg-tmpl/list`, getPushList: `${config.host}/back/wechat/msg-tmpl/list`,
getarticlesummary: `${config.host}/back/marketing/push/graphic-analysis`, getarticlesummary: `${config.host}/back/marketing/push/graphic-analysis`,
getTempList: 'http://testcenter.bigaka.net/crm/back/wechat/msg-mass/list-data', // 营销模板列表 getTempList: `${config.host}/back/marketing/push/msg-list`, // 营销模板列表
add: { add: {
save: 'http://testcenter.bigaka.net/crm/back/wechat/msg-mass/save', // 确认推送 save: `${config.host}/back/marketing/push/saveWechatMsgMass`, // 确认推送
tagCount: 'http://testcenter.bigaka.net/crm/back/wechat/msg-mass/tag-count', // 标签数量 tagCount: `${config.host}/back/wechat/msg-mass/tag-count`, // 标签数量
customerCacheList: 'http://testcenter.bigaka.net/crm/back/tag/customer-cache-list', // 标签列表 customerCacheList: `${config.host}/back/tag/customer-cache-list`, // 标签列表
getPreViewCount: 'http://testcenter.bigaka.net/crm/back/wechat/msg-mass/pre_view_count', // 图文推送预览人数 getPreViewCount: `${config.host}/back/marketing/push/preview-count`, // 图文推送预览人数
}, getMaterial: `${config.host}/back/marketing/push/materials-list`
} }
};
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