shjz-applet/pages/login/login.vue

185 lines
4.8 KiB
Vue
Raw Normal View History

2022-08-12 18:25:42 +08:00
<template>
<view>
<!-- 头部 -->
<status-nav :ifReturn="false" navBarTitle="登录" :marginBottom="0"></status-nav>
<!-- 头像 -->
<view class='login-header'>
<image class="infoImg" mode="aspectFill" :src="userInfo.avatarUrl || imgSrc"></image>
<view class="logo-name">{{appletName}}</view>
</view>
<!-- 登录 -->
<view class="login-footer">
2022-09-13 16:30:35 +08:00
<view class="login-btn radius20 font34" :style="{background:'#3b45b2'}" type='primary' @tap="bindGetUserInfo"></view>
2022-08-12 18:25:42 +08:00
<view class="agreement-box font28">如您同意授权请点击微信登录</text></view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
userInfo: {}, //用户信息
canIGetUserProfile: false,
2022-08-18 15:26:31 +08:00
imgSrc: '/static/public/logo.jpg', //默认logo头像
2022-08-12 18:25:42 +08:00
appletName:'上海集正', //小程序名称
isShowP:false,
};
},
onLoad() {
if (uni.getUserProfile) {
this.canIGetUserProfile = true;
}
},
methods: {
//暂不绑定事件
refuse(){
this.isShowP=false;
this.$toolAll.tools.showToast('登录成功','success')
uni.reLaunch({url:'/pages/index/index'})
},
//授权绑定手机号
getphonenumber(e){
let ya = this;
wx.login({
success:(res)=>{
this.$requst.post('/api/user/login',{code:res.code}).then(result => {
if(e.detail.errMsg=="getPhoneNumber:ok"){
this.$requst.post('user/bind-phone',{openid: result.data.openid,session_key:result.data.session_key, iv:e.detail.iv,encryptedData:e.detail.encryptedData}).then(res=>{
console.log('手机号信息:',res);
if(res.code==0){
this.$toolAll.tools.showToast('手机号绑定成功');
this.isShowP = true;
} else this.$toolAll.tools.showToast(res.msg);
},error=>{})
} else {
// console.log('取消授权手机号')
}
}).catch(err=>{
console.log(err);
})
}
})
},
//调起登录授权
bindGetUserInfo(e) {
let ya = this;
//新版登录方式
uni.getUserProfile({
desc: '登录',
lang: 'zh_CN',
success: (res) => {
ya.userInfo = res.userInfo;
uni.login({
provider: 'weixin',
success: (res)=> {
if (res.code) {
ya.updateUserInfo(res.code);
} else {
uni.showToast({
title: '登录失败!',
duration: 2000
});
}
},
});
},
fail: (res) => {}
});
},
//调用登录接口
updateUserInfo(code) {
let ya = this;
uni.showToast({
title: '登录中...',
icon:'loading',
duration:10000
})
var params = {
code:code,
nickname: ya.userInfo.nickName,//用户昵称
headimgurl: ya.userInfo.avatarUrl,//用户头像
country: ya.userInfo.country,//用户所在国家
province: ya.userInfo.province,//用户所在省份
city: ya.userInfo.city,//用户所在城市
gender: ya.userInfo.gender,//用户性别
language:ya.userInfo.language,//语言
invite_code:uni.getStorageSync('inviteCode')?uni.getStorageSync('inviteCode'):'',
is_active:1
}
this.$requst.post('/api/user/login',params).then(res => {
if(res.code == 0){
uni.setStorageSync('userId',res.data.account_id)
uni.setStorageSync('token',res.data.token)//缓存token
uni.setStorageSync('openid',res.data.openid)//缓存openid
uni.setStorageSync('expire',res.data.expire)//缓存失效时间(时间戳格式)
uni.setStorageSync('phone_active',res.data.phone_active)//是否授权手机号
uni.setStorageSync('is_active',res.data.is_active)//是否授权头像和昵称
uni.setStorageSync('invite_code',res.data.invite_code)//缓存邀请码
if(uni.getStorageSync('page-path-options')) {
uni.reLaunch({ // 重新进入当前页面
url:uni.getStorageSync('page-path-options')
})
} else {
uni.reLaunch({
url:'/pages/index/index'
})
}
}
},error => {})
}
}
}
</script>
<style>
.login-header {
justify-content: center;
align-items: center;
flex-direction: column;
margin-top: 0;
position: fixed;
left: 50%;
top: 40%;
transform: translate(-50%,-50%);
}
.infoImg {
width: 224rpx;
height: 224rpx;
border-radius: 100%;
border: 2rpx solid #d8d8d8;
}
.logo-name {
font-size: 30rpx;
margin-top: 30rpx;
color: #262626;
text-align: center;
font-weight: bold;
}
.login-footer {
width: 100%;
text-align: center;
position: fixed;
left: 0;
bottom: 60rpx;
}
.login-btn {
width: calc(100% - 80rpx);
line-height: 98rpx;
margin: 0 auto;
color: #ffffff;
box-shadow: 0rpx 8rpx 20rpx rgba(28,47,136,.75);
letter-spacing: 4rpx;
text-indent: 4rpx;
}
.agreement-box{
margin-top: 30rpx;
color: #262626;
}
</style>