Commit d2056904 by 张卿

修复了 marketing 和addmarketing的页面接口

parent 2f908dc2
......@@ -5,7 +5,9 @@
<span class="top-title title">新建图文素材推送</span>
<span class="top-tips gray">
<span class="star-red">*</span>
<a href="#">微信公众平台</a>的图文素材,通过<a href="#">会员标签</a>分类投放,实现精准投放
<a href="#">微信公众平台</a>的图文素材,通过
<a href="#">会员标签</a>分类投放,实现精准投放
</span>
</el-col>
</el-row>
......@@ -15,10 +17,27 @@
<img src="@/assets/images/picture.png" class="iconimg">
</el-col>
<el-col :span="18" class="subtitle-tips">
<p>在微信触达域中,公众号作为最通用的触达渠道,微信为品牌号提供了 <span class="star-red">适配大批量会员触达</span> 的图文素材触达方式。</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>
<p>
在微信触达域中,公众号作为最通用的触达渠道,微信为品牌号提供了
<span class="star-red">适配大批量会员触达</span> 的图文素材触达方式。
</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-row>
</div>
......
......@@ -80,10 +80,10 @@ export default {
msgUrl: ""
};
},
created() {
this.authUrl = ctx + "/back/wechat/auth";
this.msgUrl = platformCtx + "/message/marketingSms/list.do";
}
// created() {
// this.authUrl = ctx + "/back/wechat/auth";
// this.msgUrl = platformCtx + "/message/marketingSms/list.do";
// }
};
</script>
......
......@@ -31,7 +31,14 @@
</div>
</el-col>
<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-row>
</div>
......@@ -85,6 +92,7 @@ export default {
rows: item.tempList,
}
})
console.log( this.GetarticleList)
return this.GetarticleList
},
},
......@@ -111,6 +119,10 @@ export default {
font-size 16px
height 30px
line-height 30px
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
word-break: break-all;
span
height 50px
line-height 50px
......
......@@ -7,7 +7,12 @@
</div>
</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-col :span="10">
<el-form-item label="推送名称:">
......@@ -16,9 +21,21 @@
</el-col>
<el-col :span="14">
<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>
<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-col>
</el-row>
......@@ -34,17 +51,24 @@
<el-col :span="10">
<el-form-item label="创建推送节点:">
<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-form-item>
</el-col>
</el-row>
</el-form>
<el-table :data="dataList" 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
:data="dataList"
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">
<template slot-scope="scope">
<span v-if="scope.row.type === 1">微信素材</span>
......@@ -53,23 +77,27 @@
</template>
</el-table-column>
<el-table-column label="推送时间" min-width="150" align="center">
<template slot-scope="scope">
{{scope.row.pushTime | formatedDate}}
</template>
<template slot-scope="scope">{{scope.row.pushTime | formatedDate}}</template>
</el-table-column>
<el-table-column prop="scope" label="推送范围" min-width="260" align="center">
<template slot-scope="scope">
<span v-if="scope.row.scope === 0">全体推送</span>
<template v-if="scope.row.scope === 1 && scope.row.tagList ">
<span class="temp-tablespan">
{{scope.row.tagList && scope.row.tagList[0]}}
</span>
<span class="temp-tablespan">
{{scope.row.tagList && scope.row.tagList[1]}}
</span>
<el-popover v-if="scope.row.tagList" placement="bottom" title="标签" width="200" trigger="click">
<span class="temp-tablespan">{{scope.row.tagList && scope.row.tagList[0]}}</span>
<span class="temp-tablespan">{{scope.row.tagList && scope.row.tagList[1]}}</span>
<el-popover
v-if="scope.row.tagList"
placement="bottom"
title="标签"
width="200"
trigger="click"
>
<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;
width: 90px;
border: 1px solid transparent;
......@@ -83,21 +111,17 @@
vertical-align: top;
margin: 0 5px 5px 0;
font-size: 13px;
line-height: 28px;">
{{item}}
</span>
line-height: 28px;"
>{{item}}</span>
</div>
<el-button class="fr temp-tablesmore" slot="reference">更多</el-button>
</el-popover>
</template>
</template>
</el-table-column>
<el-table-column prop="pushCount" label="推送人数" align="center">
</el-table-column>
<el-table-column prop="sentCount" label="推送成功人数" align="center">
</el-table-column>
<el-table-column prop="clerkName" label="创建消息节点" align="center">
</el-table-column>
<el-table-column prop="pushCount" label="推送人数" align="center"></el-table-column>
<el-table-column prop="sentCount" label="推送成功人数" align="center"></el-table-column>
<el-table-column prop="clerkName" label="创建消息节点" align="center"></el-table-column>
<el-table-column prop="statusMsg" label="推送进度" align="center">
<template slot-scope="scope">
<span v-if="scope.row.statusMsg === '推送失败'" style="color:red">推送失败</span>
......@@ -106,10 +130,14 @@
</template>
</el-table-column>
</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>
</template>
<script>
export default {
......@@ -150,12 +178,13 @@ export default {
const paramsSearch = {
pageNo: 1,
pageSize: 10,
title: '',
queryDateStart: '',
queryDateEnd: '',
pushCountStart: '',
pushCountEnd: '',
clerkId: '',
type: 2
// title: '',
// queryDateStart: '',
// queryDateEnd: '',
// pushCountStart: '',
// pushCountEnd: '',
// clerkId: '',
}
this.$emit('reset', paramsSearch)
this.title = ''
......@@ -169,13 +198,26 @@ export default {
const paramsSearch = {
pageNo: this.pageNo,
pageSize: this.pageSize,
title: this.title,
queryDateStart: this.queryDateStart,
queryDateEnd: this.queryDateEnd,
pushCountStart: this.pushCountStart,
pushCountEnd: this.pushCountEnd,
clerkId: this.clerkId,
type: 2
// title: this.title,
// queryDateStart: this.queryDateStart,
// queryDateEnd: this.queryDateEnd,
// pushCountStart: this.pushCountStart,
// 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)
},
},
......
......@@ -7,7 +7,12 @@
</div>
</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-col :span="10">
<el-form-item label="推送名称:">
......@@ -16,9 +21,21 @@
</el-col>
<el-col :span="14">
<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>
<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-col>
</el-row>
......@@ -34,17 +51,24 @@
<el-col :span="10">
<el-form-item label="创建推送节点:">
<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-form-item>
</el-col>
</el-row>
</el-form>
<el-table :data="dataList" 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
:data="dataList"
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">
<template slot-scope="scope">
<span v-if="scope.row.type === 1">微信素材</span>
......@@ -53,23 +77,26 @@
</template>
</el-table-column>
<el-table-column label="推送时间" min-width="150" align="center">
<template slot-scope="scope">
{{scope.row.pushTime | formatedDate}}
</template>
<template slot-scope="scope">{{scope.row.pushTime | formatedDate}}</template>
</el-table-column>
<el-table-column prop="scope" label="推送范围" min-width="260" align="center">
<template slot-scope="scope">
<span v-if="scope.row.scope === 0">全体推送</span>
<template v-if="scope.row.scope === 1 && scope.row.tagList ">
<span class="temp-tablespan">
{{scope.row.tagList && scope.row.tagList[0]}}
</span>
<span class="temp-tablespan">
{{scope.row.tagList && scope.row.tagList[1]}}
</span>
<el-popover v-if="scope.row.tagList" placement="bottom" title="标签" width="200" trigger="click">
<span class="temp-tablespan">{{scope.row.tagList && scope.row.tagList[0]}}</span>
<span class="temp-tablespan">{{scope.row.tagList && scope.row.tagList[1]}}</span>
<el-popover
v-if="scope.row.tagList"
placement="bottom"
title="标签"
width="200"
trigger="click"
>
<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;
width: 90px;
border: 1px solid transparent;
......@@ -83,21 +110,17 @@
vertical-align: top;
margin: 0 5px 5px 0;
font-size: 13px;
line-height: 28px;">
{{item}}
</span>
line-height: 28px;"
>{{item}}</span>
</div>
<el-button class="fr temp-tablesmore" slot="reference">更多</el-button>
</el-popover>
</template>
</template>
</el-table-column>
<el-table-column prop="pushCount" label="推送人数" align="center">
</el-table-column>
<el-table-column prop="sentCount" label="推送成功人数" align="center">
</el-table-column>
<el-table-column prop="clerkName" label="创建消息节点" align="center">
</el-table-column>
<el-table-column prop="pushCount" label="推送人数" align="center"></el-table-column>
<el-table-column prop="sentCount" label="推送成功人数" align="center"></el-table-column>
<el-table-column prop="clerkName" label="创建消息节点" align="center"></el-table-column>
<el-table-column prop="statusMsg" label="推送进度" align="center">
<template slot-scope="scope">
<span v-if="scope.row.statusMsg === '推送失败'" style="color:red">推送失败</span>
......@@ -106,10 +129,14 @@
</template>
</el-table-column>
</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>
</template>
<script>
export default {
......@@ -150,12 +177,7 @@ export default {
const paramsSearch = {
pageNo: 1,
pageSize: 10,
title: '',
queryDateStart: '',
queryDateEnd: '',
pushCountStart: '',
pushCountEnd: '',
clerkId: '',
type: 1
}
this.$emit('reset', paramsSearch)
this.title = ''
......@@ -168,14 +190,25 @@ export default {
search() {
const paramsSearch = {
pageNo: this.pageNo,
type: 1,
pageSize: this.pageSize,
title: this.title,
queryDateStart: this.queryDateStart,
queryDateEnd: this.queryDateEnd,
pushCountStart: this.pushCountStart,
pushCountEnd: this.pushCountEnd,
clerkId: this.clerkId,
// title: this.title,
// queryDateStart: this.queryDateStart,
// queryDateEnd: this.queryDateEnd,
// pushCountStart: this.pushCountStart,
// 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)
},
},
......
......@@ -3,14 +3,31 @@
<el-tab-pane label="图文素材消息" name="first">
<materia-list :imgList="imgList" @sendid="handleId"></materia-list>
<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>
<article-details v-if="GetarticleList&&GetarticleList.length" :GetarticleList="GetarticleList"></article-details>
<material-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 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 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-tabs>
</template>
......@@ -77,6 +94,7 @@ export default {
},
async handleGetSearchData(params) {
await this.axios.post(api.getTempList, params).then(res => {
console.log(res);
this.templist = res.data.result
this.msgList = res.data.result
})
......@@ -109,6 +127,7 @@ export default {
let getPushRes = await this.axios.post(api.getPushList, params)
if (getPushRes.data.code === 0) {
console.log(getPushRes.data.result)
this.loading = false
this.pushlist = getPushRes.data.result
......@@ -116,12 +135,58 @@ export default {
mediaId: imgId,
}
let getArticleRes = await this.axios.post(api.getarticlesummary, params)
console.log(getArticleRes)
if (getArticleRes.data.code === 0) {
// 素材总流量分析
this.MediaList = getArticleRes.data.result.wechatMediaSummary
// 素材单日流量分析
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
}
......@@ -207,6 +272,7 @@ export default {
mediaId: imgId,
})
.then(res => {
console.log(res);
if (res && res.data && res.data.code === 0) {
this.msgList = res.data.result
}
......
import config from '@/config'
import config from "@/config";
export default {
getMenu: `${config.host}/crm/back/menu/getMenu`,
......@@ -10,11 +10,12 @@ export default {
getMaterialsList: `${config.host}/back/marketing/push/materials-list`,
getPushList: `${config.host}/back/wechat/msg-tmpl/list`,
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: {
save: 'http://testcenter.bigaka.net/crm/back/wechat/msg-mass/save', // 确认推送
tagCount: 'http://testcenter.bigaka.net/crm/back/wechat/msg-mass/tag-count', // 标签数量
customerCacheList: 'http://testcenter.bigaka.net/crm/back/tag/customer-cache-list', // 标签列表
getPreViewCount: 'http://testcenter.bigaka.net/crm/back/wechat/msg-mass/pre_view_count', // 图文推送预览人数
},
}
save: `${config.host}/back/marketing/push/saveWechatMsgMass`, // 确认推送
tagCount: `${config.host}/back/wechat/msg-mass/tag-count`, // 标签数量
customerCacheList: `${config.host}/back/tag/customer-cache-list`, // 标签列表
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