"use client"; import { useEffect, useState } from "react"; import Modal from "@/components/Modal"; import { POST_DELETE_TYPES } from "@/lib/api"; /** * Staff 软删帖:必填删除类型 + 理由。 * 作者自删仍用 ConfirmDialog,不走此组件。 */ export default function StaffDeletePostModal({ open, title, busy, onClose, onConfirm, }: { open: boolean; /** 帖子标题,展示在说明里 */ title?: string; busy?: boolean; onClose: () => void; onConfirm: (opts: { delete_type: string; delete_reason: string }) => void; }) { const [deleteType, setDeleteType] = useState("spam"); const [reason, setReason] = useState(""); const [err, setErr] = useState(""); useEffect(() => { if (open) { setDeleteType("spam"); setReason(""); setErr(""); } }, [open]); if (!open) return null; const submit = () => { const r = reason.trim(); if (!r) { setErr("请填写删除理由"); return; } if ([...r].length > 200) { setErr("删除理由不能超过 200 字"); return; } onConfirm({ delete_type: deleteType, delete_reason: r }); }; return ( } >

删除类型

{POST_DELETE_TYPES.map((t) => { const active = deleteType === t.value; return ( ); })}