|
|
<template> <view class="warp"> <!-- #ifdef MP-WEIXIN --> <send-coupon v-if="cParams" @sendcoupon="sendcoupon" @userconfirm="userconfirm" :send_coupon_params="cParams.send_coupon_params" :sign="cParams.sign" :send_coupon_merchant="cParams.send_coupon_merchant" > <slot></slot> </send-coupon> <view v-else @click.stop="receiveCoupon"> <slot></slot> </view> <!-- #endif --> <!-- #ifndef MP-WEIXIN --> <view @click.stop="receiveCoupon"> <slot></slot> </view> <!-- #endif -->
<!-- 优惠券领取 --> <tui-modal :show="confirmVisible" :custom="true" :fadein="true"> <view class="Put-box1"> <view class="text-align fs34 fs-bold"> 是否领取此优惠券 </view> <view class="flex-display flex-sp-between"> <view class="btn" @click="confirmVisible = false"> 取消 </view> <view class="btn submit" @click="receive"> 确定 </view> </view> </view> </tui-modal> </view> </template>
<script> const NET = require('../../utils/request') const API = require('../../config/api') import tuiModal from "@/components/modal/modal"; export default { name: "wxSendCoupon", components: { tuiModal }, props: { couponList: { type: Array, default: ()=>[] }, isExchange: { type: Boolean, default: false } // 卡券无法加询问
// isConfirm: {
// type: Boolean,
// default: false
// }
}, data(){ return { cParams: '', confirmVisible: false, successList: [] } }, mounted(){ // console.log(this.couponList,'couponList')
let ids = [] this.couponList.forEach(item=>{ if(item.cardId){ ids.push(item.cardId) } // else {
// this.successList.push(item)
// }
// 解除app h5不能领券问题
this.successList.push(item) }) // console.log(this.successList,'successList')
// #ifdef MP-WEIXIN
if(ids && ids.length > 0){ this.buildParam4Plug(ids) } // #endif
}, methods:{ // 获取微信卡券参数
buildParam4Plug(ids){ NET.request(API.buildParam4Plug, ids, 'POST').then(res => { this.cParams = res.data }).catch(res => {
}) }, // 领取优惠券
receiveCoupon() { if(this.successList.length > 0){ const res = uni.getStorageSync('storage_key'),token = res.token; if (token) { if(this.isExchange){ // 积分兑换
let paramsData = { couponId: this.couponList[0].couponId, source: 3 } NET.request(API.exchangeCoupon, paramsData, 'POST').then(res => { this.$emit('success') })
} else { if (this.couponList.length === 1 && this.couponList[0].ifCredit) { // 单个积分兑换的卡券去积分中心兑
uni.navigateTo({ url: `../integral/exchangeDetail?data=${JSON.stringify(this.couponList[0])}` }) } else { let params = [] this.successList.forEach(item=>{ params.push({ couponId: item.couponId, couponCode: item.couponCode, source: 1 }) }) // 领取优惠卷
NET.request(API.takeBatchCoupon, params, 'POST').then(res => { if (res.code === '200') { uni.showToast({ title:'领取成功', }) this.$emit('success') if(!this.cParams){ this.$emit('closeAd') } } }).catch(res => { if(res.data.code !== '200'){ uni.showToast({ title:res.data.message, icon:"none" }) } }) } } } else { uni.showToast({ title:'请先登录', icon:"none" }) uni.navigateTo({ url:'/pages_category_page2/userModule/login' }) } } else { this.$emit('closeAd') } }, // 领取优惠券回调
sendcoupon(e){ console.log('领取了微信卡券', e) const errcode = e.detail.errcode,resultList = e.detail.send_coupon_result switch (errcode) { case 'OK': break case 'PARAM_ERROR': console.log('参数错误,请开发者查看msg中具体的错误信息并进行修复处理') break case 'USER_NOT_EXISTS': console.log('登录态获取失效') break case 'USER_GET_FAILED': console.log('登录态获取失败') break case 'SIGN_ERROR': console.log('签名错误') break case 'SYSTEMERROR': console.log('发券超时') break case 'FREQUENCY_LIMITED': console.log('发券频率过高') break } if(errcode === 'OK'){ resultList.forEach(item=>{ let cName = '' this.couponList.forEach(citem=>{ if(item.stock_id === citem.cardId){ cName = citem.activityName if(item.code === 'SUCCESS'){ citem.couponCode = item.coupon_code this.successList.push(citem) } } }) switch (item.code) { case 'FAILED': console.log('该张券发券失败,查看message中的具体错误信息') break case 'NOTENOUGH': uni.showToast({ title:cName + '优惠券已被领取完', icon:"none" }) console.log('总预算用完') break case 'DAYLIMIT': uni.showToast({ title:cName + '优惠券领取张数已达到上限', icon:"none" }) console.log('用户达到单天限领') break case 'NATURELIMIT': uni.showToast({ title:cName + '优惠券领取张数已达到上限', icon:"none" }) console.log('用户自然人限领') break case 'MAXQUOTA': uni.showToast({ title:cName + '优惠券领取张数已达到上限', icon:"none" }) console.log('用户领取张数达到上限') break case 'DUPREQUEST': uni.showToast({ title:cName + '优惠券领取张数已达到上限', icon:"none" }) console.log('已通过该发券凭证给用户发券') break case 'NOTRUNNING': console.log('批次状态非运营中') break case 'EXPIRED': uni.showToast({ title:cName + '优惠券已过期', icon:"none" }) console.log('该批次已过期') break case 'NOTMONEY': console.log('账户余额不足') break case 'USERLIMIT': console.log('用户已超限领额度') break case 'FREQUENCYLIMIT': console.log('超过频率限制') break } }) this.receiveCoupon() } else { this.$emit('closeAd') } }, // 用户确认领券事件
userconfirm(e){ console.log('用户确认领券', e) this.$emit('closeAd') } } } </script>
|