|
@@ -0,0 +1,216 @@
|
|
|
+const { isMobile } = require('../../utils/validate')
|
|
|
+const { sendCode, miniPhoneLogin, modifyUserPhone } = require('../../api/common')
|
|
|
+const { login, sessionStorageKey } = require('../../api/request')
|
|
|
+const app = getApp()
|
|
|
+Page({
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 页面的初始数据
|
|
|
+ */
|
|
|
+ data: {
|
|
|
+ form: {
|
|
|
+ cellphone: '',
|
|
|
+ code: ''
|
|
|
+ },
|
|
|
+ numCount: 60,
|
|
|
+ bindType: 1, // 绑定类型:1手机号登录 2手机号解绑后绑定新的手机号
|
|
|
+ booLock: false
|
|
|
+ },
|
|
|
+ timer: null,
|
|
|
+ wxCode: '',
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生命周期函数--监听页面加载
|
|
|
+ */
|
|
|
+ onLoad(options) {
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生命周期函数--监听页面初次渲染完成
|
|
|
+ */
|
|
|
+ onReady() {
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生命周期函数--监听页面显示
|
|
|
+ */
|
|
|
+ onShow() {
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生命周期函数--监听页面隐藏
|
|
|
+ */
|
|
|
+ onHide() {
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生命周期函数--监听页面卸载
|
|
|
+ */
|
|
|
+ onUnload() {
|
|
|
+ clearInterval(this.timer)
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 页面相关事件处理函数--监听用户下拉动作
|
|
|
+ */
|
|
|
+ onPullDownRefresh() {
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 页面上拉触底事件的处理函数
|
|
|
+ */
|
|
|
+ onReachBottom() {
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 用户点击右上角分享
|
|
|
+ */
|
|
|
+ onShareAppMessage() {
|
|
|
+
|
|
|
+ },
|
|
|
+ async getWxCode() {
|
|
|
+ try {
|
|
|
+ this.wxCode = await login()
|
|
|
+ } catch (e) {}
|
|
|
+ },
|
|
|
+ mobileEventhandle(e) {
|
|
|
+ const val = e.detail.value.replace(/[^\d]$/, '').replace(/^0/, '').replace(/(\d{11}(.*))/, '$1')
|
|
|
+
|
|
|
+ this.setData({
|
|
|
+ 'form.cellphone': val
|
|
|
+ })
|
|
|
+
|
|
|
+ return {
|
|
|
+ value: val
|
|
|
+ }
|
|
|
+ },
|
|
|
+ codeEventhandle(e) {
|
|
|
+ const val = e.detail.value.replace(/[^\d]$/, '').replace(/(\d{6}(.*))/, '$1')
|
|
|
+
|
|
|
+ this.setData({
|
|
|
+ 'form.code': val
|
|
|
+ })
|
|
|
+
|
|
|
+ return {
|
|
|
+ value: val
|
|
|
+ }
|
|
|
+ },
|
|
|
+ funCutDown() {
|
|
|
+ let numCount = this.data.numCount
|
|
|
+ this.timer = setInterval(() => {
|
|
|
+ if (numCount === 0) {
|
|
|
+ clearInterval(this.timer)
|
|
|
+ this.setData({
|
|
|
+ numCount: 0
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ numCount--
|
|
|
+ this.setData({
|
|
|
+ numCount: numCount
|
|
|
+ })
|
|
|
+ }, 1000)
|
|
|
+ },
|
|
|
+ async funGetCode() {
|
|
|
+ const numCount = this.data.numCount
|
|
|
+ const { cellphone } = this.data.form
|
|
|
+
|
|
|
+ if (!isMobile(cellphone)) {
|
|
|
+ wx.showToast({
|
|
|
+ title: '请输入正确的手机号~',
|
|
|
+ icon: 'none'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (numCount < 60 && numCount > 0) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.setData({
|
|
|
+ numCount: 60,
|
|
|
+ code: ''
|
|
|
+ })
|
|
|
+
|
|
|
+ this.funCutDown()
|
|
|
+
|
|
|
+ try {
|
|
|
+ const { status } = await sendCode({ phone: cellphone, type: 2 })
|
|
|
+ let title = '验证码发送成功'
|
|
|
+ if (status) {
|
|
|
+ } else {
|
|
|
+ title = '验证码发送失败'
|
|
|
+ }
|
|
|
+ wx.showToast({
|
|
|
+ title: title,
|
|
|
+ icon: 'none'
|
|
|
+ })
|
|
|
+ } catch (err) {}
|
|
|
+ },
|
|
|
+ async bindEvent() {
|
|
|
+ const { cellphone, code } = this.data.form
|
|
|
+
|
|
|
+ this.setData({
|
|
|
+ booLock: true
|
|
|
+ })
|
|
|
+
|
|
|
+ if (this.data.bindType === 1) { // 登录、注册
|
|
|
+ try {
|
|
|
+ const { status, data } = await miniPhoneLogin({ wxCode: this.wxCode, cellphone, code })
|
|
|
+ if (status) {
|
|
|
+ try {
|
|
|
+ wx.setStorageSync(sessionStorageKey, data.token)
|
|
|
+ } catch (err) {}
|
|
|
+
|
|
|
+ await app.fetchUserData()
|
|
|
+
|
|
|
+ const pages = getCurrentPages()
|
|
|
+ if (pages.length > 2 && pages[pages.length - 2].route === 'pages/login/login') {
|
|
|
+ const route = pages[pages.length - 3]
|
|
|
+ wx.navigateBack({
|
|
|
+ delta: 2
|
|
|
+ })
|
|
|
+ route.bindCallBack && route.bindCallBack()
|
|
|
+ } else if (pages.length > 1) {
|
|
|
+ const route = pages[pages.length - 2]
|
|
|
+ wx.navigateBack({
|
|
|
+ delta: 1
|
|
|
+ })
|
|
|
+ route.bindCallBack && route.bindCallBack()
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ wx.showToast({
|
|
|
+ title: '登录出错了,请重试',
|
|
|
+ icon: 'none'
|
|
|
+ })
|
|
|
+ this.getWxCode()
|
|
|
+ }
|
|
|
+ } catch (err) {
|
|
|
+ this.getWxCode()
|
|
|
+ }
|
|
|
+ } else { // 绑定新手机号
|
|
|
+ try {
|
|
|
+ const { status, msg } = await modifyUserPhone({ cellphone, code })
|
|
|
+ if (status) {
|
|
|
+ await app.fetchUserData()
|
|
|
+ wx.reLaunch({
|
|
|
+ url: '/pages/mine/mine'
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ wx.showToast({
|
|
|
+ title: msg || '绑定手机号出错了,请重试',
|
|
|
+ icon: 'none'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ } catch (err) {}
|
|
|
+ }
|
|
|
+
|
|
|
+ this.setData({
|
|
|
+ booLock: false
|
|
|
+ })
|
|
|
+ }
|
|
|
+})
|