![]()
![]()
// 添加到收藏
const toggleWishlist = async (product: Product, group: any, groupIndex: number): Promise<void> => {
try {
// 根据当前状态决定是添加还是删除收藏
const res = product.is_favorited === 1
? await deleteFavorite(String(product.id))
: await addFavorite(String(product.id));
if (res.code === 200) {
// 更新UI状态
if (product.is_favorited === 1) {
product.is_favorited = 0;
} else {
product.is_favorited = 1;
}
// 显示成功消息
const action = product.is_favorited === 1 ? 'added to' : 'removed from';
message.success(`Item ${action} wishlist successfully`);
// 更新本地存储中的收藏列表
let collectList = Session.get('collectList');
if (!collectList) {
collectList = [];
}
if (product.is_favorited === 1) {
// 添加到收藏列表
if (Array.isArray(collectList)) {
// 确保不重复添加
if (!collectList.some((item: any) => item.goods_id === product.id)) {
collectList.push({ goods_id: product.id });
}
} else if (collectList.data && Array.isArray(collectList.data)) {
// 如果collectList有data属性且是数组
if (!collectList.data.some((item: any) => item.goods_id === product.id)) {
collectList.data.push({ goods_id: product.id });
}
} else {
// 如果collectList既不是数组也没有data属性,则初始化为数组
collectList = [{ goods_id: product.id }];
}
} else {
// 从收藏列表中移除
if (Array.isArray(collectList)) {
collectList = collectList.filter((item: any) => item.goods_id !== product.id);
} else if (collectList.data && Array.isArray(collectList.data)) {
collectList.data = collectList.data.filter((item: any) => item.goods_id !== product.id);
}
}
// 保存更新后的收藏列表到sessionStorage
Session.set('collectList', collectList);
// 更新所有产品组中的相同产品
productGroups.value.forEach(groupItems => {
groupItems.forEach((item: any) => {
if (item.id === product.id) {
item.is_favorited = product.is_favorited;
}
});
});
// 强制组件重新渲染
const currentIndex = currentSlide.value;
productGroups.value = [...productGroups.value];
} else if (res.code === 401) {
// 未登录处理
message.error('Please log in first.');
}
} catch (error) {
console.error('Failed to update favorite status:', error);
message.error('Operation failed, please try again later');
}
};
![]()