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
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"
|
|
}
|
|
}
|
|
})
|