From e84a4bdadbe77d171baca63bc624d6ce2e41d07d Mon Sep 17 00:00:00 2001 From: timotiabbauftech Date: Wed, 1 Oct 2025 10:47:53 +0700 Subject: [PATCH] [update] alert respon messae --- resources/js/pages/Akun.vue | 33 ++- resources/js/pages/EditProduk.vue | 6 +- resources/js/pages/InputProduk.vue | 2 +- resources/js/pages/Kategori.vue | 43 +++- resources/js/pages/Produk.vue | 57 ++++- resources/js/pages/Sales.vue | 384 ++++++++++++++++------------- 6 files changed, 338 insertions(+), 187 deletions(-) diff --git a/resources/js/pages/Akun.vue b/resources/js/pages/Akun.vue index d8c6f68..4eef43c 100644 --- a/resources/js/pages/Akun.vue +++ b/resources/js/pages/Akun.vue @@ -48,7 +48,26 @@ Tambah User - + +
+ + +
+
{ + alert.value = null; + }, 5000); + } // Fetch data dari API const fetchAkun = async () => { loading.value = true; @@ -191,6 +219,7 @@ const confirmDelete = async () => { }); fetchAkun(); confirmDeleteOpen.value = false; + showAlert("success", "User berhasil dihapus."); } catch (error) { console.error("Error deleting akun:", error); } @@ -205,11 +234,13 @@ const closeDeleteModal = () => { const closeAkun = () => { creatingAkun.value = false; fetchAkun(); + showAlert("success", "User berhasil ditambahkan."); }; const closeEditAkun = () => { editingAkun.value = false; fetchAkun(); + showAlert("success", "User berhasil diubah."); }; // Lifecycle diff --git a/resources/js/pages/EditProduk.vue b/resources/js/pages/EditProduk.vue index 97ac7f8..9e57d13 100644 --- a/resources/js/pages/EditProduk.vue +++ b/resources/js/pages/EditProduk.vue @@ -288,7 +288,7 @@ const loadProduk = async () => { }); const produk = response.data; // console.log(produk); - + form.value = { nama: produk.nama, id_kategori: produk.id_kategori, @@ -310,7 +310,7 @@ const loadFoto = async () => { // console.log(uploadedImages.value); } catch (e) { console.error(e); - + uploadError.value = "Gagal memuat foto"; } }; @@ -415,7 +415,7 @@ const submitForm = async () => { }, } ); - router.push("/produk"); + router.push("/produk?message=Produk berhasil diperbarui"); } catch (err) { errorMessages.value = err.response?.data?.message || "Gagal menyimpan produk"; console.error(err); diff --git a/resources/js/pages/InputProduk.vue b/resources/js/pages/InputProduk.vue index e264117..f497f7a 100644 --- a/resources/js/pages/InputProduk.vue +++ b/resources/js/pages/InputProduk.vue @@ -174,7 +174,7 @@ import CreateItemModal from "../components/CreateItemModal.vue"; const router = useRouter(); const form = ref({ - nama: '', id_kategori: null, berat: 0, kadar: 0, harga_per_gram: 0, harga_jual: 0, + nama: '', id_kategori: null, berat: null, kadar: null, harga_per_gram: null, harga_jual: null, }); const category = ref([]); const showUploadMenu = ref(false); diff --git a/resources/js/pages/Kategori.vue b/resources/js/pages/Kategori.vue index f1a1b66..0524b57 100644 --- a/resources/js/pages/Kategori.vue +++ b/resources/js/pages/Kategori.vue @@ -16,7 +16,26 @@ Tambah Kategori
- + +
+ + +
+
@@ -96,9 +115,18 @@ const creatingKategori = ref(false); const detail = ref(null); const confirmDeleteOpen = ref(false); const kategoriToDelete = ref(null); - +const alert = ref(null); +const timer = ref(null); const isAdmin = localStorage.getItem("role") === "owner"; +function showAlert(type, message) { + alert.value = { [type]: message }; + clearTimeout(timer.value); + timer.value = setTimeout(() => { + alert.value = null; + }, 5000); + } + // Fetch data kategori dari API const fetchKategoris = async () => { loading.value = true; @@ -109,7 +137,6 @@ const fetchKategoris = async () => { }, }); kategori.value = response.data; - // console.log("Data kategori:", response.data); } catch (error) { console.error("Error fetching kategori:", error); } finally { @@ -119,14 +146,19 @@ const fetchKategoris = async () => { // Tambah kategori - open modal const tambahKategori = () => { - detail.value = null; // Reset detail untuk mode create + detail.value = null; creatingKategori.value = true; }; // Close modal const closeKategori = () => { creatingKategori.value = false; - fetchKategoris(); // Refresh data setelah modal ditutup + fetchKategoris(); + if (detail.value==null) { + + showAlert("success", "Kategori berhasil ditambahkan"); + } else + showAlert("success", "Kategori berhasil diubah"); }; // Ubah kategori @@ -139,6 +171,7 @@ const ubahKategori = (item) => { const hapusKategori = (item) => { kategoriToDelete.value = item; confirmDeleteOpen.value = true; + showAlert("success", "Kategori berhasil dihapus"); }; // 🔵 Ditambahkan: aksi konfirmasi hapus diff --git a/resources/js/pages/Produk.vue b/resources/js/pages/Produk.vue index 2911502..1675e45 100644 --- a/resources/js/pages/Produk.vue +++ b/resources/js/pages/Produk.vue @@ -1,11 +1,11 @@