diff --git a/app/Http/Controllers/ItemController.php b/app/Http/Controllers/ItemController.php
index 399e5e0..3e336d4 100644
--- a/app/Http/Controllers/ItemController.php
+++ b/app/Http/Controllers/ItemController.php
@@ -52,8 +52,8 @@ class ItemController extends Controller
public function update(Request $request, int $id)
{
$validated = $request->validate([
- 'id_produk' => 'required|in:produks.id',
- 'id_nampan' => 'nullable|in:nampans.id'
+ 'id_produk' => 'required|exists:produks,id',
+ 'id_nampan' => 'nullable|exists:nampans,id'
],[
'id_produk' => 'Id produk tidak valid.',
'id_nampan' => 'Id nampan tidak valid'
diff --git a/resources/js/components/TrayList.vue b/resources/js/components/TrayList.vue
index 9453e41..de19062 100644
--- a/resources/js/components/TrayList.vue
+++ b/resources/js/components/TrayList.vue
@@ -34,10 +34,12 @@
+ v-for="item in tray.items"
+ :key="item.id"
+ class="flex justify-between items-center border rounded-lg p-2"
+ @click="openMovePopup(item)"
+>
+
{{ item.produk.berat }}g
-
@@ -168,16 +164,20 @@ const closePopup = () => {
const saveMove = async () => {
if (!selectedTrayId.value || !selectedItem.value) return;
try {
- await axios.put(`/api/item/${selectedItem.value.id}`, { nampan_id: selectedTrayId.value });
+ await axios.put(`/api/item/${selectedItem.value.id}`, {
+ id_nampan: selectedTrayId.value,
+ id_produk: selectedItem.value.id_produk, // ikutkan id_produk karena API minta
+ });
await refreshData();
closePopup();
} catch (err) {
- console.error("Gagal memindahkan item:", err);
+ console.error("Gagal memindahkan item:", err.response?.data || err);
alert("Gagal memindahkan item. Silakan coba lagi.");
}
};
+
// --- Ambil data nampan + item ---
const refreshData = async () => {
try {