// pages/login/login.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 登录方式：password 或 sms
    loginType: 'password',
    
    // 表单数据
    formData: {
      phone: '',
      password: '',
      smsCode: ''
    },
    
    // 密码显示状态
    showPassword: false,
    
    // 记住密码
    rememberMe: false,
    
    // 同意协议
    agreeTerms: false,
    
    // 加载状态
    loading: false,
    
    // 短信倒计时
    smsCountdown: 0,
    
    // 手机号是否有效
    isValidPhone: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log('登录页面加载完成')
    this.loadSavedData()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    console.log('登录页面渲染完成')
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    console.log('登录页面显示')
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
    console.log('登录页面隐藏')
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    console.log('登录页面卸载')
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    console.log('下拉刷新')
    wx.stopPullDownRefresh()
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    console.log('上拉触底')
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: '生资保险 - 专业安全的养殖保险平台',
      path: '/pages/login/login',
      imageUrl: '/static/images/share-login.jpg'
    }
  },

  /**
   * 加载保存的数据
   */
  loadSavedData() {
    const savedPhone = wx.getStorageSync('savedPhone')
    const savedPassword = wx.getStorageSync('savedPassword')
    const rememberMe = wx.getStorageSync('rememberMe')
    
    if (savedPhone && rememberMe) {
      this.setData({
        'formData.phone': savedPhone,
        'formData.password': savedPassword || '',
        rememberMe: rememberMe
      })
      this.validateForm()
    }
  },

  /**
   * 切换登录方式
   */
  switchLoginType(e) {
    const type = e.currentTarget.dataset.type
    console.log('切换登录方式:', type)
    this.setData({
      loginType: type,
      'formData.smsCode': ''
    })
  },

  /**
   * 手机号输入
   */
  onPhoneInput(e) {
    const phone = e.detail.value
    this.setData({
      'formData.phone': phone
    })
    this.validateForm()
  },

  /**
   * 密码输入
   */
  onPasswordInput(e) {
    const password = e.detail.value
    this.setData({
      'formData.password': password
    })
    this.validateForm()
  },

  /**
   * 验证码输入
   */
  onSmsCodeInput(e) {
    const smsCode = e.detail.value
    this.setData({
      'formData.smsCode': smsCode
    })
    this.validateForm()
  },

  /**
   * 切换密码显示
   */
  togglePassword() {
    this.setData({
      showPassword: !this.data.showPassword
    })
  },

  /**
   * 记住密码切换
   */
  onRememberChange(e) {
    this.setData({
      rememberMe: e.detail.value
    })
  },

  /**
   * 同意协议切换
   */
  onAgreeChange(e) {
    this.setData({
      agreeTerms: e.detail.value
    })
    // 切换协议状态后重新验证表单，更新登录按钮状态
    this.validateForm()
  },

  /**
   * 验证表单
   */
  validateForm() {
    const { phone, password, smsCode } = this.data.formData
    const { loginType } = this.data
    
    // 验证手机号或用户名
    const isValidPhone = /^1[3-9]\d{9}$/.test(phone)
    const isValidUsername = phone.length >= 4 // 用户名至少4个字符
    const isValidAccount = isValidPhone || isValidUsername
    this.setData({ isValidPhone: isValidAccount })
    
    // 验证密码登录
    if (loginType === 'password') {
      const canLogin = isValidAccount && password.length >= 6
      this.setData({ canLogin })
    }
    
    // 验证短信登录（短信登录仍然需要手机号格式）
    if (loginType === 'sms') {
      const canSmsLogin = isValidPhone && smsCode.length === 6
      this.setData({ canSmsLogin })
    }
  },

  /**
   * 发送短信验证码
   */
  sendSmsCode() {
    const { phone } = this.data.formData
    const { isValidPhone, smsCountdown } = this.data
    
    if (!isValidPhone) {
      wx.showToast({
        title: '请输入正确的手机号',
        icon: 'none'
      })
      return
    }
    
    if (smsCountdown > 0) {
      return
    }
    
    console.log('发送短信验证码:', phone)
    
    // 模拟发送验证码
    wx.showLoading({
      title: '发送中...'
    })
    
    setTimeout(() => {
      wx.hideLoading()
      wx.showToast({
        title: '验证码已发送',
        icon: 'success'
      })
      
      // 开始倒计时
      this.startCountdown()
    }, 1000)
  },

  /**
   * 开始倒计时
   */
  startCountdown() {
    let countdown = 60
    this.setData({ smsCountdown: countdown })
    
    const timer = setInterval(() => {
      countdown--
      this.setData({ smsCountdown: countdown })
      
      if (countdown <= 0) {
        clearInterval(timer)
      }
    }, 1000)
  },

  /**
   * 密码登录
   */
  onPasswordLogin() {
    const { phone, password } = this.data.formData
    const { canLogin, loading } = this.data
    
    if (!canLogin || loading) return
    
    console.log('密码登录:', phone)
    this.performLogin('password', { phone, password })
  },

  /**
   * 短信登录
   */
  onSmsLogin() {
    const { phone, smsCode } = this.data.formData
    const { canSmsLogin, loading } = this.data
    
    if (!canSmsLogin || loading) return
    
    console.log('短信登录:', phone, smsCode)
    this.performLogin('sms', { phone, smsCode })
  },

  /**
   * 执行登录
   */
  performLogin(type, data) {
    this.setData({ loading: true })
    
    // 模拟登录API调用
    setTimeout(() => {
      this.setData({ loading: false })
      
      // 模拟登录成功
      const mockUserInfo = {
        id: 1,
        nickname: '用户' + data.phone.slice(-4),
        phone: data.phone,
        avatar: ''
      }
      
      // 保存登录信息
      wx.setStorageSync('token', 'mock_token_' + Date.now())
      wx.setStorageSync('userInfo', mockUserInfo)
      
      // 保存密码（如果选择记住密码）
      if (this.data.rememberMe && type === 'password') {
        wx.setStorageSync('savedPhone', data.phone)
        wx.setStorageSync('savedPassword', data.password)
        wx.setStorageSync('rememberMe', true)
      }
      
      wx.showToast({
        title: '登录成功',
        icon: 'success'
      })
      
      // 延迟跳转
      setTimeout(() => {
        wx.switchTab({
          url: '/pages/index/index'
        })
      }, 1500)
      
    }, 2000)
  },

  /**
   * 微信登录
   */
  onWechatLogin() {
    console.log('微信登录')
    wx.showToast({
      title: '微信登录功能开发中',
      icon: 'none'
    })
  },

  /**
   * 跳转到注册页
   */
  goToRegister() {
    console.log('跳转到注册页')
    wx.navigateTo({
      url: '/pages/register/register'
    })
  },

  /**
   * 跳转到忘记密码页
   */
  goToForgotPassword() {
    console.log('跳转到忘记密码页')
    wx.navigateTo({
      url: '/pages/forgot-password/forgot-password'
    })
  },

  /**
   * 跳转到用户协议页
   */
  goToTerms() {
    console.log('跳转到用户协议页')
    wx.navigateTo({
      url: '/pages/terms/terms'
    })
  },

  /**
   * 跳转到隐私政策页
   */
  goToPrivacy() {
    console.log('跳转到隐私政策页')
    wx.navigateTo({
      url: '/pages/privacy/privacy'
    })
  }
})