Commit e6f21ae6 by crushh

update: dist

parent c90d88d6
......@@ -78,7 +78,7 @@
</div>
</el-form-item>
<el-form-item label="氛围弹幕">
<el-switch v-model="baseForm.bulletFlag" :active-value="1" :inactive-value="0" />
<el-switch v-model="baseForm.bulletFlag" :active-value="1" :inactive-value="0" @change="handleDateChange" />
<div class="tips mt10">开启后,如有三名以上用户获奖后,活动首页将轮播展示用户中奖信息。</div>
</el-form-item>
<el-form-item label="广告位">
......
......@@ -21,7 +21,7 @@
<div class="iphone" v-if="menuActive == 0">
<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" />
<gameTemplate :bgImg="bgImg" :tipsImg="tipsImg" :boxImg="boxImg" :adImg="adImg" :ruleData="ruleData" :templateId="templateId" :bullet="bullet" />
</div>
<div class="iphone" v-else>
<img :src="computedImg" />
......@@ -75,6 +75,7 @@ export default {
tipsImg: '',
boxImg: '',
adImg: '',
bulletImage: '',
btnLoading: false,
submitData: {},
isEdit: this.$route.meta.type === 'edit',
......@@ -209,13 +210,17 @@ export default {
handleBaseConfigChange(data) {
console.log('handleBaseConfigChange----->');
console.log(data);
const { backImageUrl, noticeImageUrl, adsImageUrl, gameName, templateId, shareCard, shareReport, gameTime, shareCardSize0, shareCardSize1, shareReportSize1, shareReportSize0 } = 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;
this.gameName = gameName;
this.templateId = templateId;
this.bullet = {
bulletImageUrl,
bulletFlag
};
this.shareImgData = {
shareCard,
shareReport,
......@@ -371,16 +376,18 @@ export default {
validator() {
// 校验必填
return Promise.all([this.$refs.baseConfig.nextStep('noNext'), this.$refs.prizeConfig.nextStep('noNext'), this.$refs.ruleConfig.nextStep('noNext')]).then(val => {
if (!val.includes(false)) {
console.log(val);
if (!val.includes(false) && !val.includes(0)) {
return true;
} else {
this.$message.error('请确认必填字段都已填写且通过校验');
val.includes(0) ? this.$message.error('请确认必填字段都已填写且通过校验') : '';
return false;
}
});
},
submitForm() {
this.validator().then(val => {
console.log(val);
if (!val) return;
this.handleSubmitData();
});
......
......@@ -4,13 +4,14 @@
<div class="content">
<div class="right-btn rule">游戏规则</div>
<div class="right-btn award">我的奖品</div>
<div class="music-icon iconfont" :class="isPlay ? 'icon-yinfu' : 'icon-xingzhuangjiehe2x'"></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" />
<span>恭喜 张* 获得 100元优惠券</span>
</div>
<div class="box-box">
<img v-for="item in boxList" :key="item" :src="boxImg" :style="{ left: item.left, top: item.top }" @click="showOpenBoxDialog = true" />
</div>
<div class="points-count-box">
<div class="text-box">
<div class="text">1500</div>
......@@ -110,7 +111,6 @@ export default {
return {
list: ['刷卡拉拉卡', '阿拉卡萨卢克和史莱克', '刷卡拉拉卡', '阿拉卡萨卢克和史莱克'],
boxList: box9,
isPlay: true,
name: '猜盲盒'
};
},
......@@ -131,6 +131,10 @@ export default {
type: String,
default: ''
},
bullet: {
type: Object,
default: () => {}
},
ruleData: {
type: Object,
default: () => {}
......@@ -169,7 +173,6 @@ img {
position: relative;
z-index: 1;
}
.music-icon {
text-align: center;
width: 30px;
......@@ -234,7 +237,7 @@ img {
.integral {
position: absolute;
z-index: 2;
top: 126px;
top: 98px;
left: 50%;
transform: translateX(-50%);
min-width: 120px;
......@@ -250,22 +253,16 @@ img {
font-size: 12px;
}
.swiper-class {
position: absolute;
left: 20px;
top: 160px;
z-index: 10;
width: 300px;
height: 36px;
}
.swiper-item {
width: 300px;
height: 36px;
box-sizing: border-box;
border-radius: 17px 0 0 17px;
position: relative;
display: flex;
align-items: center;
position: absolute;
top: 129px;
left: 19px;
}
.swiper-item img {
position: absolute;
......@@ -401,6 +398,28 @@ 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%;
......
......@@ -97,7 +97,7 @@
</div>
</el-descriptions-item>
</el-descriptions>
<div v-if="form.gameRuleInfo.memberType == 0 && form.gameRuleInfo.filterJson">
<div v-show="form.gameRuleInfo.memberType == 0 && form.gameRuleInfo.filterJson">
<vue-gic-people projectName="marketing" :isAdd="false" :hasSearchData="form.gameRuleInfo.filterJson" :useId="form.memberWeightView.searchId" sceneValue="member" ref="peopleFilter" @editShow="toggleTag = true" @editHide="toggleTag = false" @hideBtn="toggleTag = false" />
<div class="gic-people--button" v-show="toggleTag">
<el-button size="small" type="primary" :disabled="true"> </el-button>
......@@ -286,10 +286,18 @@ export default {
}
});
let prizeArr = this.form.gamePrizeList.filter(item => item.prizeType == 0);
prizeArr.forEach(item => {
const prizeRate = (100 - this.form.gameRuleInfo.winChance) / prizeArr.length || 0;
item.prizeRate = prizeRate.toFixed(2);
});
if (!prizeNumTotal) {
prizeArr.forEach(item => {
const prizeRate = 100 / prizeArr.length || 0;
item.prizeRate = prizeRate.toFixed(2);
});
} else {
prizeArr.forEach(item => {
const prizeRate = (100 - this.form.gameRuleInfo.winChance) / prizeArr.length || 0;
item.prizeRate = prizeRate.toFixed(2);
});
}
this.form.gamePrizeList = this.form.gamePrizeList.splice(0);
},
handleListen() {
......
......@@ -34,7 +34,7 @@
<el-form-item label-width="0" v-else-if="row.prizeType == 2">
<el-button type="text" @click="selectCard($index)" v-show="!row.prizeRelationId">选择卡券</el-button>
<div class="box" v-show="row.prizeRelationId">
<i v-show="!isDisabled && !row.isOld" class="cardIcon iconfont-components3 icon-cp-close-circle-fill" @click="delCard($index)"></i>
<i v-show="!isDisabled || !row.isOld" class="cardIcon iconfont-components3 icon-cp-close-circle-fill" @click="delCard($index)"></i>
<div :class="['cardBox', row.status == 1 || row.status == 2 ? 'redBorder' : '']">
<el-tag v-show="row.status == 1" size="mini" type="danger" class="tagIcon">删除</el-tag>
<el-tag v-show="row.status == 2" size="mini" type="danger" class="tagIcon">失效</el-tag>
......@@ -95,7 +95,7 @@
<template slot-scope="{ row }">
<div v-if="row.prizeType == 1 || row.prizeType == 2">
<el-form-item label-width="0">
<el-input v-model="row.prizeDesc" maxlength="60" placeholder="不超过60个字" />
<el-input v-model="row.prizeDesc" maxlength="30" placeholder="不超过30个字" />
</el-form-item>
</div>
<el-form-item label-width="0" v-else>
......@@ -244,6 +244,11 @@ export default {
},
mounted() {
this.drag();
document.addEventListener('visibilitychange', () => {
if (!document.hidden) {
this.cardView();
}
});
},
watch: {
echoData(val) {
......@@ -275,15 +280,14 @@ export default {
let cardIdArr = this.prizeForm.gamePrizeList.filter(item => item.prizeType == 2).map(item => item.prizeRelationId);
if (cardIdArr.length) {
const { result } = await cardView({ ids: cardIdArr.join(',') });
console.log(result);
this.handleInvalidCard(result);
}
},
handleInvalidCard(val) {
this.prizeForm.gamePrizeList.forEach(item => {
if (item.prizeType == 2) {
if (item.prizeType == 2 && val[item.prizeRelationId]) {
item.status = val[item.prizeRelationId].invalid;
if (this.isEdit) {
if (this.isEdit && item.isOld) {
item.max = item.prizeStock + val[item.prizeRelationId].stock;
} else {
item.max = val[item.prizeRelationId].stock;
......@@ -342,7 +346,6 @@ export default {
this.index = index;
},
sendItem(selectedData) {
console.log(selectedData);
const data = this.prizeForm.gamePrizeList[this.index];
data.prizeRelationId = selectedData.coupCardId;
data.prizeName = selectedData.cardName.length > 10 ? selectedData.cardName.slice(0, 10) : selectedData.cardName;
......@@ -361,7 +364,6 @@ export default {
this.calculateRate();
},
delCard(index) {
console.log(index);
const data = this.prizeForm.gamePrizeList[index];
data.prizeName = '';
data.prizeRelationId = '';
......@@ -370,7 +372,6 @@ export default {
this.$refs.prizeForm.clearValidate(`gamePrizeList.${index}.prizeStock`);
},
handleTypeChange(val, index) {
console.log(val, index);
this.prizeForm.gamePrizeList[index].prizeName ? delete this.prizeForm.gamePrizeList[index].prizeName : '';
this.prizeForm.gamePrizeList[index].prizeNumber ? delete this.prizeForm.gamePrizeList[index].prizeNumber : '';
this.prizeForm.gamePrizeList[index].optNum ? delete this.prizeForm.gamePrizeList[index].optNum : '';
......@@ -395,17 +396,26 @@ export default {
},
calculateRate() {
const prizeNumTotal = this.prizeForm.gamePrizeList.map(item => (item.prizeType != 0 ? item.prizeStock : 0)).reduce((pre, current) => pre + current);
console.log(prizeNumTotal);
this.prizeForm.gamePrizeList.forEach(item => {
if (item.prizeType != 0) {
const prizeRate = this.prizeForm.winChance * (item.prizeStock / prizeNumTotal);
item.prizeRate = prizeRate.toFixed(2);
const prizeRate = prizeNumTotal ? this.prizeForm.winChance * (item.prizeStock / prizeNumTotal) : 0;
item.prizeRate = prizeRate.toFixed(2) || 0;
}
});
let prizeArr = this.prizeForm.gamePrizeList.filter(item => item.prizeType == 0);
prizeArr.forEach(item => {
const prizeRate = (100 - this.prizeForm.winChance) / prizeArr.length || 0;
item.prizeRate = prizeRate.toFixed(2);
});
if (!prizeNumTotal) {
prizeArr.forEach(item => {
const prizeRate = 100 / prizeArr.length || 0;
item.prizeRate = prizeRate.toFixed(2);
});
} else {
prizeArr.forEach(item => {
const prizeRate = (100 - this.prizeForm.winChance) / prizeArr.length || 0;
item.prizeRate = prizeRate.toFixed(2);
});
}
this.prizeForm.gamePrizeList = this.prizeForm.gamePrizeList.splice(0);
},
prevStep() {
......
......@@ -3,8 +3,8 @@
<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')">
<el-radio :label="0">会员筛选</el-radio>
<el-radio :label="1">会员分组</el-radio>
<el-radio :label="0">客户筛选</el-radio>
<el-radio :label="1">客户分组</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item>
......@@ -171,8 +171,8 @@ export default {
memberType: 0,
memberDesc: '',
playConditionFlag: 0,
shareFlag: 1,
playTimes: '',
shareFlag: 0,
playTimes: 1000,
filterJsonView: '',
shareImageUrl: '',
memberWeightView: { searchId: '' },
......@@ -182,7 +182,7 @@ export default {
type: 2,
conditionType: -1, // 赠与免费游戏次数
conditionJson: {
type: 21,
type: 22,
value: ''
}
},
......@@ -212,7 +212,6 @@ export default {
]
},
toggleTag: false, // 控制按钮显示的参数,仅供参考,可自行修改
rules: {
memberType: { required: true, message: '请选择' },
memberDesc: { type: 'string', required: true, message: '请输入适用人群说明', trigger: 'blur' },
......@@ -290,7 +289,6 @@ export default {
console.log(this.ruleForm);
},
gameTime(val) {
console.log(val);
if (val.length) {
console.log(val[1] - val[0]);
console.log((val[1] - val[0]) / (24 * 60 * 60 * 1000) + 1);
......@@ -396,13 +394,17 @@ export default {
this.$refs.ruleForm.clearValidate(name);
},
validateData() {
if (this.ruleForm.memberType == 0 && this.toggleTag && !this.ruleForm.filterJsonView) {
this.$message.error('人群筛选未保存条件');
return false;
}
if (this.ruleForm.playConditionFlag == 1 && !this.ruleForm.gameRuleConditionList.filter(item => item.conditionType != -1).length) {
this.$message.error('请至少勾选一项');
return false;
}
const conditionType2 = this.ruleForm.gameRuleConditionList.filter(item => item.conditionType == 2);
if (this.ruleForm.playConditionFlag == 1 && conditionType2.length && conditionType2[0].conditionJson.type == 21) {
const maxTimes = conditionType2[0].conditionJson.type == 21 ? conditionType2[0].conditionJson.value : conditionType2[0].conditionJson.value * this.gameDays;
if (this.ruleForm.playConditionFlag == 1 && conditionType2.length) {
const maxTimes = conditionType2[0].conditionJson.type == 22 ? conditionType2[0].conditionJson.value : conditionType2[0].conditionJson.value * this.gameDays;
if (maxTimes > this.ruleForm.playTimes) {
this.$message.error(`每人最多可玩次数需大于免费游戏次数${maxTimes}`);
return false;
......@@ -414,7 +416,7 @@ export default {
this.scrollToError(this);
}
});
if (!this.boolVal) return false;
if (!this.boolVal) return 0;
return true;
},
nextStep(noNext) {
......
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