Commit d8bbcd11 by crushh

update: dist

parent 51eb16b3
......@@ -14,6 +14,7 @@
<script src="//at.alicdn.com/t/font_2859043_udehp133w1.js"></script><!--3.0组件库-->
<link rel="stylesheet" href="//at.alicdn.com/t/font_2996579_dv9vctk5vdt.css"> <!-- 3.0企业 -->
<script src="//at.alicdn.com/t/font_2996579_dv9vctk5vdt.js"></script><!-- 3.0企业 -->
<link rel="stylesheet" href="//at.alicdn.com/t/font_2844902_uelk5f2sikk.css">
<!-- <link rel="stylesheet" href="//web-1251519181.file.myqcloud.com/components/element.2.12.0.css"> -->
<!-- element 皮肤 -->
<!-- <link rel="stylesheet" type="text/css" href="http://web-1251519181.file.myqcloud.com/lib/elementUI/theme.1.0.1/index.css"> -->
......
......@@ -271,6 +271,9 @@ a:hover {
.w260{
width: 260px!important;
}
.w270{
width: 270px!important;
}
.w280{
width: 280px!important;
}
......@@ -607,12 +610,12 @@ img::after {
.el-radio-group.customize{
.el-radio-button{
border-top: 1px solid #EBEFFE;
border-bottom: 1px solid #EBEFFE;
border-top: 1px solid #DCDFE6;
border-bottom: 1px solid #DCDFE6;
padding: 4px 0 4px 4px;
}
.el-radio-button:first-child{
border-left: 1px solid #EBEFFE;
border-left: 1px solid #DCDFE6;
border-radius: 2px 0 0 2px;
.el-radio-button__inner{
border:none;
......@@ -620,7 +623,7 @@ img::after {
}
.el-radio-button:last-child{
border-radius: 0 2px 2px 0;
border-right: 1px solid #EBEFFE;
border-right: 1px solid #DCDFE6;
padding: 4px;
}
.el-radio-button__inner{
......@@ -629,6 +632,7 @@ img::after {
border:none;
color: #303133;
font-weight: 400px;
min-width: 60px;
}
.el-radio-button__orig-radio:checked+.el-radio-button__inner{
background: #EBEFFE;
......
......@@ -4,7 +4,7 @@
}
.dm-pagination {
text-align: right;
margin: 24px 0 10px 0;
margin: 20px 0 10px 0;
}
.label-hidden .el-checkbox__label,.label-hidden .el-radio__label{
......
......@@ -109,7 +109,7 @@
.dm-pagination {
text-align: right;
margin: 24px 0 10px 0;
margin: 20px 0 10px 0;
}
.text-left {
text-align: left;
......
......@@ -66,7 +66,7 @@
<div class="tips">图片建议尺寸 {{ baseForm.noticeImageUrlSize0 }},格式 jpg/png/gif,大小 {{ baseForm.noticeImageUrlSize1 }}M以内。</div>
</el-form-item>
<el-form-item label="背景音乐">
<el-switch v-model="baseForm.backMusicFlag" :active-value="1" :inactive-value="0" />
<el-switch v-model="baseForm.backMusicFlag" :active-value="1" :inactive-value="0" @change="handleDateChange" />
<div class="flex mt16" v-show="baseForm.backMusicFlag">
<div class="flex">
<el-button size="small" class="playBtn" @click="handleListen"><i :class="['iconfont fz14', isPlay ? 'icon-zanting' : 'icon-kaiqi']"></i> 点击试听</el-button>
......@@ -82,7 +82,7 @@
<div class="tips mt10">开启后,如有三名及以上用户获奖后,活动首页将轮播展示用户中奖信息。</div>
</el-form-item>
<el-form-item label="广告位">
<el-switch v-model="baseForm.adsFlag" :active-value="1" :inactive-value="0" />
<el-switch v-model="baseForm.adsFlag" :active-value="1" :inactive-value="0" @change="handleDateChange" />
<div class="adsImg" v-show="baseForm.adsFlag">
<el-form-item prop="adsImageUrl" :rules="rules.adsImageUrl" label-width="0">
<dm-upload-avatar class="upload-avatar" width="375" height="75" :limit="{ type: false, maxSize: 1 }" fileType="img" :model.sync="adsImageUrl" label="上传图片" tips="" @backImg="handleAdsChange" :unused="isInfo"></dm-upload-avatar>
......
......@@ -21,7 +21,7 @@
<div class="iphone">
<span class="gameTitle">{{ gameName }}</span>
<img src="../../../assets/img/Navbar.png" alt="" />
<gameTemplate :bgImg="bgImg" :tipsImg="tipsImg" :boxImg="boxImg" :adImg="adImg" :ruleData="ruleData" :templateId="templateId" :bullet="bullet" v-if="menuActive == 0" />
<gameTemplate :ruleData="ruleData" :templateId="templateId" :basicData="previewData" v-if="menuActive == 0" />
<img :src="computedImg" v-else style="min-height:724px;" />
</div>
</div>
......@@ -41,7 +41,7 @@
</div>
<links :show.sync="linkShow" :obj="linksObj" gameTypeName="幸运盲盒" :isNew="true" :showFooter="true" :showClose="false">
<el-button @click="editRenew">重新编辑</el-button>
<el-button type="primary" @click="$router.go(-1)">进入游戏列表</el-button>
<el-button type="primary" @click="window.close()">进入游戏列表</el-button>
</links>
</div>
</template>
......@@ -90,8 +90,11 @@ export default {
echoData: {},
shareImgData: {},
loading: false,
ruleData: {},
bullet: {}
ruleData: {
0: {},
1: {}
},
previewData: {}
};
},
computed: {
......@@ -171,15 +174,12 @@ export default {
if (playConditionFlag == 1) {
gameRuleConditionList.forEach(item => {
if (item.conditionType == 0) {
this.ruleData = { val: item.value, type: 0 };
this.ruleData[0] = { val: item.value, type: 0 };
}
item.conditionJson = JSON.parse(item.conditionJson);
});
}
this.bullet = {
bulletFlag,
bulletImageUrl: gameExt.bulletImageUrl
};
this.previewData = Object.assign(this.previewData, { bulletFlag, bulletImageUrl: gameExt.bulletImageUrl });
let cardIdArr = [];
gamePrizeList.forEach(item => {
if (item.prizeType == 2) {
......@@ -214,19 +214,12 @@ export default {
});
},
handleBaseConfigChange(data) {
console.log('handleBaseConfigChange----->');
console.log(data);
const { backImageUrl, noticeImageUrl, adsImageUrl, bulletImageUrl, bulletFlag, gameName, templateId, shareCard, shareReport, gameTime, shareCardSize0, shareCardSize1, shareReportSize1, shareReportSize0 } = data;
this.bgImg = backImageUrl;
this.tipsImg = noticeImageUrl;
this.boxImg = data.prizeStyleJson[0].imageNoSelectUrl;
this.adImg = adsImageUrl;
const { backMusicFlag, adsFlag, backImageUrl, noticeImageUrl, adsImageUrl, bulletImageUrl, bulletFlag, gameName, templateId, shareCard, shareReport, gameTime, shareCardSize0, shareCardSize1, shareReportSize1, shareReportSize0 } = data;
this.previewData = { backMusicFlag, backImageUrl, noticeImageUrl, adsImageUrl, bulletImageUrl, bulletFlag, adsFlag };
this.previewData.boxImg = data.prizeStyleJson[0].imageNoSelectUrl;
this.previewData = Object.assign({}, this.previewData);
this.gameName = gameName;
this.templateId = templateId;
this.bullet = {
bulletImageUrl,
bulletFlag
};
this.shareImgData = {
shareCard,
shareReport,
......@@ -235,23 +228,23 @@ export default {
shareReportSize1,
shareReportSize0
};
console.log(shareCard);
this.gameTime = gameTime;
},
handleRuleConfigChange(data) {
this.ruleData = data;
this.ruleData[data.id] = data;
this.ruleData = Object.assign({}, this.ruleData);
},
returnNext() {
this.$confirm('退出后,当前编辑没有保存的数据会丢失,确认要退出吗?', {
type: 'warning'
})
.then(() => {
this.$router.go(-1);
window.close();
})
.catch(() => {});
},
goBack() {
this.$router.go(-1);
window.close();
},
handleMenuSelect(index) {
this.menuActive = index;
......@@ -484,7 +477,6 @@ export default {
}
.iphone {
width: 375px;
background: #ffffff;
border-radius: 8px 8px 0px 0px;
margin: 0 20px 0 13px;
position: relative;
......
<template>
<div class="template-game">
<img class="bg-image" :src="bgImg" />
<img class="bg-image" :src="backImageUrl" />
<div class="content">
<div class="right-btn rule">游戏规则</div>
<div class="right-btn award">我的奖品</div>
<div class="integral" v-if="ruleData.type == 0">{{ ruleData.val }}积分/次</div>
<div class="swiper-item" v-if="bullet.bulletFlag == 1">
<img :src="bullet.bulletImageUrl" />
<div class="music-icon iconfont icon-yinfu" v-show="backMusicFlag"></div>
<div class="integral" v-if="ruleData[0].type == 0">{{ ruleData[0].val }}积分/次</div>
<div class="swiper-item" v-if="bulletFlag == 1">
<img :src="bulletImageUrl" />
<span>恭喜 张* 获得 100元优惠券</span>
</div>
<div class="box-box">
......@@ -19,7 +20,7 @@
<img class="title-image" src="https://pic01-10001430.cos.ap-shanghai.myqcloud.com/game/template1/我的积分.png" />
</div>
<div class="game-name-box">
<img :src="tipsImg" style="width: 224px;height: 22px;" />
<img :src="noticeImageUrl" style="width: 224px;height: 22px;" />
</div>
<div class="text-box">
<div class="text">55</div>
......@@ -28,13 +29,13 @@
</div>
</div>
<img class="ad-image" :src="adImg" mode="widthFix" v-if="adImg" />
<!-- <div class="share-box" @click="clickShareBtn">
<img class="ad-image" :src="adsImageUrl" mode="widthFix" v-if="adsImageUrl && adsFlag == 1" />
<div class="share-box" v-if="ruleData[1].type == 1">
<div class="icon">
<div class="iconfont icon-yaoqing"></div>
</div>
<img src="https://pic01-10001430.cos.ap-shanghai.myqcloud.com/game/template1/邀请助力.png" />
</div> -->
</div>
</div>
</div>
</template>
......@@ -111,39 +112,27 @@ export default {
return {
list: ['刷卡拉拉卡', '阿拉卡萨卢克和史莱克', '刷卡拉拉卡', '阿拉卡萨卢克和史莱克'],
boxList: box9,
name: '猜盲盒'
backImageUrl: '',
noticeImageUrl: '',
boxImg: '',
adsImageUrl: '',
bulletFlag: 0,
bulletImageUrl: '',
backMusicFlag: 0,
adsFlag: 0
};
},
props: {
bgImg: {
type: String,
default: ''
},
tipsImg: {
type: String,
default: ''
},
boxImg: {
type: String,
default: ''
},
adImg: {
type: String,
default: ''
},
bullet: {
ruleData: {
type: Object,
default: () => {}
},
ruleData: {
basicData: {
type: Object,
default: () => {}
},
templateId: String
},
created() {
document.title = '猜盲盒';
},
watch: {
templateId(val) {
if (val == 1 || val == 2) {
......@@ -152,6 +141,24 @@ export default {
if (val == 3) {
this.boxList = box6;
}
},
basicData: {
deep: true,
// immediate: true,
handler(val) {
console.log('basicData----->');
console.log(val);
if (!val) return;
const { backImageUrl, noticeImageUrl, boxImg, adsImageUrl, bulletFlag, bulletImageUrl, backMusicFlag, adsFlag } = val;
this.backImageUrl = backImageUrl;
this.noticeImageUrl = noticeImageUrl;
this.boxImg = boxImg;
this.adsImageUrl = adsImageUrl;
this.bulletFlag = bulletFlag;
this.bulletImageUrl = bulletImageUrl;
this.backMusicFlag = backMusicFlag;
this.adsFlag = adsFlag;
}
}
}
};
......@@ -191,31 +198,6 @@ img {
/* transform: rotate(90deg); */
}
@keyframes transform {
0% {
transform: rotate(0%);
}
25% {
transform: rotate(90deg);
}
50% {
transform: rotate(180deg);
}
75% {
transform: rotate(270deg);
}
100% {
transform: rotate(360deg);
}
}
.music-icon.icon-yinfu {
animation-name: transform;
animation-duration: 3s;
animation-timing-function: linear;
animation-iteration-count: infinite;
}
.right-btn {
writing-mode: tb-rl;
position: absolute;
......@@ -372,13 +354,14 @@ img {
border-radius: 8px;
height: 75px;
width: calc(100% - 30px);
position: absolute;
}
.share-box {
position: absolute;
z-index: 10;
right: 20px;
bottom: 40px;
bottom: -75px;
padding: 10px;
}
.share-box .icon {
......@@ -399,28 +382,7 @@ img {
-webkit-text-fill-color: transparent;
font-size: 18px;
}
.swiper-item {
width: 300px;
height: 36px;
box-sizing: border-box;
border-radius: 17px 0 0 17px;
position: relative;
display: flex;
align-items: center;
}
.swiper-item img {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
.swiper-item span {
padding-left: 30px;
color: white;
font-size: 12px;
z-index: 2;
}
.share-box img {
position: absolute;
left: 50%;
......
......@@ -50,7 +50,8 @@
<el-table-column label="游戏时间" min-width="134px">
<template slot-scope="{ row }">
<p class="cell-time">
{{ formatDateTimeByType(row.startDate, 'yyyy-MM-dd') }}<br />
{{ formatDateTimeByType(row.startDate, 'yyyy-MM-dd') }}<br />
{{ formatDateTimeByType(row.endDate, 'yyyy-MM-dd') }}
</p>
</template>
......@@ -68,10 +69,11 @@
<div><span :class="gameStatusClass[row.status]"></span>{{ gameStatus[row.status] }}</div>
</template>
</el-table-column>
<el-table-column label="创建人" min-width="88px" prop="creatorName"></el-table-column>
<el-table-column label="创建人" min-width="88px" prop="creatorName" show-overflow-tooltip></el-table-column>
<el-table-column label="创建时间" min-width="114px" prop="createTime">
<template slot-scope="{ row }">
{{ formatDateTimeByType(row.createTime) }}
{{ formatDateTimeByType(row.createTime, 'yyyy-MM-dd') }}<br />
{{ formatDateTimeByType(row.createTime, 'yyyy-MM-dd') }}
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" min-width="153px">
......@@ -155,7 +157,8 @@ export default {
visible: row => {
return this.$getButtonLimit(this.$buttonCode.marketingCmhInfo);
},
handler: row => this.$router.push('/game/cmh/info/' + row.gameId)
handler: row => window.open(`/marketing/#/game/cmh/info/${row.gameId}`)
// handler: row => this.$router.push('/game/cmh/info/' + row.gameId)
},
{
text: '编辑',
......@@ -165,7 +168,8 @@ export default {
visible: row => {
return (row.status === 1 || row.status === 0) && this.$getButtonLimit(this.$buttonCode.marketingCmhEdit);
},
handler: row => this.$router.push(`/game/cmh/edit/${row.gameId}`)
// handler: row => this.$router.push('/game/cmh/edit/' + row.gameId)
handler: row => window.open(`/marketing/#/game/cmh/edit/${row.gameId}`)
},
{
text: '复制',
......@@ -175,7 +179,8 @@ export default {
visible: row => {
return this.$getButtonLimit(this.$buttonCode.marketingCmhCopy);
},
handler: row => this.$router.push('/game/cmh/copy/' + row.gameId)
// handler: row => this.$router.push('/game/cmh/copy/' + row.gameId)
handler: row => window.open(`/marketing/#/game/cmh/copy/${row.gameId}`)
},
{
text: '链接',
......@@ -284,7 +289,7 @@ export default {
this.getTableList();
},
addGame() {
this.$router.push('/game/cmh/add');
window.open('/marketing/#/game/cmh/add');
},
onView() {
let qrImg = 'https://pic01-10001430.cos.ap-shanghai.myqcloud.com/game/template1/bill_pic.png' + '?imageMogr2/thumbnail/800x800';
......
......@@ -9,7 +9,8 @@
<el-descriptions column="3">
<el-descriptions-item label="游戏说明"></el-descriptions-item>
</el-descriptions>
<div class="gameRuleBox">{{ form.gameRule }}</div>
<el-input class="gameRuleBox" :disabled="true" :autosize="{ minRows: 5 }" v-model="form.gameRule" type="textarea" resize="none" />
<!-- <div class="gameRuleBox" v-html="form.gameRule"></div> -->
</div>
<dm-sub-title type="line">展示信息配置</dm-sub-title>
<div class="section">
......@@ -51,14 +52,16 @@
</thead>
<tbody>
<tr v-for="(item, index) in form.gamePrizeList" :key="index" :class="item.status != 0 ? 'invalid' : ''">
<td class="cell">
<td class="cell" style="minWidth:80px">
{{ prizeType[item.prizeType] }}
</td>
<td class="cell">
<td class="cell" style="minWidth:200px">
<div v-if="item.prizeType == 2">
<el-tag v-if="item.status == 1" size="mini" type="danger" class="tagIcon">删除</el-tag>
<el-tag v-if="item.status == 2" size="mini" type="danger" class="tagIcon">失效</el-tag>
<span> {{ item.prizeName }}</span>
<el-tooltip :content="item.cardName" placement="top">
<div class="ellips">{{ item.cardName }}</div>
</el-tooltip>
</div>
<div v-if="item.prizeType == 1">
{{ item.prizeNumber + '积分' }}
......@@ -67,21 +70,23 @@
- -
</div>
</td>
<td class="cell">
{{ item.prizeName }}
<td class="cell" style="minWidth:200px">
<div class="ellips" style="max-width: 200px;">{{ item.prizeName }}</div>
</td>
<td class="cell">
<td class="cell" style="minWidth:100px">
<img :src="item.prizeImageUrl" v-if="item.prizeType != 0" />
<span v-else>- -</span>
</td>
<td class="cell">
<td class="cell" style="minWidth:100px">
<span v-if="item.prizeType != 0"> {{ item.prizeStock }}</span>
<span v-else>- -</span>
</td>
<td class="cell">
{{ item.prizeDesc }}
<td class="cell" style="minWidth:200px">
<el-tooltip :content="item.prizeDesc" placement="top">
<div class="ellips">{{ item.prizeDesc }}</div>
</el-tooltip>
</td>
<td class="cell">{{ item.prizeRate }}%</td>
<td class="cell" style="minWidth:80px">{{ item.prizeRate }}%</td>
</tr>
</tbody>
</table>
......@@ -149,18 +154,17 @@
</div>
<p>邀请机制: 每成功邀请{{ item.conditionJson.inviteNum }}人可获得{{ item.conditionJson.value }} 次游戏</p>
<p>成功邀请条件:{{ item.conditionJson.type == 11 ? '注册新会员' : '首次关注服务号' }}</p>
<div v-show="item.conditionJson.type == 12">
<el-descriptions column="1">
<el-descriptions-item label="关注回复"> {{ item.conditionJson.subscribeMsg }}</el-descriptions-item>
</el-descriptions>
</div>
<div class="shareApp">
<div class="shareTitle">邀请分享样式</div>
<p>小程序卡片标题: {{ item.conditionJson.shareTitle }}</p>
<p class="flex">小程序卡片图片: <img :src="item.conditionJson.shareCard" alt="游戏背景" style="width: 100px;height: 75px;margin-left: 10px;" /></p>
<p class="flex">分享海报: <img :src="item.conditionJson.shareReport" alt="游戏背景" style="width: 100px;height: 178px;margin-left: 53px;" /></p>
</div>
<div v-show="item.conditionJson.type == 12">
<el-descriptions column="1">
<el-descriptions-item label="关注回复"> {{ item.conditionJson.subscribeMsg }}</el-descriptions-item>
</el-descriptions>
</div>
</div>
</div>
</div>
......@@ -223,28 +227,7 @@ export default {
},
watch: {
data(val) {
// const {
// gameRuleInfo, // 游戏规则信息
// gameRuleConditionList, // 游戏规则-参与门槛
// gamePrizeList, //游戏奖品信息
// gameExt,
// prizeNoticeStock,
// prizeNoticeFlag,
// adsFlag,
// bulletFlag,
// backMusicFlag,
// templateId,
// gameRule,
// startDate,
// endDate,
// gameName,
// memberWeightView,
// creatorId,
// gameId,
// status
// } = val;
this.form = { ...val };
console.log(this.form);
if (this.form.gameRuleInfo.playConditionFlag == 1) {
this.form.gameRuleConditionList.forEach(item => {
item.conditionJson = JSON.parse(item.conditionJson);
......@@ -259,6 +242,7 @@ export default {
this.form.gamePrizeList.forEach(item => {
if (item.prizeType == 2) {
item.status = val[item.prizeRelationId].invalid;
item.cardName = val[item.prizeRelationId].name;
} else {
item.status = 0;
}
......@@ -325,12 +309,10 @@ export default {
color: #909399;
}
.ellips {
// overflow: hidden;
// text-overflow: ellipsis;
// display: -webkit-box;
// -webkit-line-clamp: 2;
// /*! autoprefixer: ignore next */
// -webkit-box-orient: vertical;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
max-width: 300px;
}
.section {
padding: 20px 0 18px 0;
......@@ -366,10 +348,13 @@ export default {
}
}
.gameRuleBox {
padding: 11px 13px;
width: 100%;
background: #f7f8fa;
line-height: 20px;
/deep/ .el-textarea__inner {
border: none;
color: #303133;
padding: 11px 13px;
}
}
.cardBox {
width: 100%;
......
......@@ -52,7 +52,7 @@
<template slot-scope="{ row, $index }">
<div v-if="row.prizeType == 1 || row.prizeType == 2">
<el-form-item :prop="'gamePrizeList.' + $index + '.' + 'prizeName'" :rules="rules.prizeName" label-width="0">
<el-input v-model="row.prizeName" maxlength="10" :disabled="isDisabled && row.isOld" />
<el-input v-model="row.prizeName" maxlength="10" placeholder="不超过10个字" :disabled="isDisabled && row.isOld" />
</el-form-item>
</div>
<el-form-item label-width="0" v-else>
......@@ -84,7 +84,7 @@
<template slot="header"> <span class="needCell">奖品数量</span> </template>
<template slot-scope="{ row, $index }">
<div v-if="row.prizeType == 1 || row.prizeType == 2">
<el-form-item :prop="'gamePrizeList.' + $index + '.' + 'prizeStock'" :rules="{ validator: prizeStockRule(row) }" label-width="0"> <el-input class="inputClass-12" v-model.number="row.prizeStock" @change="calculateRate" /></el-form-item>
<el-form-item :prop="'gamePrizeList.' + $index + '.' + 'prizeStock'" :rules="{ validator: prizeStockRule(row) }" label-width="0"> <el-input class="inputClass-12" v-model.number="row.prizeStock" placeholder="请输入" @change="calculateRate" /></el-form-item>
</div>
<el-form-item label-width="0" v-else>
- -
......
<template>
<el-form size="small" :model="ruleForm" :rules="rules" ref="ruleForm" label-width="160px">
<el-form size="small" :model="ruleForm" :rules="rules" ref="ruleForm" label-width="170px">
<dm-sub-title type="line" class="mb20">玩法配置</dm-sub-title>
<el-form-item label="参与人群" prop="filterJson">
<el-radio-group v-model="ruleForm.memberType" :disabled="isDisabled" @change="clearValidate('filterJson')">
......@@ -36,20 +36,22 @@
<div v-for="(item, index) in ruleForm.gameRuleConditionList" :key="item.conditionType">
<div v-if="index == 0">
<div class="flex mb10"><el-checkbox v-model="item.conditionType" :true-label="2" :false-label="-1" :disabled="isDisabled" /> <span class="ml10">赠与免费游戏次数</span></div>
<el-form-item :prop="'gameRuleConditionList.' + index + '.' + 'value'" v-show="item.conditionType == 2">
<div class="flex" v-show="item.conditionType == 2">
<el-select class="w140" v-model="item.conditionJson.type" :disabled="isDisabled">
<el-option :value="22" label="总赠送"></el-option>
<el-option :value="21" label="每日赠送"></el-option>
</el-select>
<el-input-number class="w140" :disabled="isDisabled" placeholder="请输入次数" v-model="item.conditionJson.value" :min="1" :max="1000000" controls-position="right" />
<el-form-item :prop="'gameRuleConditionList.' + index + '.conditionJson.' + 'value'" :rules="{ required: true, message: '请输入次数' }">
<el-input-number class="w140" :disabled="isDisabled" placeholder="请输入次数" v-model="item.conditionJson.value" :min="1" :max="1000000" controls-position="right" />
</el-form-item>
<span class="ml10">次游戏次数</span>
</el-form-item>
</div>
</div>
<div v-if="index == 1">
<div class="flex mb10"><el-checkbox v-model="item.conditionType" :true-label="0" :false-label="-1" :disabled="isDisabled" @change="$emit('change', { val: item.conditionJson.value, type: item.conditionType })" /> <span class="ml10">消耗积分获得游戏次数</span></div>
<div v-show="item.conditionType == 0">
<el-form-item label="参与游戏每次消耗积分" :prop="'gameRuleConditionList.' + index + '.conditionJson.' + 'value'">
<el-input-number class="w140" :disabled="isDisabled" placeholder="请输入积分" v-model="item.conditionJson.value" :min="1" :max="1000000" controls-position="right" @change="$emit('change', { val: item.conditionJson.value, type: item.conditionType })" />
<el-form-item label="参与游戏每次消耗积分" :prop="'gameRuleConditionList.' + index + '.conditionJson.' + 'value'" :rules="{ required: true, message: '请输入积分' }">
<el-input-number class="w140" :disabled="isDisabled" placeholder="请输入积分" v-model="item.conditionJson.value" :min="1" :max="1000000" controls-position="right" @change="$emit('change', { val: item.conditionJson.value, type: item.conditionType, id: 0 })" />
<span class="ml10">积分 </span>
</el-form-item>
<el-form-item label="提示客户积分获取路径" :prop="'gameRuleConditionList.' + index + '.conditionJson.' + 'mpUrlView'" :rules="rules.mpUrlView">
......@@ -61,9 +63,16 @@
</div>
</div>
<div v-if="index == 2">
<div class="flex mb10"><el-checkbox v-model="item.conditionType" :true-label="1" :false-label="-1" :disabled="isDisabled" /><span class="ml10"> 邀请好友助力获得游戏次数</span></div>
<div class="flex mb10"><el-checkbox @change="$emit('change', { val: item.conditionJson.value, type: item.conditionType, id: 1 })" v-model="item.conditionType" :true-label="1" :false-label="-1" :disabled="isDisabled" /><span class="ml10"> 邀请好友助力获得游戏次数</span></div>
<div v-show="item.conditionType == 1">
<el-form-item label="邀请机制" label-width="80px"> 每成功邀请 <el-input-number v-model="item.conditionJson.inviteNum" :min="1" :max="1000000" class="w110 ml10 mr10" controls-position="right" :disabled="isDisabled" />人可获得 <el-input-number v-model="item.conditionJson.value" :min="1" :max="1000000" class="w110 ml10 mr10" controls-position="right" :disabled="isDisabled" />次游戏</el-form-item>
<el-form-item label="邀请机制" label-width="80px">
<div class="flex">
每成功邀请
<el-form-item label-width="0" :prop="'gameRuleConditionList.' + index + '.conditionJson.' + 'inviteNum'" :rules="{ required: true, message: '请输入' }"> <el-input-number v-model="item.conditionJson.inviteNum" :min="1" :max="1000000" class="w110 ml10 mr10" controls-position="right" :disabled="isDisabled" />人可获得 </el-form-item>
<el-form-item label-width="0" :prop="'gameRuleConditionList.' + index + '.conditionJson.' + 'value'" :rules="{ required: true, message: '请输入' }"> <el-input-number v-model="item.conditionJson.value" :min="1" :max="1000000" class="w110 ml10 mr10" controls-position="right" :disabled="isDisabled" />次游戏 </el-form-item>
</div>
</el-form-item>
<el-form-item label="成功邀请条件" label-width="108px">
<el-radio-group v-model="item.conditionJson.type" :disabled="isDisabled">
<el-radio :label="11">注册新会员</el-radio>
......@@ -203,8 +212,8 @@ export default {
type: 11, // 11 注册新会员 12 首次关注服务号
inviteNum: '',
value: '',
subscribeMsg: '',
shareTitle: '',
subscribeMsg: '恭喜你已完成助力',
shareTitle: '我正在参加幸运大盲盒,邀请你一起参加!',
shareCard: '',
shareReport: ''
}
......@@ -345,6 +354,7 @@ export default {
this.ruleForm.gameRuleConditionList[1].conditionJson.dumpPath = link;
this.ruleForm.gameRuleConditionList[1].conditionJson.mpUrlView = linkData;
this.ruleForm.gameRuleConditionList = this.ruleForm.gameRuleConditionList.splice(0);
this.$refs.baseForm.validateField('gameRuleConditionList.' + 1 + '.conditionJson.' + 'mpUrlView');
});
},
beforeAvatarUpload(file, key, size1 = 1) {
......
<template>
<section class="dm-wrap" v-loading="loading">
<div class="pt20 pb20 clearfix">
<el-input v-model="form.search" class="w260" placeholder="请输入姓名/昵称/手机号/会员卡号" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<div class="pb20 clearfix">
<el-input v-model="form.search" class="w270" placeholder="请输入姓名/昵称/手机号/会员卡号" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-date-picker class="w256" v-model="form.dateTime" value-format="yyyy-MM-dd" @change="refresh" type="daterange" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期"> </el-date-picker>
<el-button icon="iconfont fz14 icon-cp-xiazai" type="primary" class="fr" @click="handleExport" size="small" :disabled="!total"> 查询结果导出</el-button>
</div>
......
<template>
<section class="dm-wrap" v-loading="loading">
<div class="pt20 pb20 clearfix">
<div class="pb20 clearfix">
<el-input v-model="form.prizeName" class="w260" placeholder="请输入奖品名称" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-input v-model="form.search" class="w260" placeholder="请输入姓名/昵称/手机号/会员卡号" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-input v-model="form.search" class="w270" placeholder="请输入姓名/昵称/手机号/会员卡号" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-date-picker class="w256" v-model="form.dateTime" value-format="yyyy-MM-dd" @change="refresh" type="daterange" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期"> </el-date-picker>
<el-select class="w160" v-model="form.prizeType" placeholder="所有奖品类型" @change="refresh" clearable>
<el-option v-for="(v, i) in prizeTypeOptions" :key="i" :label="v.label" :value="v.value"></el-option>
......
......@@ -15,7 +15,7 @@
<dm-sub-title title-align="space-between">
<div>
活动数据
<el-button class="check-detail" @click="toDetailPage(1)">查看详情</el-button>
<el-button class="check-detail" @click="toDetailPage(1)" v-if="$getButtonLimit($buttonCode.marketingCmhActivityDetail)" :limit-code="$buttonCode.marketingCmhActivityDetail">查看详情</el-button>
</div>
</dm-sub-title>
<el-row :gutter="20">
......@@ -38,14 +38,14 @@
<dm-sub-title title-align="space-between" class="mb20">
<div>
奖品数据
<el-button class="check-detail" @click="toDetailPage(2)">查看详情</el-button>
<el-button class="check-detail" @click="toDetailPage(2)" v-if="$getButtonLimit($buttonCode.marketingCmhPrizeDetail)" :limit-code="$buttonCode.marketingCmhPrizeDetail">查看详情</el-button>
</div>
</dm-sub-title>
<el-radio-group class="customize" v-model="dimension" @change="radioChange" v-show="dimensionOpt.length > 1">
<el-radio-button :label="item.label" v-for="item in dimensionOpt" :key="item.label">{{ item.value }}</el-radio-button>
</el-radio-group>
<el-table :data="prizeList" style="width:100%" :span-method="objectSpanMethod" v-if="dimension == 1" class="mt20">
<el-table-column v-for="v in tableHeader" :show-overflow-tooltip="v.tooltip" :width="v.width" :min-width="v.minWidth" :align="v.align" :key="v.prop" :prop="v.prop" :label="v.label" :formatter="v.formatter" :sortable="v.sortable" :fixed="v.fixed">
<el-table :data="prizeList" style="width:100%" :span-method="objectSpanMethod" v-show="dimension == 1" class="mt20">
<el-table-column v-for="v in tableHead" :show-overflow-tooltip="v.tooltip" :width="v.width" :min-width="v.minWidth" :align="v.align" :key="v.prop" :prop="v.prop" :label="v.label" :formatter="v.formatter" :sortable="v.sortable" :fixed="v.fixed">
<template slot="header" v-if="v.tipsContent">
{{ v.label }}
<el-tooltip placement="top">
......@@ -61,8 +61,8 @@
</template>
</el-table-column>
</el-table>
<el-table :data="prizeList" style="width:100%" v-else class="mt20">
<el-table-column v-for="v in tableHeader" :show-overflow-tooltip="v.tooltip" :width="v.width" :min-width="v.minWidth" :align="v.align" :key="v.prop" :prop="v.prop" :label="v.label" :formatter="v.formatter" :sortable="v.sortable" :fixed="v.fixed">
<el-table :data="prizeList" style="width:100%" v-show="dimension == 2" class="mt20">
<el-table-column v-for="v in pointHead" :show-overflow-tooltip="v.tooltip" :width="v.width" :min-width="v.minWidth" :align="v.align" :key="v.prop" :prop="v.prop" :label="v.label" :formatter="v.formatter" :sortable="v.sortable" :fixed="v.fixed">
<template slot="header" v-if="v.tipsContent">
{{ v.label }}
<el-tooltip placement="top">
......@@ -225,6 +225,8 @@ export default {
components: { TargetGroup },
data() {
return {
tableHead,
pointHead,
gameStatus: {
0: '未开始',
1: '进行中',
......@@ -364,7 +366,6 @@ export default {
],
cardData: [],
prizeList: [],
tableHeader: [],
gameId: this.$route.params.id,
isShare: false, // 有门槛且配置了分享
isPoint: false, // 有门槛且配置了消耗积分
......@@ -458,11 +459,6 @@ export default {
this.prizeList = result;
prizeType == 1 ? this.handleList() : '';
});
if (prizeType == 1) {
this.tableHeader = tableHead;
} else {
this.tableHeader = pointHead;
}
},
handleList() {
let obj = {};
......
<template>
<div class="steps" v-if="$parent.simple">
<div class="step-item" :class="[$parent.active === index ? 'active' : '']">
<div :class="['step-item', $parent.active === index ? 'active' : '']" :style="canClick ? 'cursor: pointer;' : ''">
<slot name="title"> {{ title }} </slot>
</div>
<span class="triangle" :class="[$parent.active === index ? 'triangle-active' : '', $parent.active == index + 1 ? 'triangle-bg' : 'triangle-default']"></span>
......@@ -44,7 +44,11 @@ export default {
title: String,
icon: String,
description: String,
status: String
status: String,
canClick: {
type: Boolean,
default: false
}
},
data() {
return {
......@@ -278,7 +282,6 @@ export default {
height: 44px;
text-align: center;
line-height: 44px;
cursor: pointer;
font-size: 14px;
}
.triangle {
......
......@@ -111,7 +111,7 @@
.dm-pagination {
text-align: right;
margin: 24px 0 10px 0;
margin: 20px 0 10px 0;
}
.text-left {
text-align: left;
......
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