|
@@ -68,13 +68,17 @@
|
|
|
<td class="p-4 text-right">
|
|
<td class="p-4 text-right">
|
|
|
<div class="flex items-center justify-end gap-2">
|
|
<div class="flex items-center justify-end gap-2">
|
|
|
<Button
|
|
<Button
|
|
|
- v-if="!review.review_approved"
|
|
|
|
|
variant="outline"
|
|
variant="outline"
|
|
|
size="sm"
|
|
size="sm"
|
|
|
- class="h-7 px-3 text-[10px] font-bold uppercase rounded-lg border-emerald-500/30 text-emerald-500 hover:bg-emerald-500/10"
|
|
|
|
|
- @click="handleApprove(review.id)"
|
|
|
|
|
|
|
+ :class="[
|
|
|
|
|
+ 'h-7 px-3 text-[10px] font-bold uppercase rounded-lg transition-all',
|
|
|
|
|
+ review.review_approved
|
|
|
|
|
+ ? 'border-amber-500/30 text-amber-500 hover:bg-amber-500/10'
|
|
|
|
|
+ : 'border-emerald-500/30 text-emerald-500 hover:bg-emerald-500/10'
|
|
|
|
|
+ ]"
|
|
|
|
|
+ @click="handleToggleApprove(review)"
|
|
|
>
|
|
>
|
|
|
- {{ t('admin.reviews.approve') }}
|
|
|
|
|
|
|
+ {{ review.review_approved ? t('admin.reviews.hide') || 'Hide' : t('admin.reviews.approve') }}
|
|
|
</Button>
|
|
</Button>
|
|
|
<Button
|
|
<Button
|
|
|
variant="outline"
|
|
variant="outline"
|
|
@@ -133,10 +137,13 @@ const fetchReviews = async () => {
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-const handleApprove = async (orderId: number) => {
|
|
|
|
|
|
|
+const handleToggleApprove = async (review: any) => {
|
|
|
try {
|
|
try {
|
|
|
- await approveOrderReview(orderId);
|
|
|
|
|
- toast.success(t('admin.reviews.approvedSuccess'));
|
|
|
|
|
|
|
+ const newStatus = !review.review_approved;
|
|
|
|
|
+ await adminUpdateOrder(review.id, {
|
|
|
|
|
+ review_approved: newStatus
|
|
|
|
|
+ });
|
|
|
|
|
+ toast.success(newStatus ? t('admin.reviews.approvedSuccess') : t('admin.reviews.hiddenSuccess'));
|
|
|
fetchReviews();
|
|
fetchReviews();
|
|
|
} catch (err) {
|
|
} catch (err) {
|
|
|
toast.error(t('errors.update_failed'));
|
|
toast.error(t('errors.update_failed'));
|