const {
  default: api
} = require("../../js/api");
const util = require('../../utils/util.js')

// pages/historyOrderAfter/historyOrderAfter.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    date: '',
    startDate: '',
    endDate: '',
    pageNum:1,//查询页码
    pageSize:5,//页数
    isHaveOrder:true,//是否还有订单
    paymentMode: -1,
    /** 根据当前模式(后支付:0或预支付:1)+ 授权状态(未授权:0;已授权:1)
     * + 订单状态(0:未支付; 1:已支付; 2:订单全额退款;3:订单部分退款;5:已完成)
     * 获取订单状态及颜色 */
    statusValue: [{
        paymentMode: "0",
        authorizationStatus: 0,
        orderStatus: 0,
        status: '未支付',
        statusColor: '#ff8d1a'
      },
      {
        paymentMode: "0",
        authorizationStatus: 0,
        orderStatus: 1,
        status: '已完成',
        statusColor: '#a6a6a6'
      },
      {
        paymentMode: "0",
        authorizationStatus: 0,
        orderStatus: 5,
        status: '已完成',
        statusColor: '#a6a6a6'
      },
      {
        paymentMode: "1",
        authorizationStatus: 0,
        orderStatus: 1,
        status: '已失效',
        statusColor: '#a6a6a6'
      },
      {
        paymentMode: "1",
        authorizationStatus: 1,
        orderStatus: 1,
        status: '已授权',
        statusColor: '#b1db5a'
      },
      {
        paymentMode: "1",
        authorizationStatus: 0,
        orderStatus: 2,
        status: '已完成',
        statusColor: '#a6a6a6'
      },
      {
        paymentMode: "1",
        authorizationStatus: 0,
        orderStatus: 3,
        status: '已完成',
        statusColor: '#a6a6a6'
      },
      {
        paymentMode: "1",
        authorizationStatus: 0,
        orderStatus: 5,
        status: '已完成',
        statusColor: '#a6a6a6'
      },
    ],
    orders: []
  },

  /** 获取当前日期 */
  getNowDate() {
    const date = new Date(); // 获取当前日期
    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}`; // 拼接成 yyyy-MM-dd 格式
  },
  /** 获取上个月日期 */
  getLastMouthDate() {
    const currentDate = new Date(); // 获取当前日期
    const year = currentDate.getFullYear(); // 当前年份
    const month = currentDate.getMonth(); // 当前月份(0-11)
    const day = currentDate.getDate(); // 当前日期

    // 计算一个月前的日期
    const oneMonthAgoDate = new Date(year, month - 1, day);

    // 处理跨年问题(如果当前月份是 1 月,month - 1 会是 0,即上一年的 12 月)
    // 无需额外处理,Date 对象会自动处理

    // 格式化日期为 YYYY-MM-DD
    const formattedDate = `${oneMonthAgoDate.getFullYear()}-${String(oneMonthAgoDate.getMonth() + 1).padStart(2, '0')}-${String(oneMonthAgoDate.getDate()).padStart(2, '0')}`;

    return formattedDate;
  },

  /** 计算倒计时,倒计时结束后发起取消授权 */
  startCountdow() {
    this.timer = setInterval(() => {
      const countDownZeroOrders = []
      const orders = this.data.orders.map(order => {
        if (order.countdown && order.countdown != '0') {
          const currentCountDown = (Number(order.countdown) - 1);
          order.countdown = currentCountDown.toString();
          if (currentCountDown <= 0) countDownZeroOrders.push(order)
        }
        return order
      })

      this.setData({
        orders: orders
      })
      this.toUnAnthorization(countDownZeroOrders)
    }, 1000);
  },

  /** 结束倒计时 */
  endCountDown() {
    if (this.timer) {
      clearInterval(this.timer)
      this.timer = null
    }
  },
  /** 发送取消授权 */
  toUnAnthorization(orders) {
    console.log(orders)
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const today = this.getNowDate();
    const lastMouthDay = this.getLastMouthDate();
    this.setData({
      date: today,
      paymentMode: options.paymentMode,
      startDate: today,
      endDate: lastMouthDay
    });
    console.log("历史页当前data",this.data)

    this.getOrder();

    // this.startCountdow();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    this.endCountDown()
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    if(!this.data.isHaveOrder) return;
    var page = this.data.pageNum + 1;
    this.setData({
      pageNum:page
    })
    this.getOrder()
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  /** 日期选择器选择时间 */
  bindDateChange(date) {
    this.setData({
      date: date.detail.value,
      orders:[]
    });
    console.log(date)
    this.getOrder()
  },

  /** 组件按钮一点击事件 */
  onOrderButtonClick1(event) {
    console.log(event)
  },

  /** 组件按钮二点击事件 */
  onOrderButtonClick2(event) {
    console.log(event)
  },

  /** 获取订单 */
  getOrder() {
    const that = this;
    api.request_WXFindOrders(this.data.date, this.data.pageNum, this.data.pageSize).then(res => {
      // api.request_WXFindOrders(this.data.date, 3, 5).then(res => {
      console.log("获取历史订单", res)
      const datas = res.data.data;
      if(datas.length <= 0) {
        that.data.isHaveOrder = false;
        return
      }
      var getOrders = datas.map(order => {
        var times = [order.authorizationTime, order.createTime, order.fuelItemTransactionEndTime, order.transactionTime];
        var timeFormate = times.find(t => t != undefined && t != null && t != '');
        var time = util.formatDateNotSecond(timeFormate);
        var volume = (order.originalQty != null && order.originalQty != undefined) ? order.originalQty : order.qty
        var status = that.data.statusValue.find(state =>
          state.paymentMode == this.data.paymentMode &&
          state.authorizationStatus == order.authorizationStatus &&
          state.orderStatus == order.orderStatus
        )
        var stute = '';
        var stateColor = '';
        var bt2 = ''
        if (status != undefined) {
          stute = status.status
          stateColor = status.statusColor
        }
        if(stute == '未支付') bt2 = '重新支付';
        return {
          order: {
            status: stute,
            statusColor: stateColor,
            oilName: order.productName,
            nozzle: order.nozzleId,
            volume: volume,
            amount: order.originalAmount,
            payAmount: order.actualPaymentAmount,
            discount: order.originalAmount - order.actualPaymentAmount,
            orderId: order.id,
            time: time
          },
          bottonText2: bt2
        }
      })

      var orderList = [...this.data.orders,...getOrders]
      this.setData({
        orders: orderList
      })

      console.log("转换后的订单", this.data.orders)
    }).catch(err => {
      console.log("获取历史订单失败", err)
    })
  }
})