changes
This commit is contained in:
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user