const { post, login } = require('../../utils/pay-api.js') // 同购买页:用上次的身份当初始值,退款按钮不会先冒出来再消失 const cachedIsAdmin = Boolean(wx.getStorageSync('isAdmin')) function formatTime(timestamp) { const d = new Date(timestamp) const pad = (n) => (n < 10 ? '0' + n : '' + n) return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}` } Page({ data: { loading: false, list: [], error: '', isIos: false, isAdmin: cachedIsAdmin, // 退款目前是管理员功能 }, // 每次切到这一页都刷新一次,买完回来看得到 onShow() { // iPhone 上买的订单只能用户自己去 App Store 申请退款,按钮就不显示了 this.setData({ isIos: wx.getSystemInfoSync().platform === 'ios' }) this.load() }, async load() { this.setData({ loading: true, error: '' }) try { const code = await login() const data = await post('/pay/my', { code }) wx.setStorageSync('isAdmin', Boolean(data.isAdmin)) this.setData({ isAdmin: Boolean(data.isAdmin), list: (data.list || []).map((item) => Object.assign({}, item, { timeText: formatTime(item.deliveredAt) })), }) } catch (err) { this.setData({ error: err.message }) } finally { this.setData({ loading: false }) } }, copyCode(e) { wx.setClipboardData({ data: e.currentTarget.dataset.code }) }, onRefund(e) { const outTradeNo = e.currentTarget.dataset.order wx.showModal({ title: '申请退款', content: '退款后这张激活码会作废,确定要退吗?', confirmText: '退款', cancelText: '再想想', success: (res) => { if (res.confirm) this.doRefund(outTradeNo) }, }) }, async doRefund(outTradeNo) { wx.showLoading({ title: '退款中', mask: true }) try { const code = await login() await post('/pay/refund', { outTradeNo, code }) wx.showToast({ title: '退款已发起', icon: 'none' }) await this.load() } catch (err) { wx.showToast({ title: err.message, icon: 'none', duration: 3000 }) } finally { wx.hideLoading() } }, onPullDownRefresh() { this.load().then(() => wx.stopPullDownRefresh()) }, })