This commit is contained in:
Viet An
2026-06-09 19:21:39 +07:00
parent 128993a93c
commit 7025fd8cd5
7 changed files with 212 additions and 758 deletions

View File

@@ -15,23 +15,54 @@ const imeis = ref([]);
const selectedImeis = ref([]);
function toggleSelected(imeiRec) {
if (
store.selectedImeis.find((i) => i.imei === imeiRec.imei) ||
selectedImeis.value.find((i) => i.imei === imeiRec.imei)
) {
if (selectedImeis.value.find((i) => i.imei === imeiRec.imei)) {
remove(selectedImeis.value, (i) => i.imei === imeiRec.imei);
} else {
selectedImeis.value.push(imeiRec);
}
}
function addToCart() {
// store.selectedImeis = [...store.selectedImeis, ...selectedImeis.value];
/*
insert into cart with customer =
*/
$snackbar(`Thêm ${selectedImeis.value.length} sản phẩm vào giỏ hàng`, "Success");
emit("close");
const cartItems = inject("cartItems");
const getCart = inject("getCart");
const isAdding = ref(false);
async function addToCart() {
try {
isAdding.value = true;
console.log("store.customer", store.customer);
let cart = await $getdata("Cart", {
filter: { customer: store.customer },
first: true,
});
if (!cart) {
const newCart = await $insertapi("Cart", {
data: { customer: store.customer },
notify: false,
});
cart = newCart;
}
const cartItemsPayload = selectedImeis.value.map((imeiRec) => ({
cart: cart.id,
imei: imeiRec.id,
quantity: 1,
total_price: imeiRec.variant__price,
}));
const newCartItems = await $insertapi("Cart_Item", {
data: cartItemsPayload,
notify: false,
});
$snackbar(`Đã thêm ${newCartItems.length} sản phẩm vào giỏ hàng`, "Success");
getCart();
emit("close");
} catch (error) {
console.error(error);
$snackbar("Đã có lỗi khi thêm sản phẩm vào giỏ hàng", "Error");
} finally {
isAdding.value = false;
}
}
async function fetchImeis() {
@@ -40,7 +71,11 @@ async function fetchImeis() {
filter: { variant: props.variant.id },
});
imeis.value = imeisFetched.filter((imeiRec) => !store.selectedImeis.find((i) => i.imei === imeiRec.imei));
imeis.value = imeisFetched.filter((imeiRec) => {
const alreadyInCart = cartItems.value.find((cartItem) => cartItem.imei === imeiRec.id);
return !alreadyInCart;
});
isLoading.value = false;
}
onMounted(fetchImeis);
@@ -111,7 +146,7 @@ onMounted(fetchImeis);
<div class="is-flex is-justify-content-end">
<button
@click="addToCart"
class="button is-primary"
:class="['button is-primary', isAdding && 'is-loading']"
:disabled="selectedImeis.length === 0"
>
<span class="icon">