90 lines
3.6 KiB
JavaScript
90 lines
3.6 KiB
JavaScript
"use strict";
|
|
const common_vendor = require("../../common/vendor.js");
|
|
const store_cart = require("../../store/cart.js");
|
|
const api_order = require("../../api/order.js");
|
|
const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
|
|
__name: "submit",
|
|
setup(__props) {
|
|
const cartStore = store_cart.useCartStore();
|
|
const receiverName = common_vendor.ref("");
|
|
const receiverPhone = common_vendor.ref("");
|
|
const receiverAddress = common_vendor.ref("");
|
|
const agreed = common_vendor.ref(false);
|
|
const submitting = common_vendor.ref(false);
|
|
const orderItems = common_vendor.computed(() => cartStore.checkedItems);
|
|
const totalPrice = common_vendor.computed(
|
|
() => orderItems.value.reduce((sum, item) => sum + item.specData.totalPrice * item.quantity, 0)
|
|
);
|
|
const canSubmit = common_vendor.computed(() => agreed.value && !submitting.value);
|
|
async function handleSubmit() {
|
|
if (!canSubmit.value)
|
|
return;
|
|
if (!receiverName.value.trim()) {
|
|
common_vendor.index.showToast({ title: "请输入收货人姓名", icon: "none" });
|
|
return;
|
|
}
|
|
if (!receiverPhone.value.trim()) {
|
|
common_vendor.index.showToast({ title: "请输入联系电话", icon: "none" });
|
|
return;
|
|
}
|
|
if (!receiverAddress.value.trim()) {
|
|
common_vendor.index.showToast({ title: "请输入收货地址", icon: "none" });
|
|
return;
|
|
}
|
|
submitting.value = true;
|
|
try {
|
|
const order = await api_order.createOrder({
|
|
items: orderItems.value.map((item) => ({
|
|
productId: item.productId,
|
|
specDataId: item.specDataId,
|
|
quantity: item.quantity,
|
|
unitPrice: item.specData.totalPrice
|
|
})),
|
|
receiverName: receiverName.value.trim(),
|
|
receiverPhone: receiverPhone.value.trim(),
|
|
receiverAddress: receiverAddress.value.trim()
|
|
});
|
|
for (const item of orderItems.value) {
|
|
cartStore.removeFromCart(item.id);
|
|
}
|
|
common_vendor.index.redirectTo({ url: `/pages/order/detail?id=${order.id}` });
|
|
} catch {
|
|
common_vendor.index.showToast({ title: "提交订单失败,请重试", icon: "none" });
|
|
} finally {
|
|
submitting.value = false;
|
|
}
|
|
}
|
|
return (_ctx, _cache) => {
|
|
return common_vendor.e({
|
|
a: receiverName.value,
|
|
b: common_vendor.o(($event) => receiverName.value = $event.detail.value),
|
|
c: receiverPhone.value,
|
|
d: common_vendor.o(($event) => receiverPhone.value = $event.detail.value),
|
|
e: receiverAddress.value,
|
|
f: common_vendor.o(($event) => receiverAddress.value = $event.detail.value),
|
|
g: common_vendor.f(orderItems.value, (item, k0, i0) => {
|
|
return {
|
|
a: item.product.bannerImages[0] || "",
|
|
b: common_vendor.t(item.product.name),
|
|
c: common_vendor.t(item.specData.modelName),
|
|
d: common_vendor.t(item.specData.fineness),
|
|
e: common_vendor.t(item.specData.totalPrice),
|
|
f: common_vendor.t(item.quantity),
|
|
g: item.id
|
|
};
|
|
}),
|
|
h: common_vendor.t(totalPrice.value),
|
|
i: agreed.value
|
|
}, agreed.value ? {} : {}, {
|
|
j: agreed.value ? 1 : "",
|
|
k: common_vendor.o(($event) => agreed.value = !agreed.value),
|
|
l: !canSubmit.value ? 1 : "",
|
|
m: common_vendor.o(handleSubmit)
|
|
});
|
|
};
|
|
}
|
|
});
|
|
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-c3fa8b8a"]]);
|
|
wx.createPage(MiniProgramPage);
|
|
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/order/submit.js.map
|