From 1924e97523c3694e31716ceb1777aeb2dec3e36d Mon Sep 17 00:00:00 2001 From: JunieXD <1240840076@qq.com> Date: Wed, 28 Oct 2026 16:30:54 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=94=B6=E6=AC=BE=E4=BA=BA=E5=92=8C?= =?UTF-8?q?=E7=AB=99=E9=95=BF=E5=8F=AF=E4=BB=A5=E6=94=B9=E8=B5=9E=E5=8A=A9?= =?UTF-8?q?=E7=9A=84=E7=95=99=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 有群友登记时留言没填对,上墙后只能删不能改。改留言仍由收款人和站长来做,这样墙上的留言都经收款人看过(总体设计 §8.21)。 - 后台每条记录上直接改留言,清空保存就是删除,替换原来的"删除留言"按钮 - 接口 PATCH /admin/sponsorships/{id} 的 message 可以写新的留言,操作日志记下改前改后 --- app/routes/admin/sponsor.tsx | 35 +++++++++++++------------- docs/api.md | 2 +- docs/design.md | 2 +- server/modules/sponsors/routes.test.ts | 15 ++++++++++- server/modules/sponsors/routes.ts | 4 ++- server/modules/sponsors/service.ts | 16 +++++++----- 6 files changed, 47 insertions(+), 27 deletions(-) diff --git a/app/routes/admin/sponsor.tsx b/app/routes/admin/sponsor.tsx index 85b5529..d261fc1 100644 --- a/app/routes/admin/sponsor.tsx +++ b/app/routes/admin/sponsor.tsx @@ -7,6 +7,7 @@ import { Button } from "~/components/ui/button"; import { confirmSubmit, promptDialog } from "~/components/ui/dialog"; import { Input } from "~/components/ui/input"; import { Select } from "~/components/ui/select"; +import { Textarea } from "~/components/ui/textarea"; import { UserAvatar } from "~/components/user-avatar"; import { pageTitle } from "~/share-meta"; import { fromWallClock, unixNow, wallClock } from "~/time"; @@ -58,7 +59,7 @@ const DONE: Record = { confirm: "已确认", amount: "已修改金额", reject: "已标为未收到", - message: "已删除留言", + message: "已保存留言", delete: "已删除", }; @@ -100,7 +101,7 @@ export async function action({ request, context }: Route.ActionArgs) { ? { amount: fen() } : intent === "reject" ? { status: "rejected", reason: field("reason") } - : { message: null }, + : { message: field("message") }, }); if (res.ok) return { intent, ok: true, message: DONE[intent] ?? "已保存" }; return { intent, ok: false, message: (await res.json()).error.message }; @@ -213,9 +214,21 @@ function Row({ item: r }: { item: Item }) { )}

- {r.message && ( -

{r.message}

- )} + {/* Saved empty, the message is taken down. */} +
+ +