70 lines
1.9 KiB
JavaScript
70 lines
1.9 KiB
JavaScript
const { getGroupBuyDetail, createGroupBuyOrder } = require('../../api/groupBuyApi')
|
|
const { listAddresses } = require('../../api/addressApi')
|
|
|
|
Page({
|
|
data: {
|
|
groupBuy: null,
|
|
addresses: [],
|
|
addressIndex: 0,
|
|
submitting: false,
|
|
form: {
|
|
quantity: 1,
|
|
deliveryMethod: 'SELF_PICKUP',
|
|
remark: ''
|
|
}
|
|
},
|
|
|
|
onLoad(options) {
|
|
this.groupBuyId = Number(options.id)
|
|
Promise.all([getGroupBuyDetail(this.groupBuyId), listAddresses().catch(() => [])])
|
|
.then(([groupBuy, addresses]) => {
|
|
this.setData({
|
|
groupBuy,
|
|
addresses: addresses || []
|
|
})
|
|
})
|
|
.catch((error) => wx.showToast({ title: error.message, icon: 'none' }))
|
|
},
|
|
|
|
onQuantityChange(event) {
|
|
this.setData({ 'form.quantity': Number(event.detail.value || 1) })
|
|
},
|
|
|
|
onMethodChange(event) {
|
|
this.setData({ 'form.deliveryMethod': event.detail.value })
|
|
},
|
|
|
|
onAddressChange(event) {
|
|
this.setData({ addressIndex: Number(event.detail.value) })
|
|
},
|
|
|
|
onRemarkInput(event) {
|
|
this.setData({ 'form.remark': event.detail.value })
|
|
},
|
|
|
|
submit() {
|
|
if (!this.data.groupBuy || this.data.submitting) {
|
|
return
|
|
}
|
|
const address = this.data.addresses[this.data.addressIndex]
|
|
if (this.data.form.deliveryMethod !== 'SELF_PICKUP' && !address) {
|
|
wx.showToast({ title: '请先添加地址', icon: 'none' })
|
|
return
|
|
}
|
|
this.setData({ submitting: true })
|
|
createGroupBuyOrder({
|
|
groupBuyId: this.data.groupBuy.id,
|
|
addressId: address ? address.id : null,
|
|
quantity: this.data.form.quantity,
|
|
deliveryMethod: this.data.form.deliveryMethod,
|
|
remark: this.data.form.remark
|
|
})
|
|
.then(() => {
|
|
wx.showToast({ title: '已提交' })
|
|
wx.navigateTo({ url: '/pages/orders/index' })
|
|
})
|
|
.catch((error) => wx.showToast({ title: error.message, icon: 'none' }))
|
|
.finally(() => this.setData({ submitting: false }))
|
|
}
|
|
})
|