// pages/cattle/archive/archive.js
const API = require('../../../utils/api').API

Page({
  data: {
    list: [],
    total: 0,
    page: 1,
    pageSize: 10,
    totalPages: 0,
    loading: false,
    refreshing: false,
    searchValue: ''
  },

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

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 可选：每次显示页面时刷新数据
  },

  /**
   * 加载数据
   */
  async loadData(isRefresh = false) {
    if (isRefresh) {
      this.setData({ refreshing: true })
    }

    this.setData({ loading: true })

    try {
      const params = {
        page: this.data.page,
        pageSize: this.data.pageSize,
        _t: Date.now()
      }

      // 如果有搜索条件，添加到参数中
      if (this.data.searchValue) {
        params.earNumber = this.data.searchValue.trim() // 按耳号精确查询
      }

      console.log('请求参数:', params)

      const res = await API.getCattleList(params)
      
      console.log('牛只档案数据:', res)

      // 根据实际返回的数据结构调整
      let list = res.data?.list || res.list || []
      const pagination = res.data?.pagination || {}
      const total = pagination.total || res.total || list.length || 0
      
      // 数据预处理：格式化时间戳和数据
      list = list.map(item => {
        return {
          ...item,
          // 格式化出生日期
          birthdayText: item.birthday ? this.formatDate(item.birthday) : '-',
          // 格式化入场时间
          intoTimeText: item.intoTime ? this.formatDate(item.intoTime) : '-',
          // 格式化性别
          sexText: item.sex === 1 ? '公' : item.sex === 2 ? '母' : '未知',
          // 格式化生理阶段
          physiologicalStageText: this.getPhysiologicalStage(item.physiologicalStage),
          // 格式化来源
          sourceText: item.source === 1 ? '自繁' : item.source === 2 ? '外购' : '未知',
          // 格式化体重计算时间
          weightCalculateTimeText: item.weightCalculateTime ? this.formatDateTime(item.weightCalculateTime) : '-'
        }
      })
      
      // 如果有搜索条件，进行前端精确过滤（确保精确匹配）
      if (this.data.searchValue && this.data.searchValue.trim()) {
        const searchKey = this.data.searchValue.trim()
        list = list.filter(item => {
          const earNumber = String(item.earNumber || '')
          // 精确匹配：完全相等
          return earNumber === searchKey
        })
        
        console.log('精确查找结果:', list.length, '条')
        
        if (list.length === 0) {
          wx.showToast({
            title: '未找到匹配的牛只',
            icon: 'none',
            duration: 2000
          })
        }
      }
      
      const totalPages = pagination.pages || Math.ceil((this.data.searchValue ? list.length : total) / this.data.pageSize)

      this.setData({
        list: list,
        total: total,
        totalPages: totalPages,
        loading: false,
        refreshing: false
      })

      // 停止下拉刷新
      if (isRefresh) {
        wx.stopPullDownRefresh()
      }

    } catch (error) {
      console.error('加载数据失败:', error)
      
      this.setData({
        loading: false,
        refreshing: false
      })

      wx.showToast({
        title: '加载失败',
        icon: 'none'
      })

      if (isRefresh) {
        wx.stopPullDownRefresh()
      }
    }
  },

  /**
   * 格式化日期（时间戳转日期）
   */
  formatDate(timestamp) {
    if (!timestamp) return '-'
    const date = new Date(timestamp * 1000)
    const year = date.getFullYear()
    const month = String(date.getMonth() + 1).padStart(2, '0')
    const day = String(date.getDate()).padStart(2, '0')
    return `${year}-${month}-${day}`
  },

  /**
   * 格式化日期时间
   */
  formatDateTime(dateString) {
    if (!dateString) return '-'
    const date = new Date(dateString)
    const year = date.getFullYear()
    const month = String(date.getMonth() + 1).padStart(2, '0')
    const day = String(date.getDate()).padStart(2, '0')
    const hours = String(date.getHours()).padStart(2, '0')
    const minutes = String(date.getMinutes()).padStart(2, '0')
    return `${year}-${month}-${day} ${hours}:${minutes}`
  },

  /**
   * 获取生理阶段文本
   */
  getPhysiologicalStage(stage) {
    const stages = {
      0: '犊牛期',
      1: '育成期',
      2: '成年期',
      3: '老年期'
    }
    return stages[stage] || '未知'
  },

  /**
   * 搜索输入
   */
  onSearchInput(e) {
    this.setData({
      searchValue: e.detail.value
    })
  },

  /**
   * 执行搜索
   */
  handleSearch() {
    this.setData({ page: 1 })
    this.loadData(true)
  },

  /**
   * 清空搜索
   */
  clearSearch() {
    this.setData({ 
      searchValue: '',
      page: 1
    })
    this.loadData(true)
  },

  /**
   * 切换页码
   */
  changePage(e) {
    const page = e.currentTarget.dataset.page
    if (page !== this.data.page && page >= 1 && page <= this.data.totalPages) {
      this.setData({ page })
      this.loadData()
      // 滚动到顶部
      wx.pageScrollTo({
        scrollTop: 0,
        duration: 300
      })
    }
  },

  /**
   * 上一页
   */
  prevPage() {
    if (this.data.page > 1) {
      this.setData({ page: this.data.page - 1 })
      this.loadData()
      wx.pageScrollTo({ scrollTop: 0, duration: 300 })
    }
  },

  /**
   * 下一页
   */
  nextPage() {
    if (this.data.page < this.data.totalPages) {
      this.setData({ page: this.data.page + 1 })
      this.loadData()
      wx.pageScrollTo({ scrollTop: 0, duration: 300 })
    }
  },

  /**
   * 查看牛只详情
   */
  viewDetail(e) {
    const id = e.currentTarget.dataset.id
    console.log('查看牛只详情:', id)
    
    // 跳转到详情页
    wx.navigateTo({
      url: `/pages/cattle/detail/detail?id=${id}`
    })
  },

  /**
   * 新增档案
   */
  addCattle() {
    wx.showToast({
      title: '新增功能开发中',
      icon: 'none'
    })
  },

  /**
   * 下拉刷新
   */
  onPullDownRefresh() {
    this.setData({ page: 1 })
    this.loadData(true)
  },

  /**
   * 上拉加载更多
   */
  onReachBottom() {
    if (this.data.page < this.data.totalPages && !this.data.loading) {
      this.setData({ page: this.data.page + 1 })
      this.loadData()
    }
  }
})

