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 })) } })