refactor: 重构奖池配置页面,移除冗余组件,优化加载体验与国际化支持

This commit is contained in:
2026-05-21 16:46:48 +08:00
parent 3ce84af39c
commit 26feed3c4f
29 changed files with 393 additions and 213 deletions

View File

@@ -0,0 +1,133 @@
/**
* 后台状态色标:统一映射到可读色调,列表/详情一眼可辨。
*/
export type AdminStatusTone =
| "success"
| "info"
| "warning"
| "danger"
| "neutral"
| "indigo"
| "draft"
| "active"
| "archived";
export const ADMIN_STATUS_TONE_CLASSES: Record<AdminStatusTone, string> = {
success:
"border-emerald-500/30 bg-emerald-500/12 text-emerald-800 dark:text-emerald-300",
info: "border-primary/30 bg-primary/10 text-primary",
warning:
"border-amber-500/30 bg-amber-500/12 text-amber-900 dark:text-amber-300",
danger:
"border-destructive/35 bg-destructive/10 text-destructive dark:text-red-300",
neutral: "border-border/80 bg-muted text-muted-foreground",
indigo:
"border-indigo-500/30 bg-indigo-500/12 text-indigo-800 dark:text-indigo-300",
draft:
"border-amber-500/30 bg-amber-500/12 text-amber-900 dark:text-amber-300",
active:
"border-emerald-500/30 bg-emerald-500/12 text-emerald-800 dark:text-emerald-300",
archived:
"border-slate-400/35 bg-slate-500/10 text-slate-600 dark:text-slate-300",
};
const STATUS_TONE_MAP: Record<string, AdminStatusTone> = {
// 配置版本
draft: "draft",
active: "active",
archived: "archived",
// 期次
open: "info",
closing: "warning",
closed: "neutral",
drawing: "indigo",
review: "warning",
cooldown: "neutral",
pending: "info",
settling: "indigo",
settled: "success",
cancelled: "danger",
// 结算批次
running: "warning",
pending_review: "info",
approved: "indigo",
rejected: "neutral",
paid: "success",
completed: "success",
failed: "danger",
// 注单
pending_confirm: "info",
partial_pending_confirm: "warning",
success: "success",
pending_payout: "warning",
settled_win: "success",
settled_lose: "neutral",
// 钱包 / 划转
processing: "info",
posted: "success",
pending_reconcile: "warning",
reversed: "neutral",
manually_processed: "indigo",
// 对账
mismatch: "danger",
matched: "success",
pending_check: "warning",
// 开关 / 布尔
enabled: "success",
disabled: "neutral",
true: "success",
false: "neutral",
// 玩家 status 数值
"0": "success",
"1": "warning",
"2": "danger",
// 管理员/角色1=启用 0=停用)
"role_enabled": "success",
"role_disabled": "neutral",
};
/** 玩家0 正常 1 冻结 2 封禁 */
export function resolvePlayerStatusTone(status: number): AdminStatusTone {
if (status === 0) return "success";
if (status === 1) return "warning";
if (status === 2) return "danger";
return "neutral";
}
/** 后台用户0 启用 1 停用 */
export function resolveAdminUserStatusTone(status: number): AdminStatusTone {
return status === 0 ? "success" : "neutral";
}
/** 角色1 启用 0 停用 */
export function resolveRoleStatusTone(status: number): AdminStatusTone {
return status === 1 ? "success" : "neutral";
}
export function resolveAdminStatusTone(
status: string | number | boolean | null | undefined,
): AdminStatusTone {
if (status === null || status === undefined || status === "") {
return "neutral";
}
if (typeof status === "boolean") {
return status ? "success" : "neutral";
}
const key = String(status).trim().toLowerCase();
return STATUS_TONE_MAP[key] ?? "neutral";
}
export function adminStatusBadgeClassName(
tone: AdminStatusTone,
className?: string,
): string {
return `${ADMIN_STATUS_TONE_CLASSES[tone]} ${className ?? ""}`.trim();
}