Remove overleaf/DOI/publishUrl/author fields from paper detail edit form

This commit is contained in:
young 2026-07-24 21:21:37 +08:00
parent 54ec5e47a7
commit 18fa28f461
1 changed files with 1 additions and 104 deletions

View File

@ -15,9 +15,6 @@ interface PaperDetail {
ccfLevel: string;
status: string;
deadline: string | null;
overleafUrl: string | null;
doi: string | null;
publishUrl: string | null;
notes: string | null;
authors: { user: { id: number; name: string } }[];
statusHistory: {
@ -33,16 +30,10 @@ interface PaperDetail {
updatedAt: string;
}
interface User {
id: number;
name: string;
}
export default function PaperDetailPage() {
const params = useParams();
const router = useRouter();
const [paper, setPaper] = useState<PaperDetail | null>(null);
const [users, setUsers] = useState<User[]>([]);
const [editing, setEditing] = useState(false);
const [saving, setSaving] = useState(false);
const [error, setError] = useState("");
@ -55,11 +46,7 @@ export default function PaperDetailPage() {
ccfLevel: "None",
status: "planning",
deadline: "",
overleafUrl: "",
doi: "",
publishUrl: "",
notes: "",
authorIds: [] as number[],
});
useEffect(() => {
@ -84,19 +71,10 @@ export default function PaperDetailPage() {
ccfLevel: data.ccfLevel,
status: data.status,
deadline: data.deadline ? data.deadline.split("T")[0] : "",
overleafUrl: data.overleafUrl || "",
doi: data.doi || "",
publishUrl: data.publishUrl || "",
notes: data.notes || "",
authorIds: data.authors.map((a: { user: { id: number } }) => a.user.id),
});
})
.catch((err) => setError(err.message || "加载失败"));
fetch(`${BASE_PATH}/api/members`)
.then(safeJson)
.then((data) => setUsers(Array.isArray(data) ? data : []))
.catch(() => setUsers([]));
}, [params.id]);
const handleSave = async () => {
@ -253,61 +231,6 @@ export default function PaperDetailPage() {
className="w-full rounded-md border border-slate-300 px-3 py-2 text-sm"
/>
</div>
<div>
<label className="mb-1 block text-sm font-medium text-slate-700">Overleaf </label>
<input
type="url"
value={form.overleafUrl}
onChange={(e) => setForm({ ...form, overleafUrl: e.target.value })}
className="w-full rounded-md border border-slate-300 px-3 py-2 text-sm"
/>
</div>
<div className="grid grid-cols-2 gap-4">
<div>
<label className="mb-1 block text-sm font-medium text-slate-700">DOI</label>
<input
type="text"
value={form.doi}
onChange={(e) => setForm({ ...form, doi: e.target.value })}
className="w-full rounded-md border border-slate-300 px-3 py-2 text-sm"
/>
</div>
<div>
<label className="mb-1 block text-sm font-medium text-slate-700"></label>
<input
type="url"
value={form.publishUrl}
onChange={(e) => setForm({ ...form, publishUrl: e.target.value })}
className="w-full rounded-md border border-slate-300 px-3 py-2 text-sm"
/>
</div>
</div>
<div>
<label className="mb-1 block text-sm font-medium text-slate-700"></label>
<div className="flex flex-wrap gap-2">
{users.map((u) => (
<button
key={u.id}
type="button"
onClick={() => {
setForm((f) => ({
...f,
authorIds: f.authorIds.includes(u.id)
? f.authorIds.filter((a) => a !== u.id)
: [...f.authorIds, u.id],
}));
}}
className={`rounded-md border px-2.5 py-1 text-xs ${
form.authorIds.includes(u.id)
? "border-slate-800 bg-slate-800 text-white"
: "border-slate-200 bg-white text-slate-600 hover:bg-slate-100"
}`}
>
{u.name}
</button>
))}
</div>
</div>
<div>
<label className="mb-1 block text-sm font-medium text-slate-700"></label>
<textarea
@ -357,32 +280,6 @@ export default function PaperDetailPage() {
<dd className="text-slate-800">{new Date(paper.deadline).toLocaleDateString("zh-CN")}</dd>
</div>
)}
{paper.overleafUrl && (
<div className="flex justify-between">
<dt className="text-slate-500">Overleaf</dt>
<dd>
<a href={paper.overleafUrl} target="_blank" rel="noopener" className="text-blue-600 hover:underline">
</a>
</dd>
</div>
)}
{paper.doi && (
<div className="flex justify-between">
<dt className="text-slate-500">DOI</dt>
<dd className="text-slate-800">{paper.doi}</dd>
</div>
)}
{paper.publishUrl && (
<div className="flex justify-between">
<dt className="text-slate-500"></dt>
<dd>
<a href={paper.publishUrl} target="_blank" rel="noopener" className="text-blue-600 hover:underline">
</a>
</dd>
</div>
)}
{paper.notes && (
<div className="border-t border-slate-100 pt-2">
<dt className="mb-1 text-slate-500"></dt>
@ -418,4 +315,4 @@ export default function PaperDetailPage() {
</div>
</>
);
}
}