feat: 添加货币管理功能,更新国际化支持,移除报表相关代码

This commit is contained in:
2026-05-21 16:24:56 +08:00
parent 6ecbaf5fb4
commit 055c613a6d
87 changed files with 1615 additions and 1319 deletions

View File

@@ -9,7 +9,7 @@ export const metadata: Metadata = {
export default function AdminRolesPage() {
return (
<ModuleScaffold className="w-full max-w-none">
<ModuleScaffold>
<AdminRolesConsole />
</ModuleScaffold>
);

View File

@@ -9,7 +9,7 @@ export const metadata: Metadata = {
export default function AdminUsersPage() {
return (
<ModuleScaffold className="w-full max-w-none">
<ModuleScaffold>
<AdminUsersConsole />
</ModuleScaffold>
);

View File

@@ -9,7 +9,7 @@ export const metadata: Metadata = {
export default function AdminAuditLogsPage() {
return (
<ModuleScaffold className="w-full max-w-none">
<ModuleScaffold>
<AuditLogsConsole />
</ModuleScaffold>
);

View File

@@ -0,0 +1,15 @@
import { ModuleScaffold } from "@/components/admin/module-scaffold";
import { CurrencyManagementScreen } from "@/modules/settings/currency-management-screen";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "币种管理",
};
export default function AdminCurrenciesPage() {
return (
<ModuleScaffold>
<CurrencyManagementScreen />
</ModuleScaffold>
);
}

View File

@@ -8,7 +8,7 @@ export default async function AdminDrawSegmentLayout(props: {
const { drawId } = await props.params;
return (
<ModuleScaffold className="w-full max-w-none">
<ModuleScaffold>
<DrawSubnav drawId={drawId} />
{props.children}
</ModuleScaffold>

View File

@@ -9,7 +9,7 @@ export const metadata: Metadata = {
export default function AdminDrawsPage() {
return (
<ModuleScaffold className="w-full max-w-none">
<ModuleScaffold>
<DrawsIndexConsole />
</ModuleScaffold>
);

View File

@@ -9,7 +9,7 @@ export const metadata: Metadata = {
export default function AdminPlayersPage() {
return (
<ModuleScaffold className="w-full max-w-none">
<ModuleScaffold>
<PlayersConsole />
</ModuleScaffold>
);

View File

@@ -9,7 +9,7 @@ export const metadata: Metadata = {
export default function AdminReconcilePage() {
return (
<ModuleScaffold className="w-full max-w-none">
<ModuleScaffold>
<ReconcileConsole />
</ModuleScaffold>
);

View File

@@ -1,16 +0,0 @@
import { ModuleScaffold } from "@/components/admin/module-scaffold";
import { reportsModuleMeta } from "@/modules/reports/meta";
import { ReportsConsole } from "@/modules/reports/reports-console";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: reportsModuleMeta.title,
};
export default function AdminReportsPage() {
return (
<ModuleScaffold className="w-full max-w-none">
<ReportsConsole />
</ModuleScaffold>
);
}

View File

@@ -11,7 +11,7 @@ export default async function AdminRiskDrawLayout(props: {
const safeId = Number.isFinite(id) ? id : 0;
return (
<ModuleScaffold className="w-full max-w-none">
<ModuleScaffold>
<RiskDrawHeader drawId={safeId} />
<RiskSubnav drawId={drawId} />
{props.children}

View File

@@ -0,0 +1,10 @@
import { redirect } from "next/navigation";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "币种管理",
};
export default function AdminCurrencySettingsPage() {
redirect("/admin/currencies");
}

View File

@@ -9,7 +9,7 @@ export const metadata: Metadata = {
export default function AdminTicketsPage() {
return (
<ModuleScaffold className="w-full max-w-none">
<ModuleScaffold>
<PlayerTicketsConsole />
</ModuleScaffold>
);

View File

@@ -4,8 +4,10 @@ import { WalletSubnav } from "@/modules/wallet/wallet-subnav";
export default function AdminWalletLayout({ children }: { children: ReactNode }) {
return (
<div className="w-full max-w-none">
<WalletSubnav />
<div className="mx-auto flex w-full max-w-[1680px] min-w-0 flex-col gap-6 px-4 py-5 sm:px-6 lg:px-8 lg:py-6">
<div className="sticky top-14 z-20 bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/80">
<WalletSubnav />
</div>
{children}
</div>
);

View File

@@ -1,4 +1,3 @@
import { ModuleScaffold } from "@/components/admin/module-scaffold";
import { walletModuleMeta } from "@/modules/wallet/meta";
import { PlayerWalletPanel } from "@/modules/wallet/wallet-console";
import type { Metadata } from "next";
@@ -8,9 +7,5 @@ export const metadata: Metadata = {
};
export default function AdminWalletPlayerPage() {
return (
<ModuleScaffold className="w-full max-w-none">
<PlayerWalletPanel />
</ModuleScaffold>
);
return <PlayerWalletPanel />;
}

View File

@@ -1,4 +1,3 @@
import { ModuleScaffold } from "@/components/admin/module-scaffold";
import { walletModuleMeta } from "@/modules/wallet/meta";
import { WalletTxnsPanel } from "@/modules/wallet/wallet-console";
import type { Metadata } from "next";
@@ -8,9 +7,5 @@ export const metadata: Metadata = {
};
export default function AdminWalletTransactionsPage() {
return (
<ModuleScaffold className="w-full max-w-none">
<WalletTxnsPanel />
</ModuleScaffold>
);
return <WalletTxnsPanel />;
}

View File

@@ -1,4 +1,3 @@
import { ModuleScaffold } from "@/components/admin/module-scaffold";
import { walletModuleMeta } from "@/modules/wallet/meta";
import { TransferOrdersPanel } from "@/modules/wallet/wallet-console";
import type { Metadata } from "next";
@@ -8,9 +7,5 @@ export const metadata: Metadata = {
};
export default function AdminWalletTransferOrdersPage() {
return (
<ModuleScaffold className="w-full max-w-none">
<TransferOrdersPanel />
</ModuleScaffold>
);
return <TransferOrdersPanel />;
}

View File

@@ -131,27 +131,27 @@
@layer components {
.admin-list-card {
@apply overflow-hidden border-border/80 shadow-sm;
@apply overflow-hidden border-border/80 bg-card shadow-sm;
}
.admin-list-header {
@apply border-b bg-muted/20 pb-4;
@apply border-b border-border/70 bg-gradient-to-b from-muted/25 to-transparent pb-5;
}
.admin-list-title {
@apply text-lg font-semibold tracking-tight;
@apply text-[1.05rem] font-semibold tracking-tight text-[#13315f];
}
.admin-list-content {
@apply space-y-4;
@apply space-y-5;
}
.admin-list-toolbar {
@apply flex w-full flex-col gap-3 sm:flex-row sm:flex-wrap sm:items-center;
@apply flex w-full flex-col gap-3 border-t border-border/60 pt-4 xl:flex-row xl:flex-wrap xl:items-center;
}
.admin-list-field {
@apply flex min-w-0 flex-col gap-2 sm:flex-row sm:items-center sm:shrink-0 sm:gap-1.5;
@apply flex min-w-0 flex-col gap-2 sm:flex-row sm:items-center sm:gap-2;
}
.admin-list-field > label {
@@ -159,16 +159,15 @@
}
.admin-list-actions {
@apply flex shrink-0 flex-wrap gap-2;
margin-left: auto;
@apply flex shrink-0 flex-wrap items-center gap-2 xl:ml-auto xl:justify-end;
}
.admin-table-shell {
@apply overflow-x-auto rounded-xl border border-border bg-background;
@apply overflow-x-auto rounded-2xl border border-border/80 bg-card shadow-sm;
}
.admin-table-toolbar {
@apply flex items-center justify-end border-b border-border bg-muted/15 px-3 py-2.5;
@apply flex items-center justify-end border-b border-border/70 bg-muted/20 px-4 py-2.5;
}
.admin-inline-note {