// 页面级 mixin - 处理页面公共逻辑
export default {
  data() {
    return {
      pageLoading: false,
      pageData: {},
      refreshing: false
    }
  },
  
  methods: {
    // 页面初始化
    initPage() {
      console.log('页面初始化')
      this.pageLoading = true
      // 可以在这里添加页面公共初始化逻辑
    },
    
    // 下拉刷新
    async onPullDownRefresh() {
      this.refreshing = true
      try {
        await this.refreshData()
        uni.showToast({
          title: '刷新成功',
          icon: 'success'
        })
      } catch (error) {
        uni.showToast({
          title: '刷新失败',
          icon: 'none'
        })
      } finally {
        this.refreshing = false
        uni.stopPullDownRefresh()
      }
    },
    
    // 上拉加载更多
    async onReachBottom() {
      if (this.pageLoading) return
      
      try {
        await this.loadMoreData()
      } catch (error) {
        console.error('加载更多失败:', error)
      }
    },
    
    // 刷新数据 - 子组件需要实现
    async refreshData() {
      // 子组件重写此方法
      console.log('refreshData 方法需要在组件中实现')
    },
    
    // 加载更多数据 - 子组件需要实现
    async loadMoreData() {
      // 子组件重写此方法
      console.log('loadMoreData 方法需要在组件中实现')
    },
    
    // 返回上一页
    goBack() {
      uni.navigateBack({
        delta: 1
      })
    },
    
    // 跳转页面
    navigateTo(url, params = {}) {
      const query = Object.keys(params).length > 0 
        ? '?' + Object.keys(params).map(key => `${key}=${encodeURIComponent(params[key])}`).join('&')
        : ''
      
      uni.navigateTo({
        url: url + query
      })
    }
  },
  
  // 页面生命周期
  onLoad(options) {
    console.log('Page mixin onLoad:', options)
    this.initPage()
  },
  
  onShow() {
    console.log('Page mixin onShow')
  },
  
  onHide() {
    console.log('Page mixin onHide')
  }
}
