feat: add resident miniapp MVP
This commit is contained in:
@@ -1 +1,93 @@
|
||||
Page({})
|
||||
const { getProductDetail, createGoodsOrder } = require('../../api/productApi')
|
||||
const { listAddresses } = require('../../api/addressApi')
|
||||
|
||||
Page({
|
||||
data: {
|
||||
product: null,
|
||||
addresses: [],
|
||||
addressIndex: 0,
|
||||
skuIndex: 0,
|
||||
submitting: false,
|
||||
form: {
|
||||
quantity: 1,
|
||||
deliveryMethod: 'IMMEDIATE',
|
||||
scheduledTime: '',
|
||||
remark: ''
|
||||
}
|
||||
},
|
||||
|
||||
onLoad(options) {
|
||||
this.productId = Number(options.id)
|
||||
this.load()
|
||||
},
|
||||
|
||||
load() {
|
||||
Promise.all([getProductDetail(this.productId), listAddresses().catch(() => [])])
|
||||
.then(([product, addresses]) => {
|
||||
this.setData({
|
||||
product,
|
||||
addresses: addresses || []
|
||||
})
|
||||
})
|
||||
.catch((error) => wx.showToast({ title: error.message, icon: 'none' }))
|
||||
},
|
||||
|
||||
onSkuChange(event) {
|
||||
this.setData({ skuIndex: Number(event.detail.value) })
|
||||
},
|
||||
|
||||
onAddressChange(event) {
|
||||
this.setData({ addressIndex: Number(event.detail.value) })
|
||||
},
|
||||
|
||||
onQuantityChange(event) {
|
||||
this.setData({ 'form.quantity': Number(event.detail.value || 1) })
|
||||
},
|
||||
|
||||
onMethodChange(event) {
|
||||
this.setData({ 'form.deliveryMethod': event.detail.value })
|
||||
},
|
||||
|
||||
onScheduledTimeChange(event) {
|
||||
this.setData({ 'form.scheduledTime': event.detail.value })
|
||||
},
|
||||
|
||||
onRemarkInput(event) {
|
||||
this.setData({ 'form.remark': event.detail.value })
|
||||
},
|
||||
|
||||
submit() {
|
||||
if (!this.data.product || this.data.submitting) {
|
||||
return
|
||||
}
|
||||
const sku = this.data.product.skus[this.data.skuIndex]
|
||||
if (!sku) {
|
||||
wx.showToast({ title: '请选择规格', icon: 'none' })
|
||||
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 })
|
||||
createGoodsOrder({
|
||||
merchantId: this.data.product.merchantId,
|
||||
addressId: address ? address.id : null,
|
||||
deliveryMethod: this.data.form.deliveryMethod,
|
||||
scheduledTime: this.data.form.scheduledTime || null,
|
||||
remark: this.data.form.remark,
|
||||
items: [{
|
||||
productId: this.data.product.id,
|
||||
skuId: sku.id,
|
||||
quantity: this.data.form.quantity
|
||||
}]
|
||||
})
|
||||
.then(() => {
|
||||
wx.showToast({ title: '已提交' })
|
||||
wx.navigateTo({ url: '/pages/orders/index' })
|
||||
})
|
||||
.catch((error) => wx.showToast({ title: error.message, icon: 'none' }))
|
||||
.finally(() => this.setData({ submitting: false }))
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user