index.js 4.99 KB
// dist/pages/orderDetail/index.js
import OrderDetailService from './orderDetailService.js'
import OrderActionService from '../../components/order/orderActionService.js';
import {getImgUrl, formatTimeByMin} from '../../utils/index.js';
import {showDialog} from '../../components/order/orderActionUtil.js';
import {prePay} from '../order/wxpay.js'
import router from '../../router/index.js'
import Yas from '../../utils/yas';

const BUY_AGAIN = 'buy_again';
const NOW_BUY = 'now_buy';
const SHOW_EXPRESS = 'show_express';
let interval;

let yas;

Page({

  /**
   * 页面的初始数据
   */
  data: {
    detailApi: Object,
    orderActionApi: Object,
    data: {},
    timer: '',
    lastIndex: 0,
    orderCode: '',
    cancelConfirm: false,
    cancelOrderCode: '',
    navBack: 1
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    yas = new Yas(this);
    yas.pageOpenReport();
    let api = new OrderDetailService();
    let orderActionApi = new OrderActionService();
    this.setData({
      detailApi: api,
      orderActionApi: orderActionApi,
      orderCode: options.orderCode
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    // let str = this.data.data.buttons[0].text;
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this.fetchOrderDetail(this.data.orderCode);
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
    if (interval) {
      clearInterval(interval);
    }
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    if (interval) {
      clearInterval(interval);
    }
  },

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

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

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

  },

  fetchOrderDetail: function (code) {
    let that = this;
    let params = {
      orderCode: code,
      tabType: 'buy'
    }
    this.data.detailApi.getOrderDetailInfo(params, () => {
      wx.hideLoading();
    }).then(data => {
      if (data.goodsInfo && data.goodsInfo.goodImg) {
        data.goodsInfo.goodImg = getImgUrl(data.goodsInfo.goodImg, 270, 270);
      }
      let lastIndex = 0;

      if (data && data.buttons) {
        data.buttons = data.buttons.filter(item => {
          return item.code !== 'modify_address';
        });
      }

      if (data && data.buttons && data.buttons.length > 0) {
        lastIndex = data.buttons.length - 1;
      }
      that.setData({
        data,
        lastIndex: lastIndex
      });

      if (data.statusDetail && data.statusDetail.leftTime) {
        let leftTime = data.statusDetail.leftTime;
        // let leftTime = 30;
        let timer = that.data.timer;
        if (leftTime > 0) {
          that.setData({
            timer: formatTimeByMin(leftTime, 'm:s')
          });
          interval = setInterval(() => {
            leftTime = leftTime - 1;
            timer = formatTimeByMin(leftTime, 'm:s');
            if (leftTime <= 0) {
              timer = '00:00';
              setTimeout(() => {
                that.fetchOrderDetail(code);
              }, 2000);
              clearInterval(interval);
            }
            that.setData({
              timer: timer,
            });
          }, 1000);
        }
      } else {
        that.setData({
          timer: null,
        });
      }

    })


  },
  //
  onButtonClick: function (e) {
    let ctx = this;
    let actionCode = e.currentTarget.dataset.buttonCode;
    let orderCode = e.currentTarget.dataset.orderCode;
    let productId = e.currentTarget.dataset.productId;

    if (actionCode == BUY_AGAIN) {
      let params = {
        id: productId
      }
      router.go('productDetail', params);
    } else if (actionCode == NOW_BUY) {
      console.log("== 去支付页面===")
      prePay(productId, orderCode, 2, this.data.data.isOffline === 'Y');
    } else if (actionCode == SHOW_EXPRESS) {
      let params = {
        orderCode
      }
      router.go('logistics', params);
    } else {
      if (actionCode === 'cancel_order' && this.data.data.isOffline !== 'Y') {
        return ctx.setData({
          cancelConfirm: true,
          cancelOrderCode: orderCode
        });
      }
      showDialog(orderCode, actionCode, 1);
    }
  },

  onClickProduct: function () {
    let productId = this.data.data.goodsInfo.productId || '';
    let params = {
      id: productId
    }
    if (this.data.data.isOffline === 'Y') return;
    router.go('productDetail', params);
  },

  onClickLogistics: function (e) {
    let orderCode = e.currentTarget.dataset.orderCode || '';
    let params = {
      orderCode
    }
    router.go('logistics', params);
  },

  onCopyOrderCode: function () {
    let orderCode = String(this.data.data.orderCode) || '';
    wx.setClipboardData({
      data: orderCode,
      success(res) {

      }
    })
  }
})