|  | // pages/spellGroup/mySpellGroup/index.js
const navigationBarHeight = (getApp().statusBarHeight + 50) + 'px'
var config = require("../../../config/config.js");
const Http = require("../../../utils/HttpBasics");
const imgurl = require("../../../utils/imgurl");
const utils = require("../../../utils/util.js");
let app = getApp();
Page({
  /**
   * 页面的初始数据
   */
  data: {
    navigationBarHeight,
    fenxiang: imgurl.fenxiang1.url,
    homeSelectedO:imgurl.homeSelectedO.url,
    isshowposter:false,//是否显示分享弹框
    teljpgUrl: imgurl.teljpg.url,
    wmhome: imgurl.wmhome.url,
    share01: imgurl.share01.url,
    close02: imgurl.close02.url,
    closedUrl: imgurl.closed.url,
    quesGouUrl: imgurl.ques_gou.url,
    headbgUrl: imgurl.headbg.url,
    quesBgUrl: imgurl.ques_bg.url,
    couponChannelId: '',
    couponId: '',
    data: null,
    spellData: null,
    canSpell: true,
    canBuyIf: true,
    clock: "00",
    day: "00",
    hour: "00",
    min: "00",
    sec: "00",
    detailPicture: [],
    coverPicture: [],
    swiperCurrent: 0,
    showTime: true,
    limitCondition: "",
    minLimit: 0,
    maxLimit: 0,
    spellGroupOrder:false,
    opacity: 0,
    queueData: null,
    zIndex: 11,
    display: "none",
    orderGroupId:'',
    merchantVoList:[]
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    this.setData({
      couponChannelId: options.couponChannelId,
      couponId: options.couponId ? options.couponId:''
    })
    if (options && options.couponChannelId) {
      this.getDetail(options.couponChannelId);
    }
    if (options && options.couponId) {
      this.getOneSpell(options.couponId)
    }
  },
     /**
   * 显示分享海报
   */
  showPoster: function() {
    //跳转到海报生成页
    wx.navigateTo({
      url: `/pages/canvas/index?couponChannelId=${this.data.data.id}`
    })
  },
  /**
   * 显示分享弹框
   */
  showshare: function() {
    this.setData({
      isshowposter: true,
    })
  },
   /**
   * 隐藏分享弹框
   */
  hidemodal: function() {
    this.setData({
      isshowposter: false,
    })
  },
  gotoIndex: function() {
    wx.switchTab({
      url: '/index/index',
    })
  },
  /**
   * 拨打电话
   */
  phone: function(e) {
    let that = this;
    wx.makePhoneCall({
      phoneNumber: e.target.dataset.merchantlinkphone
    });
  },
  /**
   * 直接购买
   */
  gotoBuy(e) {
    let that = this;
    this.setData({
      canBuyIf: false,
      formId: e.detail.formId,
      queueData: null,
      orderGroupId:''
    })
    that.getQuestions();
  },
  getQuestions(type){
    let that = this;
    Http.get({
      url: config.api.getQuestion,
      data: {
        couponType: JSON.stringify(that.data.data.type)
      }
    })
    .then(res => {
      wx.hideLoading();
      if (res.data == undefined) {
        // 立即购买
        that.orderFunc(type);
      } else if (res.data) {
        var animation = wx.createAnimation({});
        animation.translate((that.data.widthScreen - that.data.widthScreen), 0).scale(1).opacity(1).step({
          duration: 500
        })
        that.setData({
          queueData: animation.export(),
          zIndex: 9,
          opacity: 1,
          display: "block",
          questionnaire: JSON.parse(res.data.content),
          questionId: res.data.id
        });
      }
    })
    .catch(err => {
      wx.hideLoading();
      wx.showToast({
        title: err.message,
        icon: 'none',
        duration: 2000,
        mask: false
      });
    })
  },
  /**
   * 点击提交问题单选
   */
  formSubmit: function (e) {
    console.log(e);
    let that = this;
    /**
     * 多选
     */
    if (e.currentTarget.dataset.flags == 'multi') {
      if (that.data.anwserId.length == 0) {
        var answserIs = null
      } else {
        var answserIs = that.data.anwserId.join(",");
      }
    } else if (e.currentTarget.dataset.flags == 'single') {
      var answserIs = e.detail.value;
    }
    console.log(answserIs)
    console.log(e.currentTarget.dataset.questionid)
    Http.post({
      url: config.api.answerQuestion,
      data: {
        answer: answserIs,
        questionId: e.currentTarget.dataset.questionid
      }
    })
      .then(res => {
        that.closeQuestion();
      })
      .catch(err => {
        wx.showToast({
          title: err.message,
          icon: 'none',
          duration: 2000,
          mask: false
        });
      })
  },
  /**
   * 多选
   */
  checkboxChange: function (e) {
    console.log(e)
    this.setData({
      anwserId: e.detail.value
    })
  },
  closeQuestion: function () {
    let that = this;
    that.setData({
      display: "none",
      zIndex: 11,
      opacity: 0
    })
    setTimeout(function () {
      that.orderFunc();
    }, 500)
  },
  // 时间格式化输出,如11:03 25:19 每1s都会调用一次
  dateformat(micro_second) {
    // 总秒数
    var second = Math.floor(micro_second / 1000);
    // 天数
    var day = Math.floor(second / 3600 / 24) < 10 ? "0" + Math.floor(second / 3600 / 24) : Math.floor(second / 3600 / 24);
    // 小时
    var hr = Math.floor(second / 3600 % 24) < 10 ? "0" + Math.floor(second / 3600 % 24) : Math.floor(second / 3600 % 24);
    // 分钟
    var min = Math.floor(second / 60 % 60) < 10 ? "0" + Math.floor(second / 60 % 60) : Math.floor(second / 60 % 60);
    // 秒
    var sec = Math.floor(second % 60) < 10 ? "0" + Math.floor(second % 60) : Math.floor(second % 60);
    // return day + "天" + hr + "小时" + min + "分钟" + sec + "秒";
    return {
      a1: day,
      b1: hr,
      c1: min,
      d1: sec
    }
  },
  countdown(time) {
    let that = this;
    var EndTime = time;
    if (that.data.spellData != null) {
      EndTime = that.data.spellData.expiredDate;
    }
    var NowTime = new Date().getTime();
    var total_micro_second = EndTime - NowTime || [];
    // 渲染倒计时时钟
    let obj = that.dateformat(total_micro_second);
    if (total_micro_second > 0) {
      that.setData({
        clock: obj,
        day: obj.a1,
        hour: obj.b1,
        min: obj.c1,
        sec: obj.d1,
      })
    } else {
      that.setData({
        clock: "00",
        day: "00",
        hour: "00",
        min: "00",
        sec: "00",
      })
    }
    if (that.data.showTime) {
      setTimeout(function() {
        total_micro_second -= 1000;
        that.countdown();
      }, 1000)
    }
  },
  // 获得未支付的订单
  getUnPaidOrder(couponId) {
    let that = this;
    Http.get({
      url: config.api.getUnPaidOrder,
      data: {
        couponId: couponId
      }
    }).then(res => {
      that.setData({
        disOrderNumber: res.data.orderNumber,
        couponChannelId: res.data.couponChannelId,
        orderGroupId: res.data.orderGroupId
      })
      // 拼团订单
      if (res.data.payment/100 != Number(that.data.data.price)) {
        that.setData({
          spellGroupOrder: true
        })
      } else {
        // 原价购买订单
        that.setData({
          spellGroupOrder: false
        })
      }
      if (that.data.spellGroupOrder) {
        wx.showModal({
          title: '提示',
          content: "您有未支付拼团订单,请先进行支付",
          confirmText: "去支付",
          success: function (res) {
            if (res.confirm) {
              wx.navigateTo({
                url: `/pages/spellGroup/paySpellGroup/index?orderId=${that.data.disOrderNumber}&couponChannelId=${that.data.couponChannelId}&couponId=${couponId}&orderGroupId={that.data.orderGroupId}`,
              })
              
            }
          }
        })
      } else {
        wx.showModal({
          title: '提示',
          content: '您有未支付订单,请先进行支付',
          confirmText: "去支付",
          success: function (res) {
            if (res.confirm) {
              wx.navigateTo({
                url: `/pages/order/detail/index?orderId=${that.data.disOrderNumber}`,
              })
            }
          }
        })
      }
    }).catch(error => {
      console.log(error)
      wx.showToast({
        title: error.message,
        icon:"none",
        duration:3000
      })
    })
  },
  /**
   * 发起拼团
   */
  gotoSpell(e) {
    let that = this;
    that.setData({
      canSpell: false,
      formId: e.detail.formId,
      orderGroupId:0
    })
    that.getQuestions(0);
  },
  //参与别人的拼团
  gotoPartner() {
    wx.navigateTo({
      url: `/pages/joinFrDpell/index?orderId=${this.data.spellData.orderId}&couponId=${this.data.spellData.couponId}&orderGroupId=${this.data.spellData.orderGroupId}&couponChannelId=${this.data.couponChannelId}&avatarUrl=${this.data.spellData.avatarUrl}&nickName=${this.data.spellData.nickName}`
    });
  },
  /**
   * 获取一个拼团信息
   */
  getOneSpell(couponId) {
    let that = this;
    Http.get({
      url: config.api.queryRemainOne,
      data: {
        couponId: couponId
      }
    }).then(res => {
      wx.stopPullDownRefresh();
      if (res.data) {
        that.countdown(res.data.expiredDate);
        that.setData({
          spellData: res.data
        });
      }
    });
  },
  /**
   * 获取券详情信息
   */
  getDetail(couponChannelId) {
    let that = this;
    Http.get({
      url: config.api.couponDetail,
      data: {
        couponChannelId: couponChannelId
      }
    }).then(res => {
      wx.stopPullDownRefresh();
      let data = res.data;
      if (res && res.data && res.data.detailPicture) {
        that.setData({
          detailPicture: JSON.parse(res.data.detailPicture)
        })
      }
      if (res && res.data && res.data.coverPicture) {
        that.setData({
          coverPicture: JSON.parse(res.data.coverPicture)
        })
      }
      if (res && res.data && res.data.conditions) {
        that.setData({
          limitCondition: JSON.parse(res.data.conditions).type
        })
        if (JSON.parse(res.data.conditions).type == 2 && (JSON.parse(res.data.conditions).min || JSON.parse(res.data.conditions).min == 0)) {
          that.setData({
            minLimit: JSON.parse(res.data.conditions).min
          })
        }
        if (JSON.parse(res.data.conditions).type == 2 && (JSON.parse(res.data.conditions).max) || JSON.parse(res.data.conditions).max == 0) {
          that.setData({
            maxLimit: JSON.parse(res.data.conditions).max
          })
        }
      }
      data.price = (data.price / 100).toFixed(2)
      data.salePrice = (data.salePrice / 100).toFixed(2);
      data.validStartDate = utils.formatTime(data.validStartDate, 'yyyy-MM-dd')
      data.validEndDate = utils.formatTime(data.validEndDate, 'yyyy-MM-dd')
      that.setData({
        data,
        merchantVoList: data.merchantVoList
      });
    });
  },
  /**
   * 去拼团
   */
  goToOrderGroup(orderId, orderGroupId, _this) {
    let that = this;
    // 支付成功
    Http.post({
        url: config.api.toOrderGroup,
        data: {
          id: orderGroupId,
          orderId,
          couponId: _this.data.data.couponId
        }
      })
      .then(res => {
        wx.navigateTo({
          url: `/pages/spellDetail/index?orderId=${orderId}&couponId=${_this.data.data.couponId}&orderGroupId=${res.data.orderGroupId}&couponChannelId=${_this.data.couponChannelId}`
        });
      })
      .catch(err => {
        console.log(err);
      })
  },
  /**
   * 支付订单更新
   */
  payOrderUpdate: (orderId, payOrderId, status, reason, _this, orderGroupId) => {
    console.log(orderGroupId, 7777)
    let that = this;
    // 支付成功
    Http.post({
        url: config.api.payOrderUpdate,
        data: {
          payOrderId: payOrderId,
          orderId: orderId,
          status: status,
          reason: reason
        }
      })
      .then(res => {
        wx.hideLoading()
        if (orderGroupId !== 0) {
          wx.navigateTo({
            url: '/pages/order/detail/index?orderId=' + res.data.id,
          })
        } else {
          _this.goToOrderGroup(orderId, res.data.orderGroupId, _this)
        }
      })
      .catch(err => {
        if (err.code != 12002) {
          setTimeout(function() {
            _this.payOrderUpdate(orderId, payOrderId, status, reason, _this, orderGroupId);
          }, 2000)
        }
      })
  },
  /**
   * 发起支付
   */
  orderFunc() {
    let that = this;
    let orderGroupId = this.data.orderGroupId;
    let data = {
      couponChannelId: this.data.data.id,
      couponId: this.data.data.couponId,
      formId: this.data.formId
    }
    /**
     * 拼团订单
     */
    if (this.data.orderGroupId == 0) {
      data.orderGroupId = this.data.orderGroupId,
      that.setData({
        isFromSpell:true
      })
    }else{
      that.setData({
        isFromSpell: false
      })
    }
    
    Http.get({
      url: config.api.checkUserStatus,
      data: {
        token: app.globalData.token
      }
    }).then(res=>{
      Http.get({
        url: config.api.checkPhoneStatus,
        data: {}
      })
        .then(res => {
          /**
           * orderSave 下单
           */
          return Http.post({
            url: config.api.orderSave,
            data: data
          });
        })
        .catch(err => {
          console.log(err);
          that.setData({
            showbutton: false,
            showbutton1: false,
            canSpell: true,
            canBuyIf: true
          })
          if (err.code == 2011) {
            wx.showToast({
              title: "商户信息没找到",
              image: './../../../assets/images/fail.png',
              duration: 2000,
              mask: false
            });
          } else if (err.code == 2013) {
            wx.showToast({
              title: "商户信息禁用",
              image: './../../../assets/images/fail.png',
              duration: 2000,
              mask: false
            });
          } else if (err.code == 3000) {
            wx.showToast({
              title: "库存不足",
              image: './../../../assets/images/fail.png',
              duration: 2000,
              mask: false
            });
          } else if (err.code == 3001) {
            wx.showToast({
              title: "您已超过限购",
              image: './../../../assets/images/fail.png',
              duration: 2000,
              mask: false
            });
          } else if (err.code == 3002) {
            wx.showToast({
              title: "订单失败",
              image: './../../../assets/images/fail.png',
              duration: 2000,
              mask: false
            });
          } else if (err.code == 3003) {
            wx.showToast({
              title: "订单不存在",
              image: './../../../assets/images/fail.png',
              duration: 2000,
              mask: false
            });
          } else if (err.code == 3004) {
            wx.showToast({
              title: "订单不存在",
              image: './../../../assets/images/fail.png',
              duration: 2000,
              mask: false
            });
          } else if (err.code == 4003) {
            wx.showToast({
              title: "卡券已作废",
              image: './../../../assets/images/fail.png',
              duration: 2000,
              mask: false
            });
          } else if (err.code == 3012) {
            // wx.showToast({
            //   title: err.message,
            //   icon: "none"
            // })
            that.getUnPaidOrder(that.data.data.couponId);
          } else if (err.code == 11005) {
            /**
             * 将值传到用户手机号授权的页面
             *
             */
            wx.redirectTo({
              url: `/pages/getphoneInfo/index?path=spell&couponChannelId=${that.data.couponChannelId}&couponId=${that.data.data.couponId}`
            });
          } else if (err.code == 11006) {
            // 用户手机已加密
            wx.redirectTo({
              url: `/pages/phoneinput/phoneinput?path=spell&couponChannelId=${that.data.couponChannelId}&couponId=${that.data.data.couponId}`
            });
          } else {
            wx.showToast({
              title: err.message,
              icon: 'none',
              duration: 2000,
              mask: false
            });
          }
        })
        .then(res => {
          console.log(res)
          if (typeof (res) != "undefined") {
            let orderId = "" + res.data.id;
            that.setData({
              orderId: orderId,
              canSpell: false,
              canBuyIf: true
            });
            // 支付金额不为0
            /**
             * 支付订单创建
             */
            Http.post({
              url: config.api.payOrderCreate,
              data: {
                orderId: orderId
              }
            })
            .then(res => {
              var payOrderId = "" + res.data.payOrderId;
              wx.hideLoading();
              wx.requestPayment({
                timeStamp: res.data.timeStamp,
                nonceStr: res.data.nonceStr,
                package: res.data.package,
                signType: (res.data.signType) ? res.data.signType : "MD5",
                paySign: res.data.paySign,
                success: res => {
                  that.setData({
                    canSpell: false
                  })
                  wx.showLoading({
                    title: '订单正在处理中...',
                  })
                  setTimeout(function () {
                    wx.hideLoading()
                  }, 5000)
                  that.payOrderUpdate(that.data.orderId, payOrderId, 1, '', that, orderGroupId);
                  if (res.errMsg == "requestPayment:ok") {
                    setTimeout(function () {
                      wx.hideLoading();
                    }, 2000);
                  }
                },
                fail: res => {
                  /**
                   * 支付失败,需要更新订单的状态
                   */
                  that.payOrderUpdate(that.data.orderId, payOrderId, 2, '', that, orderGroupId);
                  that.setData({
                    showbutton: false,
                    canSpell: true,
                    canBuyIf: true
                  })
                  return;
                },
                complete: res => { }
              });
              /// End payment  --------
            })
            .catch(err => {
              that.setData({
                canSpell: true,
                canBuyIf: true
              })
              wx.showToast({
                title: err.message,
                icon: 'none',
                duration: 2000,
                mask: false
              });
            })
          }
        })
    })
    .catch(err => {
      console.log(err)
      if(err.code == 11004){
        wx.redirectTo({
          url: `/pages/getuserinfo/index?fromflag=spellcoupondetail&couponChannelIdflag=${that.data.couponChannelId}`,
        })
      }else{
        wx.showToast({
          title: err.message,
          icon:"none",
          duration:2500
        })
      }
    })
    
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {
    this.setData({
      canSpell: true,
      canBuyIf: true,
      showTime: true
    })
    if (this.data.spellData != null) {
      this.countdown()
    }
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {
    this.setData({
      showTime: false
    })
  },
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {
    this.setData({
      showTime: false
    })
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function(e) {
    let that = this;
    console.log(this.data.couponId,222)
    that.getDetail(that.data.couponChannelId);
    if (that.data.couponId) {
      that.getOneSpell(that.data.couponId) 
    }
  },
  onShareAppMessage: function (options) {
    console.log(options)
    var that = this;
    var shareObj = {
      title: that.data.data.title,
      path: `/pages/index/index?couponChannelId=${that.data.couponChannelId}&couponId=${that.data.data.couponId}&spellGroup=spellGroup` + (wx.getStorageSync('tenantId') ? '&tenantId=' + wx.getStorageSync('tenantId') : ''),
      success: function (res) {
        if (res.errMsg == 'shareAppMessage:ok') { }
      },
      fail: function (error) {
        if (res.errMsg == 'shareAppMessage:fail cancel') { } else if (res.errMsg == 'shareAppMessage:fail') { }
      }
    };
    // 来自页面内的按钮的转发
    if (options.from == 'button') {
      var eData = options.target.dataset.id;
      shareObj.path = `/pages/index/index?couponChannelId=${eData}&couponId=${that.data.data.couponId}&spellGroup=spellGroup&frommd=JC` + (wx.getStorageSync('tenantId') ? '&tenantId=' + wx.getStorageSync('tenantId') : '');
    }
    // 返回shareObj
    return shareObj;
  },
})
 |