// pages/login/login.js - 登录页面
const { API } = require('../../utils/api.js')

Page({
  data: {
    formData: {
      username: '',
      password: ''
    },
    loading: false,
    agreedToTerms: false  // 用户协议同意状态
  },

  onLoad() {
    console.log('登录页加载')
    
    // 检查是否已登录
    const app = getApp()
    if (app.globalData.isLogin) {
      wx.switchTab({
        url: '/pages/home/home'
      })
      return
    }

    // 开发阶段可以自动填充测试账号
    // this.setData({
    //   'formData.username': 'admin',
    //   'formData.password': '123456',
    //   agreedToTerms: true
    // })
  },

  /**
   * 输入框值变化
   */
  onInputChange(e) {
    const field = e.currentTarget.dataset.field
    const value = e.detail.value
    this.setData({
      [`formData.${field}`]: value
    })
  },

  /**
   * 切换用户协议同意状态
   */
  toggleAgreement() {
    this.setData({
      agreedToTerms: !this.data.agreedToTerms
    })
  },

  /**
   * 登录处理
   */
  async handleLogin() {
    const { username, password } = this.data.formData
    const { agreedToTerms } = this.data

    // 表单验证
    if (!username) {
      wx.showToast({
        title: '请输入账号',
        icon: 'none'
      })
      return
    }

    if (!password) {
      wx.showToast({
        title: '请输入密码',
        icon: 'none'
      })
      return
    }

    if (!agreedToTerms) {
      wx.showToast({
        title: '请先阅读并同意用户协议',
        icon: 'none'
      })
      return
    }

    // 开始登录
    this.setData({ loading: true })

    try {
      // 调用登录API
      const res = await API.login(username, password)
      
      console.log('登录响应:', res)

      // 登录成功，保存用户信息和token
      // 根据后端实际返回的数据结构调整
      // 后端返回格式: { success: true, token: "...", user: {...}, role: {...} }
      const userData = res.user || res.data?.user || res.data || {}
      const roleData = res.role || res.data?.role || {}
      
      const userInfo = {
        id: userData.id || userData.userId,
        username: username,
        name: userData.name || userData.nickname || username,
        phone: userData.phone || userData.mobile || '',
        role: roleData.name || roleData.roleName || userData.role || '用户',
        avatar: userData.avatar || '',
        farmId: userData.farmId || res.farmId || '',
        farmName: userData.farmName || res.farmName || ''
      }

      // Token 可能在根级别或 data 中
      const token = res.token || res.data?.token || res.data?.accessToken || res.accessToken

      if (!token) {
        throw new Error('未获取到登录凭证')
      }

      // 保存到本地存储
      wx.setStorageSync('userInfo', userInfo)
      wx.setStorageSync('token', token)

      // 更新全局状态
      const app = getApp()
      app.globalData.isLogin = true
      app.globalData.userInfo = userInfo
      app.globalData.token = token

      // 显示成功提示
      wx.showToast({
        title: '登录成功',
        icon: 'success',
        duration: 1500
      })

      // 延迟跳转到首页
      setTimeout(() => {
        wx.switchTab({
          url: '/pages/home/home'
        })
      }, 1500)

    } catch (error) {
      console.error('登录失败:', error)
      
      // 显示错误信息
      const errorMsg = error.message || error.msg || '登录失败，请检查账号密码'
      wx.showToast({
        title: errorMsg,
        icon: 'none',
        duration: 2000
      })

      this.setData({ loading: false })
    }
  },

  /**
   * 一键登录
   */
  onOneClickLogin() {
    wx.showToast({
      title: '一键登录功能开发中',
      icon: 'none'
    })
  },

  /**
   * 短信登录
   */
  onSmsLogin() {
    wx.showToast({
      title: '短信登录功能开发中',
      icon: 'none'
    })
  },

  /**
   * 注册账号
   */
  onRegister() {
    wx.showToast({
      title: '注册功能开发中',
      icon: 'none'
    })
  },

  /**
   * 其他登录方式
   */
  onOtherLogin() {
    wx.showModal({
      title: '其他登录方式',
      content: '支持微信登录、手机号登录等多种方式',
      showCancel: false
    })
  }
})
