xc-app/pages/mine/topUp copy.vue

230 lines
5.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="top-up-page">
<NavCom title="充值"></NavCom>
<view class="info">
<image :src="infoDetail.avatarResource.url ? infoDetail.avatarResource.url : 'https://box-mall.oss-cn-hangzhou.aliyuncs.com/static/wx/mine/logo.png'" class="avatar" mode=""></image>
<view class="detail">
<view class="name">{{infoDetail.nickname||''}}</view>
<view class="price">代币余额10</view>
</view>
</view>
<scroll-view scroll-y="true" class="main">
<view class="list">
<view class="item" :class="{'item-active':listIndex === index}" v-for="(item,index) in list" :key="index" @click="handleItem(index)">
<view :class="{'give-active': item.give && listIndex === index,'give':item.give && listIndex !== index}" v-if="item.give">
赠送{{item.give}}代币
</view>
<view>
<text class="token">{{item.price}}</text>
<text class="token-sym">代币</text>
</view>
<view class="price" :class="{'price-active':listIndex === index}">¥6</view>
</view>
</view>
<view class="footer">
<view class="total">合计 ¥300</view>
<view class="pay" @click="pay">立即支付</view>
</view>
</scroll-view>
</view>
</template>
<script>
import NavCom from '@/pages/components/nav.vue'
import { userInfo } from '@/API/user.js'
export default{
data(){
return{
list:[
{price:6,token:100,give:10,visible:true},
{price:6,token:100,give:10,visible:false},
{price:6,token:100,give:10,visible:false},
{price:6,token:100,give:10,visible:false},
{price:6,token:100,give:10,visible:false},
{price:6,token:100,give:10,visible:false},
{price:6,token:100,give:10,visible:false},
],
listIndex:0,
infoDetail:{
phone:"",
avatarResource:{}
}
}
},
components:{NavCom},
mounted() {
this.getUserInfo()
},
methods:{
// 获取用户信息
getUserInfo(){
userInfo().then(res => {
if(res.code === 200){
this.infoDetail = res.data
}else if(res.code == 400){
uni.removeStorageSync('userInfo')
uni.removeStorageSync('info')
this.$api.msg(res.message)
}else{
this.$api.msg(res.message)
}
})
},
handleItem(index){
this.listIndex = index
},
pay(){
uni.navigateTo({
url:'/pages/mine/topUpOrder'
})
},
}
}
</script>
<style lang="scss">
page{
background-image: url('@/static/index/bg.png');
background-size: 100%;
background-repeat: no-repeat;
}
.top-up-page{
.info{
padding: 130rpx 42rpx 24rpx 42rpx;
display: flex;
align-items: center;
.avatar{
width: 105rpx;
height: 105rpx;
border-radius: 50%;
}
.detail{
margin-left: 22rpx;
.name{
font-weight: 500;
font-size: 34rpx;
color: #333333;
}
.price{
font-size: 22rpx;
color: #888888;
margin-top: 4rpx;
}
}
}
.main{
height: calc(100vh - 260rpx);
background: #FFFEFE;
border-radius: 20rpx 20rpx 0 0;
.list{
display: grid;
gap: 12rpx;
grid-template-rows: 1fr;
margin: 0px auto;
grid-template-columns: repeat(3, 1fr);
padding: 30rpx 22rpx;
.item{
width: 218rpx;
height: 164rpx;
background: #FFFFFF;
border-radius: 20rpx;
border: 4rpx solid #EAEAEA;
position: relative;
padding-top: 46rpx;
margin-bottom: 30rpx;
color: #333333;
text-align: center;
.give{
position: absolute;
top: -24rpx;
left: 0;
width: 174rpx;
height: 51rpx;
background-image: url('@/static/index/n.png');
background-repeat: no-repeat;
background-size: 100%;
display: flex;
align-items: center;
justify-content: center;
font-weight: 500;
font-size: 25rpx;
color: #333333;
}
.give-active{
position: absolute;
top: -24rpx;
left: 0;
width: 174rpx;
height: 51rpx;
background-image: url('@/static/index/y.png');
background-repeat: no-repeat;
background-size: 100%;
display: flex;
align-items: center;
justify-content: center;
font-weight: 500;
font-size: 25rpx;
color: #fff;
}
.token{
font-size: 60rpx;
}
.token-sym{
font-size: 24rpx;
margin-left: 10rpx;
}
.price{
font-size: 29rpx;
color: #666666;
margin-top: -18rpx;
}
.price-active{
font-size: 29rpx;
color: #FF9A93;
}
}
.item-active{
background: linear-gradient(0deg, #FCE2E8 0%, #FFF6F5 100%);
border: 4rpx solid #FF8880;
color: #FF574C;
}
}
.footer{
position: fixed;
bottom: 60rpx;
left: 20rpx;
width: 706rpx;
height: 88rpx;
display: flex;
align-items: center;
.total{
width: 390rpx;
height: 88rpx;
background: #FF867C;
border-radius: 44rpx;
font-size: 32rpx;
color: #FFFFFF;
border-radius: 44rpx 0px 0px 44rpx;
display: flex;
align-items: center;
justify-content: center;
}
.pay{
width: 316rpx;
height: 88rpx;
background: #F35649;
border-radius: 0px 44rpx 44rpx 0px;
font-size: 32rpx;
color: #FFFFFF;
display: flex;
align-items: center;
justify-content: center;
}
}
}
}
</style>