const navigationBarHeight = (getApp().statusBarHeight + 50) + 'px' var config = require("../../../config/config.js"); var app = getApp(); const Http = require("../../../utils/HttpBasics"); const util = require("../../../utils/util"); const imgurl = require("../../../utils/imgurl"); Page({ data: { couponIds:"", couponChannelId:"", showPage:false, data:{}, spuIdObj:{}, priceAndStockObj:{} }, onLoad: function (options) { console.log(options); tt.showLoading({ title: "加载中..." }); let that = this if (app.globalData.token){ if (options && (options.couponChannelId || options.couponIds)) { if (options.couponIds) { this.setData({ couponIds: options.couponIds }) that.getDetail(options.couponIds, 'notendclock'); } else { that.getDetail(options.couponChannelId, 'notendclock'); that.getSupId(options.couponChannelId) } } }else{ app.tokenCallback = token => { if (options && (options.couponChannelId || options.couponIds)) { if (options.couponIds) { this.setData({ couponIds: options.couponIds }) that.getDetail(options.couponIds, 'notendclock'); } else { that.getDetail(options.couponChannelId, 'notendclock'); // that.getSupId(options.couponChannelId) } } } } }, getSupId(id) { Http.get({ url: config.api.getSpuid, data: { id: id } }).then(res => { if (res.data) { this.setData({ spuIdObj: res.data }) } }).catch(err => { // tt.showToast({ // title: err.message, // icon: 'none', // duration: 2000, // mask: false // }); }) }, getCouponPriceAndStock(couponChannelId) {//获取券价格与库存 Http.get({ url: config.api.couponPriceAndStock, data: { couponChannelId } }).then(res => { let tempBoj = JSON.parse(res.data) console.log(tempBoj, "$"); this.setData({ priceAndStockObj: tempBoj }) }) }, getDetail: function (couponChannelId, flag) { let that = this; let data = {}; that.getCouponPriceAndStock(couponChannelId);//获取券价格和库存 if (that.data.couponIds) { data.couponId = couponChannelId } else { data.couponChannelId = couponChannelId } var parmer = { url: config.api.newCouponDetail, data: data }; Http.get(parmer).then(res => { that.setData({ couponId: res.data.couponId }) /** * activityStatus==0 活动未开始 * activityStatus==1 活动已开始 * flag == endclock 说明倒计时已经结束 */ if (res.data.endTime && res.data.beginTime) { that.setData({ begin_time: res.data.beginTime, end_time: res.data.endTime, activityStatus: res.data.actStatus ? res.data.actStatus : '' }) if (res.data.actStatus == 0 && flag != 'endclock') { that.countdown(res.data.beginTime); } else if (res.data.actStatus != 0 && flag != 'endclock') { that.countdown(res.data.endTime); } else { clearInterval(that.data.setInterval) } if (res.data.actStatus == 0) { var beginTime = util.formatTime(res.data.beginTime, "yyyy-MM-dd hh:mm:ss"); if (util.timechuo(beginTime).indexOf('-') == 0) { that.setData({ beginTime: "活动已结束", }); } else { that.setData({ beginTime: util.timechuo(beginTime) }); } } else { var endTime = util.formatTime(res.data.endTime, "yyyy-MM-dd hh:mm:ss"); if (util.timechuo(endTime).indexOf('-') == 0) { that.setData({ endtime: "活动已结束", }); } else { that.setData({ endtime: util.timechuo(endTime) }); } } } tt.hideLoading(); that.setData({ data: res.data, }); if (res.data.type == 10) { that.setData({ salePriceStr: res.data.salePriceStr, pickEndDate: util.formatTime(res.data.pickEndDate, "yyyy-MM-dd"), pickStartDate: util.formatTime(res.data.pickStartDate, "yyyy-MM-dd"), priceStr: res.data.priceStr, tailPriceStr: res.data.tailPriceStr, origPriceStr: res.data.origPriceStr }) } if (res.data.validType == 1) { that.setData({ validStartDate: util.formatTime(res.data.validStartDate, "yyyy-MM-dd"), validEndDate: util.formatTime(res.data.validEndDate, "yyyy-MM-dd"), pickStartDate: util.formatTime(res.data.pickStartDate, "yyyy-MM-dd"), pickEndDate: util.formatTime(res.data.pickEndDate, "yyyy-MM-dd"), }); } else { if (res.data.validDays) { that.setData({ validDays: res.data.validDays }); } } if (res.data.itemGroup) { let tempObj = this.data.data tempObj.itemGroup = JSON.parse(tempObj.itemGroup) this.setData({ data: tempObj }) console.log(this.data.data, "data"); } if (res.data.productAttrs && res.data.skuAttrs) { let tempObj = this.data.data tempObj.productAttrs = JSON.parse(tempObj.productAttrs) tempObj.skuAttrs = JSON.parse(tempObj.skuAttrs) tempObj.productAttrs.map(item => { if (item.key == "Notification") { if (item.data != '') { tempObj.curLsit = JSON.parse(item.data) } } if (item.key == "bring_out_meal") { tempObj.besides = item.data } if (item.key == "free_pack") { tempObj.pack = item.data } if (item.key == "superimposed_discounts") { tempObj.superimposed_discounts = item.data } if (item.key == "private_room") { tempObj.private_room = item.data } if (item.key == "rec_person_num_max") { tempObj.rec_person_num_max = item.data } if (item.key == 'Description') { tempObj.Description = JSON.parse(item.data) } if (item.key == "can_no_use_date") { tempObj.can_no_use_date = JSON.parse(item.data) } }) tempObj.skuAttrs.map(item => { if (item.key == "commodity") { if (item.data != '') { tempObj.itemGroup = JSON.parse(item.data) } } }) this.setData({ data: tempObj }) console.log(this.data.data, "data"); } }).catch(err => { tt.showToast({ title: err.message, icon: 'none', duration: 2000, mask: false }); }) }, /** * 支付订单更新 */ payOrderUpdate: (orderId, payOrderId, status, reason, type, _this, composeOrderType) => { let that = this; // 支付成功 Http.post({ url: config.api.payOrderUpdate, data: { payOrderId: payOrderId, composeOrderId: orderId, status: status, reason: reason } }) .then(res => { tt.hideLoading() // 有价券 if (!type && type != 'free') { tt.navigateTo({ url: `/pages/order/detail/index?orderId=${orderId }` }); } else if (type == 'free') { tt.navigateTo({ url: `/pages/order/detail/index?orderId=${orderId }` }); } }) .catch(err => { console.log(err); if (!type) { setTimeout(function () { _this.payOrderUpdate(orderId, payOrderId, status, reason, type, _this, composeOrderType); }, 2000) } }) }, /** * 发起支付 */ orderFunc(discount) { if(this.data.showbutton)return; let that = this; tt.showLoading({ title: "加载中..." }); that.setData({ showbutton: true, }) Http.get({ url: config.api.checkUserStatus, data: { token: app.globalData.token } }).then(res => { Http.get({ url: config.api.checkPhoneStatus, data: {} }).then(res => { if ((!tt.canIUse('createOrder')) || that.data.data.type == 50 || that.data.priceAndStockObj.salePrice == 0) { //积分券和免费券 // 发起砍价 if (discount == 'discount') { var data = { couponChannelId: "" + that.data.couponChannelId, couponId: "" + that.data.couponId, formId: "" + that.data.formId, press: true } } else if (discount == 'discount1') { var data = { couponChannelId: "" + that.data.couponChannelId, couponId: "" + that.data.couponId, formId: "" + that.data.formId, press: false } } else if (that.data.couponChannelId == null) { var data = { couponId: "" + that.data.couponId, formId: "" + that.data.formId, }; } else { var data = { couponChannelId: "" + that.data.couponChannelId, couponId: "" + that.data.couponId, formId: "" + that.data.formId, } } console.log(data, "data") let url = "" let tempObj; let tempArr = [] if (that.data.data.type == 12) { url = config.api.couponPackageSave tempObj = { signleOrder: { couponChannelId: "" + that.data.couponChannelId, couponId: "" + that.data.couponId, formId: "" + that.data.formId, }, count: "1" } tempArr.push(tempObj) } else { url = config.api.orderSave } /** * orderSave 下单 */ Http.post({ url: url, data: that.data.data.type == 12 ? JSON.stringify(tempArr) : data }).then(res => { if (discount != 'discount') { if (typeof (res) != "undefined") { let orderId = "" + res.data.mainOrderId; that.setData({ orderId: orderId, composeOrderType: res.data.composeOrderType }); if (res.data.payment > 0) { // 支付金额不为0 /** * 支付订单创建 */ Http.post({ url: config.api.payOrderCreate, data: { orderId: orderId, composeOrderType: res.data.composeOrderType } }).then(res => { var payOrderId = "" + res.data.outOrderNo; tt.hideLoading(); tt.pay({ service: 5, orderInfo: { order_id: res.data.orderId, order_token: res.data.token, }, success: res => { tt.showLoading({ title: '订单正在处理中...', }) if (res.code === 0) { that.payOrderUpdate(that.data.orderId, payOrderId, 1, '', '', that, that.data.composeOrderType); if (res.errMsg == "requestPayment:ok") { /** * 用户支付成功以后跳转到券包列表 */ if (that.data.cardType == 100) { tt.setStorage({ key: 'couponNum2', data: "couponNum2" }) } else if (that.data.data.type != 5 && that.data.cardType != 100) { tt.setStorage({ key: 'couponNum', data: "couponNum" }) } } } else if (res.code === 1) { that.setData({ showbutton: false }) tt.hideLoading(); tt.showToast({ title: '支付超时', // 内容 icon: "none" }); } else if (res.code === 2) { that.setData({ showbutton: false }) tt.hideLoading(); tt.showToast({ title: '支付失败', // 内容 icon: "none" }); } else if (res.code === 3) { that.setData({ showbutton: false }) tt.hideLoading(); tt.showToast({ title: '支付关闭', // 内容 icon: "none" }); } else if (res.code === 4) { that.setData({ showbutton: false }) tt.hideLoading(); tt.showToast({ title: '支付取消', // 内容 icon: "none" }); } else if (res.code === 9) { that.setData({ showbutton: false }) tt.hideLoading(); tt.showToast({ title: '订单状态开发者自行获取', // 内容 icon: "none" }); } }, fail: res => { tt.hideLoading(); /** * 支付失败,需要更新订单的状态 */ that.payOrderUpdate(that.data.orderId, payOrderId, 2, '', 'fail', that, that.data.composeOrderType); that.setData({ showbutton: false }) return; }, complete: res => { } }); /// End payment -------- }) .catch(err => { tt.hideLoading(); tt.showToast({ title: err.message, icon: 'none', duration: 2000, mask: false }); }) } else { // 免费券 that.payOrderUpdate(orderId, "0", 1, '', 'free', that, that.data.composeOrderType); if (that.data.cardType == 100) { tt.setStorage({ key: 'couponNum2', data: "couponNum2" }) } else if (that.data.data.type != "5" && that.data.cardType != 100) { tt.setStorage({ key: 'couponNum', data: "couponNum" }) } } } } else { if (res) { tt.navigateTo({ url: `/pages/bargain/bargainDatail/bargainDatail?orderId=${res.data.mainOrderId}&composeOrderType=${res.data.composeOrderType}`, }) } } }) } else { //有价券 console.log(tt.canIUse('createOrder'), "是否支持2.0js-api"); if (tt.canIUse('createOrder')) { //支持 支付2.0 js-api let tempCallbackData = {} tempCallbackData[that.data.data.couponChannel.ttSpuId] = that.data.data.couponChannel.id let options = { callbackData: tempCallbackData, goodsList: [ { quantity: 1, // 购买数量 必填 price: that.data.priceAndStockObj.salePrice, // 商品价格 必填 goodsName: that.data.data.title, // 商品名称 必填 goodsPhoto: that.data.data.coverImg, // 商品图片链接 必填 goodsId: that.data.data.couponChannel.ttSpuId, // 商品ID 必填 goodsType: 1, // 商品类型 必填 goodsLabels: ['过期退', '随时退', '免预约'], // 商品标签 非必填 dateRule: '', // 使用规则 非必填 }, ], payment: { totalAmount: that.data.priceAndStockObj.salePrice, // 订单总价 必填 }, success: res => { tt.hideLoading(); that.setData({ showbutton: false, }) const { orderId, outOrderNo } = res; that.setData({ orderId, outOrderNo }); that.payOrderUpdate(outOrderNo, outOrderNo, 1, '', '', that, ''); }, fail: res => { const { orderId, outOrderNo, errNo, errMsg, errLogId } = res; if (errLogId) { tt.hideLoading(); that.setData({ showbutton: false, }) console.log('预下单失败', errNo, errMsg, errLogId); } if (orderId || outOrderNo) { tt.hideLoading(); that.setData({ showbutton: false, }) console.log('支付失败', errNo, errMsg, orderId, outOrderNo); console.log(that.payOrderUpdate, "payOrderUpdate"); that.payOrderUpdate(outOrderNo,outOrderNo,2,'','fail') } }, } console.log(options, "options"); tt.createOrder(options) } else { //不支持 支付2.0 js -api } } }).catch(err => { tt.hideLoading() that.setData({ showbutton: false, }) if (err.code == 2011) { tt.showToast({ title: "商户信息没找到", image: './../../../assets/images/fail.png', duration: 2000, mask: false }); } else if (err.code == 2013) { tt.showToast({ title: "商户信息禁用", image: './../../../assets/images/fail.png', duration: 2000, mask: false }); } else if (err.code == 3000) { tt.showToast({ title: "库存不足", image: './../../../assets/images/fail.png', duration: 2000, mask: false }); } else if (err.code == 3001) { tt.showToast({ title: "您已超过限购", image: './../../../assets/images/fail.png', duration: 2000, mask: false }); } else if (err.code == 3002) { tt.showToast({ title: "订单失败", image: './../../../assets/images/fail.png', duration: 2000, mask: false }); } else if (err.code == 3003) { tt.showToast({ title: "订单不存在", image: './../../../assets/images/fail.png', duration: 2000, mask: false }); } else if (err.code == 3004) { tt.showToast({ title: "订单不存在", image: './../../../assets/images/fail.png', duration: 2000, mask: false }); } else if (err.code == 4003) { tt.showToast({ title: "卡券已作废", image: './../../../assets/images/fail.png', duration: 2000, mask: false }); } else if (err.code == 3012) { that.getUnPaidOrder(that.data.couponId); } else if (err.code == 11005) { /** * 将值传到用户手机号授权的页面 * */ tt.redirectTo({ url: "/pages/getphoneInfo/index?couponChannelId=" + that.data.couponChannelId }); } else if (err.code == 11006) { // 用户手机已加密 tt.redirectTo({ url: "/pages/phoneinput/phoneinput?couponChannelId=" + that.data.couponChannelId }); } else { tt.showToast({ title: err.message, icon: 'none', duration: 2000, mask: false }); } }) }).catch(err => { console.log(err) if (err.code == 11004) { tt.redirectTo({ url: `/pages/getuserinfo/index?fromflag=coupondetail&couponChannelIdflag=${that.data.couponChannelId}`, }) } else { tt.showToast({ title: err.message, icon: "none", duration: 2500 }) } }) }, })