From 526b2df8ea11e7ae8481b5557b14e57a17219565 Mon Sep 17 00:00:00 2001 From: Qiufeng Date: Thu, 3 Sep 2026 21:31:39 +0800 Subject: [PATCH] feat: refine update center and release notes --- package.json | 2 +- web-next/src/pages/expenses/ExpenseDetail.tsx | 2 +- web-next/src/pages/update/UpdatePage.tsx | 1051 +++++++++++++++-- web-next/src/pages/update/mockData.ts | 283 +++++ web-next/src/styles/theme.css | 552 +++++++++ 5 files changed, 1819 insertions(+), 71 deletions(-) create mode 100644 web-next/src/pages/update/mockData.ts diff --git a/package.json b/package.json index 6108fb4..8642ef0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tallynote", - "version": "1.1.22", + "version": "1.1.23", "private": true, "type": "module", "packageManager": "pnpm@9.0.6", diff --git a/web-next/src/pages/expenses/ExpenseDetail.tsx b/web-next/src/pages/expenses/ExpenseDetail.tsx index 709819a..b5cb2fb 100644 --- a/web-next/src/pages/expenses/ExpenseDetail.tsx +++ b/web-next/src/pages/expenses/ExpenseDetail.tsx @@ -66,7 +66,7 @@ export default function ExpenseDetail({ expense, timezone = "Asia/Shanghai", onC { if (!busy) setAction(null); }} onConfirm={() => void updateStatus()} onCancel={() => { if (!busy) setAction(null); }}>{detail.status === "reimbursed" ? "这笔账目会重新出现在未报销列表。" : "确认这笔账目已完成报销,并从未报销列表移出?"} { if (!busy) setAction(null); }} onConfirm={() => void trash()} onCancel={() => { if (!busy) setAction(null); }}>账目会从普通列表和导出结果中隐藏,附件会保留,可在回收站恢复。 - { if (!busy) setRemoveTarget(null); }} onConfirm={() => void remove()} onCancel={() => { if (!busy) setRemoveTarget(null); }}>{removeTarget && <>

{removeTarget.kind === "payment_proof" ? "账目至少需要保留一张付款凭证。" : detail.invoiceCount <= 1 && !detail.invoiceMissingReason?.trim() ? "这是最后一张发票。删除后必须填写无发票原因。" : "将删除这张发票。"}

{removeTarget.kind === "invoice" && detail.invoiceCount <= 1 && !detail.invoiceMissingReason?.trim() &&