import { useEffect } from "react"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/Components/ui/dialog"; import { Button } from "@/Components/ui/button"; import { Input } from "@/Components/ui/input"; import { Label } from "@/Components/ui/label"; import { Textarea } from "@/Components/ui/textarea"; import { useForm } from "@inertiajs/react"; import { toast } from "sonner"; import type { Vendor } from "@/Pages/Vendor/Index"; interface VendorDialogProps { open: boolean; onOpenChange: (open: boolean) => void; vendor: Vendor | null; } export default function VendorDialog({ open, onOpenChange, vendor, }: VendorDialogProps) { const { data, setData, post, put, processing, errors, reset, clearErrors } = useForm({ name: "", short_name: "", tax_id: "", owner: "", contact_name: "", tel: "", phone: "", email: "", address: "", remark: "", }); useEffect(() => { if (open) { clearErrors(); if (vendor) { setData({ name: vendor.name, short_name: vendor.short_name || "", tax_id: vendor.tax_id || "", owner: vendor.owner || "", contact_name: vendor.contact_name || "", tel: vendor.tel || "", phone: vendor.phone || "", email: vendor.email || "", address: vendor.address || "", remark: vendor.remark || "", }); } else { reset(); } } }, [open, vendor]); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (vendor) { put(route("vendors.update", vendor.id), { onSuccess: () => { toast.success("廠商資料已更新"); onOpenChange(false); reset(); }, onError: () => { toast.error("更新失敗,請檢查輸入資料"); } }); } else { post(route("vendors.store"), { onSuccess: () => { toast.success("廠商已新增"); onOpenChange(false); reset(); }, onError: () => { toast.error("新增失敗,請檢查輸入資料"); } }); } }; return ( {vendor ? "編輯廠商" : "新增廠商"} {vendor ? "修改廠商基本資料與聯絡資訊" : "建立新的廠商資料"}
{/* 基本資訊區塊 */}

基本資訊

setData("name", e.target.value)} placeholder="例:宏達食品有限公司" className={errors.name ? "border-red-500" : ""} /> {errors.name &&

{errors.name}

}
setData("short_name", e.target.value)} placeholder="例:宏達食品" />
setData("tax_id", e.target.value)} placeholder="8 位數字" maxLength={8} /> {errors.tax_id &&

{errors.tax_id}

}
setData("owner", e.target.value)} placeholder="負責人姓名" />
{/* 聯絡資訊區塊 */}

聯絡資訊

setData("contact_name", e.target.value)} placeholder="業務或聯絡窗口姓名" />
setData("email", e.target.value)} placeholder="example@mail.com" />
setData("tel", e.target.value)} placeholder="例:02-23456789" />
setData("phone", e.target.value)} placeholder="例:0912-345-678" />
setData("address", e.target.value)} placeholder="完整的營業或通訊地址" />
{/* 備註區塊 */}