247 lines
5.6 KiB
Vue
247 lines
5.6 KiB
Vue
<template>
|
||
<view class="xilu">
|
||
<view class="container">
|
||
<view class="p30">
|
||
<view @click="show_media_rules()" class="flex-box pb20">
|
||
<image src="@/static/images/xilu_icon20.png" mode="widthFix" class="ico32"></image>
|
||
<view class="pl10 col2 fs28 lh34">勋章获取规则</view>
|
||
</view>
|
||
<view>
|
||
<template v-if="list.length > 0">
|
||
<view class="xilu_medal_item" v-for="(vo,keys) in list">
|
||
<image @click="show_success(vo)" v-if="vo.is_active == 1"
|
||
:src="vo.xilufitness_urls.thumb_active_image" mode="aspectFill"
|
||
class="xilu_medal_item_img"></image>
|
||
<image @click="show_rule(vo)" v-else :src="vo.xilufitness_urls.thumb_image"
|
||
mode="aspectFill" class="xilu_medal_item_img"></image>
|
||
<view class="lh48">{{vo.medal_name || ''}}</view>
|
||
</view>
|
||
</template>
|
||
|
||
<template v-else>
|
||
<empty-data :tips="'暂无勋章'" :lineHeight="$children00"></empty-data>
|
||
</template>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<u-popup :show="show" mode="center" bgColor="transparent" @close="close" @open="open">
|
||
<view class="xilu_popup1">
|
||
<image :src="show_image" mode="aspectFill"></image>
|
||
<view class="xilu_pop_btn">恭喜你解锁新勋章!</view>
|
||
</view>
|
||
</u-popup>
|
||
<u-popup :show="showinfo" mode="center" bgColor="transparent" @close="infoclose" @open="infoopen">
|
||
<view class="xilu_popup2">
|
||
<view class="fs34 col9 lh40 tc">勋章说明详情</view>
|
||
<image src="@/static/images/xilu_close.png" mode="aspectFill" class="xilu_close" @click="infoclose">
|
||
</image>
|
||
<image :src="show_image" mode="aspectFill" class="xilu_popup2_cover"></image>
|
||
<view class="xilu_popup2_content">
|
||
<template v-for="(vo,keys) in description">
|
||
<view>{{keys + 1}}.{{vo}};</view>
|
||
</template>
|
||
</view>
|
||
</view>
|
||
</u-popup>
|
||
<u-popup :show="showrules" mode="center" bgColor="transparent" @close="rulesclose" @open="rulesopen">
|
||
<view class="xilu_popup2">
|
||
<view class="fs34 col9 lh40 tc">勋章获取规则</view>
|
||
<image src="@/static/images/xilu_close.png" mode="aspectFill" class="xilu_close" @click="rulesclose">
|
||
</image>
|
||
<view class="xilu_popup2_content" style="margin-top: 40rpx;">
|
||
<mp-html :content="tips_content"></mp-html>
|
||
</view>
|
||
</view>
|
||
</u-popup>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
const app = getApp();
|
||
export default {
|
||
data() {
|
||
return {
|
||
show: false,
|
||
showinfo: false,
|
||
showrules: false,
|
||
list: [],
|
||
page: 1,
|
||
total_count: 0,
|
||
description: [],
|
||
show_image: '',
|
||
tips_content: ''
|
||
}
|
||
},
|
||
methods: {
|
||
close() {
|
||
this.show = false
|
||
},
|
||
open() {
|
||
this.show = true
|
||
},
|
||
infoclose() {
|
||
this.showinfo = false
|
||
},
|
||
infoopen() {
|
||
this.showinfo = true
|
||
},
|
||
rulesclose() {
|
||
this.showrules = false
|
||
},
|
||
rulesopen() {
|
||
this.showrules = true
|
||
},
|
||
show_media_rules() {
|
||
this.showrules = true;
|
||
},
|
||
show_rule(media) {
|
||
this.description = media.description || [];
|
||
this.showinfo = true;
|
||
this.show_image = media.xilufitness_urls.thumb_image;
|
||
},
|
||
show_success(media) {
|
||
this.show_image = media.xilufitness_urls.thumb_active_image;
|
||
this.show = true
|
||
},
|
||
//获取勋章
|
||
getLists() {
|
||
let _this = this;
|
||
this.$http({
|
||
url: '/addons/xilufitness/user/getMyMedia',
|
||
data: {
|
||
page: _this.page
|
||
},
|
||
method: 'GET'
|
||
}).then(res => {
|
||
if (res.code == 1) {
|
||
if (_this.page > 1) {
|
||
_this.list.push(...res.data.list);
|
||
} else {
|
||
_this.list = res.data.list;
|
||
}
|
||
_this.total_count = res.data.total_count;
|
||
}
|
||
})
|
||
},
|
||
//勋章规则
|
||
getCmsDetail() {
|
||
let _this = this;
|
||
this.$http({
|
||
url: '/addons/xilufitness/cms/detail',
|
||
data: {
|
||
is_type: 7
|
||
},
|
||
method: 'get'
|
||
}).then(res => {
|
||
if (res.code == 1) {
|
||
_this.tips_content = (res.data.info && res.data.info.content) ? res.data.info.content : '';
|
||
}
|
||
}).catch(error => {
|
||
console.log('cmsError', error);
|
||
})
|
||
}
|
||
},
|
||
onLoad() {
|
||
this.getLists();
|
||
this.getCmsDetail();
|
||
},
|
||
onReachBottom() {
|
||
if (this.total_count > this.list.length) {
|
||
this.page = this.page + 1;
|
||
this.getLists();
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.xilu {
|
||
&_medal_item {
|
||
display: inline-block;
|
||
vertical-align: top;
|
||
width: 140rpx;
|
||
font-size: 34rpx;
|
||
font-weight: 400;
|
||
color: #FFFFFF;
|
||
margin-right: 40rpx;
|
||
text-align: center;
|
||
margin-top: 30rpx;
|
||
|
||
&_img {
|
||
width: 120rpx;
|
||
height: 120rpx;
|
||
display: block;
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
margin-bottom: 20rpx;
|
||
}
|
||
}
|
||
|
||
&_medal_item:nth-of-type(4n) {
|
||
margin-right: 0;
|
||
}
|
||
|
||
&_popup1 {
|
||
width: 540rpx;
|
||
|
||
image {
|
||
width: 540rpx;
|
||
height: 540rpx;
|
||
display: block;
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
margin-bottom: 20rpx;
|
||
}
|
||
}
|
||
|
||
&_pop_btn {
|
||
width: 376rpx;
|
||
height: 76rpx;
|
||
line-height: 76rpx;
|
||
background: #FFF45A;
|
||
border-radius: 50rpx;
|
||
margin-top: 20rpx;
|
||
font-size: 34rpx;
|
||
font-weight: 400;
|
||
color: #333333;
|
||
text-align: center;
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
}
|
||
|
||
&_popup2 {
|
||
width: 700rpx;
|
||
background: #404243;
|
||
border-radius: 20rpx;
|
||
border: 1px solid #454545;
|
||
position: relative;
|
||
padding: 30rpx 20rpx 30rpx;
|
||
|
||
&_cover {
|
||
width: 314rpx;
|
||
height: 314rpx;
|
||
display: block;
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
}
|
||
|
||
&_content {
|
||
margin-top: 6rpx;
|
||
font-size: 28rpx;
|
||
font-weight: 400;
|
||
color: #FFFFFF;
|
||
line-height: 40rpx;
|
||
white-space: pre-line;
|
||
}
|
||
}
|
||
|
||
&_close {
|
||
width: 30rpx;
|
||
height: 30rpx;
|
||
top: 35rpx;
|
||
right: 40rpx;
|
||
position: absolute;
|
||
}
|
||
|
||
}
|
||
</style> |