// 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: {
    mouldType: 0,
    mouldConfig: {},
    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: [],
    goHomeUrl: "",
    mallList: '',
    contentType: '',
    activityStatus: ''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({
      mouldType: app.globalData.mouldType,
      mouldConfig: app.globalData.mouldConfig,
      goHomeUrl: app.globalData.goHomeUrl,
    })
    Http.get({
      url: config.api.checkUserStatus,
      data: {
        token: app.globalData.token
      }
    }).then(res => {
      Http.get({
        url: config.api.checkPhoneStatus,
        data: {}
      }).then(res => {

        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)
        }
      }).catch(res => {
        wx.redirectTo({
          url: `/pages/getphoneInfo/index`
        });
      })
    }).catch(res => {
      wx.redirectTo({
        url: `/pages/getuserinfo/index`
      })
    })

  },
  /**
   * 显示分享海报
   */
  /* showPoster: function() {
    //跳转到海报生成页
    wx.navigateTo({
      url: `/pages/canvas/index?couponChannelId=${this.data.data.id}`
    })
  }, */
  showPoster: function () {
    console.log(this.data.data)
    let that = this;
    Http.get({
      url: config.api.checkUserStatus,
      data: {
        token: app.globalData.token
      }
    }).then(res => {
      wx.navigateTo({
        url: `/pages/canvas/index?couponChannelId=${that.data.data.id}`
      })
    }).catch(err => {
      console.log(err)
      if (err.code == 11004) {
        // 用户昵称未授权
        wx.redirectTo({
          url: `/pages/getuserinfo/index?couponChannelId=${that.data.data.id}&fromflag=poster`
        })

      }
    })

    //跳转到海报生成页

  },
  /**
   * 显示分享弹框
   */
  showshare: function () {
    this.setData({
      isshowposter: true,
    })
  },
  /**
   * 隐藏分享弹框
   */
  hidemodal: function () {
    this.setData({
      isshowposter: false,
    })
  },
  gotoIndex: function () {
    let this_ = this
    wx.switchTab({
      url: this_.data.goHomeUrl,
    })
  },
  /**
   * 拨打电话
   */
  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,
        composeOrderType: res.data.composeOrderType
      })

      // 拼团订单
      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 (res1) {
            if (res1.confirm) {
              wx.navigateTo({
                url: `/pages/spellGroup/paySpellGroup/index?orderId=${res.data.composeOrderId}&couponChannelId=${that.data.couponChannelId}&couponId=${couponId}&orderGroupId={that.data.orderGroupId}&composeOrderType=${that.data.composeOrderType}`,
              })

            }
          }
        })
      } else {
        wx.showModal({
          title: '提示',
          content: '您有未支付订单,请先进行支付',
          confirmText: "去支付",
          success: function (res1) {
            if (res1.confirm) {
              wx.navigateTo({
                url: `/pages/order/detail/index?orderId=${res.data.composeOrderId}&composeOrderType=${that.data.composeOrderType}`,
              })
            }
          }
        })
      }
    }).catch(error => {
      console.log(error)
      wx.showToast({
        title: error.message,
        icon: "none",
        duration: 3000
      })
    })
  },
  /**
   * 发起拼团
   */
  gotoSpell(e) {
    app.globalData.previewFlag = false
    let that = this;
    that.setData({
      canSpell: false,
      formId: e.detail.formId,
      orderGroupId: 0
    })
    that.getQuestions(0);
  },

  //参与别人的拼团
  gotoPartner() {
    console.log(this.data.spellData.nickName, 'nickname');
    wx.navigateTo({
      url: `/pages/joinFrDpell/index?orderId=${this.data.spellData.orderId}&couponId=${this.data.spellData.couponId}&orderGroupId=${this.data.spellData.orderGroupId}&nickName=${this.data.spellData.nickName}&couponChannelId=${this.data.couponChannelId}&avatarUrl=${this.data.spellData.avatarUrl}`
    });
  },
  /**
   * 获取一个拼团信息
   */
  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
        });
      }
    });
  },

  getHtml(couponChannelId) {
    Http.get({
      url: config.api.couponHtmlDetail,
      data: {
        couponChannelId: couponChannelId
      }
    }).then(res => {
      console.log(res)
      if (res.code == 200 && res.data.html) {
        this.setData({
          curHtml: decodeURI(res.data.html),
          type: res.data.type
        })
        app.globalData.curHtml = this.data.curHtml;
        console.log(app.globalData.curHtml)
      }
    })
  },

  /**
   * 获取券详情信息
   */
  getDetail(couponChannelId) {
    let that = this;
    Http.get({
      url: config.api.couponDetail,
      data: {
        couponChannelId: couponChannelId
      }
    }).then(res => {
      wx.stopPullDownRefresh();
      let data = res.data;
      if (res.data.contentType != undefined && res.data.contentType == 1) {
        //获取图文展示详情html
        this.setData({
          contentType: res.data.contentType
        })
        this.getHtml(couponChannelId);
      }
      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')
      data.soldStartTime = utils.formatTime(data.soldStartTime, 'yyyy-MM-dd')
      data.soldEndTime = utils.formatTime(data.soldEndTime, 'yyyy-MM-dd')
      that.setData({
        data,
        activityStatus: data.activityStatus
        // merchantVoList: data.merchantVoList
      });
      Http.get({
        url: config.api.couponMerchant,
        data: {
          couponChannelId: couponChannelId
        }
      }).then(res => {
        const keys = Object.keys(res.data)
        const mallList = []
        keys.forEach(item => {
          const arr = item.split('|')
          const obj = {
            tenantId: arr[0],
            mallName: arr[1],
            merchantVoList: res.data[item],
            expand: true
          }
          mallList.push(obj)
        })
        this.setData({
          mallList: mallList
        })
        console.log(this.data.mallList, 'mallList');
      })
    });
  },
  /**
   * 去拼团 
   */
  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,
        composeOrderId: orderId,
        status: status,
        reason: reason
      }
    })
      .then(res => {
        wx.hideLoading()
        if (orderGroupId !== 0) {
          wx.navigateTo({
            url: '/pages/order/detail/index?orderId=' + res.data.mainOrderId,
          })
        } else {
          _this.goToOrderGroup(res.data.singleOrder.id, res.data.mainOrderId, _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, "123")
        if (typeof (res) != "undefined") {
          let orderId = "" + res.data.mainOrderId;
          that.setData({
            orderId: orderId,
            composeOrderType: res.data.composeOrderType,
            canSpell: false,
            canBuyIf: true
          });
          // 支付金额不为0
          /**
           * 支付订单创建
           */
          Http.post({
            url: config.api.payOrderCreate,
            data: {
              orderId: orderId,
              composeOrderType: that.data.composeOrderType
            }
          }).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() {
    this.setData({
      mouldType: app.globalData.mouldType,
      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) {
    app.globalData.previewFlag = true
    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`,
      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`;
    }
    console.log(shareObj)
    // 返回shareObj
    return shareObj;
  },
})