Commit a2fbf591 by crushh

Merge branch 'feature/游戏营销' into dev

parents a6a4e114 b3a4b2f7
......@@ -144,6 +144,9 @@ a:hover {
.mt5{
margin-top: 5px!important;
}
.mt6{
margin-top: 6px!important;
}
.mt10{
margin-top: 10px!important;
}
......@@ -271,6 +274,9 @@ a:hover {
.w260{
width: 260px!important;
}
.w270{
width: 270px!important;
}
.w280{
width: 280px!important;
}
......@@ -607,12 +613,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 +626,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 +635,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;
......@@ -697,4 +704,5 @@ img::after {
color: #303133;
width: 100%;
}
}
\ No newline at end of file
}
\ No newline at end of file
......@@ -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{
......
......@@ -17,7 +17,7 @@
<span class="groupName"> {{ item.groupName }}</span>
</div>
</div>
<el-dialog title="选择客户分组" :visible.sync="visiable" width="1000px" :before-close="close">
<el-dialog title="选择客户分组" :visible.sync="visiable" width="1000px" :before-close="close" custom-class="member-group-dialog" class="member-group-dialog-wrap">
<div class="member-group">
<div class="left">
<el-tabs v-model="activeName">
......@@ -252,9 +252,29 @@ export default {
</script>
<style lang="scss" scoped>
.member-group-dialog-wrap {
display: flex;
align-items: center;
justify-content: center;
}
.member-group-dialog {
margin: 0 !important;
padding: 0 4px 4px;
max-height: 700px;
.el-dialog__header {
display: none;
}
.el-dialog__body {
padding-bottom: 0 !important;
}
.el-dialog__footer {
padding: 20px 0;
}
}
.delBtn {
color: #f5222d;
}
.space-between {
display: flex;
justify-content: space-between;
......
......@@ -76,6 +76,10 @@ export default {
height: 100
};
}
},
imgType: {
type: String,
default: 'jpg/jpeg/png/gif'
}
},
data() {
......
......@@ -44,13 +44,21 @@ export default {
el.addEventListener('change', function(e) {
if (e.target.value) binding.value.loading = true;
else return;
console.log(binding.value);
console.log(el.files);
const size = binding.value.limit && binding.value.limit.maxSize ? binding.value.limit.maxSize : 2; // 默认最大2M限制
if (el.files[0].size > size * 1024 * 1024) {
binding.value.$tips({ type: 'warning', message: `上传${binding.value.fileType.indexOf('image') >= 0 ? '图片' : '文件'}不能大于${size}M` });
binding.value.loading = false;
return;
}
if (binding.value.imgType) {
const arr = binding.value.imgType.split('/');
if (!arr.includes(el.files[0].type.split('/')[1])) {
binding.value.$tips({ type: 'warning', message: `请上传${binding.value.imgType}类型` });
binding.value.loading = false;
return;
}
}
// 启用限制图片宽高大小
if (binding.value.limit && binding.value.limit.type) {
const { width, height } = binding.value.limit;
......
......@@ -109,7 +109,7 @@
.dm-pagination {
text-align: right;
margin: 24px 0 10px 0;
margin: 20px 0 10px 0;
}
.text-left {
text-align: left;
......
......@@ -3,11 +3,11 @@
<dm-sub-title type="line">基本信息</dm-sub-title>
<div class="mt20">
<el-form-item label="游戏名称" prop="gameName"> <el-input maxlength="10" class="w382" @change="handleNameChange" v-model.trim="baseForm.gameName" show-word-limit :disabled="isDisabled" placeholder="请输入游戏名称" /> </el-form-item>
<el-form-item label="游戏时间" prop="gameTime"><el-date-picker class="w382" v-model="baseForm.gameTime" :disabled="isDisabled" :picker-options="pickerOptions" value-format="timestamp" @change="handleDateChange" type="daterange" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期"> </el-date-picker></el-form-item>
<el-form-item label="游戏时间" prop="gameTime"><el-date-picker class="w382" v-model="baseForm.gameTime" :disabled="isDisabled" :picker-options="pickerOptions" value-format="timestamp" @change="handleDateChange(val, 'gameTime')" type="daterange" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期"> </el-date-picker></el-form-item>
<el-form-item label="游戏说明" prop="gameRule"> <el-input maxlength="500" class="w382" v-model="baseForm.gameRule" show-word-limit :autosize="{ minRows: 4 }" type="textarea" /> </el-form-item>
</div>
<dm-sub-title type="line">展示信息配置</dm-sub-title>
<div class="mt20">
<div class="mt20" style="margin-bottom: 32px">
<el-form-item label="游戏模板" prop="templateId">
<el-radio-group @change="handleTemplateChange" v-model="baseForm.templateId" :disabled="isDisabled">
<el-radio v-for="item in templateData" :label="item.templateId" :key="item.templateId">{{ item.templateName }}</el-radio>
......@@ -21,11 +21,11 @@
</el-upload>
</div>
<div class="tips">图片建议尺寸{{ baseForm.backImageUrlSize0 }},格式 jpg/png/gif,大小 {{ baseForm.backImageUrlSize1 }} M以内。</div>
<div class="tips mt6">图片建议尺寸{{ baseForm.backImageUrlSize0 }},格式 jpg/jpeg/png/gif,大小 {{ baseForm.backImageUrlSize1 }} M以内。</div>
</el-form-item>
<el-form-item label="抽奖样式">
<div class="lottery">
<div class="tips">图片建议尺寸{{ baseForm.prizeStyleJsonSize0 }}或等比图片,格式 jpg/png/gif,大小 {{ baseForm.prizeStyleJsonSize1 }}M 以内。</div>
<div class="tips">图片建议尺寸{{ baseForm.prizeStyleJsonSize0 }}或等比图片,格式 jpg/jpeg/png/gif,大小 {{ baseForm.prizeStyleJsonSize1 }}M 以内。</div>
<div v-for="item in baseForm.prizeStyleJson" :key="item.index">
<div class="imgContent">
<div class="imageOrigin">
......@@ -63,10 +63,10 @@
<el-button type="text" class="ml16">替换图片</el-button>
</el-upload>
</div>
<div class="tips">图片建议尺寸 {{ baseForm.noticeImageUrlSize0 }},格式 jpg/png/gif,大小 {{ baseForm.noticeImageUrlSize1 }}M以内。</div>
<div class="tips mt6">图片建议尺寸 {{ baseForm.noticeImageUrlSize0 }},格式 jpg/jpeg/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,11 +82,11 @@
<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(val, 'adsFlag')" />
<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>
<div class="tips">图片建议尺寸{{ baseForm.adsImageUrlSize0 }}或等比图片,格式 jpg/png/gif,大小{{ baseForm.adsImageUrlSize1 }} M以内。</div>
<div class="tips">图片建议尺寸{{ baseForm.adsImageUrlSize0 }}或等比图片,格式 jpg/jpeg/png/gif,大小{{ baseForm.adsImageUrlSize1 }} M以内。</div>
</el-form-item>
<el-form-item label="小程序跳转路径" prop="link" label-width="110px" :rules="rules.link">
<div class="wxapp mr16" v-if="selectLink.linkData.name">
......@@ -250,9 +250,23 @@ export default {
}
},
methods: {
handleDateChange(val) {
console.log(val);
handleDateChange(val, type) {
console.log(val, type);
this.$emit('change', this.baseForm);
if (type == 'adsFlag') {
this.$nextTick(_ => {
const adsImg = document.getElementsByClassName('adsImg');
adsImg[0].scrollIntoView({
// 滚动到指定节点
// 值有start,center,end,nearest,当前显示在视图区域中间
block: 'center',
// 值有auto、instant,smooth,缓动动画(当前是慢速的)
behavior: 'smooth'
});
});
} else if (type == 'gameTime' && this.baseForm.gameTime && this.baseForm.gameTime.length) {
this.baseForm.gameTime[1] = this.baseForm.gameTime[1] + 86399000;
}
},
handleTemplateChange(val) {
this.baseForm.templateId = val;
......@@ -266,7 +280,7 @@ export default {
const arr = ['image/gif', 'image/jpeg', 'image/png'];
const limit = file.size / 1024 / 1024 < size1;
if (!arr.includes(file.type)) {
this.$message.warning('只能上传jpg/png/gif格式文件!');
this.$message.warning('只能上传jpg/jpeg/png/gif格式文件!');
return false;
}
if (!limit) {
......@@ -485,6 +499,7 @@ img {
border-radius: 2px 0px 0px 2px;
box-sizing: border-box;
border-right: none;
color: #2f54eb;
}
.musicSelect {
width: 380px;
......
......@@ -20,9 +20,9 @@
</el-menu>
<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" />
<img :src="computedImg" v-else style="min-height:724px;" />
<img src="../../../assets/img/Navbar.png" class="braImg" alt="" />
<gameTemplate :ruleData="ruleData" :templateId="templateId" :basicData="previewData" v-show="menuActive == 0" />
<img :src="computedImg" v-show="menuActive != 0" style="min-height:724px;margin-top: 70px;" />
</div>
</div>
<div class="rightForm" v-show="!isInfo">
......@@ -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="goList">进入游戏列表</el-button>
</links>
</div>
</template>
......@@ -67,7 +67,7 @@ export default {
prizeMax: 10,
prizeMin: 1,
gameName: '游戏名称',
templateId: '',
templateId: 1,
menuList: ['首页', '活动规则', '我的奖品', '中奖', '未中奖', '分享效果'],
bgImg: '',
tipsImg: '',
......@@ -90,8 +90,17 @@ export default {
echoData: {},
shareImgData: {},
loading: false,
ruleData: {},
bullet: {}
ruleData: {
0: {},
1: {}
},
previewData: {},
documentTitle: {
edit: '幸运盲盒编辑',
add: '幸运盲盒新建',
copy: '幸运盲盒复制',
info: '幸运盲盒查看'
}
};
},
computed: {
......@@ -118,9 +127,7 @@ export default {
},
mounted() {
this.getGameTemplateByType();
window.addEventListener('scroll', function(e) {
console.log('scroll');
});
document.title = this.documentTitle[this.$route.meta.type];
},
watch: {
templateId(val) {
......@@ -171,15 +178,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 +218,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 +232,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;
......@@ -281,7 +278,7 @@ export default {
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 };
const gameRuleInfo = { ruleId, winChance, filterJson, filterJsonView, memberDesc, memberType, playConditionFlag, playTimes, shareFlag, shareImageUrl };
let cardIdArr = [];
let zeroStock = [];
gamePrizeList.forEach(item => {
......@@ -315,13 +312,18 @@ export default {
return;
}
}
gameRuleConditionList.forEach(item => {
if (item.conditionType == 1) {
gameExt.shareCard.materialValue = item.conditionJson.shareCard;
gameExt.shareReport.materialValue = item.conditionJson.shareReport;
gameRuleInfo.shareRuleDesc = item.conditionJson.shareTitle;
}
item.conditionJson = JSON.stringify(item.conditionJson);
});
if (!gameRuleConditionList.filter(item => item.conditionType == 1).length) {
gameRuleInfo.shareRuleDesc = gameName;
}
if (this.isCopy) {
Object.values(gameExt).forEach(item => {
delete item.gameExtId;
......@@ -407,6 +409,9 @@ export default {
window.location.href = window.location.origin + `/marketing/#/game/cmh/edit/${this.gameId}`;
window.location.reload();
// this.$router.push(`/game/cmh/edit/${this.gameId}`);
},
goList() {
window.close();
}
}
};
......@@ -484,7 +489,6 @@ export default {
}
.iphone {
width: 375px;
background: #ffffff;
border-radius: 8px 8px 0px 0px;
margin: 0 20px 0 13px;
position: relative;
......@@ -496,17 +500,23 @@ export default {
}
.gameTitle {
font-size: 17px;
position: absolute;
position: sticky;
color: #000000;
font-weight: 600;
z-index: 100;
z-index: 101;
top: 56px;
width: 100%;
height: 20px;
display: flex;
justify-content: center;
}
.braImg {
position: fixed;
z-index: 100;
top: 76px;
}
.rightForm {
padding: 30px 20px 0 30px;
padding: 30px 20px 0 20px;
box-sizing: border-box;
width: calc(100vw - 520px);
height: calc(100vh - 108px);
......@@ -514,7 +524,7 @@ export default {
.formContent {
margin-top: 20px;
overflow-y: auto;
height: 90%;
height: calc(100% - 66px);
}
}
</style>
<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,8 +29,8 @@
</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>
......@@ -67,42 +68,43 @@ const box6 = [
top: '338px'
}
];
const box9 = [
{
left: '51%',
top: '214px'
left: 'calc(51% - 0px)',
top: '204px'
},
{
left: '33%',
top: '262px'
left: 'calc(33% - 0px)',
top: '252px'
},
{
left: '66%',
top: '258px'
left: 'calc(66% - 0px)',
top: '248px'
},
{
left: '16%',
top: '307px'
left: 'calc(16% - 0px)',
top: '297px'
},
{
left: '52%',
top: '306px'
left: 'calc(52% - 0px)',
top: '296px'
},
{
left: '84%',
top: '307px'
left: 'calc(84% - 0px)',
top: '297px'
},
{
left: '35%',
top: '351px'
left: 'calc(35% - 0px)',
top: '341px'
},
{
left: '68%',
top: '355px'
left: 'calc(68% - 0px)',
top: '345px'
},
{
left: '53%',
top: '400px'
left: 'calc(53% - 0px)',
top: '390px'
}
];
export default {
......@@ -111,39 +113,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 +142,25 @@ 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;
console.log(this.boxImg);
}
}
}
};
......@@ -163,6 +172,7 @@ img {
}
.template-game {
height: 724px;
margin-top: 70px;
}
.bg-image {
width: 375px;
......@@ -191,31 +201,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 +357,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 +385,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%;
......
......@@ -4,7 +4,7 @@
<div class="game-content">
<div class="gameDemo">
<div class="title">游戏演示</div>
<el-image lazy style="width: 180px; height: 312px; cursor: pointer" src="https://pic01-10001430.cos.ap-shanghai.myqcloud.com/game/template1/bill_pic.png" @click.native="onView()"> </el-image>
<el-image lazy style="width: 180px; height: 312px; cursor: pointer" :src="img" @click.native="onView()"> </el-image>
</div>
<div class="gameIntro">
<div class="title">游戏介绍</div>
......@@ -22,7 +22,7 @@
<p><span class="dm-status--normal"></span>配置游戏基础内容——如游戏背景、盲盒样式、背景音乐等</p>
<p><span class="dm-status--normal"></span>配置游戏奖项——设定盲盒奖品、库存、中奖率等</p>
<p><span class="dm-status--normal"></span>配置游戏规则——配置游戏玩法、参与门槛与条件等</p>
<el-button type="text" class="fz12" style="margin-left: 13px">查看详细配置说明</el-button>
<el-button type="text" class="fz12" style="margin-left: 13px" @click="goDetail">查看详细配置说明</el-button>
</div>
</div>
</div>
......@@ -45,12 +45,13 @@
<el-button class="fr" type="primary" @click="addGame" v-if="$getButtonLimit($buttonCode.marketingCmhAdd)" :limit-code="$buttonCode.marketingCmhAdd">新建游戏</el-button>
</div>
<el-table tooltipEffect="light" :data="tableList" style="width: 100%" v-sticky="{ top: 96 }">
<el-table tooltipEffect="light" :data="tableList" style="width: 100%" :height="tableH">
<el-table-column label="游戏名称" fixed="left" min-width="183px" prop="gameName" show-overflow-tooltip :formatter="(row, col, val) => val || '--'"></el-table-column>
<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, 'HH-mm-ss') }}
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" min-width="153px">
......@@ -90,7 +92,7 @@ import { api as viewerApi } from 'v-viewer';
import { cmhPage, stopGame, pageStatistics } from '@/service/api/gameApi.js';
import links from '../common/links';
import { formatDateTimeByType } from '@/utils/index.js';
import img from '@/assets/img/template1/mould_share_page.png';
import dmDropdown from '@/components/dm-drop-down/dm-drop-down';
export default {
components: {
......@@ -102,6 +104,7 @@ export default {
formatDateTimeByType,
linkShow: false,
linksObj: {},
img,
listParams: {
gameName: '',
status: '',
......@@ -155,7 +158,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 +169,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 +180,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: '链接',
......@@ -210,6 +216,12 @@ export default {
]
};
},
computed: {
tableH() {
const h = window.innerHeight - 218 - 82;
return h;
}
},
mounted() {
if (this.$route.meta.refresh) {
this.dateTime = [];
......@@ -250,6 +262,9 @@ export default {
sessionStorage.setItem('listParams', JSON.stringify(data));
},
methods: {
goDetail() {
window.open('https://www.yuque.com/exnmlu/hpbb1c/yf16om');
},
getLink(row) {
const { startDate, gameId, gameName } = row;
this.linksObj = { gameName, gameId, gameStartTime: startDate };
......@@ -284,10 +299,10 @@ 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';
let qrImg = this.img;
viewerApi({
images: [qrImg],
options: {
......
......@@ -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">
......@@ -40,25 +41,27 @@
<table>
<thead>
<tr>
<th class="tableHead">奖品类型</th>
<th class="tableHead" style="min-width: 75px;">奖品类型</th>
<th class="tableHead">奖项设置</th>
<th class="tableHead">奖品名称</th>
<th class="tableHead">奖品图片</th>
<th class="tableHead">奖品数量</th>
<th class="tableHead" style="min-width: 75px;">奖品数量</th>
<th class="tableHead">奖品说明</th>
<th class="tableHead">中奖率</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in form.gamePrizeList" :key="index" :class="item.status != 0 ? 'invalid' : ''">
<tr v-for="(item, index) in form.gamePrizeList" :key="index" :class="item.status && item.status != 0 ? 'invalid' : ''">
<td class="cell">
{{ prizeType[item.prizeType] }}
</td>
<td class="cell">
<div v-if="item.prizeType == 2">
<div v-if="item.prizeType == 2" class="flex">
<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" :style="desW ? `width:${desW / 2}px` : ''">{{ item.cardName }}</div>
</el-tooltip>
</div>
<div v-if="item.prizeType == 1">
{{ item.prizeNumber + '积分' }}
......@@ -68,7 +71,7 @@
</div>
</td>
<td class="cell">
{{ item.prizeName }}
<div>{{ item.prizeName }}</div>
</td>
<td class="cell">
<img :src="item.prizeImageUrl" v-if="item.prizeType != 0" />
......@@ -79,7 +82,9 @@
<span v-else>- -</span>
</td>
<td class="cell">
{{ item.prizeDesc }}
<el-tooltip :content="item.prizeDesc" placement="top">
<div class="ellips" :style="desW ? `width:${desW / 2}px` : ''">{{ item.prizeDesc }}</div>
</el-tooltip>
</td>
<td class="cell">{{ item.prizeRate }}%</td>
</tr>
......@@ -91,10 +96,12 @@
<div class="section">
<el-descriptions column="3">
<el-descriptions-item label="参与人群">{{ form.gameRuleInfo.memberType == 0 && !form.gameRuleInfo.filterJson ? '全部人群' : '' }} </el-descriptions-item>
<el-descriptions-item label="适用人群说明" :labelStyle="labelStyle">
<div class="ellips">
{{ form.gameRuleInfo && form.gameRuleInfo.memberDesc }}
</div>
<el-descriptions-item label="适用人群说明" :labelStyle="labelStyle" v-if="form.gameRuleInfo">
<el-tooltip :content="form.gameRuleInfo.memberDesc" placement="top">
<div class="ellips" :style="desW ? `width:${desW}px` : ''">
{{ form.gameRuleInfo.memberDesc }}
</div>
</el-tooltip>
</el-descriptions-item>
</el-descriptions>
<div v-show="form.gameRuleInfo.memberType == 0 && form.gameRuleInfo.filterJson">
......@@ -107,7 +114,7 @@
<div v-if="form.gameRuleInfo.memberType == 1">
<gic-new-member-group onlyRead :selectedIds="form.gameRuleInfo.filterJson" style="width:100%" />
</div>
<div class="section">
<div>
<el-descriptions column="3">
<el-descriptions-item label="参与门槛">{{ form.gameRuleInfo.playConditionFlag == 0 ? '无门槛' : '' }} </el-descriptions-item>
<el-descriptions-item label="每人最多可玩次数"> {{ form.gameRuleInfo && form.gameRuleInfo.playTimes }}次游戏次数</el-descriptions-item>
......@@ -119,7 +126,7 @@
<div class="mini-sub-title">
<div class="line"></div>
<div class="text">
<div class="space-between">
<div class="space-between" style="font-weight:500">
赠与免费游戏次数
</div>
</div>
......@@ -130,7 +137,7 @@
<div class="mini-sub-title">
<div class="line"></div>
<div class="text">
<div class="space-between">
<div class="space-between" style="font-weight:500">
消耗积分获得游戏次数
</div>
</div>
......@@ -142,25 +149,24 @@
<div class="mini-sub-title">
<div class="line"></div>
<div class="text">
<div class="space-between">
<div class="space-between" style="font-weight:500">
邀请好友助力获得游戏次数
</div>
</div>
</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>
......@@ -192,7 +198,7 @@ export default {
gameRuleInfo: {},
memberWeightView: {}
},
desW: 0,
isPlay: false,
prizeType: {
0: '谢谢参与',
......@@ -212,6 +218,10 @@ export default {
music.currentTime = 0;
this.isPlay = false;
});
const width = document.documentElement.clientWidth;
if (width < 1750) {
this.desW = 300;
}
},
components: {
gicNewMemberGroup
......@@ -223,28 +233,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 +248,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;
}
......@@ -324,16 +314,17 @@ export default {
.invalid {
color: #909399;
}
.tagIcon {
margin-right: 4px;
}
.ellips {
// overflow: hidden;
// text-overflow: ellipsis;
// display: -webkit-box;
// -webkit-line-clamp: 2;
// /*! autoprefixer: ignore next */
// -webkit-box-orient: vertical;
display: inline-block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.section {
padding: 20px 0 18px 0;
padding: 20px 0 40px 0;
}
.content {
width: 100%;
......@@ -342,6 +333,7 @@ export default {
margin-top: 10px;
box-sizing: border-box;
padding: 16px 16px;
overflow-x: auto;
table {
width: 100%;
}
......@@ -354,7 +346,7 @@ export default {
line-height: 20px;
}
.cell {
padding: 10px 0 0 0;
padding: 10px 10px 0 0;
line-height: 20px;
vertical-align: middle;
img {
......@@ -363,13 +355,22 @@ export default {
border-radius: 2px;
border: 1px solid #dcdfe6;
}
&:last-child {
padding: 10px 0 0 0;
}
&:first-child {
padding: 10px 0 0 0;
}
}
}
.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%;
......
<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>
<section class="static-detial" v-loading="loading">
<dm-sub-title title-align="space-between">
活动数据详情
</dm-sub-title>
<div class="tips mt5 mb20">数据每天更新 1 次</div>
<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>
......@@ -131,6 +135,14 @@ export default {
</script>
<style lang="scss" scoped>
.static-detial {
padding: 16px 20px;
}
.tips {
font-weight: 400;
color: #606266;
line-height: 17px;
}
.member-info {
display: flex;
justify-content: flex-start;
......
<template>
<section class="dm-wrap" v-loading="loading">
<div class="pt20 pb20 clearfix">
<section class="static-detial" v-loading="loading">
<dm-sub-title title-align="space-between">
奖品数据详情
</dm-sub-title>
<div class="tips mt5 mb20">数据实时更新</div>
<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>
......@@ -137,6 +141,14 @@ export default {
</script>
<style lang="scss" scoped>
.static-detial {
padding: 16px 20px;
}
.tips {
font-weight: 400;
color: #606266;
line-height: 17px;
}
.member-info {
display: flex;
justify-content: flex-start;
......
......@@ -14,8 +14,8 @@
<div class="report-module">
<dm-sub-title title-align="space-between">
<div>
活动数据
<el-button class="check-detail" @click="toDetailPage(1)">查看详情</el-button>
活动数据<span class="tips ml5">(数据实时更新)</span>
<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">
......@@ -25,9 +25,7 @@
</el-row>
</div>
<div class="report-module" v-if="isCard">
<dm-sub-title>
卡券核销
</dm-sub-title>
<dm-sub-title> 卡券核销<span class="tips ml5">(数据每天更新 1 次)</span> </dm-sub-title>
<el-row :gutter="20" class="flex">
<el-col :span="6" v-for="(el, index) in cardData" :key="index">
<target-group :data-list="el"></target-group>
......@@ -37,15 +35,15 @@
<div class="report-module">
<dm-sub-title title-align="space-between" class="mb20">
<div>
奖品数据
<el-button class="check-detail" @click="toDetailPage(2)">查看详情</el-button>
奖品数据<span class="tips ml5">(数据每天更新 1 次)</span>
<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 +59,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 +223,8 @@ export default {
components: { TargetGroup },
data() {
return {
tableHead,
pointHead,
gameStatus: {
0: '未开始',
1: '进行中',
......@@ -364,7 +364,6 @@ export default {
],
cardData: [],
prizeList: [],
tableHeader: [],
gameId: this.$route.params.id,
isShare: false, // 有门槛且配置了分享
isPoint: false, // 有门槛且配置了消耗积分
......@@ -458,11 +457,6 @@ export default {
this.prizeList = result;
prizeType == 1 ? this.handleList() : '';
});
if (prizeType == 1) {
this.tableHeader = tableHead;
} else {
this.tableHeader = pointHead;
}
},
handleList() {
let obj = {};
......@@ -548,6 +542,11 @@ export default {
}
}
}
.tips {
font-weight: 400;
color: #606266;
line-height: 17px;
}
}
.flex {
display: flex;
......
<template>
<div>
<label :class="[textType ? 'el-button el-button--text el-button--small' : 'el-button el-button--primary', disabled ? 'is-disabled' : '']">
{{ disabled ? '上传中...' : label }}
<span style="font-weight: 400;"> {{ disabled ? '上传中...' : label }}</span>
<input type="file" style="display:none;" :disabled="disabled" accept="audio/mpeg" ref="uploader" v-audioUpload="this" />
</label>
<p class="fz12 gray">{{ tips }}</p>
......
<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 {
......
......@@ -45,7 +45,7 @@
<el-col :span="6" style="padding: 0 2px">
<div class="recharge-today-item border2">
<div class="text-center">
<div class="icon-box">
<div class="box-icon">
<i class="iconfont icon-wenbenmsg fz36"></i>
</div>
</div>
......@@ -68,7 +68,7 @@
<el-col :span="6" style="padding: 0 2px">
<div class="recharge-today-item border2">
<div class="text-center">
<div class="icon-box color2">
<div class="box-icon color2">
<i class="iconfont icon-duanxinyzm fz28"></i>
</div>
</div>
......@@ -91,7 +91,7 @@
<el-col :span="6" style="padding: 0 2px">
<div class="recharge-today-item border2">
<div class="text-center">
<div class="icon-box color3">
<div class="box-icon color3">
<i class="iconfont icon-shuangxianghujiao1 fz36"></i>
</div>
</div>
......@@ -114,7 +114,7 @@
<el-col :span="6" style="padding: 0 2px">
<div class="recharge-today-item border2">
<div class="text-center">
<div class="icon-box color4">
<div class="box-icon color4">
<i class="iconfont icon-AIdianhua fz36"></i>
</div>
</div>
......@@ -137,7 +137,7 @@
<el-col :span="6" style="padding: 0 2px">
<div class="recharge-today-item border2">
<div class="text-center">
<div class="icon-box color3">
<div class="box-icon color3">
<i class="iconfont icon-xitongtongzhi fz36"></i>
</div>
</div>
......@@ -512,7 +512,7 @@ export default {
}
}
}
.icon-box {
.box-icon {
width: 60px;
height: 60px;
background: rgba(253, 107, 56, 0.15);
......
......@@ -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