const app = getApp() 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 {}