// pages/alert/collar-alert/collar-alert.js
const API = require('../../../utils/api').API

Page({
  data: {
    list: [],
    total: 0,
    page: 1,
    limit: 10,
    totalPages: 0,
    loading: false,
    refreshing: false,
    searchValue: '',
    alertType: '' // 预警类型筛选
  },

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

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

    this.setData({ loading: true })

    try {
      const params = {
        page: this.data.page,
        limit: this.data.limit,
        search: this.data.searchValue,
        alertType: this.data.alertType,
        _t: Date.now()
      }

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

      const res = await API.getCollarAlerts(params)
      
      console.log('项圈预警数据:', res)

      // 根据实际返回的数据结构调整
      let list = res.data?.list || res.data || res.list || []
      const pagination = res.data?.pagination || {}
      const total = pagination.total || res.total || list.length || 0
      
      // 数据预处理：格式化数据
      list = list.map(item => {
        return {
          ...item,
          // 格式化预警时间
          alertTimeText: item.alertTime ? this.formatDateTime(item.alertTime) : '-',
          // 预警等级文本
          alertLevelText: this.getAlertLevelText(item.alertLevel),
          // 预警类型文本
          alertTypeText: this.getAlertTypeText(item.alertType),
          // 设备状态文本
          deviceStatusText: item.deviceStatus || '未知',
          // 佩戴状态文本
          wearStatusText: item.wearStatus || '未知',
          // 运动状态文本
          movementStatusText: item.movementStatus || '未知'
        }
      })
      
      const totalPages = pagination.pages || Math.ceil(total / this.data.limit)

      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()
      }
    }
  },

  /**
   * 格式化日期时间
   */
  formatDateTime(dateString) {
    if (!dateString) return '-'
    
    // 如果已经是格式化好的，直接返回
    if (typeof dateString === 'string' && dateString.includes('-')) {
      return dateString
    }
    
    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')
    const seconds = String(date.getSeconds()).padStart(2, '0')
    return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
  },

  /**
   * 获取预警等级文本
   */
  getAlertLevelText(level) {
    const levelMap = {
      'low': '低',
      'medium': '中',
      'high': '高',
      'critical': '紧急'
    }
    return levelMap[level] || level || '-'
  },

  /**
   * 获取预警类型文本
   */
  getAlertTypeText(type) {
    const typeMap = {
      'temperature': '温度异常',
      'battery': '电量异常',
      'not_collected': '未采集',
      'collar_cut': '项圈剪断',
      'fence': '围栏异常',
      'activity_high': '运动量偏高',
      'activity_low': '运动量偏低',
      'transfer_slow': '传输过慢'
    }
    return typeMap[type] || type || '-'
  },

  /**
   * 搜索输入
   */
  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/alert/collar-alert-detail/collar-alert-detail?id=${id}`
    })
  },

  /**
   * 下拉刷新
   */
  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()
    }
  }
})

