72 lines
1.7 KiB
JavaScript
72 lines
1.7 KiB
JavaScript
const { calculateExpressFeeCent, createExpressOrder } = require('../../api/expressApi')
|
|
const { listAddresses } = require('../../api/addressApi')
|
|
const { setField } = require('../../utils/request')
|
|
|
|
Page({
|
|
data: {
|
|
addresses: [],
|
|
addressIndex: 0,
|
|
feeCent: 300,
|
|
submitting: false,
|
|
form: {
|
|
expressCompany: '',
|
|
pickupCode: '',
|
|
pickupAddress: '',
|
|
receiverPhone: '',
|
|
addressId: null,
|
|
packageCount: 1,
|
|
remark: ''
|
|
}
|
|
},
|
|
|
|
onLoad() {
|
|
listAddresses()
|
|
.then((addresses) => {
|
|
this.setData({
|
|
addresses: addresses || [],
|
|
'form.addressId': addresses && addresses[0] ? addresses[0].id : null
|
|
})
|
|
})
|
|
.catch(() => {})
|
|
},
|
|
|
|
onFieldInput(event) {
|
|
setField(this, event)
|
|
},
|
|
|
|
onAddressChange(event) {
|
|
const index = Number(event.detail.value)
|
|
const address = this.data.addresses[index]
|
|
this.setData({
|
|
addressIndex: index,
|
|
'form.addressId': address ? address.id : null
|
|
})
|
|
},
|
|
|
|
onPackageCountChange(event) {
|
|
const packageCount = Number(event.detail.value || 1)
|
|
this.setData({
|
|
'form.packageCount': packageCount,
|
|
feeCent: calculateExpressFeeCent(packageCount)
|
|
})
|
|
},
|
|
|
|
submit() {
|
|
if (this.data.submitting) {
|
|
return
|
|
}
|
|
if (!this.data.form.addressId) {
|
|
wx.showToast({ title: '请先添加地址', icon: 'none' })
|
|
return
|
|
}
|
|
this.setData({ submitting: true })
|
|
createExpressOrder(this.data.form)
|
|
.then(() => {
|
|
wx.showToast({ title: '已提交' })
|
|
wx.navigateTo({ url: '/pages/orders/index' })
|
|
})
|
|
.catch((error) => wx.showToast({ title: error.message, icon: 'none' }))
|
|
.finally(() => this.setData({ submitting: false }))
|
|
}
|
|
})
|