diff --git a/frontend/src/app/admin-redeem/page.tsx b/frontend/src/app/admin-redeem/page.tsx index 81916c3..9f51c98 100644 --- a/frontend/src/app/admin-redeem/page.tsx +++ b/frontend/src/app/admin-redeem/page.tsx @@ -62,6 +62,23 @@ function fmtTs(v: number | null | undefined): string { return new Date(v * 1000).toLocaleString(); } +function formatDuration(mins: number): string { + if (mins >= 525600) { + const y = mins / 525600; + return Number.isInteger(y) ? `${y}年` : `${(mins / 1440).toFixed(0)}天`; + } + if (mins >= 43200) { + const m = mins / 43200; + return Number.isInteger(m) ? `${m}个月` : `${(mins / 1440).toFixed(0)}天`; + } + if (mins >= 1440) return `${(mins / 1440).toFixed(0)}天`; + if (mins >= 60) { + const h = mins / 60; + return Number.isInteger(h) ? `${h}小时` : `${h.toFixed(1)}小时`; + } + return `${mins}分钟`; +} + export default function AdminRedeemPage() { const { tx } = useI18nText(); const [token, setToken] = useState(""); @@ -224,7 +241,12 @@ export default function AdminRedeemPage() {
- {form.duration_minutes === -1 && ( + {(form.duration_minutes === -1 || (form.duration_minutes > 0 && ![15,30,60,90,120,180,360,720,1440,4320,10080,20160,43200,129600,259200,525600].includes(form.duration_minutes))) && ( 0 ? form.duration_minutes : ""} onChange={(e) => { const v = Math.max(1, Number(e.target.value) || 1); setForm((prev) => ({ ...prev, duration_minutes: v })); @@ -325,9 +358,7 @@ export default function AdminRedeemPage() { {item.unit_label} {" · "} {item.duration_minutes > 0 - ? (item.duration_minutes >= 60 - ? `⏱️ ${item.duration_minutes / 60}${tx("小时", "h")}` - : `⏱️ ${item.duration_minutes}${tx("分钟", "min")}`) + ? `⏱️ ${formatDuration(item.duration_minutes)}` : `♾️ ${tx("永久", "Permanent")}`}