login.js 6.79 KB
let Date = require('../../utils/date.js');
let Utils = require('../../utils/util.js');

let app = getApp();
Page({
  data: {
    tipsInnerText: "",
    redirect: "createWish", // 注册完的重定向页面
    tipsRegisteredVisible: false,
    tipsCommonVisible: false,
    // form start
    name: "",
    mobile: "",
    verifyCode: "",
    birthday: "",
    password: "",
    sex: -1,
    sexList: [{
        label: "女",
        value: 0
      },
      {
        label: "男",
        value: 1
      },
    ],
    isTerms: false,
    thumbX: 44,
    thumbXTarget: 350, // 正确的指数
    thumbXFixed: 20, // 运行的误差
    movableViewX: 0, // 滑块的值
    isPlzAuth: false, //滑块验证
    // form end
    auth_time: 0,
    sendAuthCode: true,
    /*布尔值,通过v-show控制显示‘获取按钮’还是‘倒计时’ */
  },
  onShareAppMessage() {},
  onLoad(options) {
    let windowWidth = wx.getSystemInfoSync().windowWidth;
    this.setData({
      windowWidth
    })
    let {
      redirect
    } = options;
    if (redirect) {
      this.setData({
        redirect
      })
    }
    this.initData();
  },
  initData() {},
  showLog(msg) {
    wx.showToast({
      title: msg,
      icon: "none"
    })
  },
  // 登陆
  doLogin() {
    let _this = this;
    this.checkForm().then((result) => {
      // 注册
      let data = {
        mobile: this.data.mobile,
        verifyCode: this.data.verifyCode,
      }
      app.post({
        url: app.api.crmLogin,
        data: data
      }).then((result) => {
        if (result.status == 1) {
          wx.showModal({
            title: "登陆成功",
            content: "继续生成我的心愿单",
            confirmText: "马上前往",
            showCancel: false,
            success(res) {
              app.router.push({
                openType: "redirectTo",
                path: _this.data.redirect
              })
            }
          })
        } else if (result.status == 0) {
          this.setData({
            tipsInnerText: "短信验证码错误",
            tipsCommonVisible: true,
          })
        } else if (result.status == 2) {
          this.setData({
            tipsInnerText: "账号不存在",
            tipsCommonVisible: true,
          })
        } else {
          this.setData({
            tipsInnerText: "登陆失败",
            tipsCommonVisible: true,
          })
        }
      });
    })
  },
  // 注册
  doRegister() {
    let _this = this;
    this.checkForm().then((result) => {
      // 注册
      let data = {
        mobile: this.data.mobile,
        name: this.data.name,
        birthday: this.data.birthday,
        verifyCode: this.data.verifyCode,
        password: this.data.password,
        sex: this.data.sex,
      }
      app.post({
        url: app.api.crmRegister,
        data: data
      }).then((result) => {
        if (result.status == 1) {
          wx.showModal({
            title: "登陆成功",
            content: "继续生成我的心愿单",
            confirmText: "马上前往",
            showCancel: false,
            success(res) {
              app.router.push({
                openType: "redirectTo",
                path: _this.data.redirect
              })
            }
          })
        } else {
          this.setData({
            tipsInnerText: result.errMsg,
            tipsCommonVisible: true,
          })
        }
      });
    })
  },
  // 表单检查
  checkForm() {
    return new Promise((resolve, reject) => {
      if (!this.data.mobile) {
        this.showLog("请输入手机号码");
        reject();
      } else if (!Utils.checkMobile(this.data.mobile)) {
        this.showLog("请输正确手机号码");
        reject();
      } else if (!this.data.verifyCode) {
        this.showLog("请输入验证码");
        reject();
      } else if (!this.data.isPlzAuth) {
        this.showLog("请完成拼图验证");
        reject();
      } else {
        resolve();
      }
    });
  },
  // 是否同意条款
  onTermsHandler() {
    console.log("onTermsHandler");
    this.setData({
      isTerms: !this.data.isTerms
    })
  },
  // 跳转至会员条款
  onPolicyHandler() {},
  // 跳转到注册页面
  toRegisterHandler() {
    app.router.push({
      openType: "redirectTo",
      path: "register"
    })
  },
  // 获取验证码
  reqGetSmsRequest() {
    if (!this.data.sendAuthCode) return;
    let mobile = this.data.mobile
    if (!mobile || !Utils.checkMobile(mobile)) {
      this.showLog("请输入正确的手机号码");
      return
    }
    if (!this.data.isPlzAuth) {
      this.showLog("请完成拼图验证");
      return
    }
    this.getAuthCode();
    app.post({
      url: app.api.mobileVerifyCode,
      data: {
        picVerifyCode: "",
        mobile: mobile,
        forRegister: 0
      }
    }).then((result) => {
      wx.showToast({
        title: "短信发送成功",
        icon: "none"
      })
    });
  },
  // 倒数
  getAuthCode() {
    let _this = this;
    _this.setData({
      sendAuthCode: false,
      auth_time: 60
    })
    var auth_timetimer = setInterval(() => {
      _this.setData({
        auth_time: _this.data.auth_time - 1
      })
      if (_this.data.auth_time <= 0) {
        _this.setData({
          sendAuthCode: true
        });
        clearInterval(auth_timetimer)
      }
    }, 1000)
  },

  // 监听滑动变量
  onThumbChangeHandler(e) {
    let thumbX = e.detail.x * 750 / this.data.windowWidth + 44;
    this.setData({
      thumbX: thumbX,
    })
  },

  // 滑动停止
  onTouchEndHandler(e) {
    let {
      thumbX,
      thumbXTarget,
      thumbXFixed
    } = this.data;
    let result = Math.abs(thumbXTarget - thumbX);
    if (result < thumbXFixed) {
      this.showLog("验证成功")
      this.setData({
        isPlzAuth: true
      })
    } else {
      this.showLog("验证失败")
    }
    this.setData({
      thumbX: 44,
      movableViewX: 0,
    })
  },

  bindMobileInput(e) {
    this.setData({
      "mobile": e.detail.value
    })
  },
  bindNameInput(e) {
    this.setData({
      name: e.detail.value
    })
  },
  bindBirthdayInput(e) {
    this.setData({
      birthday: e.detail.value
    })
  },
  bindPasswordInput(e) {
    this.setData({
      password: e.detail.value
    })
  },
  bindVerifyCodeInput(e) {
    this.setData({
      verifyCode: e.detail.value
    })
  },
  bindBirthdayChange(e) {
    this.setData({
      birthday: e.detail.value
    })
  },
  onSexRadioChange(e) {
    this.setData({
      sex: e.detail.value
    })
    console.log("sex:", this.data.sex);
  },

  // 子组件事件
  evtcomp(evt) {
    let {
      name,
      data
    } = evt.detail;
    switch (name) {

      case "_evt_hide_mask":
        this.setData({
          tipsRegisteredVisible: false,
          tipsCommonVisible: false
        })
        break;

      default:
        break;
    }
  },
})