-
@@ -181,7 +184,6 @@ const props = defineProps({
const items = ref([]);
const trays = ref([]);
const loading = ref(true);
-const error = ref(null);
const alert = ref(null);
const timer = ref(null);
@@ -264,7 +266,6 @@ const confirmDelete = async () => {
// Auto hide alert
clearTimeout(timer.value);
timer.value = setTimeout(() => { alert.value = null; }, 3000);
-
} catch (err) {
console.error("Gagal menghapus item:", err.response?.data || err);
alert.value = { error: err.response?.data?.message || "Gagal menghapus item. Silakan coba lagi." };
@@ -275,17 +276,16 @@ const confirmDelete = async () => {
}
};
-
const cancelDelete = () => {
showDeleteConfirm.value = false;
};
const saveMove = async () => {
if (!selectedTrayId.value || !selectedItem.value || isMoving.value) return;
-
+
errorMove.value = "";
isMoving.value = true;
-
+
try {
await axios.put(
`/api/item/${selectedItem.value.id}`,
@@ -301,14 +301,13 @@ const saveMove = async () => {
// Tampilkan alert sukses
const trayName = trays.value.find(t => t.id === selectedTrayId.value)?.nama;
alert.value = { success: `Item berhasil dipindahkan ke nampan "${trayName}"` };
-
+
await refreshData();
closePopup();
-
+
// Auto hide alert
clearTimeout(timer.value);
timer.value = setTimeout(() => { alert.value = null; }, 3000);
-
} catch (err) {
console.error("Gagal memindahkan item:", err.response?.data || err);
errorMove.value = err.response?.data?.message || "Gagal memindahkan item. Silakan coba lagi.";
@@ -331,53 +330,98 @@ const handleConfirmAction = async () => {
closeConfirmModal();
};
-// Fungsi utilitas
+// Print QR menggunakan browser
const printQR = () => {
if (qrCodeUrl.value && selectedItem.value) {
const printWindow = window.open('', '_blank');
const itemCode = selectedItem.value.kode_item;
-
+
printWindow.document.write(`
Print QR Code - ${itemCode}

-
-
${itemCode}
-
${selectedItem.value.produk?.nama || ''}
-
${selectedItem.value.produk?.berat || ''}g
-
`);
-
+
printWindow.document.close();
-
+
const img = printWindow.document.getElementById("qr-img");
img.onload = () => {
printWindow.focus();
@@ -386,7 +430,6 @@ const printQR = () => {
}
};
-
const handleImageError = (event) => {
event.target.style.display = 'none';
};
@@ -402,10 +445,10 @@ const refreshData = async () => {
headers: { Authorization: `Bearer ${localStorage.getItem("token")}` },
}),
]);
-
+
// Filter hanya item yang ada di brankas (id_nampan = null atau tidak ada)
items.value = itemRes.data.filter(item => !item.id_nampan);
- trays.value = trayRes.data;
+ trays.value = trayRes.data;
} catch (err) {
console.error("Error fetching data:", err);
alert.value = { error: err.response?.data?.message || "Gagal mengambil data" };
@@ -421,9 +464,17 @@ onMounted(refreshData);

-
-
${itemCode}
-
${props.product.nama}
-
${props.product.berat}g
-