Commit e6e01073 by zhangmeng

fix:卡券状态的问题

parent abaf0536
......@@ -22,8 +22,6 @@ export default Vue.component('render-temp', {
const statusNostockhtml = noputonStatushtml;
const statusFaildhtml = <span>{bind6}{bind3}{bind4}</span>;
const _html = (this.item.cardEffectiveMode == 0 && (this.item.endDate < Date.now())) ? overDateHtml : statushtml;
// this.item.autingFaildMsg = '属性用于设置何时触发 Popover,支持四种触发方式:hover,click';
let failMsg = '';
if (this.item.autingFaildMsg) {
failMsg = ':' + this.item.autingFaildMsg;
......@@ -38,6 +36,11 @@ export default Vue.component('render-temp', {
</el-popover>);
}
};
if (this.item.cardEffectiveMode == 0 && (this.item.endDate < Date.now())) {
return (<div class="fr">{overDateHtml}</div>)
}
if (this.item.auditingStatus === 0) {
return (<div class="fr"><span class="green">审核中</span></div>)
} else if (this.item.auditingStatus === -1) {
......
<template>
<section class="dm-wrap game-ggk">
<section class="dm-wrap">
<div class="pb22 clearfix">
<el-select class="dm-select" v-model="listParams.gameStatus" placeholder="选择游戏状态" @change="loadLotteryList">
<el-select class="dm-select" v-model="listParams.gameStatus" placeholder="选择游戏状态" @change="refresh">
<el-option v-for="(v,i) in gameStatusOptions" :key="i" :label="v.label" :value="v.value"></el-option>
</el-select>
<el-input v-model="listParams.searchParam" class="w200" placeholder="输入游戏名称" clearable @change="loadLotteryList"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-input v-model="listParams.searchParam" class="w200" placeholder="输入游戏名称" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-button class="fr" type="primary" @click="$router.push('/game/ggk/add')">新建游戏</el-button>
</div>
<el-table tooltipEffect="light" :data="tableList" style="width: 100%" v-loading="loading" element-loading-text="拼命加载中" >
<el-table tooltipEffect="light" :data="tableList" style="width: 100%" v-loading="loading">
<el-table-column v-for="(v,i) in tableHeader" :fixed="v.fixed" :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">
<template slot-scope="scope">
<span v-if="v.formatter" v-html="v.formatter(scope.row)"></span>
......@@ -16,10 +17,10 @@
</el-table-column>
<el-table-column label="操作" align="left" width="220px" fixed="right">
<template slot-scope="scope">
<el-button type="text" v-clipboard:text="scope.row.gameUrl">复制</el-button>
<el-button type="text" @click="recordData(scope.row)">记录</el-button>
<el-button type="text" @click="editData(scope.row)" v-if="scope.row.gameStatus != '3'">编辑</el-button>
<el-button type="text" @click="detailData(scope.row)" v-if="scope.row.gameStatus == '3'">详情</el-button>
<el-button type="text" @click="setLinks(scope.row,2)">链接</el-button>
<el-button type="text" @click="$router.push('/game/ggk/record/'+scope.row.gameId)">记录</el-button>
<el-button type="text" @click="$router.push('/game/ggk/edit/'+scope.row.gameId)" v-if="scope.row.gameStatus != '3'">编辑</el-button>
<el-button type="text" @click="$router.push('/game/ggk/detail/'+scope.row.gameId)" v-if="scope.row.gameStatus == '3'">详情</el-button>
<dm-delete @confirm="delData(scope.row)" tips="是否删除该游戏?">
<el-button type="text">删除</el-button>
</dm-delete>
......@@ -27,13 +28,17 @@
</el-table-column>
</el-table>
<el-pagination v-show="tableList.length" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="listParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></el-pagination>
<links :show.sync="linkShow" :obj="linksObj" :gameTypeName="gameTypeName"></links>
</section>
</template>
<script>
import {formateDateTimeByType} from '@/utils/index.js'
import {loadLotteryList,delLotteryService} from '@/service/api/gameApi.js';
import linksMixin from '../linksMixin.js';
import tableMethods from '@/mixins/tableMethods.js';
export default {
name: 'game-ggk',
mixins:[linksMixin,tableMethods],
data () {
return {
gameStatusOptions:[{value:'',label:'所有状态'},{value:1,label:'待开始'} ,{value:2,label:'进行中'} ,{value:3,label:'已结束'}],
......@@ -47,75 +52,62 @@ export default {
total:0,
loading:false,
tableHeader:[
{label:'游戏名称',prop:'gameName',width:'120',align:'left',fixed:'left'},
{label:'抽奖消耗',prop:'gameIntegral',width:'120',align:'left',formatter:function(row){
return row.gameIntegral +'积分'
}},
{label:'中奖几率',prop:'gameWinningRate',width:'120',align:'left',formatter:function(row){
return row.gameWinningRate.toFixed(1) +'%'
}},
{label:'游戏状态',prop:'gameStatusName',width:'80',align:'left',isRender:true,formatter:function(row){
if (row.gameStatusName === '进行中') {
return `<div><span class="dm-status--primary--flash"></span>${row.gameStatusName}</div>`
} else {
return `<div class="${row.gameStatusName === '未开始'?'dm-status--warning':'dm-status--info'}">${row.gameStatusName}</div>`
}
}},
{label:'开始时间',prop:'gameStartTime',minWidth:'170', tooltip:true,align:'left',formatter:function(row){
return formateDateTimeByType(row.gameStartTime,'yyyy-MM-dd-HH-mm-ss');
}},
{label:'结束时间',prop:'gameEndTime',minWidth:'170', tooltip:true,align:'left',formatter:function(row){
return formateDateTimeByType(row.gameEndTime,'yyyy-MM-dd-HH-mm-ss');
}},
{label:'参与人数',prop:'userCount',width:'80',align:'left'},
{label:'参与次数',prop:'totalCount',width:'80',align:'left'}],
{label:'游戏名称',prop:'gameName',width:'120',align:'left',fixed:'left'},
{label:'抽奖消耗',prop:'gameIntegral',width:'120',align:'left',formatter:function(row){
return row.gameIntegral +'积分'
}},
{label:'中奖几率',prop:'gameWinningRate',width:'120',align:'left',formatter:function(row){
return row.gameWinningRate.toFixed(1) +'%'
}},
{label:'游戏状态',prop:'gameStatusName',width:'80',align:'left',isRender:true,formatter:function(row){
if (row.gameStatusName === '进行中') {
return `<div><span class="dm-status--primary--flash"></span>${row.gameStatusName}</div>`
} else {
return `<div class="${row.gameStatusName === '未开始'?'dm-status--warning':'dm-status--info'}">${row.gameStatusName}</div>`
}
}},
{label:'开始时间',prop:'gameStartTime',minWidth:'170', tooltip:true,align:'left',formatter:function(row){
return formateDateTimeByType(row.gameStartTime,'yyyy-MM-dd-HH-mm-ss');
}},
{label:'结束时间',prop:'gameEndTime',minWidth:'170', tooltip:true,align:'left',formatter:function(row){
return formateDateTimeByType(row.gameEndTime,'yyyy-MM-dd-HH-mm-ss');
}},
{label:'参与人数',prop:'userCount',width:'80',align:'left'},
{label:'参与次数',prop:'totalCount',width:'80',align:'left'}],
tableList:[],
}
},
created() {
this.loadLotteryList();
this.$store.commit('mutations_breadcrumb',[{name:'营销管理',path:''},{name:'游戏营销',path:'/game'},{name:'刮刮卡',path:'/game/ggk'}])
this.getTableList();
this.$store.commit('mutations_breadcrumb',[{name:'营销管理',path:''},{name:'游戏营销',path:''},{name:'刮刮卡',path:'/game/ggk'}])
},
methods: {
handleSizeChange(val) {
this.listParams.pageSize = val;
this.loadLotteryList();
},
handleCurrentChange(val) {
this.listParams.currentPage = val;
this.loadLotteryList();
},
async loadLotteryList() {
this.loading = true;
let res = await loadLotteryList(this.listParams);
console.log(res)
// 拉取列表
getTableList() {
this.loading = true;
loadLotteryList(this.listParams).then(res => {
if (res.errorCode === 0) {
this.tableList = res.result.page.result || [];
this.total = res.result.page.totalCount;
this.loading = false;
},
//编辑
editData(row){
this.$router.push('/game/ggk/edit/'+row.gameId)
},
detailData(row) {
this.$router.push('/game/ggk/detail/'+row.gameId)
},
async delData(row){
try {
let res = await delLotteryService({gameId:row.gameId});
if (res.errorCode === 0) {
this.$tips({type: 'success',message: '删除成功!'});
this.loadLotteryList();
} else {
this.$tips({type: 'error',message: res.message || '删除失败!'});
}
} catch (err) {
this.$tips({type: 'error',message: '删除失败!'});
this.total = res.result.page.totalCount || 0;
}
this.loading = false;
}).catch(err => {
this.loading = false;
});
},
// 删除
delData(row){
delLotteryService({gameId:row.gameId}).then(res => {
if (res.errorCode === 0) {
this.$tips({type: 'success', message: '删除成功!'});
this.getTableList();
} else {
this.$tips({type: 'error', message: res.message || '删除失败!'});
}
},
recordData(row) {
this.$router.push('/game/ggk/record/'+row.gameId)
},
}).catch(err => {
this.$tips({type: 'error', message: '删除失败!'});
});
}
}
}
</script>
......
<template>
<section class="dm-wrap">
<div class="pb22 clearfix">
<el-select class="dm-select" v-model="listParams.gameStatus" placeholder="选择游戏状态" @change="LoadKlflList">
<el-select class="dm-select" v-model="listParams.gameStatus" placeholder="选择游戏状态" @change="refresh">
<el-option v-for="(v,i) in gameStatusOptions" :key="i" :label="v.label" :value="v.value"></el-option>
</el-select>
<el-input v-model="listParams.searchParam" class="w200" placeholder="输入游戏名称" clearable @change="LoadKlflList"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-input v-model="listParams.searchParam" class="w200" placeholder="输入游戏名称" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-button class="fr" icon="iconfont icon-icon_yunxiazai fz14" @click="downLoadQr"> 下载二维码 </el-button>
<el-button class="fr mr10" type="primary" @click="$router.push('/game/klfl/add')">新建游戏</el-button>
</div>
<el-table tooltipEffect="light" :data="tableList" style="width: 100%" v-loading="loading" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" fixed="left"></el-table-column>
<el-table-column v-for="(v,i) in tableHeader" :fixed="v.fixed" :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">
......@@ -18,7 +19,7 @@
</el-table-column>
<el-table-column label="操作" align="left" width="220px" fixed="right">
<template slot-scope="scope">
<el-button type="text" v-clipboard:text="scope.row.gameUrl">复制</el-button>
<el-button type="text" @click="setLinks(scope.row,5)">链接</el-button>
<el-button type="text" v-if="scope.row.sendStatus!==0" @click="$router.push('/game/klfl/record/'+scope.row.gameActivityId)">记录</el-button>
<el-button type="text" @click="$router.push('/game/klfl/edit/'+scope.row.gameActivityId)">编辑</el-button>
<dm-delete @confirm="delData(scope.row)" tips="是否删除该游戏?">
......@@ -28,13 +29,17 @@
</el-table-column>
</el-table>
<el-pagination v-show="tableList.length" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="listParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></el-pagination>
<links :show.sync="linkShow" :obj="linksObj" :gameTypeName="gameTypeName"></links>
</section>
</template>
<script>
import {formateDateTimeByType} from '@/utils/index.js'
import {LoadKlflList,deleteGame,createQrCode,downloadQrCode} from '@/service/api/gameApi.js';
import linksMixin from '../linksMixin.js';
import tableMethods from '@/mixins/tableMethods.js';
export default {
name: 'sms-lib',
name: 'game-klfl',
mixins:[linksMixin,tableMethods],
data () {
return {
loading:false,
......@@ -70,22 +75,14 @@ export default {
}
},
created() {
this.LoadKlflList();
this.$store.commit('mutations_breadcrumb',[{name:'营销管理',path:''},{name:'游戏营销',path:'/game'},{name:'口令福利',path:'/game/klfl'}])
this.getTableList();
this.$store.commit('mutations_breadcrumb',[{name:'营销管理',path:''},{name:'游戏营销',path:''},{name:'口令福利',path:'/game/klfl'}])
},
methods: {
handleSelectionChange(val) {
this.multipleSelection = val;
},
handleSizeChange(val) {
this.listParams.pageSize = val;
this.LoadKlflList();
},
handleCurrentChange(val) {
this.listParams.currentPage = val;
this.LoadKlflList();
},
async LoadKlflList() {
async getTableList() {
this.loading = true;
try {
let res = await LoadKlflList(this.listParams);
......@@ -102,7 +99,7 @@ export default {
let res = await deleteGame({gameActivityId:row.gameActivityId});
if (res.errorCode === 0) {
this.$tips({type: 'success',message: '删除成功!'});
this.LoadKlflList();
this.getTableList();
} else {
this.$tips({type: 'error',message: res.message || '删除失败!'});
}
......
<template>
<el-dialog title="游戏链接下载" :visible.sync="show" width="40%" :before-close="close" v-loading="loading">
<div class="links__body">
<div class="links__body--url">{{obj.gameUrl}}</div>
<div class="links__body--btn">
<el-button v-clipboard:text="obj.gameUrl" type="text" icon="iconfont icon-lianjie fz14"> 下载链接</el-button>
</div>
</div>
<div class="links__qr">
<vue-qr id="qrWrap" :text="qcText" :size="200" :margin="0" :logoMargin="10"></vue-qr>
<el-button class="links__qr--btn" type="text" icon="iconfont icon-icon_yunxiazai fz14" @click="downloadImg">二维码下载</el-button>
</div>
</el-dialog>
</template>
<script>
import VueQr from 'vue-qr';
import { formateDateTimeByType } from '@/utils/index.js'
export default {
name:'links',
components:{
VueQr
},
props:{
show:{
type:Boolean,
default:false
},
obj:{
type:Object,
default() {
return {}
}
},
gameTypeName:{
type:String,
default:''
}
},
data() {
return {
loading:false,
qcText:'',
};
},
watch: {
show(val) {
if (val) {
this.createQrImg();
}
},
},
methods: {
createQrImg() {
this.qcText = this.obj.gameUrl || '';
},
close() {
this.$emit('update:show',false);
},
downloadImg(){
const qrWrap = document.getElementById("qrWrap");
const qrImg = qrWrap && qrWrap.childNodes[0].src;
var a = document.createElement('a')
a.download = this.gameTypeName + '-' + this.obj.gameName + formateDateTimeByType(this.obj.gameStartTime,'yyyy-MM-dd-HH-mm-ss') || '游戏链接';
a.href = qrImg;
a.click();
}
}
};
</script>
<style lang="scss" scoped>
.links__body{
border:1px solid #ddd;
&--url {
height: 80px;
overflow-x: hidden;
overflow-y:auto;
word-break: break-all;
padding:10px;
}
&--btn {
text-align: center;
line-height: 2;
}
}
.links__qr{
padding:20px 0;
text-align: center;
&--btn {
margin:20px 0;
}
}
</style>
import links from './links'
export default {
components: {
links
},
data() {
return {
linkShow:false,
linksObj:{},
gameTypeName:''
}
},
methods: {
setLinks(row,index) {
switch(index) {
case 1:
this.gameTypeName = '大转盘';
break;
case 2:
this.gameTypeName = '刮刮卡';
break;
case 3:
this.gameTypeName = '拼图游戏';
break;
case 4:
this.gameTypeName = '找你马';
break;
case 5:
this.gameTypeName = '口令福利';
break;
}
this.linksObj = row;
this.linkShow = true;
}
}
}
......@@ -79,6 +79,18 @@
</section>
<section class="dm-form__wrap">
<h3 class="dm-title__label">分享设置</h3>
<el-form-item label="分享到朋友圈" class="width50 is-required">
<el-radio-group v-model="form.shareGroup">
<el-radio :label="1">可分享</el-radio>
<el-radio :label="2">不可分享</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="分享给朋友" class="width50 is-required">
<el-radio-group v-model="form.shareFriend">
<el-radio :label="1">可分享</el-radio>
<el-radio :label="2">不可分享</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="分享图" class="width50 is-required">
<dm-upload-avatar :model.sync="form.shareImg" fileType="fileShare" label="上传图片" tips="图片建议尺寸:高度200px*200px" :disabled="queryDisabled"></dm-upload-avatar>
</el-form-item>
......@@ -109,7 +121,7 @@ export default {
data () {
return {
loading:false,
form:{gameName:'',puzzleImg:{imgUrl:'',code:''},gameIntroduction:'',dateTime:['',''],logoImg:{imgUrl:'',code:''},usedValue:'',usedIntegral:'',shareImg:{imgUrl:'',code:''},shareTitle:'',shareTextInfo:''},
form:{gameName:'',puzzleImg:{imgUrl:'',code:''},gameIntroduction:'',dateTime:['',''],logoImg:{imgUrl:'',code:''},usedValue:'',usedIntegral:'',shareImg:{imgUrl:'',code:''},shareTitle:'',shareTextInfo:'',shareGroup:1,shareFriend:1},
rules:{
gameName:{required:true, message: '请输入游戏名', trigger: 'blur' },
dateTime:{required:true,type:'array', message: '请选择游戏时间', trigger: 'blur' },
......
<template>
<section class="dm-wrap">
<div class="pb22 clearfix">
<el-select class="dm-select" clearable v-model="listParams.gameStatus" placeholder="选择游戏状态" @change="LoadPtyxList">
<el-select class="dm-select" clearable v-model="listParams.gameStatus" placeholder="选择游戏状态" @change="refresh">
<el-option v-for="(v,i) in gameStatusOptions" :key="i" :label="v.label" :value="v.value"></el-option>
</el-select>
<el-input v-model="listParams.searchParam" class="w200" placeholder="输入游戏名称" clearable @change="LoadPtyxList"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-input v-model="listParams.searchParam" class="w200" placeholder="输入游戏名称" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-button class="fr" @click="configShow = true">拼图配置</el-button>
<el-button class="fr mr10" type="primary" @click="$router.push('/game/ptyx/add')">新建游戏</el-button>
</div>
<el-table tooltipEffect="light" :data="tableList" style="width: 100%" v-loading="loading" element-loading-text="拼命加载中" >
<el-table tooltipEffect="light" :data="tableList" style="width: 100%" v-loading="loading">
<el-table-column v-for="(v,i) in tableHeader" :fixed="v.fixed" :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">
<template slot-scope="scope">
<span v-if="v.formatter" v-html="v.formatter(scope.row)"></span>
......@@ -17,7 +17,7 @@
</el-table-column>
<el-table-column label="操作" align="left" width="220px" fixed="right">
<template slot-scope="scope" >
<el-button type="text" v-clipboard:text="scope.row.gameUrl">复制</el-button>
<el-button type="text" @click="setLinks(scope.row,3)">链接</el-button>
<el-button type="text" v-if="scope.row.activityStatus !== 0" @click="$router.push('/game/ptyx/record/'+scope.row.gameActivityId)">记录</el-button>
<el-button type="text" v-if="scope.row.activityStatus === 0" @click="$router.push('/game/ptyx/edit/'+scope.row.gameActivityId)">编辑</el-button>
<el-button type="text" v-if="scope.row.activityStatus !== 0" @click="$router.push('/game/ptyx/query/'+scope.row.gameActivityId)">详情</el-button>
......@@ -29,14 +29,21 @@
</el-table>
<el-pagination v-show="tableList.length" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="listParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></el-pagination>
<config :show.sync="configShow"></config>
<links :show.sync="linkShow" :obj="linksObj" :gameTypeName="gameTypeName"></links>
</section>
</template>
<script>
import {formateDateTimeByType} from '@/utils/index.js'
import {LoadPtyxList,deleteGame} from '@/service/api/gameApi.js';
import config from './config'
import config from './config';
import linksMixin from '../linksMixin.js';
import tableMethods from '@/mixins/tableMethods.js';
export default {
name: 'game-ptyx',
mixins:[linksMixin,tableMethods],
components: {
config
},
data () {
return {
loading:false,
......@@ -67,23 +74,12 @@ export default {
configShow:false
}
},
components: {
config
},
created() {
this.LoadPtyxList();
this.$store.commit('mutations_breadcrumb',[{name:'营销管理',path:''},{name:'游戏营销',path:'/game'},{name:'拼图游戏',path:'/game/ptyx'}])
this.getTableList();
this.$store.commit('mutations_breadcrumb',[{name:'营销管理',path:''},{name:'游戏营销',path:''},{name:'拼图游戏',path:'/game/ptyx'}])
},
methods: {
handleSizeChange(val) {
this.listParams.pageSize = val;
this.LoadPtyxList();
},
handleCurrentChange(val) {
this.listParams.currentPage = val;
this.LoadPtyxList();
},
async LoadPtyxList() {
async getTableList() {
this.loading = true;
try {
let res = await LoadPtyxList(this.listParams);
......@@ -99,7 +95,7 @@ export default {
let res = await deleteGame({gameActivityId:row.gameActivityId});
if (res.errorCode === 0) {
this.$tips({type: 'success',message: '删除成功!'});
this.LoadPtyxList();
this.getTableList();
} else {
this.$tips({type: 'error',message: res.message ||'删除失败!'});
}
......
<template>
<section class="dm-wrap">
<div class="pb22 clearfix">
<el-select class="dm-select" v-model="listParams.gameStatus" placeholder="选择游戏状态" @change="LoadZnmList">
<el-select class="dm-select" v-model="listParams.gameStatus" placeholder="选择游戏状态" @change="refresh">
<el-option v-for="(v,i) in gameStatusOptions" :key="i" :label="v.label" :value="v.value"></el-option>
</el-select>
<el-input v-model="listParams.searchParam" class="w200" placeholder="输入游戏名称" clearable @change="LoadZnmList"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-input v-model="listParams.searchParam" class="w200" placeholder="输入游戏名称" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-button class="fr" type="primary" @click="$router.push('/game/znm/add')">新建游戏</el-button>
</div>
<el-table tooltipEffect="light" :data="tableList" style="width: 100%" v-loading="loading">
......@@ -16,7 +16,7 @@
</el-table-column>
<el-table-column label="操作" align="left" width="220px" fixed="right">
<template slot-scope="scope" >
<el-button type="text" v-clipboard:text="scope.row.gameUrl">复制</el-button>
<el-button type="text" @click="setLinks(scope.row,4)">链接</el-button>
<el-button type="text" v-if="scope.row.activityStatus!==0" @click="$router.push('/game/znm/record/'+scope.row.gameActivityId)">记录</el-button>
<el-button type="text" @click="$router.push('/game/znm/edit/'+scope.row.gameActivityId)">编辑</el-button>
<dm-delete @confirm="delData(scope.row)" tips="是否删除该游戏?">
......@@ -26,13 +26,17 @@
</el-table-column>
</el-table>
<el-pagination v-show="tableList.length" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="listParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></el-pagination>
<links :show.sync="linkShow" :obj="linksObj" :gameTypeName="gameTypeName"></links>
</section>
</template>
<script>
import { formateDateTimeByType } from '@/utils/index.js'
import { LoadZnmList, deleteGame } from '@/service/api/gameApi.js';
import linksMixin from '../linksMixin.js';
import tableMethods from '@/mixins/tableMethods.js';
export default {
name: 'game-znm',
mixins:[linksMixin,tableMethods],
data () {
return {
loading:false,
......@@ -62,19 +66,11 @@ export default {
}
},
created() {
this.LoadZnmList();
this.$store.commit('mutations_breadcrumb',[{name:'营销管理',path:''},{name:'游戏营销',path:'/game'},{name:'找你马',path:'/game/znm'}])
this.getTableList();
this.$store.commit('mutations_breadcrumb',[{name:'营销管理',path:''},{name:'游戏营销',path:''},{name:'找你马',path:'/game/znm'}])
},
methods: {
handleSizeChange(val) {
this.listParams.pageSize = val;
this.LoadZnmList();
},
handleCurrentChange(val) {
this.listParams.currentPage = val;
this.LoadZnmList();
},
async LoadZnmList() {
async getTableList() {
this.loading = true;
try {
let res = await LoadZnmList(this.listParams);
......@@ -90,7 +86,7 @@ export default {
let res = await deleteGame({gameActivityId:row.gameActivityId});
if (res.errorCode === 0) {
this.$tips({type: 'success',message: '删除成功!'});
this.LoadZnmList();
this.getTableList();
} else {
this.$tips({type: 'error',message: res.message || '删除失败!'});
}
......
<template>
<section class="dm-wrap">
<el-tabs type="card" v-model="activeName">
<!-- 排行榜 -->
<el-tab-pane label="排行榜" name="first">
<div class="pb22 clearfix">
<!-- <el-select class="dm-select" v-model="listParams.gameStatus" placeholder="选择发送状态" @change="znmReportList">
<el-option v-for="(v,i) in gameStatusOptions" :key="i" :label="v.label" :value="v.value"></el-option>
</el-select> -->
<el-input v-model="listParams.searchParam" class="w200" placeholder="会员昵称/手机号/卡号" clearable @change="znmReportList"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-button icon="iconfont icon-icon_yunxiazai fz14" type="primary" class="fr" @click="znmRankExcel"> 下载Excel</el-button>
</div>
<el-table tooltipEffect="light" :data="rankList" style="width:100%" v-loading="loading">
<el-table-column width="60" align="left" label="名次" prop="ranking"></el-table-column>
<el-table-column align="left" label="会员信息">
<template slot-scope="scope">
<a :href="'/member/#/wechatmemberDetail?memberId='+scope.row.memberId" target="_blank">
<img class="vertical-middle table__avatar--40" :src="filterAvatar(scope.row.memberPhotoUrl)" alt="" srcset="">
<div class="inline-block vertical-middle">
<p class="table-name--ellipsis">{{scope.row.memberName || '--'}}</p>
<p class="gray fz13">{{scope.row.memberNickName || '--'}}</p>
</div>
</a>
</template>
</el-table-column>
<el-table-column v-for="(v,i) in rankHeader" :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"></el-table-column>
</el-table>
<el-pagination v-show="rankList.length" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="listParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></el-pagination>
<div class="pb22 clearfix">
<el-input v-model="listParams.searchParam" class="w200" placeholder="会员昵称/手机号/卡号" clearable @change="znmReportList"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-button icon="iconfont icon-icon_yunxiazai fz14" type="primary" class="fr" @click="znmRankExcel"> 下载Excel</el-button>
</div>
<el-table tooltipEffect="light" :data="rankList" style="width:100%" v-loading="loading">
<el-table-column width="60" align="left" label="名次" prop="ranking"></el-table-column>
<el-table-column align="left" label="会员信息">
<template slot-scope="scope">
<a :href="'/member/#/wechatmemberDetail?memberId='+scope.row.memberId" target="_blank">
<img class="vertical-middle table__avatar--40" :src="filterAvatar(scope.row.memberPhotoUrl)" alt="" srcset="">
<div class="inline-block vertical-middle">
<p class="table-name--ellipsis">{{scope.row.memberName || '--'}}</p>
<p class="gray fz13">{{scope.row.memberNickName || '--'}}</p>
</div>
</a>
</template>
</el-table-column>
<el-table-column v-for="(v,i) in rankHeader" :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"></el-table-column>
</el-table>
<el-pagination v-show="rankList.length" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="listParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></el-pagination>
</el-tab-pane>
<!-- 参与记录 -->
<el-tab-pane label="参与记录" name="second">
<div class="pb22 clearfix">
<el-select class="dm-select" v-model="listParams1.gameStatus" placeholder="选择发送状态" @change="znmReportList1">
......@@ -66,58 +65,59 @@ import filterAvatar from '@/mixins/filterAvater.js';
},
data() {
return {
gameStatusOptions:[{value:-1,label:'所有状态'},{value:2,label:'成功'} ,{value:1,label:'失败'}],
activeName:'first',
loading:false,
rankList:[],
rankHeader:[
{label:'手机号码',prop:'memberPhone',align:'left',formatter:(row)=>{
return row.memberPhone || '--'
}},
{label:'参与次数',prop:'playTimes',align:'left'},
{label:'游戏成绩',prop:'gameScore',align:'left'}],
listParams:{
tabName:'rank',
gameActivityId:this.$route.params.id,
searchParam:'',
gameStatus:'',
currentPage:1, //是 Number 当前页面
pageSize:20 //是 Number 每页显示条数
},
total:0,
loading1:false,
recordList:[],
recordHeader:[
{label:'玩游戏时间',prop:'createTime',align:'left',formatter:function(row){
return formateDateTimeByType(row.createTime,'yyyy-MM-dd-HH-mm-ss')}},
{label:'手机号码',prop:'memberPhone',align:'left'},
{label:'游戏状态',prop:'getStatus',align:'left',formatter:function(row){
return (row.getStatus === 1 || row.getStatus === 2) ?'成功':'失败';
}},
{label:'游戏成绩',prop:'gameScore',align:'left'},
{label:'游戏成绩',prop:'getStatus',align:'left',formatter:function(row){
if(row.getStatus === 1) {
return "未领取" ;
}
else if(row.getStatus === 2) {
return "已领取" ;
} else {
return "--" ;
}
}}
],
listParams1:{
tabName:'attendRecord',
gameActivityId:this.$route.params.id,
searchParam:'',
gameStatus:'',
currentPage:1, //是 Number 当前页面
pageSize:20 //是 Number 每页显示条数
},
total1:0,
gameStatusOptions:[{value:-1,label:'所有状态'},{value:2,label:'成功'} ,{value:1,label:'失败'}],
activeName:'first',
loading:false,
rankList:[],
rankHeader:[
{label:'手机号码',prop:'memberPhone',align:'left',formatter:(row)=>{
return row.memberPhone || '--'
}},
{label:'参与次数',prop:'playTimes',align:'left'},
{label:'游戏成绩',prop:'gameScore',align:'left'}],
listParams:{
tabName:'rank',
gameActivityId:this.$route.params.id,
searchParam:'',
gameStatus:'',
currentPage:1,
pageSize:20
},
total:0,
loading1:false,
recordList:[],
recordHeader:[
{label:'玩游戏时间',prop:'createTime',align:'left',formatter:function(row){
return formateDateTimeByType(row.createTime,'yyyy-MM-dd-HH-mm-ss')}},
{label:'手机号码',prop:'memberPhone',align:'left'},
{label:'游戏状态',prop:'getStatus',align:'left',formatter:function(row){
return (row.getStatus === 1 || row.getStatus === 2) ?'成功':'失败';
}},
{label:'游戏成绩',prop:'gameScore',align:'left'},
{label:'游戏成绩',prop:'getStatus',align:'left',formatter:function(row){
if(row.getStatus === 1) {
return "未领取" ;
}
else if(row.getStatus === 2) {
return "已领取" ;
} else {
return "--" ;
}
}}
],
listParams1:{
tabName:'attendRecord',
gameActivityId:this.$route.params.id,
searchParam:'',
gameStatus:'',
currentPage:1, //是 Number 当前页面
pageSize:20 //是 Number 每页显示条数
},
total1:0
};
},
methods: {
//排名列表
async znmReportList() {
this.loading = true;
let res = await znmReportList(this.listParams);
......@@ -136,9 +136,8 @@ import filterAvatar from '@/mixins/filterAvater.js';
znmRankExcel() {
window.location = znmRankExcel+"?searchParam="+this.listParams.searchParam+"&gameActivityId="+this.listParams.gameActivityId+'&requestProject=gic-web' ;
},
znmRecordExcel() {
window.location = znmRecordExcel+"?searchParam="+this.listParams1.searchParam+"&gameActivityId="+this.listParams1.gameActivityId +'&requestProject=gic-web' ;
},
//记录列表
async znmReportList1() {
this.loading1 = true;
let res = await znmReportList(this.listParams1);
......@@ -153,7 +152,10 @@ import filterAvatar from '@/mixins/filterAvater.js';
handleCurrentChange1(val) {
this.listParams1.currentPage = val;
this.znmReportList1();
}
},
znmRecordExcel() {
window.location = znmRecordExcel+"?searchParam="+this.listParams1.searchParam+"&gameActivityId="+this.listParams1.gameActivityId +'&requestProject=gic-web' ;
},
}
};
</script>
<template>
<el-dialog title="首次获奖策略管理" :visible.sync="show" width="40%" :before-close="close" v-loading="loading">
<el-form ref="form" :model="form" :rules="rules" label-width="90px">
<el-form-item label="策略名称" prop="strategyName">
<el-input v-model="form.strategyName"></el-input>
</el-form-item>
<el-form-item label="会员等级">
<el-select v-model="form.gradeLevel" multiple placeholder="请选择">
<el-option v-for="v in gradeList" :key="v.gradeId" :label="v.gradeName" :value="v.gradeId" :disabled="!v.isShow"></el-option>
</el-select>
</el-form-item>
<el-form-item label="最近消费">
<el-date-picker :pickerOptions="pickerOptions" v-model="form.lastCostTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item>
<el-form-item label="消费总额">
<el-input-number controls-position="right" class="w150" :min="0" size="medium" v-model="form.costAllBegin"></el-input-number>
<el-input-number controls-position="right" class="w150" :min="parseInt(form.costAllBegin)" size="medium" v-model="form.costAllEnd"></el-input-number>
</el-form-item>
<el-form-item label="消费次数">
<el-input-number controls-position="right" class="w150" :min="0" size="medium" v-model="form.costTimesBegin"></el-input-number>
<el-input-number controls-position="right" class="w150" :min="parseInt(form.costTimesBegin)" size="medium" v-model="form.costTimesEnd"></el-input-number>
</el-form-item>
<el-form-item label="客单价">
<el-input-number controls-position="right" class="w150" :min="0" size="medium" v-model="form.avgCostBegin"></el-input-number>
<el-input-number controls-position="right" class="w150" :min="parseInt(form.avgCostBegin)" size="medium" v-model="form.avgCostEnd"></el-input-number>
</el-form-item>
<el-form-item label="连带率">
<el-input-number controls-position="right" class="w150" :min="0" size="medium" v-model="form.avgNumberBegin"></el-input-number>
<el-input-number controls-position="right" class="w150" :min="parseInt(form.avgNumberBegin)" size="medium" v-model="form.avgNumberEnd"></el-input-number>
</el-form-item>
<el-form-item label="奖券设置">
<el-button type="primary" @click="showCard">{{cardObj.cardName ||'选择卡券'}}</el-button>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="close">关 闭</el-button>
<el-button type="primary" @click="submit('form')">保 存</el-button>
</span>
<!-- <vue-gic-card :showCardDialog="showCardDialog" @selectCard="selectCard"></vue-gic-card> -->
</el-dialog>
<el-dialog title="首次获奖策略管理" :visible.sync="show" width="40%" :before-close="close" v-loading="loading">
<el-form ref="form" :model="form" :rules="rules" label-width="90px">
<el-form-item label="策略名称" prop="strategyName">
<el-input v-model="form.strategyName"></el-input>
</el-form-item>
<el-form-item label="会员等级">
<el-select v-model="form.gradeLevel" multiple placeholder="请选择">
<el-option v-for="v in gradeList" :key="v.gradeId" :label="v.gradeName" :value="v.gradeId" :disabled="!v.isShow"></el-option>
</el-select>
</el-form-item>
<el-form-item label="最近消费">
<el-date-picker :pickerOptions="pickerOptions" v-model="form.lastCostTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item>
<el-form-item label="消费总额">
<el-input-number controls-position="right" class="w150" :min="0" size="medium" v-model="form.costAllBegin"></el-input-number>
<el-input-number controls-position="right" class="w150" :min="parseInt(form.costAllBegin)" size="medium" v-model="form.costAllEnd"></el-input-number>
</el-form-item>
<el-form-item label="消费次数">
<el-input-number controls-position="right" class="w150" :min="0" size="medium" v-model="form.costTimesBegin"></el-input-number>
<el-input-number controls-position="right" class="w150" :min="parseInt(form.costTimesBegin)" size="medium" v-model="form.costTimesEnd"></el-input-number>
</el-form-item>
<el-form-item label="客单价">
<el-input-number controls-position="right" class="w150" :min="0" size="medium" v-model="form.avgCostBegin"></el-input-number>
<el-input-number controls-position="right" class="w150" :min="parseInt(form.avgCostBegin)" size="medium" v-model="form.avgCostEnd"></el-input-number>
</el-form-item>
<el-form-item label="连带率">
<el-input-number controls-position="right" class="w150" :min="0" size="medium" v-model="form.avgNumberBegin"></el-input-number>
<el-input-number controls-position="right" class="w150" :min="parseInt(form.avgNumberBegin)" size="medium" v-model="form.avgNumberEnd"></el-input-number>
</el-form-item>
<el-form-item label="奖券设置">
<el-button type="primary" @click="showCard">{{cardObj.cardName ||'选择卡券'}}</el-button>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="close">关 闭</el-button>
<el-button type="primary" @click="submit('form')">保 存</el-button>
</span>
</el-dialog>
</template>
<script>
import {znmStrategy,znmStrategySave} from '@/service/api/gameApi.js';
......@@ -65,9 +64,9 @@ import {formateDateTimeByType,resetParams} from '@/utils/index.js'
},
watch: {
show(val) {
if (val) {
this.znmStrategy();
}
if (val) {
this.znmStrategy();
}
}
},
data() {
......@@ -94,10 +93,10 @@ import {formateDateTimeByType,resetParams} from '@/utils/index.js'
gradeList: [],
pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now();
return time.getTime() > Date.now();
}
},
showCardDialog:false,
showCardDialog:false
};
},
methods: {
......@@ -207,24 +206,6 @@ import {formateDateTimeByType,resetParams} from '@/utils/index.js'
}
});
}
},
};
</script>
<style lang="scss" scoped>
.sms-table{
&_top{
padding: 10px;
}
}
.sms-table_info{
&> div{
}
&>img {
width: 32px;
height: 32px;
}
}
</style>
......@@ -10,15 +10,12 @@
</div>
</div>
<article v-if="step === 0">
<!-- <el-card class="box-card mb20">
<div slot="header" class="clearfix">
<span>温馨提示</span>
</div>
<div class="step0-tips">
<p class="fz12 gray line-height2">1、我们提供在线充值服务(目前仅支持微信)</p>
<p class="fz12 gray line-height2">2、请尽量保障账户余额大于您日常使用的额度,避免因余额不足导致业务中断</p>
<p class="fz12 gray line-height2">3、若未能及时充值或其他问题,请联系客户经理或客服人员</p>
<p class="fz12 gray line-height2">4、各项服务单价:短信验证码{{allUnitFee.smsfee}}元/条,语音验证码{{allUnitFee.voiceIfee}}元/条,双向呼叫{{allUnitFee.callfee}}元/分钟</p>
</el-card> -->
</div>
<div class="step0-box">
<div>
<span class="fz14 w80 inline-block text-right">余额</span>
......@@ -208,6 +205,10 @@ export default {
}
}
}
.step0-tips {
width:60%;
margin:20px auto;
}
.step0-box{
margin: 50px auto 50px;
width: 300px;
......
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