Commit 747c2737 by zhangmeng

测试

parent a24b9738
<!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.1f7757afffa773fd1b31ffc9bca6ade7.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.e0b7daa8af8fb2f5148e.js></script><script type=text/javascript src=/marketing/static/js/app.8998d8cbdaff4e546a98.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.dba9ab5aa93e4029232b9159cd5ef1fe.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.e0b7daa8af8fb2f5148e.js></script><script type=text/javascript src=/marketing/static/js/app.53311cbfae373a3795a8.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.
......@@ -42239,7 +42239,7 @@
font-size: 14px;
border-radius: 4px; }
.el-button + .el-button {
margin-left: 4px; }
margin-left: 8px; }
.el-button.is-round {
padding: 8px 15px; }
.el-button:hover, .el-button:focus {
......@@ -145,7 +145,7 @@
color:#303133;
font-size:20px;
padding:24px 0;
font-weight:600;
font-weight:500;
// span{
// color:#303133;
// font-size:20px;
......
......@@ -4,6 +4,7 @@ import cardList from '../../views/card/list'
import cardRecord from '../../views/card/record'
import cardRecordSend from '../../views/card/record-send'
import cardRecordGet from '../../views/card/record-get'
import cardRecordCache from '../../views/card/record-cache'
import cardGroupSend from '../../views/card/group-send'
import cardAnalysis from '../../views/card/analysis'
import cardInfo from '../../views/card/card-info'
......@@ -47,6 +48,12 @@ export default {
name: '投放记录',
component: cardRecordSend,
meta: {},
},
{
path: 'cache',
name: '临时领取记录',
component: cardRecordCache,
meta: {},
}
]
},
......
......@@ -74,3 +74,5 @@ export const loadGoodsData = (params) => requests(PREFIX + 'load-goods-data', pa
// 卡券营销--复制卡券
export const copyCardDetailService = (params) => requests(PREFIX + 'copy-card-detail', params);
......@@ -2,11 +2,11 @@
* 逻辑太多
*/
import dmUploadImg from '../../components/upload/img'
import dmUploadImg from '@/components/upload/img'
import imgTextDrag from './partials/imgtext-drag'
import {formateDateTimeByType} from '../../utils/index.js'
import {cardGetShelfs,getCardDetail,saveUpdateCard,copyCardDetailService} from '../../service/api/cardApi.js'
import dmGoodsInput from '../../components/goods-input/index.vue'
import {formateDateTimeByType,resetParams} from '@/utils/index.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
cardName:'', // 2.卡券名称
......@@ -40,10 +40,10 @@ const initForm = {
verificationType:0,
cardDenomination:0,
proNoList:[],
storeMode:1
storeMode:0
}
const sale_limit = { fee:0,goods:'',flag:false,type:0}; //最低消费
const goods = {ok:'',no:'',flag:false};
const sale_limit = { fee:0,goods:'',flag:false,type:0 } //最低消费
const goods = {ok:'',no:'',flag:false}
export default {
data() {
return {
......@@ -115,26 +115,12 @@ export default {
},
methods:{
//切换卡券类型 表单置为默认值
reset(e) {
// debugger
console.log('5'+e)
// try {
// this.$refs.form.resetFields();
// } catch (e) {
// console.log(e)
// }
this.form = JSON.parse(JSON.stringify(initForm));
this.sale_limit = JSON.parse(JSON.stringify(sale_limit));
this.goods = JSON.parse(JSON.stringify(goods));
this.form.cardType = e;
this.$nextTick(_ => {
// if (this.form.cardType === 2) {
this.$refs.storeCard.initLeftList();
// }
})
// console.log(this.form.storeMode,val);
reset(val) {
this.$refs.form.resetFields()
this.form = JSON.parse(JSON.stringify(initForm))
this.sale_limit = JSON.parse(JSON.stringify(sale_limit))
this.goods = JSON.parse(JSON.stringify(goods))
this.form.cardType = val
},
//卡券营销--卡券库--新建/修改卡券--放入卡券展架--所有展架集合
cardGetShelfs() {
......@@ -243,6 +229,21 @@ export default {
this.$refs.storeCard.init();
})
// this.sendChildData = {
// storeType:card.storeMode || 0,
// storeGroupIds:card.groupIds?(card.groupIds.length?card.groupIds.join(','):''):'',
// };
// let list = [];
// if (card.storeIds && card.storeIds.length) {
// card.storeIds.map(v => {
// list.push(JSON.parse(v));
// })
// }
// this.sendChildData.storeIds = list;
this.form.image = {
imgUrl:card.qcloudImageUrl || '',
code:card.imageFieldCode || ''
......@@ -472,7 +473,7 @@ export default {
// 这里判断部分门店是否为空
if (card.storeMode) {
let data = await this.$refs.storeCard.getRightList();
console.log('1'+data.length)
console.log(data.length)
if (!data.length) {
this.$tips({type:'warning',message:'部分门店不能为空'});
return;
......@@ -483,7 +484,7 @@ export default {
params.card = JSON.stringify(card);
saveUpdateCard(params).then(res => {
console.log('2'+res)
console.log(res)
if (res.errorCode === 0) {
if (this.isEdit) {
this.$confirm('保存成功, 是否返回列表?', '提示', {
......@@ -503,7 +504,7 @@ export default {
this.$tips({type:'error',message:res.message || '保存卡券失败'});
}
}).catch(err => {
console.log('3'+err)
console.log(err)
this.$tips({type:'error',message:'保存卡券失败'});
})
},
......
<template>
<div class="dm-card__item__wrap">
<div class="dm-card__item" :style="{background:item.cardColor}">
<img class="dm-card__item__avatar" :src="item.brandLogo || loadErrorImg" alt="">
<div class="inline-block">
<p class="dm-card__item__title">{{item.cardName}}</p>
<p class="dm-card__item__desc" v-if="item.cardEffectiveMode !== 0">领取后第{{item.startDay+1}}-{{item.limitDay+item.startDay}}</p>
<p class="dm-card__item__desc" v-if="item.cardEffectiveMode === 0">{{formateDateTimeByType(item.beginDate,'yyyy-MM-dd')}}{{formateDateTimeByType(item.endDate,'yyyy-MM-dd')}}</p>
</div>
</div>
<p class="dm-card__item--bottom">
<span>适用{{item.storeMode === 0 ? "所有门店" : (item.storeMode === 1 ? "部分分组" : "部分门店")}}</span>
</p>
</div>
</template>
<script>
import {formateDateTimeByType} from '@/utils'
export default {
name:'item-card',
data(){
return {
formateDateTimeByType,
loadErrorImg:require('../../../assets/img/loaderror.png')
}
},
props:{
item:{
type: Object,
default() {
return {}
}
}
}
}
</script>
<style lang="scss" scoped>
/* card */
.dm-card__item__wrap{
display: inline-block;
position: relative;
width: 298px;
height: 142px;
margin:0 10px;
vertical-align: middle;
border: 1px solid rgba(228,231,237,1);
border-radius: 4px;
}
.dm-card__item {
padding:0 15px;
background: rgba(72,170,3,0.85);
height:106px;
line-height: 106px;
}
.dm-card__item__avatar {
width: 60px;
height: 60px;
border-radius: 50%;
vertical-align: middle;
}
.dm-card__item__title {
vertical-align: middle;
margin-left: 8px;
max-width: 180px;
font-size: 16px;
font-weight: 500;
line-height: 30px;
color: #fff;
overflow: hidden;
text-overflow: ellipsis;
}
.dm-card__item__desc{
vertical-align: middle;
margin-left: 8px;
max-width: 200px;
font-size: 12px;
line-height: 20px;
color: #fff;
overflow: hidden;
text-overflow: ellipsis;
}
.dm-card__item--bottom {
vertical-align: middle;
line-height: 106px;
color: #909399;
font-size: 12px;
line-height: 36px;
padding-left: 15px;
}
</style>
......@@ -9,60 +9,32 @@ export default Vue.component('render-temp', {
}
},
render(h) {
const _this = this;
const autingHtml = <span class="green">审核中</span>;
const customCodesyncHtml = <span class="danger-color">正在上传卡券Code</span>;
const autingFaildHtml = <span class="danger-color">审核失败</span>;
const autingUpdateFaildHtml = <span class="danger-color">更新失败</span>;
const statushtml = <span>
const bind1 = <a title="投放" onClick={this.handler.bind(null,1)}><i class="iconfont icon-daohang-"></i></a>;
const bind2 = <a title="报表" onClick={this.handler.bind(null,2)}><i class="el-icon-tickets"></i></a>;
const bind3 = <a title="编辑" onClick={this.handler.bind(null,3)}><i class="el-icon-edit"></i></a>;
const bind4 = <a title="删除" onClick={this.handler.bind(null,4)}><i class="el-icon-delete"></i></a>;
const bind5 = <a title="详情" onClick={this.handler.bind(null,5)}><i class="el-icon-document"></i></a>;
const bind6 = <a title="复制" onClick={this.handler.bind(null,6)}><i class="iconfont icon-wxcard-copy"></i></a>;
<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>
<a title="删除" onClick={_this.handler.bind(null,4)}><i class="el-icon-delete"></i></a>
</span>;
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>;
const statushtml = <span>{bind6}{bind1}{bind2}{bind3}{bind4}</span>;
const overDateHtml = <span><span class="danger">已过期</span>{bind6}{bind2}{bind5}{bind4}</span>;
const noputonStatushtml = <span>{bind6}{bind2}{bind3}{bind4}</span>;
const statusNostockhtml = noputonStatushtml;
const statusFaildhtml = <span>{bind6}{bind3}{bind4}</span>;
const _html = (this.item.cardEffectiveMode == 0 && (this.item.endDate < Date.now())) ? overDateHtml : statushtml;
if (this.item.auditingStatus === 0) {
return (<div class="fr">{autingHtml}</div>)
return (<div class="fr"><span class="green">审核中</span></div>)
}else if (this.item.auditingStatus === -1) {
return (<div class="fr">{autingFaildHtml}{statusFaildhtml}</div>)
return (<div class="fr"><span class="danger-color">{this.item.autingFaildMsg || '审核失败'}</span>{statusFaildhtml}</div>)
}else if (this.item.auditingStatus === -2)
return (<div class="fr">{autingUpdateFaildHtml}{_html}</div>)
return (<div class="fr"><span class="danger-color">{this.item.autingFaildMsg || '更新失败'}</span>{_html}</div>)
else if (this.item.useCustomCode == 1 && this.item.customCodeSync == 1)
return (<div class="fr">{customCodesyncHtml}</div>)
return (<div class="fr"><span class="danger-color">正在上传卡券Code</span></div>)
else if (this.item.stock === 0)
return (<div class="fr">{statusNostockhtml}</div>)
else if (this.item.cardLimit && this.item.cardLimit == 1)
return (<div class="fr">{_html}</div>)
else return (<div class="fr">{noputonStatushtml}</div>)
}
})
});
<template>
<el-dialog
title="提示"
:visible.sync="show"
width="30%"
:before-close="close">
<el-select v-model="value" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.label"
:label="item.label"
:value="item.label">
</el-option>
</el-select>
<span slot="footer" class="dialog-footer">
<el-button @click="close">取 消</el-button>
<el-button type="primary" @click="submit">确 定</el-button>
</span>
</el-dialog>
</template>
<script>
export default {
props:{
options:Array,
show:{
type:Boolean,
default:false
}
},
data() {
return {
value:""
}
},
methods:{
close() {
this.$emit('update:show',false)
},
submit() {
if (this.value) {
this.$emit('get-data',this.value);
this.close();
} else {
this.$tips({type:'warning',message:'未选择变量'});
}
}
}
}
</script>
......@@ -10,7 +10,7 @@
<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" :clearable="false" @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>
<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" @sort-change="sortList">
......@@ -19,7 +19,7 @@
{{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" sortable="custom">
<el-table-column width="135" align="left" prop="writeOffTime" label="关注时间" fixed="left" sortable="custom">
<template slot-scope="scope">
{{scope.row.useTime?formateDateTimeByType(scope.row.useTime,'yyyy-MM-dd-HH-mm'):'--'}}
</template>
......@@ -61,7 +61,7 @@
</el-table-column>
<el-table-column width="100" align="left" prop="receiveName" label="核销来源">
<template slot-scope="scope">
{{scope.row.status === 5 ? (scope.row.checkSource?'手动核销':'订单核销'):'--'}}
{{scope.row.status === 5 ? (scope.row.checkSource === 0 ? '订单核销' : '手动核销') : '--'}}
</template>
</el-table-column>
<el-table-column label="操作" align="left" width="120px" fixed="right">
......@@ -88,7 +88,7 @@ export default {
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:'已销毁'}],
cardStatusOptions:[ {value:'',label:'全部卡券状态'},{value:4,label:'待核销',},{ value:5,label:'已核销'},{ value:6,label:'已过期'},{ value:7,label:'已销毁'}],
recordLoading:false,
recordList:[],
listParams:{
......
......@@ -33,7 +33,7 @@
</div>
</label>
</div>
<el-pagination v-show="imgList.length" class="dm-pagination imglib-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="listParams.pageSize" layout="prev, pager, next" :total="total"></el-pagination>
<el-pagination v-show="imgList.length" class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="listParams.pageSize" layout="prev, pager, next" :total="total"></el-pagination>
</article>
</div>
<span slot="footer" class="dialog-footer">
......@@ -296,14 +296,6 @@ export default {
display: inline-block;
vertical-align: middle;
}
.dm-upload{
display: inline-block;
position: relative;
}
.imglib-pagination{
padding-right:20px;
}
.dm-img-item{
position: relative;
width: 168px;
......@@ -332,14 +324,10 @@ export default {
justify-content: left;
align-items: center;
padding-left: 10px;
/deep/ .el-checkbox__label{
p {
text-overflow: ellipsis;
overflow: hidden;
max-width: 130px;
white-space: nowrap;
word-wrap: normal;
vertical-align: middle;
padding-left: 10px;
}
}
&_bottom{
......
......@@ -228,7 +228,7 @@ export default {
}
})
console.log(res);
this.hasReturnCard();
}
});
},
......@@ -338,6 +338,21 @@ export default {
hasMessageInList() {
// console.log(this.list.some(v => (v.comName === 'item-message' && v.item.type === 1)))
return this.list.some(v => (v.comName === 'item-message' && v.item.type === 1));
},
//判断营销列表里是否有卡券 提供给父级使用
hasReturnCard() {
let item = {};
try {
this.list.forEach(v => {
if(v.comName === 'item-card') {
item = v;
throw new Error();
}
});
} catch (e) {
console.log(e)
}
this.$emit('has-card',item);
}
}
}
......
<template>
<div class="dm-card__item__wrap">
<div class="dm-card__item" :style="{background:item.cardColor}">
<img class="dm-card__item__avatar" :src="item.brandLogo || loadErrorImg" alt="">
<div class="inline-block">
<p class="dm-card__item__title">{{item.cardName}}</p>
<p class="dm-card__item__desc" v-if="item.cardEffectiveMode !== 0">领取后第{{item.startDay+1}}-{{item.limitDay+item.startDay}}</p>
<p class="dm-card__item__desc" v-if="item.cardEffectiveMode === 0">{{formateDateTimeByType(item.beginDate,'yyyy-MM-dd')}}{{formateDateTimeByType(item.endDate,'yyyy-MM-dd')}}</p>
</div>
</div>
<p class="dm-card__item--bottom">
<span>适用{{item.storeMode === 0 ? "所有门店" : (item.storeMode === 1 ? "部分分组" : "部分门店")}}</span>
</p>
</div>
</template>
<script>
import {formateDateTimeByType} from '@/utils'
export default {
name:'item-card',
data(){
return {
formateDateTimeByType,
loadErrorImg:require('../../../assets/img/loaderror.png')
}
},
props:{
item:{
type: Object,
default() {
return {}
}
}
}
}
</script>
<style lang="scss" scoped>
/* card */
.dm-card__item__wrap{
display: inline-block;
position: relative;
width: 298px;
height: 142px;
margin:0 10px;
vertical-align: middle;
border: 1px solid rgba(228,231,237,1);
border-radius: 4px;
}
.dm-card__item {
padding:0 15px;
background: rgba(72,170,3,0.85);
height:106px;
line-height: 106px;
}
.dm-card__item__avatar {
width: 60px;
height: 60px;
border-radius: 50%;
vertical-align: middle;
}
.dm-card__item__title {
vertical-align: middle;
margin-left: 8px;
max-width: 180px;
font-size: 16px;
font-weight: 500;
line-height: 30px;
color: #fff;
overflow: hidden;
text-overflow: ellipsis;
}
.dm-card__item__desc{
vertical-align: middle;
margin-left: 8px;
max-width: 200px;
font-size: 12px;
line-height: 20px;
color: #fff;
overflow: hidden;
text-overflow: ellipsis;
}
.dm-card__item--bottom {
vertical-align: middle;
line-height: 106px;
color: #909399;
font-size: 12px;
line-height: 36px;
padding-left: 15px;
}
</style>
<template>
<el-dialog
title="提示"
:visible.sync="show"
width="30%"
:before-close="close">
<el-select v-model="value" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.label"
:label="item.label"
:value="item.label">
</el-option>
</el-select>
<span slot="footer" class="dialog-footer">
<el-button @click="close">取 消</el-button>
<el-button type="primary" @click="submit">确 定</el-button>
</span>
</el-dialog>
</template>
<script>
export default {
props:{
options:Array,
show:{
type:Boolean,
default:false
}
},
data() {
return {
value:""
}
},
methods:{
close() {
this.$emit('update:show',false)
},
submit() {
if (this.value) {
this.$emit('get-data',this.value);
this.close();
} else {
this.$tips({type:'warning',message:'未选择变量'});
}
}
}
}
</script>
......@@ -13,7 +13,7 @@
</el-col>
<el-col :span="8">
<span class="primary-font-color">发送条数:</span>
<span class="regular-font-color">{{messageInfo.sendSuccess}}</span>
<span class="regular-font-color">{{messageInfo.countNum}}</span>
</el-col>
<el-col :span="8">
<span class="primary-font-color">模板名称:</span>
......
......@@ -449,7 +449,6 @@ export default {
}
}
}
}
</script>
......
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