Commit 2a1ad1fb by zhangmeng

迭代

parent 1f9af4c9
No preview for this file type
<!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/css/iconfont.css><link rel=stylesheet type=text/css href=static/css/common.css><link href=/marketing/static/css/app.303307f1473347af30da8c7f3cc53ab0.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/marketing/static/js/manifest.0a85049e489e85ac5f0a.js></script><script type=text/javascript src=/marketing/static/js/vendor.ccb4bd422cd76a080cba.js></script><script type=text/javascript src=/marketing/static/js/app.121f56222c8ac9e8618d.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/css/iconfont.css><link rel=stylesheet type=text/css href=static/css/common.css><link href=/marketing/static/css/app.a8ec267984c86423e2812342cbe1cf85.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/marketing/static/js/manifest.0a85049e489e85ac5f0a.js></script><script type=text/javascript src=/marketing/static/js/vendor.77d497571413c653cb91.js></script><script type=text/javascript src=/marketing/static/js/app.ab9070a4f573c8eea145.js></script></body></html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
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.
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.
......@@ -13,21 +13,13 @@
"dependencies": {
"@antv/data-set": "^0.8.9",
"@antv/g2": "^3.2.6",
"@gic-test/vue-gic-aside-menu": "^1.1.45",
"@gic-test/vue-gic-card": "^1.0.35",
"@gic-test/vue-gic-confirm-people": "^1.0.2",
"@gic-test/vue-gic-footer": "^1.0.9",
"@gic-test/vue-gic-header": "^1.3.30",
"@gic-test/vue-gic-people": "^1.2.8",
"@gic-test/vue-gic-store": "^1.0.38",
"@gic-test/vue-gic-store-group": "^1.0.4",
"@gic-test/vue-gic-store-linkage": "^1.0.6",
"@riophae/vue-treeselect": "^0.0.36",
"@tinymce/tinymce-vue": "^1.0.8",
"axios": "^0.18.0",
"echarts": "^4.1.0",
"element-ui": "^2.4.1",
"packele": "^1.0.3",
"packele": "^1.0.4",
"scriptjs": "^2.5.8",
"tinymce": "^4.8.2",
"v-charts": "^1.17.8",
......
......@@ -162,7 +162,9 @@
}
}
.break-word{
word-wrap: break-word;
}
.table-name--ellipsis{
width: 90px;
......@@ -176,6 +178,7 @@
.left-aside-contain {
/deep/ .el-submenu__title:hover {
background-color: #020b21;
......
No preview for this file type
......@@ -9243,7 +9243,7 @@
box-shadow: 0 0 2px 2px #1890ff; }
.el-radio__label {
font-size: 14px;
padding-left: 10px; }
padding-left: 8px; }
/* BEM support Func
-------------------------- */
......@@ -22891,7 +22891,7 @@
width: 25px;
display: inline-block;
float: right;
line-height: 32px; }
line-height: 24px; }
.el-range-editor.el-input__inner {
display: -webkit-inline-box;
......@@ -148,14 +148,15 @@
var resData = res.data
if (resData.errorCode == 0) {
if (!resData.result) {
// console.log("resData.result: ",resData.result)
return;
}
that.leftModuleName = resData.result.level2.menuName;
that.setNewData(resData.result.leftMenu)
that.selectMenu = that.$route.path
if (that.$route.meta.path) {
that.selectMenu = that.$route.meta.path;
} else {
that.selectMenu = that.$route.path;
}
if (!!resData.result.level4) {
// 设置选中menu
that.selectMenu = '/'+resData.result.level4.menuUrl
......@@ -165,6 +166,8 @@
// 设置选中menu
that.selectMenu = '/'+resData.result.level3.menuUrl
}
// sessionStorage.setItem('activeHead',resData.result.level2.menuCode)
return;
......@@ -186,11 +189,6 @@
}
},
watch: {
'$route'(val, oldVal){
console.log(this.$route);
this.selectMenu = this.$route.meta.path;
},
collapseFlag: function(newData,oldData){
var that = this;
// console.log("左侧新数据:",newData,oldData)
......
<template>
<el-popover
<el-popover class="el-button el-button--text"
placement="top"
width="160"
v-model="visible">
......@@ -8,13 +8,12 @@
<el-button size="mini" type="text" @click="cancel">取消</el-button>
<el-button type="primary" size="mini" @click="confirm">确定</el-button>
</div>
<span slot="reference" style="margin:0 10px;"><slot></slot></span>
<span slot="reference"><slot></slot></span>
</el-popover>
</template>
<script>
export default {
name:'dm-confirm',
name:'dm-delete',
props:{
tips:{
type:String,
......
......@@ -9,7 +9,10 @@
<el-breadcrumb-item :to="{ path: '' }"><a href="/report/#/memberSummary">首页</a></el-breadcrumb-item>
<el-breadcrumb-item :class="{'no-link':!v.path}" v-for="(v,i) in breadcrumb" :key="i" :to="{ path: v.path }">{{v.name}}</el-breadcrumb-item>
</el-breadcrumb>
<h3><span>{{contentTitle}}</span></h3>
<h3>
<span>{{contentTitle}}</span>
<span v-html="layoutTips"></span>
</h3>
</div>
<div class="layout-content__wrap">
<div class="layout-content" :class="[{'asideShow': asideShow},{'collapseFlag':asideShow && collapseFlag}]">
......@@ -49,6 +52,9 @@
},
breadcrumb() {
return this.$store.state.marketing.breadcrumb;
},
layoutTips() {
return this.$store.state.marketing.layoutTips;
}
},
// watch:{
......
......@@ -12,6 +12,54 @@
</el-upload>
</template>
<script>
// *.3gpp audio/3gpp, video/3gpp 3GPP Audio/Video
// *.ac3 audio/ac3 AC3 Audio
// *.asf allpication/vnd.ms-asf Advanced Streaming Format
// *.au audio/basic AU Audio
// *.css text/css Cascading Style Sheets
// *.csv text/csv Comma Separated Values
// *.doc application/msword MS Word Document
// *.dot application/msword MS Word Template
// *.dtd application/xml-dtd Document Type Definition
// *.dwg image/vnd.dwg AutoCAD Drawing Database
// *.dxf image/vnd.dxf AutoCAD Drawing Interchange Format
// *.gif image/gif Graphic Interchange Format
// *.htm text/html HyperText Markup Language
// *.html text/html HyperText Markup Language
// *.jp2 image/jp2 JPEG-2000
// *.jpe image/jpeg JPEG
// *.jpeg image/jpeg JPEG
// *.jpg image/jpeg JPEG
// *.js text/javascript, application/javascript JavaScript
// *.json application/json JavaScript Object Notation
// *.mp2 audio/mpeg, video/mpeg MPEG Audio/Video Stream, Layer II
// *.mp3 audio/mpeg MPEG Audio Stream, Layer III
// *.mp4 audio/mp4, video/mp4 MPEG-4 Audio/Video
// *.mpeg video/mpeg MPEG Video Stream, Layer II
// *.mpg video/mpeg MPEG Video Stream, Layer II
// *.mpp application/vnd.ms-project MS Project Project
// *.ogg application/ogg, audio/ogg Ogg Vorbis
// *.pdf application/pdf Portable Document Format
// *.png image/png Portable Network Graphics
// *.pot application/vnd.ms-powerpoint MS PowerPoint Template
// *.pps application/vnd.ms-powerpoint MS PowerPoint Slideshow
// *.ppt application/vnd.ms-powerpoint MS PowerPoint Presentation
// *.rtf application/rtf, text/rtf Rich Text Format
// *.svf image/vnd.svf Simple Vector Format
// *.tif image/tiff Tagged Image Format File
// *.tiff image/tiff Tagged Image Format File
// *.txt text/plain Plain Text
// *.wdb application/vnd.ms-works MS Works Database
// *.wps application/vnd.ms-works Works Text Document
// *.xhtml application/xhtml+xml Extensible HyperText Markup Language
// *.xlc application/vnd.ms-excel MS Excel Chart
// *.xlm application/vnd.ms-excel MS Excel Macro
// *.xls application/vnd.ms-excel MS Excel Spreadsheet
// *.xlt application/vnd.ms-excel MS Excel Template
// *.xlw application/vnd.ms-excel MS Excel Workspace
// *.xml text/xml, application/xml Extensible Markup Language
// *.zip aplication/zip Compressed Archive
import config from '@/config';
export default {
props:{
......@@ -45,7 +93,7 @@ import config from '@/config';
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
this.$message.error('上传头像图片只能是 JPG 格式!');
this.$message.error('上传格式错误!');
return;
}
if (!isLt2M) {
......
......@@ -247,7 +247,7 @@
this.$emit('listenWxText',this.xcxUrlObj)
},
getAllMytext(){ // 文本框输入失去焦点时获得输入框的内容
this.textarea = this.$refs.myTextarea.innerHTML.replace(/(<(?!\/?(a)(\s|\>))[^>]*>)/g,'').replace(/[&nbsp;]/g,'');
this.textarea = this.$refs.myTextarea.innerHTML.replace(/(<(?!\/?(a)(\s|\>))[^>]*>)/g,'').replace(/\&nbsp;/g,'');
// this.textarea = this.$refs.myTextarea.innerHTML;
this.xcxUrlObj.textarea = this.textarea;
......
......@@ -23,7 +23,9 @@ export default {
path: 'list',
name: '卡券库',
component: cardList,
meta: {},
meta: {
path:'/card/list'
},
},
{
path: 'record',
......@@ -36,7 +38,9 @@ export default {
path: 'get',
name: '领取记录',
component: cardRecordGet,
meta: {},
meta: {
path:'/card/record/get'
},
},
{
path: 'send',
......@@ -59,7 +63,8 @@ export default {
name: '卡券群发',
component: cardGroupSend,
meta: {
type:'edit'
type:'edit',
path:'/card/record/send'
}
},
{
......@@ -67,15 +72,17 @@ export default {
name: '卡券投放',
component: cardGroupSend,
meta: {
type:'send'
type:'send',
path:'/card/list'
}
},
{
path: 'groupinfo/:id',
name: '卡券详情',
name: '卡券群发详情',
component: cardGroupSend,
meta: {
type:'info'
type:'info',
path:'/card/record/send'
}
},
{
......@@ -83,7 +90,8 @@ export default {
name: '卡券编辑',
component: cardInfo,
meta: {
type:'edit'
type:'edit',
path:'/card/list'
}
},
{
......@@ -91,7 +99,17 @@ export default {
name: '卡券详情',
component: cardInfo,
meta: {
type:'info'
type:'info',
path:'/card/record/get'
}
},
{
path: 'copy/:id',
name: '卡券复制',
component: cardInfo,
meta: {
type:'copy',
path:'/card/record/get'
}
},
{
......@@ -99,38 +117,50 @@ export default {
name: '新增卡券',
component: cardInfo,
meta: {
type:'add'
type:'add',
path:'/card/list'
}
},
{
path: 'analysis/:id',
name: '卡券报表',
component: cardAnalysis,
meta: {}
meta: {
path:'/card/list'
}
},
{
path: 'shelfanalysis/:id',
name: '卡券展架报表',
component: cardAnalysis,
meta: {type:'shelf'}
meta: {
type:'shelf',
path:'/card/shelf'
}
},
{
path: 'shelf',
name: '卡券展架',
component: cardShelf,
meta: {},
meta: {
path:'/card/shelf'
},
},
{
path: 'shelf/:id',
name: '卡券管理',
component: cardManager,
meta: {},
meta: {
path:'/card/shelf'
},
},
{
path: 'check',
name: '核销纠错',
component: cardCheck,
meta: {},
meta: {
path:'/card/check'
},
},
]
};
......@@ -14,19 +14,27 @@ export default {
path: 'list',
name: '智能营销',
component: ecmList,
meta: {}
meta: {
path:'/ecm/list'
}
},
{
path: 'edit/:id',
name: '智能营销编辑',
component: addEdit,
meta: {type: 'edit'}
meta: {
type: 'edit',
path:'/ecm/list'
}
},
{
path: 'add',
name: '智能营销新增',
component: addEdit,
meta: {type: 'add'}
meta: {
type: 'add',
path:'/ecm/list'
}
}
]
}
......
......@@ -16,42 +16,58 @@ export default {
name: '最新评价',
// component: newest,
redirect: '/evaluation/newest',
meta: {}
meta: {
path:'/evaluation/newest'
}
},
{
path: 'newest',
name: '最新评价',
component: newest,
meta: {}
meta: {
path:'/evaluation/newest'
}
},
{
path: 'charts',
name: '评论概览',
component: evalCharts,
meta: {}
meta: {
path:'/evaluation/charts'
}
},
{
path: 'bad/:type',
name: '差评详情',
component: newest,
meta: {type: 'bad'}
meta: {
type: 'bad',
path:'/evaluation/charts'
}
},
{
path: 'suggestion',
name: '投诉与建议',
component: suggestion
component: suggestion,
meta: {
path:'/evaluation/suggestion'
}
},
{
path: 'suggestion/:id',
name: '投诉与建议处理',
component: problem
component: problem,
meta: {
path:'/evaluation/suggestion'
}
},
{
path: 'suggestion/info/:id',
name: '投诉与建议处理',
component: problem,
meta: {
type: 'info'
type: 'info',
path:'/evaluation/suggestion'
}
},
]
......
......@@ -31,139 +31,198 @@ export default {
path: 'dzp',
name: '大转盘',
component: dzp,
meta: {}
meta: {
path:'/game/dzp'
}
},
{
path: 'dzp/add',
name: '大转盘新增',
component: dzpAddEdit,
meta: {type: 'add'}
meta: {
type: 'add',
path:'/game/dzp'
}
},
{
path: 'dzp/edit/:id',
name: '大转盘编辑',
component: dzpAddEdit,
meta: {type: 'edit'}
meta: {
type: 'edit',
path:'/game/dzp'
}
},
{
path: 'dzp/detail/:id',
name: '大转盘查看',
component: dzpAddEdit,
meta: {type: 'detail'}
meta: {
type: 'detail',
path:'/game/dzp'
}
},
{
path: 'dzp/record/:id',
name: '大转盘中奖记录',
component: dzpRecord,
meta: {}
meta: {
path:'/game/dzp'
}
},
{
path: 'ggk',
name: '刮刮卡',
component: ggk,
meta: {}
meta: {
path:'/game/ggk'
}
},
{
path: 'ggk/add',
name: '刮刮卡新增',
component: ggkAddEdit,
meta: {type: 'add'}
meta: {
type: 'add',
path:'/game/ggk'
}
},
{
path: 'ggk/edit/:id',
name: '刮刮卡编辑',
component: ggkAddEdit,
meta: {type: 'edit'}
meta: {
type: 'edit',
path:'/game/ggk'
}
},
{
path: 'ggk/detail/:id',
name: '刮刮卡详情',
component: ggkAddEdit,
meta: {type: 'detail'}
meta: {
type: 'detail',
path:'/game/ggk'
}
},
{
path: 'ggk/record/:id',
name: '刮刮卡中奖记录',
component: ggkRecord,
meta: {}
meta: {
path:'/game/ggk'
}
},
{
path: 'ptyx',
name: '拼图游戏',
component: ptyx,
meta: {}
meta: {
path:'/game/ptyx'
}
},
{
path: 'ptyx/add',
name: '拼图游戏新增',
component: ptyxAddEdit,
meta: {type: 'add'}
meta: {
type: 'add',
path:'/game/ptyx'
}
},
{
path: 'ptyx/edit/:id',
name: '拼图游戏编辑',
component: ptyxAddEdit,
meta: {type: 'edit'}
meta: {
type: 'edit',
path:'/game/ptyx'
}
},
{
path: 'ptyx/query/:id',
name: '拼图游戏详情',
component: ptyxAddEdit,
meta: {type: 'query'}
meta: {
type: 'query',
path:'/game/ptyx'
}
},
{
path: 'ptyx/record/:id',
name: '拼图游戏统计',
component: ptyxRecord,
meta: {}
meta: {
path:'/game/ptyx'
}
},
{
path: 'znm',
name: '找你马',
component: znm,
meta: {}
meta: {
path:'/game/znm'
}
},
{
path: 'znm/add',
name: '找你马新增',
component: znmAddEdit,
meta: {type: 'add'}
meta: {
type: 'add',
path:'/game/znm'
}
},
{
path: 'znm/edit/:id',
name: '找你马编辑',
component: znmAddEdit,
meta: {type: 'edit'}
meta: {
type: 'edit',
path:'/game/znm'
}
},
{
path: 'znm/record/:id',
name: '找你马统计',
component: znmRecord,
meta: {}
meta: {
path:'/game/znm'
}
},
{
path: 'klfl',
name: '口令福利',
component: klfl,
meta: {}
meta: {
path:'/game/klfl'
}
},
{
path: 'klfl/add',
name: '口令福利新增',
component: klflAddEdit,
meta: {type: 'add'}
meta: {
type: 'add',
path:'/game/klfl'
}
},
{
path: 'klfl/edit/:id',
name: '口令福利编辑',
component: klflAddEdit,
meta: {type: 'edit'}
meta: {
type: 'edit',
path:'/game/klfl'
}
},
{
path: 'klfl/record/:id',
name: '口令福利中奖记录',
component: klflRecord,
meta: {}
meta: {
path:'/game/klfl'
}
},
]
};
......@@ -17,37 +17,51 @@ export default {
path: 'record',
name: '短信群发',
component: record,
meta: {}
meta: {
path:'/message/record'
}
},
{
path: 'temp',
name: '模板库',
component: temp,
meta: {}
meta: {
path:'/message/temp'
}
},
{
path: 'temp/add',
name: '新增模板',
component: addTemp,
meta: {type:'add'}
meta: {
type:'add',
path:'/message/temp'
}
},
{
path: 'temp/edit/:id',
name: '编辑模板',
component: addTemp,
meta: {type:'edit'}
meta: {
type:'edit',
path:'/message/temp'
}
},
{
path: 'record/add',
name: '新建群发',
component: addRecord,
meta: {}
meta: {
path:'/message/record'
}
},
{
path: 'record/detail/:id',
name: '短信群发详情',
component: recordDetail,
meta: {}
meta: {
path:'/message/record'
}
}
]
};
......@@ -15,12 +15,18 @@ export default {
{
path: 'list',
name: '模板消息列表',
component: msgList
component: msgList,
meta: {
path:'/msg/list'
}
},
{
path: 'edit/:id',
name: '模板消息编辑',
component: msgEdit
component: msgEdit,
meta: {
path:'/msg/list'
}
}
]
};
......@@ -7,7 +7,7 @@ import rechargeDo from '../../views/recharge/recharge'
export default {
path: 'recharge',
name: '计费中心1',
name: '计费中心面板',
component: recharge,
redirect:'recharge/board',
children:[
......
// wechat 微信营销
import wechat from '../../views/wechat/index'
import wechatRecord from '../../views/wechat/record'
import wechatTemp from '../../views/wechat/temp'
import imgTextTemp from '../../components/libs/imgTextTemp'
import imgTemp from '../../components/libs/imgTemp'
import audioTemp from '../../components/libs/audioTemp'
import videoTemp from '../../components/libs/videoTemp'
import videoAddEdit from '../../components/libs/videoTemp/addEdit'
import wechatAddRecord from '../../views/wechat/addRecord'
import editor from '../../views/wechat/editor'
import wechat from '../../views/wechat/index';
import wechatRecord from '../../views/wechat/record';
import wechatTemp from '../../views/wechat/temp';
import imgTextTemp from '../../components/libs/imgTextTemp';
import imgTemp from '../../components/libs/imgTemp';
import audioTemp from '../../components/libs/audioTemp';
import videoTemp from '../../components/libs/videoTemp';
import videoAddEdit from '../../components/libs/videoTemp/addEdit';
import wechatAddRecord from '../../views/wechat/addRecord';
import editor from '../../views/wechat/editor';
export default {
path: 'wechat',
......@@ -24,37 +21,63 @@ export default {
path: 'record',
name: '发送记录',
component: wechatRecord,
meta: {}
meta: {
path:'/wechat/record'
}
},
{
path: 'record/add',
name: '新建群发',
component: wechatAddRecord,
meta: {type:'add'}
meta: {
type:'add',
path:'/wechat/record'
}
},
{
path: 'record/edit/:id',
name: '编辑群发',
component: wechatAddRecord,
meta: {type:'edit'}
meta: {
type:'edit',
path:'/wechat/record'
}
},
{
path: 'record/info/:id',
name: '群发详情',
component: wechatAddRecord,
meta: {
type:'info',
path:'/wechat/record'
}
},
{
path: 'record/add/:id',
name: '使用图文群发',
component: wechatAddRecord,
meta: {type:'imgText'}
meta: {
type:'imgText',
path:'/wechat/temp/imgtext'
}
},
{
path: 'editor/:id',
name: '编辑图文',
component: editor,
meta: {type: 'edit'}
meta: {
type: 'edit',
path:'/wechat/temp/imgtext'
}
},
{
path: 'editor',
name: '新建图文',
component: editor,
meta: {type: 'add'}
meta: {
type: 'add',
path:'/wechat/temp/imgtext'
}
},
{
path: 'temp',
......@@ -67,32 +90,41 @@ export default {
path: 'imgtext',
name: '图文',
component: imgTextTemp,
meta: {}
meta: {
path:'/wechat/temp/imgtext'
}
},
{
path: 'img',
name: '图片',
component: imgTemp,
meta: {}
meta: {
path:'/wechat/temp/img'
}
},
{
path: 'audio',
name: '语音',
component: audioTemp,
meta: {}
meta: {
path:'/wechat/temp/audio'
}
},
{
path: 'video',
name: '视频',
component: videoTemp,
meta: {}
meta: {
path:'/wechat/temp/video'
}
},
{
path: 'video/add',
name: '新增视频',
component: videoAddEdit,
meta: {
type:'add'
type:'add',
path:'/wechat/temp/video'
}
},
{
......@@ -100,7 +132,8 @@ export default {
name: '编辑视频',
component: videoAddEdit,
meta: {
type:'edit'
type:'edit',
path:'/wechat/temp/video'
}
},
]
......
......@@ -69,5 +69,8 @@ export const saveUpdatePutonCard = (params) => requests(PREFIX + 'save-update-pu
//卡券营销--卡券记录--投放记录--编辑/投放记录详情
export const getCardPutonDetail = (params) => requests(PREFIX + 'get-card-puton-detail', params);
//商品查询
// 商品查询
export const loadGoodsData = (params) => requests(PREFIX + 'load-goods-data', params);
// 卡券营销--复制卡券
export const copyCardDetailService = (params) => requests(PREFIX + 'copy-card-detail', params);
......@@ -7,7 +7,8 @@ const state = {
leftMenu:[],
storeObj:{},
asideShow:false,
breadcrumb:[]
breadcrumb:[],
layoutTips:''
}
// getters
......@@ -68,7 +69,11 @@ const mutations = {
},
mutations_breadcrumb(state,val) {
state.breadcrumb = val
}
},
mutations_layoutTips(state,val) {
state.layoutTips = val
},
}
export default {
......
......@@ -2,7 +2,10 @@
<section>
<!-- 渠道分析 -->
<div class="dm-form__wrap" v-if="$route.meta.type !== 'shelf'">
<h3 class="dm-title__label">渠道分析</h3>
<h3 class="dm-title__label">
<span class="card-chart__title">渠道分析</span>
<el-date-picker class="fr ml5 mr20" v-model="dateTime2" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="cardChannelAnalysis"></el-date-picker>
</h3>
<el-table tooltipEffect="light" :data="tableList" style="width:100%" v-loading="loading">
<el-table-column v-for="(v,i) in tableHeader" :key="i" :align="v.align" :width="v.width" :min-width="v.minWidth" :prop="v.prop" :label="v.label" :formatter="v.formatter"></el-table-column>
</el-table>
......@@ -36,6 +39,7 @@ export default {
return {
formateDateTimeByType,
dateTime:[Date.now()-30*24*60*60*1000,Date.now()],
dateTime2:[Date.now()-30*24*60*60*1000,Date.now()],
loading:false,
tableList:[],
chartData: {
......@@ -105,9 +109,21 @@ export default {
methods:{
//加载列表
async cardChannelAnalysis(){
let params = {
coupCardId:this.$route.params.id,
beginTime:'',
endTime:'',
}
if (this.dateTime2) {
params.beginTime = formateDateTimeByType(this.dateTime2[0],'yyyy-MM-dd');
params.endTime = formateDateTimeByType(this.dateTime2[1],'yyyy-MM-dd');
} else {
params.beginTime = '';
params.endTime = '';
}
this.loading = true;
try{
let resList = await cardChannelAnalysis({coupCardId:this.$route.params.id});
let resList = await cardChannelAnalysis(params);
if (resList.errorCode === 0 && resList.result) {
this.tableList = resList.result;
} else {
......
......@@ -5,7 +5,7 @@
import dmUploadImg from '@/components/upload/img'
import imgTextDrag from './partials/imgtext-drag'
import {formateDateTimeByType,resetParams} from '@/utils/index.js'
import {cardGetShelfs,getCardDetail,saveUpdateCard} from '@/service/api/cardApi.js'
import {cardGetShelfs,getCardDetail,saveUpdateCard,copyCardDetailService} from '@/service/api/cardApi.js'
import dmGoodsInput from '@/components/goods-input/index.vue'
const initForm = {
cardType:0, // 1.卡券类型: 抵金券: 0; 折扣券: 1; 兑换券: 2
......@@ -26,7 +26,7 @@ const initForm = {
useCodeSuffix:0,
cardEffectiveMode:0,
dateTime:[],
costValue:'', //成本费用
costValue:0, //成本费用
startDay:0,
limitDay:null,
cardExplain:'',
......@@ -58,7 +58,7 @@ export default {
cardName:{required:true,message:'请输入卡券名称',trigger:'blur'},
subName:{required:true,message:'请输入备注名称',trigger:'blur'},
subTitle:{required:true,message:'请输入卡券副标题',trigger:'blur'},
costValue:{required:true,type:'number',message:'请输入成本费用',trigger:'blur'},
costValue:{required:true,type:'number',min:0,message:'请输入成本费用',trigger:'blur'},
cardDenomination:{required:true,type:'number',message:'此项不能为空',trigger:'blur'},
cardExplain:{required:true,message:'适用门店说明不能为空',trigger:'blur'},
useDescript:{required:true,message:'使用说明不能为空',trigger:'blur'},
......@@ -76,8 +76,9 @@ export default {
return Date.now() >= (val.getTime() + 24*60*60*1000)
}
},
editDisabled:this.$route.meta.type === 'edit',
infoDisabled:this.$route.meta.type === 'info'
isEdit:this.$route.meta.type === 'edit',
isInfo:this.$route.meta.type === 'info',
isCopy:this.$route.meta.type === 'copy',
}
},
watch:{
......@@ -140,7 +141,7 @@ export default {
this.startDayOptions = Object.keys(dicMap).map(key => ({label:dicMap[key].dictName=='0'?'当天':'第'+dicMap[key].dictName+'天',value:parseInt(dicMap[key].dictName)}))
if(res.result.card) {
const card = res.result.card;
this.form.coupCardId = card.coupCardId;
this.form.coupCardId = this.isCopy?'':card.coupCardId;
this.form.cardType = card.cardType;
this.form.cardName = card.cardName || '';
this.form.subName = card.subName || '';
......@@ -263,6 +264,10 @@ export default {
return;
}
}
if (this.form.costValue <= 0) {
this.$tips({type:'warning',message:'成本必须大于0'});
return;
}
//验证号段 不能为空 起始号段和结尾号段必须位数一致
if (this.form.useCustomCode) {
......@@ -293,6 +298,11 @@ export default {
}
}
this.$refs[formName].validate((valid) => {
if (valid) {
this.saveUpdateCard();
......@@ -459,7 +469,7 @@ export default {
saveUpdateCard(params).then(res => {
console.log(res)
if (res.errorCode === 0) {
if (this.editDisabled) {
if (this.isEdit) {
this.$confirm('保存成功, 是否返回列表?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
......
......@@ -48,7 +48,8 @@
<el-table-column :show-overflow-tooltip="true" min-width="100" align="left" prop="errorMsg" label="错误原因"></el-table-column>
<el-table-column width="100" align="left" prop="orderRemarks" label="备注内容">
<template slot-scope="scope">
<el-popover placement="top-start" title="备注内容" width="200" trigger="hover" :content="scope.row.orderRemarks">
<el-popover placement="top-start" title="备注内容" width="200" trigger="hover">
<span class="break-word">{{scope.row.orderRemarks}}</span>
<el-button slot="reference" type="text">备注</el-button>
</el-popover>
</template>
......
......@@ -42,6 +42,11 @@ export default {
calculate: true
}
},
watch:{
calculate(val) {
this.count = 0;
}
},
methods:{
checkCalc() {
if (!this.calculate) {
......
......@@ -83,6 +83,9 @@ export default {
case 5:
this.$router.push('/card/info/'+this.item.coupCardId)
break;
case 6:
this.$router.push('/card/copy/'+this.item.coupCardId)
break;
}
},
//编辑库存 前置
......
......@@ -15,6 +15,8 @@ export default Vue.component('render-temp', {
const autingFaildHtml = <span class="danger-color">审核失败</span>;
const autingUpdateFaildHtml = <span class="danger-color">更新失败</span>;
const statushtml = <span>
<a title="复制" onClick={_this.handler.bind(null,6)}><i class="iconfont icon-wxcard-copy"></i></a>
<a title="投放" onClick={_this.handler.bind(null,1)}><i class="iconfont icon-daohang-"></i></a>
<a title="报表" onClick={_this.handler.bind(null,2)}><i class="el-icon-tickets"></i></a>
<a title="编辑" onClick={_this.handler.bind(null,3)}><i class="el-icon-edit"></i></a>
......@@ -23,24 +25,28 @@ export default Vue.component('render-temp', {
const overDateHtml = <span>
<span class="danger">已过期</span>
<a title="复制" onClick={_this.handler.bind(null,6)}><i class="iconfont icon-wxcard-copy"></i></a>
<a title="报表" onClick={_this.handler.bind(null,2)}><i class="el-icon-tickets"></i></a>
<a title="详情" onClick={_this.handler.bind(null,5)}><i class="el-icon-document"></i></a>
<a title="删除" onClick={_this.handler.bind(null,4)}><i class="el-icon-delete"></i></a>
</span>;
const noputonStatushtml = <span>
<a title="复制" onClick={_this.handler.bind(null,6)}><i class="iconfont icon-wxcard-copy"></i></a>
<a title="报表" onClick={_this.handler.bind(null,2)}><i class="el-icon-tickets"></i></a>
<a title="编辑" onClick={_this.handler.bind(null,3)}><i class="el-icon-edit"></i></a>
<a title="删除" onClick={_this.handler.bind(null,4)}><i class="el-icon-delete"></i></a>
</span>;
const statusNostockhtml = <span>
<a title="复制" onClick={_this.handler.bind(null,6)}><i class="iconfont icon-wxcard-copy"></i></a>
<a title="报表" onClick={_this.handler.bind(null,2)}><i class="el-icon-tickets"></i></a>
<a title="编辑" onClick={_this.handler.bind(null,3)}><i class="el-icon-edit"></i></a>
<a title="删除" onClick={_this.handler.bind(null,4)}><i class="el-icon-delete"></i></a>
</span>;
const statusFaildhtml = <span>
<a title="复制" onClick={_this.handler.bind(null,6)}><i class="iconfont icon-wxcard-copy"></i></a>
<a title="编辑" onClick={_this.handler.bind(null,3)}><i class="el-icon-edit"></i></a>
<a title="删除" onClick={_this.handler.bind(null,4)}><i class="el-icon-delete"></i></a>
</span>;
......
......@@ -2,20 +2,28 @@
<section>
<!-- 条件筛选区 -->
<div class="pb22">
<el-date-picker v-model="dateTime" @change="search" class="w250" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
<el-select class="dm-select" v-model="listParams.cardStatus" placeholder="选择卡券状态" @change="search">
<el-option v-for="(item,index) in cardStatusOptions" :key="index" :label="item.label" :value="item.value"></el-option>
</el-select>
<el-input v-model="listParams.search" class="w300" placeholder="请输入卡券名称/卡券代码/会员信息" @change="search"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-button class="fr" type="primary" icon="iconfont icon-icon_yunxiazai fz14" @click="exportReceivedRecordExcel"> 导出订单</el-button>
</div>
<div class="filter--box">
<el-select class="dm-select pl10" v-model="listParams.cardStatus" placeholder="选择卡券状态" @change="search">
<el-option v-for="(item,index) in cardStatusOptions" :key="index" :label="item.label" :value="item.value"></el-option>
</el-select>
<span class="vertical-middle">领取时间:</span><el-date-picker v-model="dateTime" @change="search" class="w250" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
<span class="vertical-middle">核销时间:</span><el-date-picker v-model="dateTime2" @change="search" class="w250" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</div>
<!-- 列表 -->
<el-table tooltipEffect="light" :data="recordList" style="width: 100%" v-loading="recordLoading">
<el-table tooltipEffect="light" :data="recordList" style="width: 100%" v-loading="recordLoading" @sort-change="sortList">
<el-table-column width="135" align="left" prop="receiveTime" label="领取时间" fixed="left">
<template slot-scope="scope">
{{formateDateTimeByType(scope.row.receiveTime,'yyyy-MM-dd-HH-mm')}}
</template>
</el-table-column>
<el-table-column width="135" align="left" prop="writeOffTime" label="核销时间" fixed="left">
<template slot-scope="scope">
{{formateDateTimeByType(scope.row.useTime,'yyyy-MM-dd-HH-mm')}}
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" min-width="140" header-align="left" align="left" :key="Math.random()" prop="clerkId" label="会员信息">
<template slot-scope="scope">
<a :href="'/member/#/wechatmemberDetail?memberId='+scope.row.memberId" target="_blank">
......@@ -42,7 +50,6 @@
</el-table-column>
<el-table-column width="80" align="left" prop="status" label="卡券状态">
<template slot-scope="scope">
<span v-html="filterCardStatus(scope.row)"></span>
</template>
</el-table-column>
......@@ -80,6 +87,7 @@ export default {
defaultAvatar:require('../../assets/img/head_default.png'),
formateDateTimeByType,
dateTime:[Date.now()-30*24*60*60*1000,Date.now()],
dateTime2:['',''],
cardStatusOptions:[ {value:0,label:'全部'},{value:4,label:'待核销',},{ value:5,label:'已核销'},{ value:6,label:'已过期'},{ value:7,label:'已销毁'}],
recordLoading:false,
recordList:[],
......@@ -90,7 +98,10 @@ export default {
recordType:1,
search:'',
currentPage:1,
pageSize:20
pageSize:20,
writeOffBeginTime:'',
writeOffEndTime:'',
sortBy:'',
},
total:0,
cardOrderShow:false,
......@@ -106,6 +117,10 @@ export default {
},
methods: {
// 列表方法
sortList(val) {
this.listParams.sortBy = (obj.order === 'descending') ? (obj.prop +' desc') : obj.prop;
this.cardPageList();
},
search() {
this.listParams.currentPage = 1;
this.cardRecordPage();
......@@ -128,6 +143,13 @@ export default {
this.listParams.beginTime = '';
this.listParams.endTime = '';
}
if (this.dateTime2) {
this.listParams.writeOffBeginTime = formateDateTimeByType(this.dateTime2[0],'yyyy-MM-dd');
this.listParams.writeOffEndTime = formateDateTimeByType(this.dateTime2[1],'yyyy-MM-dd');
} else {
this.listParams.writeOffBeginTime = '';
this.listParams.writeOffEndTime = '';
}
let res = await cardRecordPage(this.listParams);
this.recordList = res.result.result;
this.total = res.result.totalCount;
......@@ -173,11 +195,11 @@ export default {
let isOverdue = Date.now() >= (row.limitTime + 24*60*60*1000);
_content = `<div class="${isOverdue?'dm-status--info':'dm-status--primary'}">${isOverdue?"已过期":"待核销"}</div>`;
}else if(row.status == 5){
_content = `<div class="dm-status--warning">已核销 ${formateDateTimeByType(row.useTime,'yyyy-MM-dd-HH-mm-ss')}</div>`;
_content = `<div class="dm-status--warning">已核销</div>`;
}else if(row.status == 6){
_content = `<div class="dm-status--info">已过期</div>`;
}else if(row.status == 7){
_content = `<div class="dm-status--error">已销毁${formateDateTimeByType(row.useTime,'yyyy-MM-dd-HH-mm-ss')}</div>`;
_content = `<div class="dm-status--error">已销毁</div>`;
}
return _content;
}
......
......@@ -362,26 +362,21 @@ export default {
if ((this.form.marketingType === 'card' || this.form.marketingType === 'message') && !this.form.cardId ) {
console.log(this.form.marketingType === 'card')
this.$tips({type:"warning",message:"请勾选选项"})
this.$tips({type:"warning",message:"请勾选卡券营销选项"})
return;
}
if ((this.form.marketingType==="teletext" || this.form.marketingType==="image") && !this.form.mediaId ) {
this.$tips({type:"warning",message:"请勾选选项"})
this.$tips({type:"warning",message:"请勾选图文营销或图片营销选项"})
return;
}
if ((this.form.marketingType==="teletext") && !this.form.imageTextId ) {
this.$tips({type:"warning",message:"请勾选选项"})
this.$tips({type:"warning",message:"请勾选图文营销选项"})
return;
}
if ((this.form.marketingType=="text") && !this.form.textContent ) {
this.$tips({type:"warning",message:"请勾选选项"})
return;
}
if ((this.form.marketingType=="text") && !this.form.textContent ) {
this.$tips({type:"warning",message:"请勾选选项"})
this.$tips({type:"warning",message:"请勾选本文营销选项"})
return;
}
......@@ -411,18 +406,17 @@ export default {
effectType: this.form.effectType,//是 int 时效: 实时: 0; 每天: 1
effectTime:this.form.effectTime, //否 int effectType = 1每天时必填, 时效为时间为0-23
effectAction:this.form.effectAction, // 否 string effectType = 0实时时必填, 关注触发: ‘subscribe’; 认证触发: ‘authentication’
brithday_day:this.form.effectType?this.form.brithday_day:0,// 否 string 常用场景 如果选择 [会员生日前] 天数 > 0
attention_day:this.form.effectType?this.form.attention_day:0,//否 string 常用场景 如果选择 [关注时长超过] 天数 > 0
lastCost_day:this.form.effectType?this.form.lastCost_day:0, //否 string 常用场景 如果选择 [会员生日前] 天数 > 0
marketingType:this.form.marketingType, //是 String 营销方式: 卡券营销: ‘card’; 短信营销 : ‘message’; 图文营销: ‘teletext’; 文本营销: ‘text’; 话务: ‘teltask’; 微信图片: ‘image’
cardId:(this.form.marketingType === 'card' || this.form.marketingType === 'message')?this.form.cardId:'',
mediaId:(this.form.marketingType==="teletext" || this.form.marketingType==="image")?this.form.mediaId:'',
imageTextId:this.form.marketingType==="teletext"?this.form.imageTextId:'',
textContent:this.form.marketingType=="text"? this.form.textContent.replace(/<p>/g,'').replace(/<\/p>/g,'').replace(/<br\/>/g,''):'',
memberSearchDTO:this.form.memberSearchDTO,
searchJson:this.getSaveData
}
if (this.form.effectType) {
params[this.radio] = this.form[this.radio] || 0;
}
if (!this.$route.params.id) {
params.sceneSettingId = this.form.sceneSettingId;// 否 String 营销场景
......
......@@ -56,6 +56,8 @@ import {evaluateOverviewEchart} from '@/service/api/evaluationApi.js';
import detail from './detail';
import scoredetail from './scoredetail';
import demoData from './demo.js';
export default {
components:{
storeGroup,
......@@ -93,6 +95,7 @@ export default {
let res = await evaluateOverviewEchart({currentStoreGroupId:id,chartType:type});
if (type === 1) {
const result = res.result;
// const result = demoData.result;
let list = [];
result.sundayList.map((v,i) => {
list.push({day:v,name:'订单总数',temperature:result.yDataorders[i]})
......@@ -109,6 +112,10 @@ export default {
mountNode.removeChild(v)
})
this.list = list;
list = list.sort((a,b) => {
return a.temperature - b.temperature;
})
console.log(list)
this.$nextTick(_ => {
this.initCharts(list,'mountNode');
})
......@@ -314,10 +321,8 @@ export default {
alias: "日期"
},
temperature:{
alias: "评价数",
range: [0,1],
tickCount:10
}
});
chart.tooltip({
crosshairs: {
......
export default {"errorCode":0,"message":null,"detailError":null,"result":{"yDataorders":["0","0","0","0","0","0","0","0","153","522","443","370","380","352","383","307","298","270","235","199","231","214","279","358","495","305","100"],"yDatagood":["0","0","0","0","0","0","0","0","9","35","21","13","21","18","19","20","10","13","10","10","9","9","9","9","14","15","1"],"yDataevaluate":["0","0","0","0","0","0","0","0","9","35","22","13","21","18","19","20","10","13","10","10","9","9","9","9","14","15","1"],"sundayList":["2018-04-15","2018-04-22","2018-04-29","2018-05-06","2018-05-13","2018-05-20","2018-05-27","2018-06-03","2018-06-10","2018-06-17","2018-06-24","2018-07-01","2018-07-08","2018-07-15","2018-07-22","2018-07-29","2018-08-05","2018-08-12","2018-08-19","2018-08-26","2018-09-02","2018-09-09","2018-09-16","2018-09-23","2018-09-30","2018-10-07","2018-10-14"],"xDataevaluate":["201815","201816","201817","201818","201819","201820","201821","201822","201823","201824","201825","201826","201827","201828","201829","201830","201831","201832","201833","201834","201835","201836","201837","201838","201839","201840","201841"]}}
......@@ -76,7 +76,7 @@
</el-table-column>
<el-table-column prop="prizeType" label="奖品类型" align="left" :min-width="150">
<template slot-scope="scope">
<el-select size="small" v-model="scope.row.prizeType" class="width80" placeholder="选择奖品类型" :disabled="infoFlag">
<el-select size="small" v-model="scope.row.prizeType" class="width80" placeholder="选择奖品类型" :disabled="infoFlag" @change="resetCount(scope.$index)">
<el-option v-for="item in prizeReferTypeOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</template>
......@@ -209,6 +209,10 @@ export default {
}
},
methods: {
// 当奖品为类型3 谢谢参与时 数量置为0
resetCount(index) {
this.tableList[index].prizeCount = 0;
},
addRule(i) {
this.form.ruleList.push({"ruleId": "","prizeId": "","gameId": null,"ruleSort": 0,"ruleStatus": 0,"prizeSort": null})
},
......
......@@ -64,7 +64,7 @@
</el-table-column>
<el-table-column prop="prizeType" label="奖品类型" align="left" :min-width="150">
<template slot-scope="scope">
<el-select size="small" v-model="scope.row.prizeType" class="width50" placeholder="选择奖品类型" :disabled="infoFlag">
<el-select size="small" v-model="scope.row.prizeType" class="width50" placeholder="选择奖品类型" :disabled="infoFlag" @change="resetCount(scope.$index)">
<el-option v-for="item in prizeReferTypeOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</template>
......@@ -198,6 +198,10 @@ export default {
}
},
methods: {
// 当奖品为类型3 谢谢参与时 数量置为0
resetCount(index) {
this.tableList[index].prizeCount = 0;
},
addPrize() {
this.tableList.push({"prizeId": "", "prizeType": '',"prizeCount": null,"prizeIntegral": null,"prizeCardId": "","gameId": "","prizeStatus": 0,"prizeSort":null,"prizeRate": 0,"cardName": "","cardType": null,"cardDenomination": null,"cardImageUrl": "","cardStock": null,"wechatCardId": null,"winRecordCode": 0,"receiveCount": 0})
},
......
......@@ -3,25 +3,28 @@
<section class="dm-form__wrap">
<div class="mb20">
<span class="dm-input_label">营销场景:</span>
<span v-if="editFlag">{{info.sceneSettingName}}</span>
<el-select v-else class="w250" size="medium" v-model="info.sceneSettingId" :disabled="editFlag" placeholder="选择营销场景">
<span v-if="isEdit">{{info.sceneSettingName}}</span>
<el-select v-else class="w250" size="medium" v-model="info.sceneSettingId" :disabled="isEdit || isInfo" placeholder="选择营销场景">
<el-option v-for="item in sceneSettingIdOptions" :key="item.sceneSettingId" :label="item.sceneName" :value="item.sceneSettingId"></el-option>
</el-select>
</div>
<div>
<span class="dm-input_label">发送时间:</span>
<el-select class="w250" v-model="info.sendType">
<el-select class="w250" v-model="info.sendType" :disabled="isInfo">
<el-option v-for="(v,i) in sendTypeOptions" :key="i" :value="v.value" :label="v.label"></el-option>
</el-select>
<el-date-picker class="w250" v-if="info.sendType" v-model="info.sendTime" type="datetime" placeholder="选择日期时间" align="right" :picker-options="pickerOptions"></el-date-picker>
<el-date-picker class="w250" :disabled="isInfo" v-if="info.sendType" v-model="info.sendTime" type="datetime" placeholder="选择日期时间" align="right" :picker-options="pickerOptions"></el-date-picker>
</div>
</section>
<section class="dm-form__wrap">
<h3 class="dm-title__label">会员设置</h3>
<h3 class="dm-title__label">会员设置
<span class="fz13 gray">默认筛选当前关注公众号会员</span>
</h3>
<div class="pt10 pb20">
<span class="dm-input_label">选择会员:</span>
<el-radio v-model="info.memberType" :label="0">会员筛选</el-radio>
<el-radio v-model="info.memberType" :label="1">指定会员</el-radio>
<el-radio v-model="info.memberType" :disabled="isInfo" :label="0">会员筛选</el-radio>
<el-radio v-model="info.memberType" :disabled="isInfo" :label="1">指定会员</el-radio>
</div>
<div v-show="!info.memberType">
<vue-gic-people :projectName="projectName" :useId="useId" :hasSearchData="hasSearchData" :sceneValue="sceneValue" ref="peopleFilter" @findFilter="findFilter" @getBackData="getBackData" @editHide= "editHide" @editShow="editShow" @hideBtn="hideBtn"/>
......@@ -36,9 +39,9 @@
<h3 class="dm-title__label">群发内容设置</h3>
<span class="dm-input_label">群发类型:</span>
<el-radio-group v-model="info.contentType">
<el-radio :label="0">图文</el-radio>
<el-radio :label="1">文本</el-radio>
<el-radio :label="2">图片</el-radio>
<el-radio :label="0" :disabled="isInfo">图文</el-radio>
<el-radio :label="1" :disabled="isInfo">文本</el-radio>
<el-radio :label="2" :disabled="isInfo">图片</el-radio>
</el-radio-group>
<div class="pt20">
<div v-show="info.contentType === 0" style="padding:15px; border:1px solid #DCDFE6;border-radius:2px;">
......@@ -72,7 +75,7 @@
</el-table>
</section>
<div class="btn-wrap_fixed" :class="{'on':asideShow}">
<el-button type="primary" @click="submit">提 交</el-button>
<el-button type="primary" @click="submit" v-if="!isInfo">提 交</el-button>
<el-button @click="$router.go(-1)">返回</el-button>
</div>
</div>
......@@ -99,6 +102,7 @@ export default {
return this.$store.state.marketing.asideShow
}
},
data () {
return {
loading:false,
......@@ -139,24 +143,31 @@ export default {
mediaId:'',
},
memberList:[],
editFlag:this.$route.meta.type === 'edit',
addFlag:this.$route.meta.type === 'add',
isEdit:this.$route.meta.type === 'edit',
isAdd:this.$route.meta.type === 'add',
isInfo:this.$route.meta.type === 'info',
imgTextFlag:this.$route.meta.type === 'imgText',
}
},
created(){
this.$store.commit('mutations_layoutTips',`<i class="el-icon-info vertical-middle"></i>
<b class="fz13 gray vertical-middle">微信群发接口限制:高级群发接口的每日调用限制为100次</b>
`);
this.$store.commit('mutations_breadcrumb',[{name:'营销管理'},{name:'微信营销',path:'/wechat'},{name:'微信群发',path:''}]);
if (this.imgTextFlag) {
this.wechatImageTextEdit();
this.sceneSettingList();
}
if (this.editFlag) {
if (this.isEdit) {
this.getWechatMarketingDetail();
}
if (this.addFlag) {
if (this.isAdd) {
this.sceneSettingList();
}
},
beforeDestroy() {
this.$store.commit('mutations_layoutTips','');
},
methods:{
// 微信文本
getWxText(data){
......@@ -259,13 +270,13 @@ export default {
return;
}
if (this.info.contentType === 0 && !this.info.imageTextId) {
this.$tips({type:'error',message:'新先选择一个图文'});
this.$tips({type:'warning',message:'新先选择一个图文'});
return;
} else if (this.info.contentType === 1 && !this.info.content) {
this.$tips({type:'error',message:'请填写文本'});
this.$tips({type:'warning',message:'请填写文本'});
return;
} else if (this.info.contentType === 2 && !this.info.mediaId) {
this.$tips({type:'error',message:'请选择图片'});
this.$tips({type:'warning',message:'请选择图片'});
return;
}
if (this.info.memberType) {
......@@ -297,7 +308,7 @@ export default {
}).then(() => {
this.sendRecordSaveService();
}).catch(() => {
this.$tips({type: 'info',message: '已取消发送'});
// this.$tips({type: 'info',message: '已取消发送'});
});
}
} else {
......@@ -355,10 +366,11 @@ export default {
}
console.log(res);
}).catch(err => {
this.$tips({type:'error',message:'操作失败'});
this.loading = false;
})
}).catch(() => {
this.$tips({type: 'info',message: '已取消提交'});
// this.$tips({type: 'info',message: '已取消提交'});
});
}
}
......@@ -372,4 +384,30 @@ export default {
line-height: 30px;
}
}
.msg-tips{
height: 84px;
border: 1px solid #B3D8FF;
padding: 0 20px;
background: #ECF5FF;
&__left{
i{
font-size: 36px;
color: #1890ff;
line-height: 86px;
}
}
&__center {
position: relative;
top: 14px;
left: 10px;
line-height: 2;
h4 {
font-size: 16px;
color: #1890ff;
}
p {
color: #606266;
}
}
}
</style>
......@@ -2,7 +2,7 @@
* @Author: zhangmeng
* @Date: 2018-08-14 15:45:36
* @Last Modified by: zhangmeng
* @Last Modified time: 2018-09-28 18:48:46
* @Last Modified time: 2018-10-16 16:13:23
*/
<template>
<section class="dm-wrap">
......@@ -23,7 +23,7 @@
</div>
<el-table tooltipEffect="light" :data="recordList" style="width: 100%" v-loading="loading">
<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"></el-table-column>
<el-table-column label="状态" align="left" prop="timesStatus" width="140px">
<el-table-column label="状态" align="left" prop="timesStatus" width="160px">
<template slot-scope="scope" >
<span v-if="scope.row.sendStatus == 1" class="dm-status--success">已发送</span>
<span v-if="scope.row.sendStatus == 2" class="dm-status--info">已失效</span>
......@@ -33,7 +33,7 @@
</div>
</template>
</el-table-column>
<el-table-column label="操作" align="left" width="140px" fixed="right">
<el-table-column label="操作" align="left" width="160px" fixed="right">
<template slot-scope="scope" >
<el-button type="text" v-if="scope.row.contentType === 0 && scope.row.sendStatus === 1 && scope.row.couponType === 1" @click="queryData(scope.row)">数据</el-button>
<dm-confirm @confirm="delData(scope.row)" tips="是否删除该发送记录?">
......@@ -43,6 +43,8 @@
<el-button type="text">禁用</el-button>
</dm-confirm>
<el-button type="text" v-if="scope.row.sendStatus===0" @click="$router.push('/wechat/record/edit/'+scope.row.wechatTeletextId)">编辑</el-button>
<el-button type="text" v-if="scope.row.sendStatus!==0" @click="$router.push('/wechat/record/info/'+scope.row.wechatTeletextId)">详情</el-button>
</template>
</el-table-column>
</el-table>
......
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