<template>

	
	<!-- 注意，如果userinfo被加载出来才会显示这个内容，避免报错。否则就显示loding -->
	<view class="userLayout pageBg" v-if="userinfo">
		<!-- 添加一个状态栏的高度，避免被刘海屏挡住了 -->
		<view :style="{height:getNavBarHeight() + 'px'}"></view>
		
		<view class="userinfo">
			<view class="avatar">
				<image src="/static/images/xxmLogo.png" mode="aspectFill"></image>
			</view>
			<view class="ip">{{userinfo.IP}}</view>
			<view class="address">来自于：
			<!-- 避免开代理获取不到城市和省份的情况，外面考虑以下爱的内容，最不其给你在中国 -->
			<!-- 1. 安全访问操作符 (?.)  确保拥有该属性，没回的返回undefined，不会报错/如果都没有，就默认是“中国” -->
			{{userinfo?.address?.city || userinfo?.address?.province || userinfo?.address?.country || '中国' }}
			</view>
		</view>
		
		
		
		<!-- 菜单 -->
		<view class="section">
				<view class="list">
					<!-- 区分页面，表明这是通过user页面然后点击“我的下载”进入的 -->
					<navigator url="/pages/classlist/classlist?name=我的下载&type=download">
						<view class="row">
							<!-- 这里分为左右两部分，（图标、文字）以及  (右箭头) -->
								<view class="left">
									<uni-icons type="download-filled" size="20" color="#28b389"></uni-icons>
									<view class="text" >我的下载</view>
								</view>
								<view class="right">
									<view class="text">{{userinfo.downloadSize}}</view>
									<uni-icons type="forward" size="15" color="#aaa"></uni-icons>
								</view>
						</view>
					</navigator>
					
					<!-- 区分页面，表明这是通过user页面然后点击“我的评分”进入的 -->
					<navigator url="/pages/classlist/classlist?name=我的评分&type=score">
						<view class="row">
							<!-- 这里分为左右两部分，（图标、文字）以及  (右箭头) -->
								<view class="left">
									<uni-icons type="star-filled" size="20" color="#28b389"></uni-icons>
									<view class="text" >我的评分</view>
								</view>
								<view class="right">
									<view class="text">{{userinfo.scoreSize}}</view>
									<uni-icons type="forward" size="15" color="#aaa"></uni-icons>
								</view>
						</view>
					</navigator>
					
					<view class="row">
						<!-- 这里分为左右两部分，（图标、文字）以及  (右箭头) --> 
						<view class="left">
							<uni-icons type="chatboxes-filled" size="20" color="#28b389"></uni-icons>
							<view class="text" >联系客服</view>
						</view>
						<view class="right">
							<view class="text"></view>
							<uni-icons type="forward" size="15" color="#aaa"></uni-icons>
						</view>
						
						<!-- #ifdef MP -->
						<button open-type="contact" class="contact">联系客服</button>
						<!-- #endif -->
						
						<!-- #ifdef WEB -->
						<button @click="clickContact">拨打电话</button>
						<!-- #endif -->
					</view>
				</view>
		</view>
		
		
		
		<view class="section">
				<view class="list">
					<!-- 订阅更新和常见问题的页面都是在公告列表里面的，但是id变一下就可以了 -->
					<navigator url="/pages/notice/detail?id=653507c6466d417a3718e94b&name=订阅更新">
						<view class="row">
							<!-- 这里分为左右两部分，（图标、文字）以及  (右箭头) -->
							<view class="left">
								<uni-icons type="notification-filled" size="20" color="#28b389"></uni-icons>
								<view class="text" >订阅更新</view>
							</view>
							<view class="right">
								<uni-icons type="forward" size="15" color="#aaa"></uni-icons>
							</view>
						</view>
					</navigator>
					
					<!-- 订阅更新和常见问题的页面都是在公告列表里面的，但是id变一下就可以了 -->
					<navigator url="/pages/notice/detail?id=6536358ce0ec19c8d67fbe82&name=常见问题">
						<view class="row">
							<!-- 这里分为左右两部分，（图标、文字）以及  (右箭头) -->
							<view class="left">
								<uni-icons type="flag-filled" size="20" color="#28b389"></uni-icons>
								<view class="text" >常见问题</view>
							</view>
							<view class="right">
								<uni-icons type="forward" size="15" color="#aaa"></uni-icons>
							</view>
						</view>
					</navigator>

				</view>
		</view>
	</view>
	
	<!-- userinfo没有被加载出来就显示loading -->
	<view class="loadingLayout" v-else>
		<view :style="{height:getNavBarHeight()+'px'}"></view>
		<uni-load-more status="loading"></uni-load-more>
	</view>
	
</template>

<script setup>
import {getNavBarHeight} from "@/utils/system.js"
import {apiUserInfo} from "@/api/apis.js"
import { ref } from "vue";

const userinfo = ref(null)

const clickContact = ()=>{
	uni.makePhoneCall({
		phoneNumber: '114' //仅为示例
	});
}

const getUserInfo = async ()=>{
	let res = await apiUserInfo()
	// console.log(res);
	userinfo.value = res.data
}

getUserInfo()
</script>

<style lang="scss" scoped>
.userLayout{
	.userinfo{
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		padding: 50rpx 0;
		.avatar{
			width: 160rpx;
			height: 160rpx;
			// 对父组件设置border-radius和overflow：hidden
			border-radius: 50%;
			overflow: hidden;
			// 同时还需要image设置width和height 100%
			image{
				width: 100%;
				height: 100%;
			}
		}
		.ip{
			font-size: 44rpx;
			color: #333;
			padding: 20rpx 0 5rpx;
		}
		.address{
			font-size: 28rpx;
			color: #aaa;
		}
	}
	
	.section{
		width: 690rpx;
		// 父元素使其居中处理
		margin: 50rpx auto;
		border: 1px solid #eee;
		border-radius: 10rpx;
		box-shadow: 0 0 30rpx rgba(0,0,0,0.05);
		
		.list{
			.row{
				display: flex;
				justify-content: space-between;
				align-items: center;
				//细节处理，不要贴边
				padding:0 30rpx;
				height: 100rpx;
				border-bottom: 1px solid #eee;
				position: relative;
				background: #fff;
				
				//最后一个元素会有两个边框，所以我们需要去掉一个
				//&：&号表示同名，
				//这里即指（.row） 还要一个伪类选择器宣导最后一个元素
				&:last-child{
					border-bottom: 0;
				}
				
				.left{
					display: flex;
					justify-content: center;
					align-items: center;
					.text{
						padding-left: 20rpx;
						color: #666;
					}
				}
				
				.right{
					display: flex;
					justify-content: center;
					align-items: center;
					
					.text{
						font-size: 28rpx;
						color: #aaa;
					}
				}
				
				button{
					position: absolute;
					top: 0;
					left: 0;
					width: 100%;
					height: 100%;
					// display: flex;
					// justify-content: center;
					// align-items: center;
					opacity: 0;
				}
			}
		}
		
	}
}
</style>
