Files
2026-07-27 14:07:26 +08:00

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;