// 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; }, })