Files
ZhHealth/pages/user/index.vue
2022-01-13 17:32:46 +08:00

404 lines
9.8 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="content">
<!-- 用户信息 -->
<view class="info-box">
<image src="@/static/user/user_back.png" mode="aspectFill"></image>
<view class="user-flex">
<image class="cover" :src="userInfo.avatar || require('@/static/user/cover.png')" mode="aspectFill"></image>
<view class="user-content">
<block v-if="$store.state.token != ''">
<view class="name">{{userInfo.nickname}}</view>
<view class="tabs">
<view class="tabs-item"><image src="@/static/user/icon_07.png"></image>会员</view>
</view>
</block>
<block v-else>
<view class="name" @click="Login">未登录</view>
</block>
</view>
</view>
</view>
<!-- 会员卡 -->
<view class="vip-card">
<view class="title">
<image src="@/static/user/icon_06.png" mode="widthFix"></image>
ZH会员
</view>
<view class="subtitle">
<u-notice-bar
:text="cardText"
icon=""
bgColor=""
duration="3000"
color="#fcc692"
direction="column"
></u-notice-bar>
</view>
<view class="btn" @click="openVip">开通</view>
</view>
<!-- 健康数据 -->
<view class="health-flex">
<view class="health-flex-item">
<view class="title">
体脂率
<image class="icon" src="@/static/user/icon_04.png" mode="widthFix"></image>
</view>
<view class="num">
22<text>%</text>
</view>
<view class="hith">处于正常范围</view>
</view>
<view class="health-flex-item">
<view class="title">
体重
<image class="icon" src="@/static/user/icon_05.png" mode="widthFix"></image>
</view>
<view class="num">
78.0<text>KG</text>
</view>
<view class="hith">你上周减少1.2kg</view>
</view>
</view>
<!-- 订单 -->
<view class="order-box">
<view class="order-box-item" @click="$Router.push({name: 'Order'})">
<image class="icon" src="@/static/user/order_icon_00.png" mode="widthFix"></image>
<view class="title">全部订单</view>
</view>
<view class="order-box-item" @click="$Router.push({name: 'Order'})">
<image class="icon" src="@/static/user/order_icon_01.png" mode="widthFix"></image>
<view class="title">待付款</view>
</view>
<view class="order-box-item" @click="$Router.push({name: 'Order'})">
<image class="icon" src="@/static/user/order_icon_02.png" mode="widthFix"></image>
<view class="title">待发货</view>
</view>
<view class="order-box-item" @click="$Router.push({name: 'Order'})">
<image class="icon" src="@/static/user/order_icon_03.png" mode="widthFix"></image>
<view class="title">待收货</view>
</view>
<view class="order-box-item" @click="$Router.push({name: 'Order'})">
<image class="icon" src="@/static/user/order_icon_04.png" mode="widthFix"></image>
<view class="title">已完成</view>
</view>
</view>
<!-- 功能块 -->
<view class="btns-box">
<!-- <view class="btns-box-item" @click="$Router.push({name: 'WalletAdd'})">
<image class="icon" src="@/static/user/icon_00.png" mode="widthFix"></image>
ZH钱包(首次)
<uni-icons class="forward" type="forward" color="#999"></uni-icons>
</view>
<view class="btns-box-item" @click="$Router.push({name: 'WalletProperty'})">
<image class="icon" src="@/static/user/userIcon_01.png" mode="widthFix"></image>
ZH钱包钱包
<uni-icons class="forward" type="forward" color="#999"></uni-icons>
</view> -->
<view class="btns-box-item" @click="onWallet">
<image class="icon" src="@/static/user/userIcon_00.png" mode="widthFix"></image>
ZH钱包
<uni-icons class="forward" type="forward" color="#999"></uni-icons>
</view>
<view class="btns-box-item">
<image class="icon" src="@/static/user/userIcon_02.png" mode="widthFix"></image>
健康档案
<uni-icons class="forward" type="forward" color="#999"></uni-icons>
</view>
<view class="btns-box-item" @click="$Router.push({name: 'Address', params: {type: 'edit'}})">
<image class="icon" src="@/static/user/userIcon_03.png" mode="widthFix"></image>
地址管理
<uni-icons class="forward" type="forward" color="#999"></uni-icons>
</view>
</view>
<view class="btns-box">
<view class="btns-box-item">
<image class="icon" src="@/static/user/userIcon_04.png" mode="widthFix"></image>
设置
<uni-icons class="forward" type="forward" color="#999"></uni-icons>
</view>
<view class="btns-box-item" @click="logOut">
<image class="icon" src="@/static/user/userIcon_05.png" mode="widthFix"></image>
退出登录
<uni-icons class="forward" type="forward" color="#999"></uni-icons>
</view>
</view>
<view class="footer-text">
<view>ZH生态俱乐部</view>
<view>All Rights Reserved. ZH Eco Club</view>
</view>
</view>
</template>
<script>
import { info } from '@/apis/interfaces/user'
import userAuth from '@/public/userAuth'
export default {
data() {
return {
cardText: ['老用户专属特权', '老用户专属健康会员'],
userInfo: {
nickname: "",
avatar : ""
}
};
},
onShow() {
this.getInfo()
},
methods:{
// 用户信息
getInfo(){
if(this.$store.state.token === '') return
info().then(res => {
console.log(res)
uni.setNavigationBarTitle({
title: res.nickname
})
this.userInfo = res
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 开通会员
openVip(){
if(this.$store.state.token === ''){
this.Login()
return
}
console.log("开通会员")
},
// 开通钱包
onWallet(){
if(this.$store.state.token === ''){
this.Login()
return
}
if(this.userInfo.is_wallet) this.$Router.push({name: 'WalletProperty'})
else this.$Router.push({name: 'WalletAdd'})
},
// 登录
Login(){
const Auth = new userAuth()
Auth.Login()
},
// 退出登录
logOut(){
this.$store.commit('setToken', '')
}
}
}
</script>
<style lang="scss" scoped>
.content{
background: $window-color;
min-height: 100vh;
}
// 版权信息
.footer-text{
text-align: center;
font-size: $title-size-sm;
padding: $padding $padding $padding*2;
color: $text-gray-m;
}
// 用户信息
.info-box{
position: relative;
background: linear-gradient(to right, #34ce98, #22aa98);
color: white;
@extend .ios-top;
&>image{
position: absolute;
top: 0;
right: 0;
width: 100%;
height: 100%;
}
.user-flex{
position: relative;
padding: $padding*2 $padding ($padding*2 + 60);
height: 128rpx;
.cover{
position: absolute;
width: 128rpx;
height: 128rpx;
border-radius: 50%;
border:solid 6rpx white;
box-sizing: border-box;
}
.user-content{
padding-left: 158rpx;
height: 128rpx;
display: flex;
flex-direction: column;
justify-content: center;
.name{
line-height: 40rpx;
font-weight: bold;
font-size: $title-size + 8;
@extend .nowrap;
}
.tabs{
padding-top: 10rpx;
&-item{
background: rgba($color: #000000, $alpha: .3);
font-size: $title-size-sm - 4;
display: inline-block;
line-height: 36rpx;
padding: 0 20rpx;
border-radius: 20rpx;
image{
width: 26rpx;
height: 26rpx;
vertical-align: middle;
margin-bottom: 2rpx;
margin-right: 8rpx;
}
}
}
}
}
}
// 会员卡
.vip-card{
position: relative;
margin: -60rpx $margin $margin;
background: linear-gradient(to right bottom, #3e5364, #31364a);
border-radius: $radius;
box-sizing: border-box;
color: #fcc692;
padding: $padding ($padding + 170) $padding $padding;
.title{
font-weight: bold;
font-size: $title-size-lg;
line-height: 40rpx;
image{
width: 32rpx;
height: 32rpx;
margin-right: 10rpx;
vertical-align: middle;
margin-bottom: 4rpx;
}
}
.subtitle{
font-size: $title-size-sm;
margin-top: 10rpx;
.u-notice-bar{
padding: 0;
}
}
.btn{
position: absolute;
right: $margin;
margin-top: -30rpx;
top: 50%;
height: 60rpx;
line-height: 60rpx;
background: linear-gradient(to right, #fce3c5, #fcc590);
color: #31364a;
font-weight: bold;
width: 150rpx;
text-align: center;
font-size: $title-size-m;
border-radius: 30rpx;
}
}
// 订单信息
.order-box{
margin: $margin;
background: white;
border-radius: $radius;
display: flex;
justify-content: space-between;
&-item{
width: 25%;
padding: $padding $padding/2;
text-align: center;
.icon{
width: 48rpx;
height: 48rpx;
vertical-align: top;
}
.title{
font-size: $title-size-sm;
margin-top: $margin/3;
}
}
}
// 健康数据
.health-flex{
display: flex;
margin: $margin ($margin - 10);
&-item{
margin: 0 10rpx;
background: white;
width: calc(50% - 20rpx);
border-radius: $radius;
padding: $padding;
box-sizing: border-box;
.title{
font-size: $title-size-lg;
.icon{
width: 32rpx;
height: 32rpx;
vertical-align: middle;
margin-left: 10rpx;
margin-bottom: 2rpx;
}
}
.num{
font-weight: bold;
font-size: $title-size + 10;
padding: $padding/3 0;
text{
font-size: 70%;
padding-left: 10rpx;
}
}
.hith{
font-size: $title-size-sm;
color: $text-gray;
}
}
}
// 模块
.btns-box{
background: white;
margin: $margin;
border-radius: $radius;
&-item{
position: relative;
line-height: 90rpx;
padding: 0 $padding;
font-size: $title-size-lg;
&::after{
position: absolute;
height: 1rpx;
content: " ";
left: $margin;
right: $margin;
bottom: 0;
background-color: $border-color;
}
&:last-child::after{
display: none;
}
.forward{
position: absolute;
right: $margin;
}
.icon{
width: 44rpx;
height: 44rpx;
vertical-align: middle;
margin-right: $margin/2;
margin-bottom: 8rpx;
}
}
}
</style>