const app = getApp()
import request from '../../utils/request.js'

Page({
    onShow() {
        // 原有代码...
        
        // 🆕 注册通知组件
        this.registerNotificationComponent();
    },
    
    // 🆕 新增：注册通知组件
    registerNotificationComponent() {
        const app = getApp();
        const notificationComp = this.selectComponent('#global-notification');
        
        if (notificationComp && notificationComp.showNotification) {
            //console.log('🏪 商城页面注册通知组件');
            app.globalData.globalNotification = {
                show: (data) => notificationComp.showNotification(data),
                hide: () => notificationComp.hideNotification()
            };
        }
    },




  data: {
    // 打手订单状态tab配置（去掉已下单，其他保留）
    dsDingdanZhuangtaiTabs: [
      { name: '进行中', key: 'jinxingzhong', zhuangtaiList: [2] },
      { name: '退款中', key: 'tuikuanzhong', zhuangtaiList: [4] },
      { name: '已退款', key: 'yituikuan', zhuangtaiList: [5] },
      { name: '退款失败', key: 'tuikuanshibai', zhuangtaiList: [6] },
      { name: '已完成', key: 'yiwancheng', zhuangtaiList: [3] },
      { name: '结算中', key: 'jiesuanzhong', zhuangtaiList: [8] }
    ],
    
    // 当前选中的tab索引（默认0=进行中）
    xuanzhongTabIndex: 0,
    // 当前选中的tab的key
    currentTabKey: 'jinxingzhong',
    
    // 防抖标志：是否允许切换tab
    allowSwitchTab: true,
    // 防抖时间（毫秒）
    switchDebounceTime: 2000,
    
    // 每个tab对应的订单数据
    dsDingdanShuju: {
      jinxingzhong: { list: [], page: 1, hasMore: true, isLoading: false },
      tuikuanzhong: { list: [], page: 1, hasMore: true, isLoading: false },
      yituikuan: { list: [], page: 1, hasMore: true, isLoading: false },
      tuikuanshibai: { list: [], page: 1, hasMore: true, isLoading: false },
      yiwancheng: { list: [], page: 1, hasMore: true, isLoading: false },
      jiesuanzhong: { list: [], page: 1, hasMore: true, isLoading: false }
    },
    
    // 打手订单图片URL（从缓存或全局变量获取后拼接）
    dsDingdanTupianUrl: '',
    
    // 页面加载状态
    isLoading: true,
    
    // 是否显示加载更多
    xianshiJiazaigengduo: false
  },

  onLoad(options) {
    // 设置页面标题
    wx.setNavigationBarTitle({
      title: '我的接单'
    })
    
    // 初始化：获取图片URL并拼接
    this.getAndSetTupianUrl()
    
    // 加载初始数据（默认进行中）
    this.setData({
      isLoading: false
    })
    
    this.jiazaiDsDingdanShuju(0, false)
  },

  // 获取并设置图片URL
  getAndSetTupianUrl() {
    const app = getApp()
    
    // 1. 先从缓存获取touxiang
    const cacheTouxiang = wx.getStorageSync('touxiang') || ''
    
    // 2. 如果缓存没有，从全局变量获取morentouxiang
    let tupianPath = cacheTouxiang || app.globalData.morentouxiang || ''
    
    // 3. 拼接完整的图片URL
    const ossImageUrl = app.globalData.ossImageUrl || ''
    let fullTupianUrl = ''
    
    if (tupianPath && ossImageUrl) {
      // 确保路径不以斜杠开头（防止双斜杠）
      if (tupianPath.startsWith('/')) {
        tupianPath = tupianPath.substring(1)
      }
      fullTupianUrl = ossImageUrl + tupianPath
    }
    
    this.setData({
      dsDingdanTupianUrl: fullTupianUrl
    })
  },

  // 切换订单tab（增加防抖）
  switchDsDingdanTab(e) {
    const tabIndex = e.currentTarget.dataset.index
    
    // 如果当前正在加载，不允许切换
    const currentTabKey = this.data.currentTabKey
    const currentTabData = this.data.dsDingdanShuju[currentTabKey]
    if (currentTabData.isLoading) {
      console.log('当前正在加载，禁止切换')
      return
    }
    
    // 防抖：检查是否允许切换
    if (!this.data.allowSwitchTab) {
      
      wx.showToast({
        title: '切换太频繁，请稍后',
        icon: 'none',
        duration: 1000
      })
      return
    }
    
    // 如果点击的是当前选中的tab，不处理
    if (tabIndex === this.data.xuanzhongTabIndex) {
      return
    }
    
    const tabKey = this.data.dsDingdanZhuangtaiTabs[tabIndex].key
    
    // 设置防抖标志，2秒内不允许再次切换
    this.setData({
      allowSwitchTab: false
    })
    
    // 设置定时器，2秒后恢复允许切换
    setTimeout(() => {
      this.setData({
        allowSwitchTab: true
      })
    }, this.data.switchDebounceTime)
    
    // 更新选中的tab
    this.setData({
      xuanzhongTabIndex: tabIndex,
      currentTabKey: tabKey
    })
    
    // 加载对应tab的数据
    this.jiazaiDsDingdanShuju(tabIndex, false)
  },

  // 加载打手订单数据
  async jiazaiDsDingdanShuju(tabIndex, isLoadMore = false) {
    const tab = this.data.dsDingdanZhuangtaiTabs[tabIndex]
    const tabKey = tab.key
    
    const tabData = this.data.dsDingdanShuju[tabKey]
    
    const page = isLoadMore ? tabData.page + 1 : 1
    
    // 检查是否正在加载
    if (tabData.isLoading) {
      
      return
    }
    
    // 如果不是加载更多，清空已有数据
    if (!isLoadMore) {
      this.setData({
        [`dsDingdanShuju.${tabKey}.list`]: [],
        [`dsDingdanShuju.${tabKey}.page`]: 1
      })
    }
    
    // 设置加载状态
    this.setData({
      [`dsDingdanShuju.${tabKey}.isLoading`]: true
    })
    
    // 显示加载提示（非加载更多时显示）
    if (!isLoadMore) {
      wx.showLoading({
        title: '加载订单...',
        mask: true
      })
    }
    
    try {
      // 准备请求数据
      const requestData = {
        zhuangtai_list: tab.zhuangtaiList,
        page: page,
        page_size: 10
      }
      
      
      
      const res = await request({
        url: '/dingdan/dshqdingdan',
        method: 'POST',
        data: requestData,
        header: {
          'content-type': 'application/json'
        }
      })
      
      // 隐藏加载提示
      if (!isLoadMore) {
        wx.hideLoading()
      }
      
      // 处理返回数据
      if (res && res.data.code === 0) {
        const newDingdanList = res.data.data.list || []
        const hasMore = res.data.data.has_more || false
        
       
        
        // 为每个订单添加状态中文描述和统一的图片URL
        const processedList = newDingdanList.map(item => {
          const zhuangtaiZh = this.getZhuangtaiZhongwen(item.zhuangtai)
          
          return {
            ...item,
            tupian: this.data.dsDingdanTupianUrl, // 使用统一的图片URL
            zhuangtaiZh: zhuangtaiZh
          }
        })
        
        const currentList = this.data.dsDingdanShuju[tabKey].list
        const updatedList = isLoadMore 
          ? [...currentList, ...processedList]
          : processedList
        
        // 更新数据
        this.setData({
          [`dsDingdanShuju.${tabKey}.list`]: updatedList,
          [`dsDingdanShuju.${tabKey}.page`]: page,
          [`dsDingdanShuju.${tabKey}.hasMore`]: hasMore,
          [`dsDingdanShuju.${tabKey}.isLoading`]: false,
          xianshiJiazaigengduo: hasMore
        })
        
      } else {
        // 请求失败处理
        const errorMsg = res ? (res.data.msg || '加载失败') : '请求失败'
        
        if (!isLoadMore) {
          wx.showToast({
            title: errorMsg,
            icon: 'none',
            duration: 2000
          })
        }
        
        this.setData({
          [`dsDingdanShuju.${tabKey}.isLoading`]: false
        })
      }
      
    } catch (error) {
      
      
      if (!isLoadMore) {
        wx.hideLoading()
        wx.showToast({
          title: '网络请求失败，请重试',
          icon: 'none',
          duration: 2000
        })
      }
      
      this.setData({
        [`dsDingdanShuju.${tabKey}.isLoading`]: false
      })
    }
  },

  // 获取状态中文描述
  getZhuangtaiZhongwen(zhuangtai) {
    const zhuangtaiMap = {
      1: '已下单',      // 打手看不到这个状态
      2: '进行中',
      3: '已完成',
      4: '退款中',
      5: '已退款',
      6: '退款失败',
      7: '指定中',      // 打手看不到这个状态
      8: '结算中'
    }
    
    return zhuangtaiMap[zhuangtai] || '未知状态'
  },

  // 上拉加载更多
  onReachBottom() {
    const tabKey = this.data.currentTabKey
    const tabData = this.data.dsDingdanShuju[tabKey]
    
    // 检查是否还有更多数据并且当前没有正在加载
    if (tabData.hasMore && !tabData.isLoading) {
      const tabIndex = this.data.xuanzhongTabIndex
      this.jiazaiDsDingdanShuju(tabIndex, true)
    }
  },

  // 跳转到订单详情页面
  goToDsDingdanXiangqing(e) {
    const dingdanItem = e.currentTarget.dataset.item
    if (!dingdanItem) return
    
    // 编码订单数据
    const dingdanDataStr = encodeURIComponent(JSON.stringify(dingdanItem))
    
    // 跳转到打手订单详情页
    wx.navigateTo({
      url: `/pages/dsddxq/dsddxq?dingdanData=${dingdanDataStr}`
    })
  },

  // 图片加载失败处理
  onImageError(e) {
    // 如果统一图片加载失败，使用默认图片
    const defaultImage = app.globalData.lunbozhanwei || '/images/default.jpg'
    
    this.setData({
      dsDingdanTupianUrl: defaultImage
    })
  }
})