331 lines
7.5 KiB
Vue
331 lines
7.5 KiB
Vue
|
<template>
|
|||
|
<view>
|
|||
|
<view class="header">
|
|||
|
<view class="bg">
|
|||
|
<view class="box">
|
|||
|
<view class="box-hd" @click="login">
|
|||
|
<view v-if="islogin">
|
|||
|
<view class="avator">
|
|||
|
<img :src="userinfo.avatar">
|
|||
|
</view>
|
|||
|
<view class="phone-number">ID:{{userinfo.id}} 昵称:{{userinfo.nickname || '未设置昵称'}}</view>
|
|||
|
</view>
|
|||
|
<view v-else>
|
|||
|
<view class="avator">
|
|||
|
<img :src="avatarUrl">
|
|||
|
</view>
|
|||
|
<view class="phone-number" style="color: red;">请先点我登录</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="box-bd" @click="myNotice">
|
|||
|
<view class="item">
|
|||
|
<u-icon class="icon" name="volume-fill" size="25" color="#757575"></u-icon>
|
|||
|
<view class="text">我的通知</view>
|
|||
|
</view>
|
|||
|
<view class="item">
|
|||
|
<u-icon class="icon" name="star-fill" size="25" color="#757575"></u-icon>
|
|||
|
<view class="text">我的收藏</view>
|
|||
|
</view>
|
|||
|
<view class="item">
|
|||
|
<u-icon class="icon" name="server-fill" size="25" color="#757575"></u-icon>
|
|||
|
<view class="text">我的客服</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="list-content">
|
|||
|
<view class="list">
|
|||
|
<view class="li">
|
|||
|
<u-icon class="icon" name="coupon-fill" size="25" color="#757575"></u-icon>
|
|||
|
<view class="text">我的名片</view>
|
|||
|
<u-icon class="icon" name="arrow-right" size="20" color="#757575"></u-icon>
|
|||
|
</view>
|
|||
|
<view class="li " @click="changeSkin">
|
|||
|
<u-icon class="icon" name="grid-fill" size="25" color="#757575"></u-icon>
|
|||
|
<view class="text">主题切换</view>
|
|||
|
<u-icon class="icon" name="arrow-right" size="20" color="#757575"></u-icon>
|
|||
|
</view>
|
|||
|
<view class="li ">
|
|||
|
<u-icon class="icon" name="question-circle-fill" size="25" color="#757575"></u-icon>
|
|||
|
<view class="text">帮助中心</view>
|
|||
|
<u-icon class="icon" name="arrow-right" size="20" color="#757575"></u-icon>
|
|||
|
</view>
|
|||
|
<view class="li ">
|
|||
|
<u-icon class="icon" name="info-circle-fill" size="25" color="#757575"></u-icon>
|
|||
|
<view class="text">关于我们</view>
|
|||
|
<u-icon class="icon" name="arrow-right" size="20" color="#757575"></u-icon>
|
|||
|
</view>
|
|||
|
<view class="li ">
|
|||
|
<u-icon class="icon" name="email-fill" size="25" color="#757575"></u-icon>
|
|||
|
<view class="text">意见反馈</view>
|
|||
|
<u-icon class="icon" name="arrow-right" size="20" color="#757575"></u-icon>
|
|||
|
</view>
|
|||
|
<view class="li noborder">
|
|||
|
<u-icon class="icon" name="setting-fill" size="25" color="#757575"></u-icon>
|
|||
|
<view class="text">系统设置</view>
|
|||
|
<u-icon class="icon" name="arrow-right" size="20" color="#757575"></u-icon>
|
|||
|
</view>
|
|||
|
<view class="li noborder" @click="loginOut">
|
|||
|
<u-icon class="icon" name="setting-fill" size="25" color="#757575"></u-icon>
|
|||
|
<view class="text">注销登录</view>
|
|||
|
<u-icon class="icon" name="arrow-right" size="20" color="#757575"></u-icon>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="copyright">
|
|||
|
<text>AbuCoder版权所有</text>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
import {
|
|||
|
setUserInfo,
|
|||
|
getUserInfo,
|
|||
|
setToken,
|
|||
|
getToken,
|
|||
|
removeUserInfo,
|
|||
|
removeToken
|
|||
|
} from '@/utils/auth';
|
|||
|
export default {
|
|||
|
data() {
|
|||
|
return {
|
|||
|
avatarUrl: 'https://portrait.gitee.com/uploads/avatars/user/354/1062657_rahman_1649233036.png!avatar60',
|
|||
|
userinfo: {},
|
|||
|
islogin:false,
|
|||
|
}
|
|||
|
},
|
|||
|
onShow() {
|
|||
|
console.log(getUserInfo())
|
|||
|
if(getUserInfo()!=undefined){
|
|||
|
this.islogin = true
|
|||
|
}
|
|||
|
this.userinfo = getUserInfo() || {};
|
|||
|
},
|
|||
|
methods: {
|
|||
|
login() {
|
|||
|
let that = this
|
|||
|
uni.login({
|
|||
|
provider: 'weixin',
|
|||
|
success: function(loginRes) {
|
|||
|
let form = {};
|
|||
|
form.code = loginRes.code; //用户code 注:用户的code每次登录都是随机的,所以不需要进行存储
|
|||
|
uni.showLoading({
|
|||
|
title: "登录中....",
|
|||
|
mask: true
|
|||
|
})
|
|||
|
that.request('wxlogin', form, 'POST').then(wxloginres => {
|
|||
|
console.log("wxloginres: ", wxloginres)
|
|||
|
if (wxloginres.code==0) {
|
|||
|
uni.hideLoading()
|
|||
|
setTimeout(function() {
|
|||
|
uni.hideLoading();
|
|||
|
}, 2000);
|
|||
|
setToken(wxloginres.data.openid)
|
|||
|
setUserInfo(wxloginres.data); //模拟存储用户信息
|
|||
|
//成功后进入头像与昵称修改页面
|
|||
|
uni.navigateTo({
|
|||
|
url: '/pages/me/userinfo'
|
|||
|
})
|
|||
|
} else {
|
|||
|
uni.showToast({
|
|||
|
icon: "none",
|
|||
|
title: "登录失败,请稍后试试!",
|
|||
|
duration: 2000
|
|||
|
})
|
|||
|
}
|
|||
|
})
|
|||
|
},
|
|||
|
fail(err) {
|
|||
|
console.log(err)
|
|||
|
}
|
|||
|
});
|
|||
|
},
|
|||
|
myNotice() {
|
|||
|
uni.navigateTo({
|
|||
|
url: './mynotice/mynotice'
|
|||
|
})
|
|||
|
},
|
|||
|
loginOut() {
|
|||
|
uni.showModal({
|
|||
|
title: '注销登录提示',
|
|||
|
content: '确定要注销登录吗?',
|
|||
|
cancelText: "取消", // 取消按钮的文字
|
|||
|
confirmText: "确认", // 确认按钮的文字
|
|||
|
confirmColor: '#f55850',
|
|||
|
success: (res) => {
|
|||
|
if (res.confirm) {
|
|||
|
console.log('comfirm') //点击确定之后执行的代码
|
|||
|
uni.$u.toast("注销登录成功,欢迎再来")
|
|||
|
removeUserInfo()
|
|||
|
removeToken()
|
|||
|
this.islogin=false
|
|||
|
} else {
|
|||
|
console.log('cancel') //点击取消之后执行的代码
|
|||
|
}
|
|||
|
}
|
|||
|
})
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="scss">
|
|||
|
page {
|
|||
|
background-color: #f1f1f1;
|
|||
|
font-size: 28rpx;
|
|||
|
}
|
|||
|
|
|||
|
.header {
|
|||
|
background: #fff;
|
|||
|
height: 660rpx;
|
|||
|
padding-bottom: 110rpx;
|
|||
|
|
|||
|
.bg {
|
|||
|
width: 100%;
|
|||
|
height: 490rpx;
|
|||
|
padding-top: 310rpx;
|
|||
|
background: linear-gradient(to bottom, rgb(1, 94, 234), rgb(0, 192, 250), rgb(255, 255, 255));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.box {
|
|||
|
width: 650rpx;
|
|||
|
height: 300rpx;
|
|||
|
border-radius: 20rpx;
|
|||
|
margin: 0 auto;
|
|||
|
background: #fff;
|
|||
|
box-shadow: 0 5rpx 20rpx 0rpx rgba(0, 0, 150, .2);
|
|||
|
|
|||
|
.box-hd {
|
|||
|
display: flex;
|
|||
|
flex-wrap: wrap;
|
|||
|
flex-direction: row;
|
|||
|
justify-content: center;
|
|||
|
margin-top: 15rpx;
|
|||
|
|
|||
|
.avator {
|
|||
|
|
|||
|
width: 160rpx;
|
|||
|
height: 160rpx;
|
|||
|
background: #fff;
|
|||
|
border: 5rpx solid #f1f1f1;
|
|||
|
border-radius: 50%;
|
|||
|
margin: 0 auto;
|
|||
|
margin-top: -80rpx;
|
|||
|
overflow: hidden;
|
|||
|
|
|||
|
img {
|
|||
|
width: 100%;
|
|||
|
height: 100%;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.phone-number {
|
|||
|
width: 100%;
|
|||
|
text-align: center;
|
|||
|
margin: 20rpx auto;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.box-bd {
|
|||
|
display: flex;
|
|||
|
flex-wrap: nowrap;
|
|||
|
flex-direction: row;
|
|||
|
justify-content: center;
|
|||
|
|
|||
|
.item {
|
|||
|
flex: 1 1 auto;
|
|||
|
display: flex;
|
|||
|
flex-wrap: wrap;
|
|||
|
flex-direction: row;
|
|||
|
justify-content: center;
|
|||
|
border-right: 1px solid #f1f1f1;
|
|||
|
margin: 15rpx 0;
|
|||
|
|
|||
|
&:last-child {
|
|||
|
border: none;
|
|||
|
}
|
|||
|
|
|||
|
.icon {
|
|||
|
width: 60rpx;
|
|||
|
height: 60rpx;
|
|||
|
|
|||
|
img {
|
|||
|
width: 100%;
|
|||
|
height: 100%;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.text {
|
|||
|
width: 100%;
|
|||
|
text-align: center;
|
|||
|
margin-top: 10rpx;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.list-content {
|
|||
|
background: #fff;
|
|||
|
}
|
|||
|
|
|||
|
.list {
|
|||
|
width: 100%;
|
|||
|
border-bottom: 15rpx solid #f1f1f1;
|
|||
|
background: #fff;
|
|||
|
|
|||
|
&:last-child {
|
|||
|
border: none;
|
|||
|
}
|
|||
|
|
|||
|
.li {
|
|||
|
width: 92%;
|
|||
|
height: 100rpx;
|
|||
|
padding: 0px 4%;
|
|||
|
border-bottom: 1px solid #f3f3f3;
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
margin: 0rpx auto;
|
|||
|
|
|||
|
&.noborder {
|
|||
|
border-bottom: 0
|
|||
|
}
|
|||
|
|
|||
|
.icon {
|
|||
|
flex-shrink: 0;
|
|||
|
width: 50rpx;
|
|||
|
height: 50rpx;
|
|||
|
|
|||
|
image {
|
|||
|
width: 50rpx;
|
|||
|
height: 50rpx;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.text {
|
|||
|
padding-left: 20rpx;
|
|||
|
width: 100%;
|
|||
|
color: #666;
|
|||
|
}
|
|||
|
|
|||
|
.to {
|
|||
|
flex-shrink: 0;
|
|||
|
width: 40rpx;
|
|||
|
height: 40rpx;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.copyright {
|
|||
|
margin: 20rpx auto;
|
|||
|
width: 80%;
|
|||
|
height: 60rpx;
|
|||
|
display: flex;
|
|||
|
justify-content: center;
|
|||
|
align-items: center;
|
|||
|
color: #9E9E9E;
|
|||
|
font-size: 26rpx;
|
|||
|
}
|
|||
|
</style>
|