// pages/login/login.js
import { $wuxCountDown, $wuxForm,$wuxToptips} from '../../miniprogram_npm/wux-weapp/index'
const api = require('../../api/index')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    layout: 'horizontal',
    validateMessages: {
        required: '%s 字段为必填',
    },
    loginMessage:{
      phone:'',
      code:'',
      checkCode:''
    },
    showDialog:false,
    imgURL:null,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },


  /**
   * 页面方法集合
   */
  //表单栏位值发生变化时
  onValuesChange(e) {
    console.log(e)
    const { changedValues, allValues } = e.detail
    // this.setValues(changedValues)
    Object.keys(changedValues).forEach((field) => {
      this.setData({
          ['loginMessage.'+field]: changedValues[field],
      })
    })
    console.log('onValuesChange \n', changedValues, allValues)
  },
  //获取手机号并打开弹窗
  onSendCode(){
    var value = this.data.loginMessage.phone
    if(!value){
      $wuxToptips().error({
        hidden: false,
        text: '请输入手机号',
        duration: 3000,
        success() {},
      })
      return
    }
    const isTel = (value) => /^1[34578]\d{9}$/.test(value)
    if(!isTel(value)){
      $wuxToptips().error({
        hidden: false,
        text: '手机号格式不正确',
        duration: 3000,
        success() {},
      })
      return 
    }
    this.changeVerifyCode()
  },
  //获取输入的校验码
  changeInput(e) {
    this.setData({
      ['loginMessage.checkCode']: e.detail.value,
    })
  },
  //关闭弹窗
  closeDialog(){
    this.setData(
      {
        showDialog:false
      }
    )
  },
  //获取验证码
  getCheckCode(){
    if (this.c2 && this.c2.interval) return !1
    var data = {
      phoneNum:this.data.loginMessage.phone,
      checkCode:this.data.loginMessage.checkCode
    }
    api.sendCode(data).then(res=>{
      if(res.code == 200){
        this.CountDown()
        this.closeDialog()
      }
    }).catch(error=>{
        console.log(error)
      // $wuxToptips().error({
      //   hidden: false,
      //   text: '获取验证码失败',
      //   duration: 3000,
      //   success() {},
      // })
    })
  },
  //获取校验码
  changeVerifyCode(){
    var data = {
      phoneNum:this.data.loginMessage.phone
    }
    api.verifyCode(data).then(res=>{
      if(res.code == 200){
        console.log(res)
        this.setData(
          {
            imgURL:res.data.captcha,
            showDialog:true
          }
        )
      }
    }).catch(error=>{

    })
  },
  //倒计时
  CountDown(phoneCode='1234'){
    this.c2 = new $wuxCountDown({
      date: +new Date() + 60000,
      onEnd() {
        this.setData({
          c2: '重新获取验证码',
        })
      },
      render(date) {
        const sec = this.leadingZeros(date.sec, 2) + ' 秒 '
        date.sec !== 0 &&
          this.setData({
            c2: sec,
          })
      },
    })
  },
  //手机号校验
  checkPhone(rule, value){
    if(!value){
      return Promise.reject(new Error('手机号不能为空!'))
    }
    const isTel = (value) => /^1[34578]\d{9}$/.test(value)
    if(!isTel(value)){
      return Promise.reject(new Error('手机号输入错误!'))
    }
    return Promise.resolve()
  },
  //验证码校验
  checkCode(rule, value){
    if(!value){
      return Promise.reject(new Error('验证码不能为空!'))
    }
    return Promise.resolve()
  },
  //登录
  onSubmit(){
    console.log(this.data.loginMessage)
    const { validateFields } = $wuxForm()

    validateFields((err, values) => {
        if (!err) {
            var data = {
              phoneNum:this.data.loginMessage.phone,
              phoneCode:this.data.loginMessage.code
            }
            wx.showLoading({
              title: '加载中',
            })
            api.loginByPhone(data).then(res=>{
              console.log(res)
              if(res.code == 200){
                this.isLogin(res.data)
              }
            }).catch(error=>{

            })
        }
    })
  },
  //登录后操作
  isLogin({token,id,isFirst,phone}){
    wx.setStorageSync('token',token)
    this.getPersonRights()
    wx.navigateBack()
    
  },
  getPersonRights(){
    api.getPersonRights({},false).then(res=>{
      if(res.code == 200){
        var data = JSON.stringify(res.data.data)
        wx.setStorageSync('vip', data)
      }
    })
  },
  //跳转到注册界面
  register(){
    wx.navigateTo({
      url: '/pages/register/register',
    })
  },
  //微信一键登录
  fastLogin(e){
      if (e.detail.errMsg === 'getPhoneNumber:ok') {  
        // 用户同意授权，获取加密信息  
        const encryptedData = e.detail.encryptedData;  
        const iv = e.detail.iv;  
        const code = e.detail.code
        // 将 encryptedData 和 iv 发送到后端服务器 
        var data= {  
          encryptedData: encryptedData,  
          iv: iv,
          code:code
        }
        wx.login({
          success: (res) => {
            if(res.errMsg == 'login:ok'){
              data.code = res.code
              wx.showLoading({
                title: '加载中',
              })
              api.loginByWeChat(data).then(res=>{
                if(res.code == 200){
                  this.isLogin(res.data)
                }
              }).catch(error=>{
      
              })
            }
            
          },
        })
        
         
      } else if (e.detail.errMsg === 'getPhoneNumber:fail') {  
        // 用户拒绝授权  
        console.log('获取手机号失败');  
      }  
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})