-
@@ -170,6 +148,7 @@
import { ref, computed, onMounted } from "vue";
import axios from "axios";
import ConfirmDeleteModal from './ConfirmDeleteModal.vue';
+import PrintBarcode from './PrintBarcode.vue';
const props = defineProps({
search: {
@@ -181,7 +160,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);
@@ -201,15 +179,6 @@ const confirmModalMessage = ref("");
const confirmText = ref("Ya, Konfirmasi");
const cancelText = ref("Batal");
-// QR Code generator
-const qrCodeUrl = computed(() => {
- if (selectedItem.value) {
- const data = selectedItem.value.kode_item;
- return `https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=${encodeURIComponent(data)}`;
- }
- return "";
-});
-
// Computed untuk statistik
const totalWeight = computed(() => {
const total = filteredItems.value.reduce((sum, item) => {
@@ -250,13 +219,6 @@ const confirmDelete = async () => {
await axios.delete(`/api/item/${selectedItem.value.id}`, {
headers: { Authorization: `Bearer ${localStorage.getItem("token")}` },
});
-
- // Tampilkan alert sukses
- alert.value = { success: `Item ${selectedItem.value.kode_item} berhasil dihapus.` };
-
- // Refresh data
- await refreshData();
-
// Tutup modal & popup
showDeleteConfirm.value = false;
closePopup();
@@ -264,7 +226,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 +236,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 +261,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,62 +290,6 @@ const handleConfirmAction = async () => {
closeConfirmModal();
};
-// Fungsi utilitas
-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();
- printWindow.print();
- };
- }
-};
-
-
const handleImageError = (event) => {
event.target.style.display = 'none';
};
@@ -402,10 +305,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 +324,17 @@ onMounted(refreshData);
-
-
-
-

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