Commit b6e08e77 by crushh

update: dist

parent 6059d628
......@@ -99,7 +99,7 @@
</el-form-item>
</div>
<dm-form-bottom class="footer">
<el-button type="primary" @click="submit">保存并下一步</el-button>
<el-button type="primary" @click="nextStep()">保存并下一步</el-button>
</dm-form-bottom>
</el-form>
</template>
......@@ -286,6 +286,7 @@ export default {
},
handleTemplateArr(data, echo) {
this.gameExt = data;
const materialKeys = ['mpUrlView', 'adsLinkUrl', 'adsImageUrl'];
data.forEach(item => {
if (item.materialSize) {
const { width, height, size } = JSON.parse(item.materialSize);
......@@ -296,7 +297,7 @@ export default {
this.prizeStyleJson = JSON.parse(item.materialValue);
this.baseForm['prizeStyleJson'] = JSON.parse(item.materialValue);
} else {
if (!this.baseForm[item.materialKey]) {
if (!materialKeys.includes(item.materialKey)) {
this.baseForm[item.materialKey] = item.materialValue;
}
}
......@@ -364,26 +365,30 @@ export default {
handleNameChange(val) {
this.$emit('change', this.baseForm);
},
submit() {
this.$refs.baseForm.validate(val => {
if (val) {
const data = { ...this.baseForm };
let gameExt = [...this.gameExt];
let obj = {};
Object.keys(data).forEach(key => {
let val = gameExt.filter(item => item.materialKey == key)[0];
if (val) {
val.materialValue = data[key];
obj[key] = val;
}
});
obj.backMusicUrl = data.backMusicUrlObj;
data.gameExt = obj;
data.gameExt.prizeStyleJson.materialValue = JSON.stringify(data.gameExt.prizeStyleJson.materialValue);
this.$emit('nextStep', data);
} else {
this.scrollToError(this);
}
nextStep(noNext) {
return new Promise(resolve => {
this.$refs.baseForm.validate(val => {
if (val) {
const data = { ...this.baseForm };
let gameExt = [...this.gameExt];
let obj = {};
Object.keys(data).forEach(key => {
let val = gameExt.filter(item => item.materialKey == key)[0];
if (val) {
val.materialValue = data[key];
obj[key] = val;
}
});
obj.backMusicUrl = data.backMusicUrlObj;
data.gameExt = obj;
data.gameExt.prizeStyleJson.materialValue = JSON.stringify(data.gameExt.prizeStyleJson.materialValue);
resolve(true);
this.$emit('nextStep', data, noNext);
} else {
resolve(false);
this.scrollToError(this);
}
});
});
}
}
......
......@@ -8,7 +8,7 @@
<div class="rightBtn">
<el-button @click="returnNext" v-if="!isInfo">退出</el-button>
<el-button @click="$router.go(-1)" v-else>返回</el-button>
<!-- <el-button type="primary">发布并预览</el-button> -->
<el-button type="primary" @click="submitForm">发布并预览</el-button>
</div>
</div>
<div class="content">
......@@ -34,9 +34,9 @@
<dm-step title="3.规则配置"></dm-step>
</dm-steps>
<div class="formContent">
<baseConfig :gameStatus="gameStatus" :templateArr="templateData" :echoData="baseForm" v-show="active == 0" @change="handleBaseConfigChange" @nextStep="data => nextStep(1, data)" />
<prizeConfig :gameStatus="gameStatus" :invalidCard="invalidCard" :prizeMax="prizeMax" :echoData="prizeForm" :prizeMin="prizeMin" v-show="active == 1" @nextStep="data => nextStep(2, data)" @prevStep="step => (active = step)" />
<ruleConfig :gameStatus="gameStatus" :gameTime="gameTime" :shareCard="shareCard" :shareReport="shareReport" :echoData="ruleForm" v-show="active == 2" @nextStep="data => submit(3, data)" @prevStep="step => (active = step)" :btnLoading="btnLoading" />
<baseConfig ref="baseConfig" :gameStatus="gameStatus" :templateArr="templateData" :echoData="baseForm" v-show="active == 0" @change="handleBaseConfigChange" @nextStep="nextStep" />
<prizeConfig ref="prizeConfig" :gameStatus="gameStatus" :invalidCard="invalidCard" :prizeMax="prizeMax" :echoData="prizeForm" :prizeMin="prizeMin" v-show="active == 1" @nextStep="nextStep" @prevStep="step => active--" />
<ruleConfig ref="ruleConfig" :gameStatus="gameStatus" :gameTime="gameTime" :shareCard="shareCard" :shareReport="shareReport" :echoData="ruleForm" v-show="active == 2" @nextStep="nextStep" @prevStep="step => active--" @submit="submitForm" :btnLoading="btnLoading" />
</div>
</div>
<info :data="echoData" :invalidCard="invalidCard" v-if="isInfo" />
......@@ -236,17 +236,17 @@ export default {
this.getGameDetail(id);
}
},
nextStep(step, data) {
this.active = step;
console.log(data);
this.submitData = { ...this.submitData, ...data };
nextStep(data, noNext) {
if (!noNext) {
this.active++;
} else {
this.submitData = { ...this.submitData, ...data };
}
},
async submit(step, data) {
this.submitData = { ...this.submitData, ...data };
console.log(this.submitData);
async handleSubmitData() {
console.log('=====》submit');
this.submitData = JSON.parse(JSON.stringify(this.submitData));
console.log(this.submitData);
const { ruleId, winChance, filterJson, filterJsonView, memberDesc, memberType, playConditionFlag, playTimes, shareFlag, shareImageUrl, gameRuleConditionList, gameName, gamePrizeList, prizeNoticeStock, prizeNoticeFlag, adsFlag, bulletFlag, backMusicFlag, templateId, gameRule, gameTime, gameExt } = this.submitData;
const gameRuleInfo = { ruleId, winChance, filterJson, filterJsonView, memberDesc, memberType, playConditionFlag, playTimes, shareFlag, shareImageUrl, shareRuleDesc: gameName };
let cardIdArr = [];
......@@ -336,6 +336,23 @@ export default {
.finally((this.btnLoading = false));
});
},
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)) {
return true;
} else {
this.$message.error('请确认必填字段都已填写且通过校验');
return false;
}
});
},
submitForm() {
this.validator().then(val => {
if (!val) return;
this.handleSubmitData();
});
},
getLink(row) {
const { startDate, gameId, gameName } = row;
this.gameId = gameId;
......
......@@ -348,7 +348,7 @@ img {
.ad-image {
margin: 39px 15px 15px;
border-radius: 8px;
height: 150px;
height: 75px;
width: calc(100% - 30px);
}
......
......@@ -191,7 +191,7 @@ export default {
limitCode: this.$buttonCode.marketingCmhStop
},
visible: row => {
return row.status === 1 && this.$getButtonLimit(this.$buttonCode.marketingCmhStop);
return (row.status === 1 || row.status === 0) && this.$getButtonLimit(this.$buttonCode.marketingCmhStop);
},
handler: row => this.stopGame(row)
},
......
......@@ -38,7 +38,7 @@
<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>
{{ row.prizeName }}
{{ row.prizeNameStr }}
</div>
</div>
</el-form-item>
......@@ -72,7 +72,7 @@
<template slot-scope="{ row, $index }">
<div v-if="row.prizeType == 1 || row.prizeType == 2" style="width:60px;height:62px">
<el-form-item :prop="'gamePrizeList.' + $index + '.' + 'prizeImageUrl'" :rules="rules.prizeImageUrl" label-width="0">
<dm-upload-avatar class="upload-avatar" width="60" height="60" :limit="{ type: false, maxSize: 1 }" fileType="img" :model.sync="row.prizeImageUrl" tips="" @backImg="obj => handleImgback(obj, row)" :unused="row.isInfo"></dm-upload-avatar>
<dm-upload-avatar class="upload-avatar" width="60" height="60" :limit="{ type: false, maxSize: 1 }" fileType="img" :model.sync="row.prizeImageUrl" tips="" :unused="row.isInfo"></dm-upload-avatar>
</el-form-item>
</div>
<el-form-item label-width="0" v-else>
......@@ -143,7 +143,7 @@
</el-form-item>
<dm-form-bottom class="footer">
<el-button @click="prevStep">上一步</el-button>
<el-button type="primary" @click="submit">保存并下一步</el-button>
<el-button type="primary" @click="nextStep()">保存并下一步</el-button>
</dm-form-bottom>
<libCard :show.sync="show" @sendItem="sendItem" :cardLimitType="-1" :cardLimit="1" />
</el-form>
......@@ -153,6 +153,7 @@
import dmUploadAvatar from '@/components/upload/avatar';
import libCard from '@/views/sign/components/lib-card.vue';
import Sortable from 'sortablejs';
import { cardView } from '@/service/api/gameApi.js';
export default {
data() {
const prizeNoticeStockVal = (rule, value, callback) => {
......@@ -251,6 +252,9 @@ export default {
if (item.prizeImageUrl) {
item.prizeImageUrl = { imgUrl: item.prizeImageUrl, code: item.prizeImageUrl };
}
if (item.prizeType == 2) {
item.prizeNameStr = item.prizeName;
}
if (this.isEdit) {
item.prizeStockOriginal = item.prizeStock;
} else {
......@@ -263,6 +267,19 @@ export default {
},
invalidCard(val) {
console.log('invalidCard====>');
this.handleInvalidCard(val);
}
},
methods: {
async cardView() {
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) {
item.status = val[item.prizeRelationId].invalid;
......@@ -273,9 +290,8 @@ export default {
}
}
});
}
},
methods: {
},
prizeStockRule(row) {
return (rule, value, callback) => {
if (row.prizeType == 1) {
......@@ -321,9 +337,6 @@ export default {
}
});
},
handleImgback(obj, row) {
console.log(obj, row);
},
selectCard(index) {
this.show = true;
this.index = index;
......@@ -333,6 +346,7 @@ export default {
const data = this.prizeForm.gamePrizeList[this.index];
data.prizeRelationId = selectedData.coupCardId;
data.prizeName = selectedData.cardName.length > 10 ? selectedData.cardName.slice(0, 10) : selectedData.cardName;
data.prizeNameStr = data.prizeName;
data.prizeImageUrl = { imgUrl: this.imgeType[selectedData.cardType], code: this.imgeType[selectedData.cardType] };
data.prizeNumber = 1;
data.status = 0;
......@@ -340,7 +354,7 @@ export default {
this.prizeForm.gamePrizeList = this.prizeForm.gamePrizeList.splice(0);
},
addPrize() {
this.prizeForm.gamePrizeList.push({ sort: this.prizeForm.gamePrizeList.length, exchangeType: 0, isOld: 0 });
this.prizeForm.gamePrizeList.push({ sort: this.prizeForm.gamePrizeList.length, exchangeType: 0, isOld: 0, prizeName: '' });
},
del(index) {
this.prizeForm.gamePrizeList.splice(index, 1);
......@@ -353,6 +367,7 @@ export default {
data.prizeRelationId = '';
data.prizeImageUrl = '';
this.prizeForm.gamePrizeList = this.prizeForm.gamePrizeList.splice(0);
this.$refs.prizeForm.clearValidate(`gamePrizeList.${index}.prizeStock`);
},
handleTypeChange(val, index) {
console.log(val, index);
......@@ -397,9 +412,9 @@ export default {
this.prizeForm.gamePrizeList = this.prizeForm.gamePrizeList.splice(0);
},
prevStep() {
this.$emit('prevStep', 0);
this.$emit('prevStep');
},
submit() {
validateData() {
let invalid = false;
let arr = [];
this.$refs.prizeForm.validate(val => {
......@@ -408,12 +423,12 @@ export default {
this.scrollToError(this);
}
});
if (!this.boolVal) return;
if (!this.boolVal) return false;
this.prizeForm.gamePrizeList.forEach(item => {
if (item.prizeType == 2 && item.status != 0 && !item.isOld) {
invalid = true;
this.$message.error(`${item.prizeName}${item.status == 1 ? '删除' : '失效'},请重新关联奖品`);
return;
return false;
}
if (item.prizeType == 0) {
arr.push(item);
......@@ -421,39 +436,47 @@ export default {
});
if (!arr.length) {
this.$message.error('请至少包含一个谢谢参与的奖项');
return;
return false;
}
if (invalid) return;
if (invalid) return false;
if (this.prizeForm.gamePrizeList.length < this.prizeMin) {
this.$message.error(`请配置至少${this.prizeMin}个奖项`);
return;
return false;
}
if (this.prizeForm.gamePrizeList.length > this.prizeMax) {
this.$message.error(`请配置最多${this.prizeMax}个奖项`);
return;
return false;
}
let data = { ...this.prizeForm };
data = JSON.parse(JSON.stringify(data));
data.gamePrizeList.forEach(item => {
if (item.prizeImageUrl) {
item.prizeImageUrl = item.prizeImageUrl.imgUrl || '';
}
if (item.prizeType == 0) {
item.prizeStock = -1;
}
if (item.prizeType != 0) {
if (this.isEdit && item.isOld) {
let num = item.prizeStock - item.prizeStockOriginal;
item.optNum = num;
} else {
item.optNum = item.prizeStock;
}
} else {
item.optNum = -1;
return true;
},
nextStep(noNext) {
return new Promise(resolve => {
const val = this.validateData();
if (val) {
let data = { ...this.prizeForm };
data = JSON.parse(JSON.stringify(data));
data.gamePrizeList.forEach(item => {
if (item.prizeImageUrl) {
item.prizeImageUrl = item.prizeImageUrl.imgUrl || '';
}
if (item.prizeType == 0) {
item.prizeStock = -1;
}
if (item.prizeType != 0) {
if (this.isEdit && item.isOld) {
let num = item.prizeStock - item.prizeStockOriginal;
item.optNum = num;
} else {
item.optNum = item.prizeStock;
}
} else {
item.optNum = -1;
}
});
this.$emit('nextStep', data, noNext);
}
resolve(val);
});
this.$emit('nextStep', data);
}
}
};
......
......@@ -225,7 +225,8 @@ export default {
},
isAdd: this.$route.meta.type === 'add',
isEdit: this.$route.meta.type === 'edit',
gameDays: 0
gameDays: 0,
boolVal: true
};
},
props: {
......@@ -377,26 +378,36 @@ export default {
return true;
},
prevStep() {
this.$emit('prevStep', 1);
this.$emit('prevStep');
},
clearValidate(name) {
this.$refs.ruleForm.clearValidate(name);
},
submit() {
validateData() {
if (this.ruleForm.playConditionFlag == 1 && !this.ruleForm.gameRuleConditionList.filter(item => item.conditionType != -1).length) {
this.$message.error('请至少勾选一项');
return;
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 (maxTimes > this.ruleForm.playTimes) {
this.$message.error(`每人最多可玩次数需大于免费游戏次数${maxTimes}`);
return;
return false;
}
}
this.$refs.ruleForm.validate((val, obj) => {
this.$refs.ruleForm.validate(val => {
this.boolVal = val;
if (!val) {
this.scrollToError(this);
}
});
if (!this.boolVal) return false;
return true;
},
nextStep(noNext) {
return new Promise(resolve => {
const val = this.validateData();
if (val) {
const data = { ...this.ruleForm };
const arr = [];
......@@ -412,12 +423,13 @@ export default {
});
data.gameRuleConditionList = arr;
console.log(data);
this.$emit('nextStep', data);
} else {
this.scrollToError(this);
this.$emit('nextStep', data, noNext);
}
console.log(obj);
resolve(val);
});
},
submit() {
this.$emit('submit');
}
}
};
......
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