175 lines
4.1 KiB
Vue
175 lines
4.1 KiB
Vue
<template>
|
|
<view class="pad-x120" v-if="isLoading">
|
|
<!-- 个人信息 -->
|
|
<view class="my-herder border-box" :style="{'padding-top':statusHeight+50+'px'}">
|
|
<!-- 头像 -->
|
|
<view class="my-portrait radius100">
|
|
<image :src="headPortrait" mode="widthFix"></image>
|
|
</view>
|
|
<!-- 用户名 -->
|
|
<view class="my-nickname mar-s10 color-ff font36 flex">
|
|
<text>{{nickName}}</text>
|
|
</view>
|
|
</view>
|
|
<!-- 其他资料 -->
|
|
<view class="my-content background-white radius10 border-box">
|
|
<view class="item flex" v-for="(item,index) in listData" :key="index" @tap.stop="goPage(index)">
|
|
<view class="title flex">
|
|
<view class="img flex">
|
|
<image :src="item.imgSrc" :style="{width:item.iconWidth+'rpx',height:item.iconHeight+'rpx'}" mode="widthFix"></image>
|
|
</view>
|
|
<view class="title font28">{{item.titele}}</view>
|
|
</view>
|
|
<view class="more">
|
|
<image src="/static/icon/icon-join.png" mode="widthFix" style="width: 14rpx;height: 26rpx;"></image>
|
|
</view>
|
|
<button class="get-phone-btn" open-type="getPhoneNumber" @getphonenumber="onGetPhoneNumber" v-if="index==0&&mobile==''"></button>
|
|
</view>
|
|
</view>
|
|
<!-- 底部tab -->
|
|
<tabbar current="1"></tabbar>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import tabbar from '@/components/tabbar/tabbar.vue';
|
|
import {mapState} from 'vuex'//引入mapState
|
|
export default {
|
|
components:{
|
|
tabbar,
|
|
},
|
|
data() {
|
|
return {
|
|
statusHeight:uni.getSystemInfoSync().statusBarHeight, //状态栏高度
|
|
headPortrait:'', //头像
|
|
nickName:'', //用户名
|
|
listData:[
|
|
{titele:'个人资料',imgSrc:'/static/icon-my-01.png',iconWidth:36,iconHeight:36},
|
|
{titele:'我的发布',imgSrc:'/static/icon-my-02.png',iconWidth:36,iconHeight:36}
|
|
], //列表数据
|
|
isLoading:false, //是否加载完成
|
|
}
|
|
},
|
|
onShow() {
|
|
// 获取用户信息
|
|
this.getUserInfo();
|
|
},
|
|
methods: {
|
|
// 获取用户信息
|
|
getUserInfo(){
|
|
uni.showLoading({
|
|
title:'加载中'
|
|
});
|
|
this.$requst.get('/api/user/info').then(res=>{
|
|
console.log(res,'用户信息');
|
|
if(res.code==0) {
|
|
this.headPortrait = res.data.headimgurl;
|
|
this.nickName = res.data.nickname;
|
|
this.mobile = res.data.mobile;
|
|
}
|
|
uni.hideLoading();
|
|
this.isLoading = true;
|
|
})
|
|
},
|
|
|
|
// 跳转方式
|
|
goPage(index){
|
|
switch (index){
|
|
case 0:{
|
|
if(this.mobile!==''){
|
|
uni.navigateTo({
|
|
url:`/pages/my/ucenter`
|
|
})
|
|
}
|
|
break;
|
|
}
|
|
case 1:{
|
|
uni.navigateTo({
|
|
url:`/pages/goods/goods`
|
|
})
|
|
break;
|
|
}
|
|
}
|
|
},
|
|
|
|
// 获取授权信息
|
|
onGetPhoneNumber(e){
|
|
if(e.detail.errMsg=="getPhoneNumber:fail user deny"){ //用户决绝授权
|
|
this.$toolAll.tools.showToast('您已拒绝授权');
|
|
}else{ //允许授权
|
|
let params={
|
|
iv:e.detail.iv,
|
|
encryptedData:e.detail.encryptedData
|
|
}
|
|
this.$requst.post('/api/user/bind-phone',params).then(res=>{
|
|
if(res.code==0) {
|
|
this.$toolAll.tools.showToast('绑定成功');
|
|
this.getUserInfo();
|
|
uni.navigateTo({
|
|
url:`/pages/my/revise`
|
|
})
|
|
}else{
|
|
this.$toolAll.tools.showToast(res.msg);
|
|
}
|
|
})
|
|
|
|
}
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
.my-herder{
|
|
width: 100%;
|
|
padding-bottom: 40rpx;
|
|
background-image: linear-gradient(to top,rgba(25,129,255,.5),rgba(25,129,255,1));
|
|
}
|
|
.my-portrait{
|
|
width: 180rpx;
|
|
height: 180rpx;
|
|
overflow: hidden;
|
|
margin: 0 auto;
|
|
}
|
|
.my-portrait>image{
|
|
width: 100%;
|
|
}
|
|
.my-nickname{
|
|
justify-content: center;
|
|
width: 100%;
|
|
}
|
|
.my-content{
|
|
width: calc(100% - 40rpx);
|
|
margin: 20rpx auto;
|
|
padding: 20rpx;
|
|
box-shadow: 0 0 15rpx rgba(0,0,0,.1);
|
|
}
|
|
.my-content .item{
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
height: 80rpx;
|
|
border-bottom: 2rpx solid #f4f5f6;
|
|
position: relative;
|
|
}
|
|
.my-content .item:last-child{
|
|
border: 0;
|
|
}
|
|
.my-content .item .get-phone-btn{
|
|
opacity: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
position: absolute;
|
|
left: 0;
|
|
right: 0;
|
|
top: 0;
|
|
bottom: 0;
|
|
z-index: 1;
|
|
}
|
|
.my-content .item>.title{
|
|
align-items: center;
|
|
}
|
|
.my-content .item>.title .img{
|
|
width: 46rpx;
|
|
}
|
|
</style>
|