83 lines
2.3 KiB
JavaScript
83 lines
2.3 KiB
JavaScript
"use strict";
|
|
const common_vendor = require("../common/vendor.js");
|
|
const api_index = require("../api/index.js");
|
|
const useOrderStore = common_vendor.defineStore("order", () => {
|
|
const orders = common_vendor.ref([]);
|
|
const currentOrderItems = common_vendor.ref([]);
|
|
const loadOrders = async () => {
|
|
try {
|
|
orders.value = await api_index.orderApi.getOrders();
|
|
} catch (error) {
|
|
console.error("Failed to load orders:", error);
|
|
}
|
|
};
|
|
const addOrderItem = (item) => {
|
|
currentOrderItems.value.push(item);
|
|
};
|
|
const clearCurrentItems = () => {
|
|
currentOrderItems.value = [];
|
|
};
|
|
const createOrder = async (items, region) => {
|
|
try {
|
|
const totalAmount = items.reduce((sum, item) => sum + (item.amount || 0), 0);
|
|
const order = {
|
|
id: "",
|
|
items,
|
|
totalAmount,
|
|
createTime: (/* @__PURE__ */ new Date()).toISOString(),
|
|
status: "pending",
|
|
city: region == null ? void 0 : region.city,
|
|
district: region == null ? void 0 : region.district,
|
|
community: region == null ? void 0 : region.community
|
|
};
|
|
const createdOrder = await api_index.orderApi.addOrder(order);
|
|
if (createdOrder) {
|
|
await loadOrders();
|
|
return createdOrder;
|
|
}
|
|
return null;
|
|
} catch (error) {
|
|
console.error("Failed to create order:", error);
|
|
return null;
|
|
}
|
|
};
|
|
const updateOrder = async (order) => {
|
|
try {
|
|
await api_index.orderApi.updateOrder(order);
|
|
await loadOrders();
|
|
} catch (error) {
|
|
console.error("Failed to update order:", error);
|
|
}
|
|
};
|
|
const deleteOrder = async (id) => {
|
|
try {
|
|
await api_index.orderApi.deleteOrder(id);
|
|
await loadOrders();
|
|
} catch (error) {
|
|
console.error("Failed to delete order:", error);
|
|
}
|
|
};
|
|
const getOrder = async (orderId) => {
|
|
await loadOrders();
|
|
return orders.value.find((o) => o.id === orderId) || null;
|
|
};
|
|
const getTotalAmount = () => {
|
|
return currentOrderItems.value.reduce((sum, item) => {
|
|
return sum + (item.amount || 0);
|
|
}, 0);
|
|
};
|
|
return {
|
|
orders,
|
|
currentOrderItems,
|
|
loadOrders,
|
|
addOrderItem,
|
|
clearCurrentItems,
|
|
createOrder,
|
|
updateOrder,
|
|
deleteOrder,
|
|
getOrder,
|
|
getTotalAmount
|
|
};
|
|
});
|
|
exports.useOrderStore = useOrderStore;
|