Remove overleaf/DOI/publishUrl/author fields from paper detail edit form
This commit is contained in:
parent
54ec5e47a7
commit
18fa28f461
|
|
@ -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>
|
||||
</>
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue