千目品牌领券机
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

187 lines
3.6 KiB

import {
axios
} from '../../js/libs'
const app = getApp()
Page({
data: {
showModal: false,
shareTitle: '',
mall: null,
userCouponNum: 0,
mallCode: null,
couponCode: null,
refresherTriggered: false,
},
async onLoad({
q
}) {
if (q) {
const {
mallCode,
couponCode
} = decodeURIComponent(q).split('?').pop().replace('q=', '').split('&').map(kv => kv.split('=')).reduce((acc, nxt) => Object.assign(acc, {
[nxt[0]]: nxt[1]
}), {})
this.setData({
mallCode,
couponCode
})
}
const db = wx.cloud.database()
const {
data: {
value: shareTitle
}
} = await db.collection('config').doc('shareTitle').get()
this.setData({
shareTitle
})
},
getLocation() {
return new Promise(resolve => {
wx.getLocation({
type: 'wgs84',
success: resolve
})
})
},
async refreshList() {
const mall = this.data.mall
const {
coupons,
} = getApp()
if (mall) {
const codes = await coupons.getMallCodes(mall.code)
mall.coupons = codes
this.setData({
mall
})
}
this.setData({
refresherTriggered: false
})
},
async onShow() {
const {
malls,
coupons,
} = getApp()
const mall = this.data.mallCode ? await malls.getMallByCode(this.data.mallCode) : await malls.getCurrentMall()
const mallCode = this.data.mallCode
if (this.data.mallCode) {
this.setData({
mallCode: null
})
}
if (!mall.coupons) {
const codes = await coupons.getMallCodes(mall.code, mall.name)
mall.coupons = codes
}
this.setData({
mall
})
const userCodes = await coupons.getUserCodes(-1)
this.setData({
userCouponNum: userCodes.length
})
if (this.data.couponCode) {
this.doShowQrcodeModal({
mallCode,
couponCode: this.data.couponCode
})
this.setData({
couponCode: null
})
}
},
async doShowQrcodeModal({
mallCode,
couponCode
}) {
const {
getOpenid,
} = getApp()
wx.showLoading()
try {
const openid = await getOpenid()
await axios.get('/Api/Coupon/GetCoupon', {
couponCode,
mallCode,
"userCode": openid
})
this.setData({
couponName: '直播券',
showModal: true
})
} catch (error) {
wx.showToast({
icon: 'none',
title: JSON.stringify(error),
})
} finally {
wx.hideLoading()
}
},
async doShowModal({
detail: {
code
}
}) {
const {
getOpenid,
coupons
} = getApp()
wx.showLoading()
try {
const openid = await getOpenid()
const coupon = coupons.get(code)
await axios.get('/Api/Coupon/GetCoupon', {
"couponCode": coupon.code,
"mallCode": coupon.mallCode,
"userCode": openid
})
coupons.set({
...coupon,
received: true
})
this.setData({
mall: {
...this.data.mall,
coupons: [...this.data.mall.coupons]
},
couponName: '优惠券',
showModal: true
})
} catch (error) {
wx.showToast({
icon: 'none',
title: JSON.stringify(error),
})
} finally {
wx.hideLoading()
}
},
hideModal() {
this.setData({
showModal: false
})
},
onShareAppMessage() {
return {
title: this.data.shareTitle,
path: "pages/index/index",
imageUrl: "./shareImg.png"
}
}
})