信达小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

205 lines
4.0 KiB

const app = getApp<IAppOption>()
let timer = null as null | number
Page({
data: {
popupShow: false,
popupType: 'popup4', // 登录失败弹窗
popupParams: {
close: true,
} as any,
showTel: false,
mobile: '',
code: '',
codeText: '发送验证码',
check1: false,
back: '',
},
onLoad(options) {
this.setData({
back: options.back,
})
},
getCode() {
if (timer) return
const mobile = this.data.mobile
if (!mobile) {
wx.showToast({
title: '手机号不能为空',
icon: 'none',
})
return
}
// 验证手机号
if (!/^1[3-9,]\d{9}$/.test(mobile)) {
wx.showToast({
title: '手机号格式不正确',
icon: 'none',
})
return
}
wx.ajax({
method: 'POST',
url: '?r=xd/login/send-verify-code',
data: {
mobile,
},
}).then((_res) => {
wx.showToast({
icon: 'none',
title: '验证码已发送~',
})
let time = 60
timer = setInterval(() => {
time--
this.setData({
codeText: `${time}s后重新发送`,
})
if (time <= 0) {
clearInterval(timer as number)
timer = null
this.setData({
codeText: '发送验证码',
})
}
}, 1000)
})
},
handleCheck() {
this.setData({
check1: !this.data.check1,
})
},
handleDocRule() {
const { check1 } = this.data
return new Promise((resolve) => {
if (check1) {
return resolve(true)
}
wx.showToast({
title: '请同意相关协议',
icon: 'none',
})
})
},
async handleSubmit() {
await this.handleDocRule()
const { mobile, code } = this.data
if (!mobile) {
wx.showToast({
title: '请输入手机号',
icon: 'none',
})
return
}
if (!code) {
wx.showToast({
title: '请输入验证码',
icon: 'none',
})
return
}
wx.ajax({
method: 'POST',
url: '?r=xd/login/reg-login',
data: {
mobile,
code,
},
showMsg: false,
})
.then(() => {
this.submitCallback()
})
.catch((err) => {
if (err.data.code == 100) {
this.handleShowPopup()
} else if (err.data.msg) {
wx.showToast({
title: err.data.msg,
icon: 'none',
})
}
})
},
handleWxSubmit(e: WechatMiniprogram.CustomEvent) {
const { iv, encryptedData } = e.detail
if (iv && encryptedData) {
wx.ajax({
method: 'POST',
url: '?r=xd/login/wx-reg-login',
data: {
iv: encodeURIComponent(iv),
encryptedData: encodeURIComponent(encryptedData),
},
showMsg: false,
})
.then(() => {
this.submitCallback()
})
.catch((err) => {
if (err.data.code == 100) {
this.handleShowPopup()
} else if (err.data.msg) {
wx.showToast({
title: err.data.msg,
icon: 'none',
})
}
})
}
},
submitCallback() {
app.updateLoginInfo((res) => {
if (res.isLogin == 1) {
if (res.loginType == 2) {
wx.reLaunch({
url: '/pages/home/index',
})
} else {
this.handleShowPopup()
}
} else {
this.handleShowPopup()
}
})
},
handlePatient() {
wx.redirectTo({
url: '/patient/pages/login/index',
})
},
handleShowPopup() {
this.setData({
popupShow: true,
popupType: 'popup4',
popupParams: {
close: true,
},
})
},
handleShowTel() {
this.setData({
showTel: !this.data.showTel,
})
},
handleLink() {
wx.navigateTo({
url: '/doc/pages/doc1/index',
})
},
handlePopupCancel() {
this.setData({
popupShow: false,
})
},
handleBack(){
wx.navigateBack()
}
})
export {}