// pages/products/products.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 搜索关键词
    searchKeyword: '',
    
    // 产品分类
    categories: [
      { id: 'all', name: '全部' },
      { id: 'life', name: '寿险' },
      { id: 'health', name: '健康险' },
      { id: 'accident', name: '意外险' },
      { id: 'vehicle', name: '车险' },
      { id: 'property', name: '财产险' },
      { id: 'travel', name: '旅行险' },
      { id: 'pet', name: '宠物险' }
    ],
    
    // 当前选中的分类
    selectedCategory: 'all',
    
    // 排序选项
    sortOptions: [
      { value: 'default', label: '默认排序' },
      { value: 'price_asc', label: '价格从低到高' },
      { value: 'price_desc', label: '价格从高到低' },
      { value: 'popular', label: '热门推荐' }
    ],
    
    // 当前排序方式
    sortBy: 'default',
    
    // 视图模式：list 或 grid
    viewMode: 'list',
    
    // 产品列表
    productList: [],
    
    // 分页信息
    currentPage: 1,
    pageSize: 10,
    totalCount: 0,
    hasMore: true,
    
    // 加载状态
    loading: false
  },

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

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

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

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

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

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

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    console.log('上拉触底')
    if (this.data.hasMore && !this.data.loading) {
      this.loadMore()
    }
  },

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

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

  /**
   * 执行搜索
   */
  onSearch() {
    console.log('执行搜索:', this.data.searchKeyword)
    this.refreshProducts()
  },

  /**
   * 分类切换
   */
  onCategoryChange(e) {
    const category = e.currentTarget.dataset.category
    console.log('切换分类:', category)
    this.setData({
      selectedCategory: category
    })
    this.refreshProducts()
  },

  /**
   * 排序切换
   */
  onSortChange(e) {
    const sort = e.currentTarget.dataset.sort
    console.log('切换排序:', sort)
    this.setData({
      sortBy: sort
    })
    this.refreshProducts()
  },

  /**
   * 视图模式切换
   */
  onViewModeChange(e) {
    const mode = e.currentTarget.dataset.mode
    console.log('切换视图模式:', mode)
    this.setData({
      viewMode: mode
    })
  },

  /**
   * 加载产品数据
   */
  loadProducts() {
    this.setData({ loading: true })
    
    // 模拟API调用
    setTimeout(() => {
      const mockProducts = this.getMockProducts()
      this.setData({
        productList: mockProducts,
        totalCount: mockProducts.length,
        hasMore: false,
        loading: false
      })
    }, 1000)
  },

  /**
   * 刷新产品数据
   */
  refreshProducts() {
    this.setData({
      currentPage: 1,
      productList: [],
      hasMore: true
    })
    this.loadProducts()
  },

  /**
   * 加载更多产品
   */
  loadMore() {
    if (this.data.loading || !this.data.hasMore) return
    
    this.setData({ loading: true })
    
    // 模拟加载更多
    setTimeout(() => {
      const moreProducts = this.getMockProducts()
      this.setData({
        productList: [...this.data.productList, ...moreProducts],
        currentPage: this.data.currentPage + 1,
        hasMore: false,
        loading: false
      })
    }, 1000)
  },

  /**
   * 获取模拟产品数据
   */
  getMockProducts() {
    const allProducts = [
      {
        id: 1,
        name: '综合意外险',
        description: '全面保障意外伤害，保费低廉，保障全面',
        min_premium: 99,
        icon: '🛡️',
        category: 'accident',
        tags: ['热门', '性价比高', '保障全面']
      },
      {
        id: 2,
        name: '重疾保险',
        description: '重大疾病保障，安心无忧，覆盖多种疾病',
        min_premium: 299,
        icon: '🏥',
        category: 'health',
        tags: ['保障全面', '疾病覆盖', '长期保障']
      },
      {
        id: 3,
        name: '车险',
        description: '车辆全面保障，理赔快速，服务专业',
        min_premium: 1999,
        icon: '🚗',
        category: 'vehicle',
        tags: ['必买', '理赔快', '服务好']
      },
      {
        id: 4,
        name: '旅行险',
        description: '出行安全保障，全球覆盖，24小时服务',
        min_premium: 59,
        icon: '✈️',
        category: 'travel',
        tags: ['短期', '全球', '24小时']
      },
      {
        id: 5,
        name: '寿险',
        description: '终身保障，家庭责任，财富传承',
        min_premium: 599,
        icon: '👨‍👩‍👧‍👦',
        category: 'life',
        tags: ['终身', '家庭', '传承']
      },
      {
        id: 6,
        name: '财产险',
        description: '家庭财产保障，火灾水灾全覆盖',
        min_premium: 199,
        icon: '🏠',
        category: 'property',
        tags: ['家庭', '财产', '全面']
      },
      {
        id: 7,
        name: '宠物险',
        description: '宠物医疗保障，爱宠健康无忧',
        min_premium: 89,
        icon: '🐕',
        category: 'pet',
        tags: ['宠物', '医疗', '贴心']
      },
      {
        id: 8,
        name: '高端医疗险',
        description: '高端医疗服务，VIP待遇，全球就医',
        min_premium: 1999,
        icon: '💎',
        category: 'health',
        tags: ['高端', 'VIP', '全球']
      }
    ]

    // 根据分类筛选
    let filteredProducts = allProducts
    if (this.data.selectedCategory !== 'all') {
      filteredProducts = allProducts.filter(product => 
        product.category === this.data.selectedCategory
      )
    }

    // 根据搜索关键词筛选
    if (this.data.searchKeyword) {
      const keyword = this.data.searchKeyword.toLowerCase()
      filteredProducts = filteredProducts.filter(product =>
        product.name.toLowerCase().includes(keyword) ||
        product.description.toLowerCase().includes(keyword)
      )
    }

    // 根据排序方式排序
    switch (this.data.sortBy) {
      case 'price_asc':
        filteredProducts.sort((a, b) => a.min_premium - b.min_premium)
        break
      case 'price_desc':
        filteredProducts.sort((a, b) => b.min_premium - a.min_premium)
        break
      case 'popular':
        // 模拟热门排序
        filteredProducts.sort((a, b) => b.id - a.id)
        break
      default:
        // 默认排序
        break
    }

    return filteredProducts
  },

  /**
   * 跳转到产品详情页
   */
  goToProductDetail(e) {
    const productId = e.currentTarget.dataset.id
    console.log('跳转到产品详情页:', productId)
    wx.navigateTo({
      url: `/pages/product-detail/product-detail?id=${productId}`
    })
  },

  /**
   * 直接跳转到投保页面
   */
  goToApplication(e) {
    // 阻止事件冒泡，避免触发产品项的点击事件
    e.stopPropagation()
    
    const productId = e.currentTarget.dataset.id
    console.log('直接跳转到投保页面:', productId)
    wx.navigateTo({
      url: `/pages/application/application?productId=${productId}`
    })
  }
})