// pages/wxbind/wxbind.js const app = getApp(); const { get, post } = require('../../api/request.js'); const storage = require('../../utils/storage.js'); Page({ /** * 页面的初始数据 */ data: { mobile: '', phoneCode: '', codeSent: false, countdown: 60, isButtonEnabled: false, showErrorDialog: false, errorData: "", errorDialogTitle: "错误提示", confirmBtn: { content: '确认' } }, onLoad(options) { }, bindMobileInput(e) { this.setData({ mobile: e.detail.value }, this.checkButtonState); }, bindCodeInput(e) { this.setData({ phoneCode: e.detail.value }); this.checkButtonState(); }, checkButtonState() { const { mobile, phoneCode } = this.data; const isButtonEnabled = mobile.length === 11 && phoneCode.length == 6; this.setData({ isButtonEnabled: isButtonEnabled }); console.log(isButtonEnabled); }, sendCode: function () { if (!this.data.mobile) { wx.showToast({ title: '请输入手机号', icon: 'none', duration: 2000, }); return; } if (this.data.mobile.length != 11) { wx.showToast({ title: '请输入完整手机号', icon: 'none', duration: 2000, }); return; } // 在这里处理发送验证码的逻辑,可以调用后台接口实现 this.postCode(); }, //倒计时 startCountdown: function () { let that = this; let timer = setInterval(function () { let countdown = that.data.countdown - 1; that.setData({ countdown: countdown, }); if (countdown <= 0) { clearInterval(timer); that.setData({ codeSent: false, countdown: 60, }); } }, 1000); }, bindSuccess: function () { if (!this.data.isButtonEnabled) return; wx.showToast({ title: '绑定成功', icon: 'success' }); // 跳转到 TabBar 页面 wx.redirectTo({ url: '/pages/home/home' // 这里填写你想要跳转的 TabBar 页面路径 }); }, //获取验证码 postCode: function () { const params = { url: 'wx/client/send_sms?phoneNumber=' + this.data.mobile }; post(params) .then((data) => { wx.showToast({ title: '验证码已发送', icon: 'success', duration: 2000, }); this.setData({ codeSent: true, }); // 启动倒计时 this.startCountdown(); }) .catch((error) => { this.setData({ showErrorDialog: true, errorData: error.msg }) console.error('Failed to add item:', error); }); }, bind() { this.wsLogin(); }, wsLogin() { wx.login({ success: res => { if (res.code) { console.log('登录成功,获取到的code:', res.code); // 发送 res.code 到后台服务器换取 openId, sessionKey, unionId this.verify(res.code) } else { console.log('登录失败!' + res.errMsg); } } }); }, //用户绑定 verify(wxCode) { const params = { url: 'wx/client/verify', data: { phoneNumber: this.data.mobile, securityCode: this.data.phoneCode, code: wxCode } }; post(params) .then((data) => { getApp().globalData.sessionId = String(data.content.sessionId) storage.setItem("sessionId", String(data.content.sessionId)) getApp().globalData.clientId = String(data.content.clientId) storage.setItem("clientId", String(data.content.clientId)) this.bindSuccess(); }) .catch((error) => { wx.showToast({ title: error.msg, icon: 'error', duration: 3000, }); console.error('Failed to add item:', error); }); }, closeDialog() { this.setData({ showErrorDialog: false }) } })