zoujiandong b496603f7c 111
2025-06-17 17:58:29 +08:00

404 lines
8.8 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// pages/mobileLogin/mobileLogin.js
import { smsLogin, sendSms,getCaptcha,phoneLogin} from "../../../api/api"
const app = getApp();
import {auth} from "../../../api/auth.js"
import {throttle} from "../../../utils/util"
import {base64src} from "../../../utils/base64ToImg"
let urlHost=app.hostConfig().agreehost;
Page({
/**
* 页面的初始数据
*/
data: {
showSuccess:false,
showEntryTip:false,
showEntryTip_second:false,
show: false,
check:false,
sms:'',
message:'',
disabled:true,
isActive:false,
codeActive:true,
imgCode:'',
mobile:'',
redirecUrl:'',
timer:null,
time:59,
msg:'获取验证码',
captchaUuid:'',
captchaCode:'',
loginDevice:5,
smsType:2,
img_host:app.hostConfig().imghost
},
onConfirmEntry(){
this.setData({
showEntryTip:false
})
//wx.setStorageSync('hasEntry', true);
},
onCloseEntry(){
this.setData({
showEntryTip:true,
showEntryTip_second:true
})
},
onConfirmEntry_second(){
this.setData({
showEntryTip_second:false,
});
},
onCloseEntry_second(){
wx.exitMiniProgram({success: (res) => {}})
this.setData({
showEntryTip_second:false,
showEntryTip:false,
});
},
onConfirmSuccess(){
this.setData({
showSuccess:false
})
},
onCancelSuccess(){
this.setData({
showSuccess:false
})
},
checkboxChange(e) {
this.setData({
check:e.detail
})
},
getPhoneNumber:throttle(function(e) {
if (e.detail.errMsg == 'getPhoneNumber:ok'){
auth().then(res => {
phoneLogin('wx415cbcf96f4a3b27',{
code:e.detail.code
}).then((data)=>{
const { envVersion } = wx.getAccountInfoSync().miniProgram;
let token=''
if(envVersion=="develop" || envVersion=="trial"){
token="DEV_CASE_TOKEN"
}else{
token="PROD_CASE_TOKEN"
}
 wx.setStorageSync(token, data.token);
let url=this.data.redirectUrl?this.data.redirectUrl:'/pages/index/index';
if(url.indexOf('login')!=-1 || url.indexOf('mobileLogin')!=-1){
wx.reLaunch({
url:'/pages/index/index'
})
}else{
wx.reLaunch({
url:url
})
}
}).catch(error=>{
if(error.code==10007){
console.log(error.msg)
this.setData({
showSuccess:true,
message:error.msg,
mobile:error.data
})
}
})
});
}else if(e.detail.errMsg == 'getPhoneNumber:fail user deny'){
console.log('您拒绝手机号授权')
}else{
wx.showToast({
title: '手机号授权失败',
icon:'none'
})
}
}),
onConfirmSuccess(){
let {mobile}=this.data;
this.setData({
showSuccess:false
})
app.method.navigateTo({
url:'/case/pages/improveInfo/improveInfo?mobile='+mobile
})
},
onCancelSuccess(){
this.setData({
showSuccess:false
})
},
handleAgree(){
if(!this.data.check){
wx.showToast({
title: '请同意《用户服务协议》!',
icon:'none'
})
return false
};
},
getUserInfo(event) {
this.handlelogin();
},
onClose() {
this.setData({ show: false });
},
handleThrottle:throttle(function(){
this.getCode()
}),
handleGetCaptcha(){
getCaptcha().then(res=>{
base64src(res.captchaBase64Image,(img)=>{
this.setData({
imgCode:img,
captchaUuid:res.captchaUuid
})
})
})
},
goPwdLogin:throttle(function(){
app.method.navigateTo({
url:'/case/pages/pwdLogin/pwdLogin'
})
}),
goRegister:throttle(function(){
app.method.navigateTo({
url:'/case/pages/register/register'
})
}),
getCode(){
let {mobile,captchaCode,captchaUuid,loginDevice,smsType}=this.data;
if(!/^1[3456789]\d{9}$/.test(mobile)){
wx.showToast({
title: `请输入有效的手机号码!`,
icon: 'none',
});
return false;
};
if(!captchaCode){
wx.showToast({
title: `图形验证码不能为空`,
icon: 'none',
});
return false;
}
sendSms({
mobile,
smsType,
captchaCode,
captchaUuid,
loginDevice
}).then((res)=>{
let timer=setInterval(() => {
if (this.data.time == 0) {
clearInterval(this.data.timer);
this.setData({
time:59,
msg:'重新获取验证码',
isActive:false,
codeActive:true,
})
} else {
let msg= this.data.time + " s 后重新发送";
this.setData({
isActive:true,
msg:msg,
codeActive:false,
})
let time=this.data.time--;
this.setData({
msg:time + " s 后重新发送"
})
}
}, 1000);
this.setData({
timer:timer
})
}).catch(()=>{
this.handleGetCaptcha();
});
},
goLogin(){
let THIS=this;
if(!this.data.check){
wx.showToast({
title: '请同意《肝胆相照用户服务协议》!',
icon:'none'
})
return false
};
if(!/^1[3456789]\d{9}$/.test(this.data.mobile)){
wx.showToast({
title: `请输入有效的手机号码!`,
icon: 'none',
});
return false;
};
if(!this.data.sms){
wx.showToast({
title: `请输入验证码!`,
icon: 'none',
});
return false;
}
wx.getSetting({
success(res) {
// 判断它是否为true
if (res.authSetting["scope.userInfo"]) {
THIS.handlelogin();
} else {
THIS.setData({
show:true
})
}
}
});
},
handlelogin:throttle(function(){
let {sms,mobile }=this.data;
smsLogin({
sms:sms,
mobile
}).then((data)=>{
const { envVersion } = wx.getAccountInfoSync().miniProgram;
let token=''
if(envVersion=="develop" || envVersion=="trial"){
token="DEV_CASE_TOKEN"
}else{
token="PROD_CASE_TOKEN"
}
 wx.setStorageSync(token, data.token);
let url=this.data.redirectUrl?this.data.redirectUrl:'/pages/index/index';
if(url.indexOf('login')!=-1 || url.indexOf('mobileLogin')!=-1 ){
wx.reLaunch({
url:'/pages/index/index'
})
}else{
wx.reLaunch({
url:url
})
}
}).catch(error=>{
if(error.code==10007){
this.setData({
showSuccess:true,
message:error.msg,
mobile:error.data
})
}else{
this.handleGetCaptcha();
}
})
}),
goAgreement:throttle(function(event){
app.method.navigateTo({
url:"/case/pages/privacy/privacy"
})
}),
inputChange(e){
this.setData({
[e.target.dataset.id]: e.detail.value
});
if(e.target.dataset.id=="sms"){
if(e.detail.value.trim()){
this.setData({
disabled: false
});
}else{
this.setData({
disabled: true
});
}
}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.handleGetCaptcha();
if(options.redirectUrl){
this.setData({
redirectUrl:"/"+decodeURIComponent(options.redirectUrl)
})
}
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
wx.getPrivacySetting({
success: res => {
console.log(res) // 返回结果为: res = { needAuthorization: true/false, privacyContractName: '《xxx隐私保护指引》' }
if (res.needAuthorization) {
// 需要弹出隐私协议
this.setData({
showEntryTip:true
})
} else {
this.setData({
showEntryTip:false
})
// 用户已经同意过隐私协议,所以不需要再弹出隐私协议,也能调用已声明过的隐私
}
},
fail: () => {},
complete: () => {}
})
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
clearInterval(this.data.timer);
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
})