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
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 {}
|
|
|