77 lines
2.1 KiB
JavaScript
77 lines
2.1 KiB
JavaScript
const app = getApp()
|
|
|
|
Page({
|
|
data: {
|
|
coupons: []
|
|
},
|
|
onLoad() {
|
|
this.fetchCoupons();
|
|
},
|
|
fetchCoupons() {
|
|
const { request } = require('../../utils/request')
|
|
request({ url: '/coupons' })
|
|
.then((data) => {
|
|
const list = Array.isArray(data) ? data : (data && data.results) || []
|
|
this.setData({ coupons: list })
|
|
})
|
|
.catch(() => {
|
|
this.setData({
|
|
coupons: [
|
|
{
|
|
id: 1,
|
|
amount: '50',
|
|
unit: '元',
|
|
title: '新人见面礼',
|
|
desc: '无门槛使用,适用于所有课程',
|
|
expiry: '2023-12-31',
|
|
status: 'available',
|
|
color: 'from-blue-500 to-cyan-400',
|
|
bgStart: 'from-blue-50',
|
|
bgEnd: 'to-cyan-50',
|
|
shadow: 'shadow-blue-100'
|
|
},
|
|
{
|
|
id: 2,
|
|
amount: '8.5',
|
|
unit: '折',
|
|
title: '编程课程专享',
|
|
desc: '仅限编程开发类课程使用',
|
|
expiry: '2023-11-30',
|
|
status: 'available',
|
|
color: 'from-violet-500 to-fuchsia-500',
|
|
bgStart: 'from-violet-50',
|
|
bgEnd: 'to-fuchsia-50',
|
|
shadow: 'shadow-violet-100'
|
|
},
|
|
{
|
|
id: 3,
|
|
amount: '100',
|
|
unit: '元',
|
|
title: '高阶课程抵扣券',
|
|
desc: '满 999 元可用',
|
|
expiry: '2023-10-15',
|
|
status: 'claimed',
|
|
color: 'from-orange-400 to-rose-500',
|
|
bgStart: 'from-orange-50',
|
|
bgEnd: 'to-rose-50',
|
|
shadow: 'shadow-orange-100'
|
|
}
|
|
]
|
|
})
|
|
})
|
|
},
|
|
handleClaim(e) {
|
|
const id = e.currentTarget.dataset.id;
|
|
if (this.data.coupons.find(c => c.id === id).status === 'claimed') return;
|
|
|
|
const updatedCoupons = this.data.coupons.map(c =>
|
|
c.id === id ? { ...c, status: 'claimed' } : c
|
|
);
|
|
this.setData({ coupons: updatedCoupons });
|
|
wx.showToast({
|
|
title: '领取成功',
|
|
icon: 'success'
|
|
})
|
|
}
|
|
})
|