mirror of
https://gitee.com/java110/WechatOwnerService.git
synced 2026-02-24 05:46:04 +08:00
140 lines
2.7 KiB
Vue
140 lines
2.7 KiB
Vue
<template>
|
|
<view class="login-container margin-top-sm">
|
|
<!-- 确保方法名一致 -->
|
|
<button open-type="getPhoneNumber" @getphonenumber="_getPhoneNumber" class="login-btn">
|
|
手机号快捷登录
|
|
</button>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import { boolAttrs } from '../jyf-parser/libs/config';
|
|
import {
|
|
wechatLogin
|
|
} from '@/api/user/userApi.js';
|
|
import {
|
|
saveOwnerStorage,
|
|
saveUserLoginInfo,
|
|
removeUserLoginInfo,
|
|
getLoginFlag
|
|
} from '@/lib/java110/utils/StorageUtil.js';
|
|
export default {
|
|
name: "wechatLogin",
|
|
data() {
|
|
return {
|
|
encryptedData: '',
|
|
iv: '',
|
|
code: '',
|
|
appId:''
|
|
};
|
|
},
|
|
props: {
|
|
readme: {
|
|
type: Boolean,
|
|
default: false,
|
|
},
|
|
},
|
|
methods: {
|
|
_initWechatLogin: function() {
|
|
let _that = this;
|
|
uni.login({
|
|
success: res => {
|
|
if (res.code) {
|
|
_that.code = res.code;
|
|
let accountInfo = uni.getAccountInfoSync();
|
|
_that.appId = accountInfo.miniProgram.appId;
|
|
} else {
|
|
console.error('获取登录code失败:', res);
|
|
}
|
|
}
|
|
});
|
|
},
|
|
_getPhoneNumber(e) {
|
|
|
|
if (e.detail.errMsg === "getPhoneNumber:ok") {
|
|
// 获取到加密数据
|
|
const {
|
|
encryptedData,
|
|
iv
|
|
} = e.detail;
|
|
// 发送到后端解密
|
|
this.encryptedData = encryptedData;
|
|
this.iv = iv;
|
|
this._loginByPhoneNumber();
|
|
} else {
|
|
uni.showToast({
|
|
title: '获取手机号失败',
|
|
icon: 'none'
|
|
});
|
|
}
|
|
},
|
|
_loginByPhoneNumber() {
|
|
if(!this.readme){
|
|
wx.showToast({
|
|
title: '请阅读用户协议和隐私政策',
|
|
icon: "none"
|
|
});
|
|
return;
|
|
}
|
|
wechatLogin({
|
|
encryptedData: this.encryptedData,
|
|
iv: this.iv,
|
|
code: this.code,
|
|
appId:this.appId
|
|
})
|
|
.then(_user => {
|
|
//todo 保存登录信息
|
|
saveUserLoginInfo(_user.userId, _user.token, _user.key);
|
|
uni.navigateTo({
|
|
url:'/pages/login/loginInitWechat?communityId='+_user.communityId
|
|
})
|
|
}, err => {
|
|
uni.showToast({
|
|
icon: 'none',
|
|
title: err
|
|
})
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
padding: 80rpx 40rpx;
|
|
}
|
|
|
|
.login-title {
|
|
font-size: 40rpx;
|
|
font-weight: bold;
|
|
margin-bottom: 80rpx;
|
|
}
|
|
|
|
.login-btn {
|
|
width: 100%;
|
|
height: 80rpx;
|
|
line-height: 90rpx;
|
|
border-radius: 10rpx;
|
|
background: #07C160;
|
|
color: white;
|
|
font-size: 32rpx;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
|
|
.wechat-icon {
|
|
width: 40rpx;
|
|
height: 40rpx;
|
|
margin-right: 15rpx;
|
|
}
|
|
|
|
.phone-display {
|
|
margin-top: 60rpx;
|
|
font-size: 32rpx;
|
|
color: #666;
|
|
}
|
|
</style> |