refactor: 更新管理端页面元数据,统一国际化支持,移除冗余代码
This commit is contained in:
@@ -1,11 +1,9 @@
|
||||
import { ModuleScaffold } from "@/components/admin/module-scaffold";
|
||||
import { AdminRolesConsole } from "@/modules/admin-roles/admin-roles-console";
|
||||
import { adminRolesModuleMeta } from "@/modules/admin-roles/meta";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: adminRolesModuleMeta.title,
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("adminRoles", "title");
|
||||
|
||||
export default function AdminRolesPage() {
|
||||
return (
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
import { ModuleScaffold } from "@/components/admin/module-scaffold";
|
||||
import { AdminUsersConsole } from "@/modules/admin-users/admin-users-console";
|
||||
import { adminUsersModuleMeta } from "@/modules/admin-users/meta";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: adminUsersModuleMeta.title,
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("adminUsers", "title");
|
||||
|
||||
export default function AdminUsersPage() {
|
||||
return (
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
import { ModuleScaffold } from "@/components/admin/module-scaffold";
|
||||
import { auditLogsModuleMeta } from "@/modules/audit/meta";
|
||||
import { AuditLogsConsole } from "@/modules/audit/audit-logs-console";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: auditLogsModuleMeta.title,
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("audit", "title");
|
||||
|
||||
export default function AdminAuditLogsPage() {
|
||||
return (
|
||||
|
||||
@@ -1,19 +1,5 @@
|
||||
import { Suspense } from "react";
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
import { JackpotConfigScreen } from "@/modules/jackpot/jackpot-config-screen";
|
||||
import { jackpotModuleMeta } from "@/modules/jackpot/meta";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: jackpotModuleMeta.title,
|
||||
};
|
||||
|
||||
export default function AdminConfigJackpotPage() {
|
||||
return (
|
||||
<Suspense
|
||||
fallback={<p className="text-sm text-muted-foreground">Loading…</p>}
|
||||
>
|
||||
<JackpotConfigScreen />
|
||||
</Suspense>
|
||||
);
|
||||
export default function AdminConfigJackpotRedirectPage() {
|
||||
redirect("/admin/jackpot");
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
/** 旧路径保留跳转,避免书签失效 */
|
||||
export default function AdminConfigJackpotRecordsPage() {
|
||||
redirect("/admin/config/jackpot#records");
|
||||
export default function AdminConfigJackpotRecordsRedirectPage() {
|
||||
redirect("/admin/jackpot#records");
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import type { ReactNode } from "react";
|
||||
|
||||
import { ConfigWorkspaceShell } from "@/modules/config/config-workspace-shell";
|
||||
|
||||
/** 配置总览仅展示卡片入口,不再挂载横向子导航。 */
|
||||
export default function AdminConfigLayout({ children }: { children: ReactNode }) {
|
||||
return <ConfigWorkspaceShell>{children}</ConfigWorkspaceShell>;
|
||||
return children;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,5 @@
|
||||
import { OddsConfigDocScreen } from "@/modules/config/doc/odds-config-doc-screen";
|
||||
import { configOddsMeta } from "@/modules/config/meta";
|
||||
import type { Metadata } from "next";
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: configOddsMeta.title,
|
||||
};
|
||||
|
||||
export default function AdminConfigOddsPage() {
|
||||
return <OddsConfigDocScreen />;
|
||||
export default function AdminConfigOddsRedirectPage() {
|
||||
redirect("/admin/rules/odds");
|
||||
}
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
import { configHubMeta } from "@/modules/config/meta";
|
||||
import { redirect } from "next/navigation";
|
||||
import { ConfigHubScreen } from "@/modules/config/config-hub-screen";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: configHubMeta.title,
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("config", "hub.title");
|
||||
|
||||
export default function AdminConfigHubPage() {
|
||||
redirect("/admin/config/plays");
|
||||
return <ConfigHubScreen />;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,5 @@
|
||||
import { PlayConfigDocScreen } from "@/modules/config/doc/play-config-doc-screen";
|
||||
import { configPlayConfigMeta } from "@/modules/config/meta";
|
||||
import type { Metadata } from "next";
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: configPlayConfigMeta.title,
|
||||
};
|
||||
|
||||
export default function AdminConfigPlaysPage() {
|
||||
return <PlayConfigDocScreen />;
|
||||
export default function AdminConfigPlaysRedirectPage() {
|
||||
redirect("/admin/rules/plays");
|
||||
}
|
||||
|
||||
@@ -1,11 +1,5 @@
|
||||
import { RebateConfigDocScreen } from "@/modules/config/doc/rebate-config-doc-screen";
|
||||
import { configRebateMeta } from "@/modules/config/meta";
|
||||
import type { Metadata } from "next";
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: configRebateMeta.title,
|
||||
};
|
||||
|
||||
export default function AdminConfigRebateDedicatedPage() {
|
||||
return <RebateConfigDocScreen />;
|
||||
export default function AdminConfigRebateRedirectPage() {
|
||||
redirect("/admin/rules/odds#rebate");
|
||||
}
|
||||
|
||||
@@ -1,11 +1,5 @@
|
||||
import { configRiskCapMeta } from "@/modules/config/meta";
|
||||
import { RiskCapDocScreen } from "@/modules/config/doc/risk-cap-doc-screen";
|
||||
import type { Metadata } from "next";
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: configRiskCapMeta.title,
|
||||
};
|
||||
|
||||
export default function AdminConfigRiskCapPage() {
|
||||
return <RiskCapDocScreen />;
|
||||
export default function AdminConfigRiskCapRedirectPage() {
|
||||
redirect("/admin/risk/cap");
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
import { ModuleScaffold } from "@/components/admin/module-scaffold";
|
||||
import { CurrencyManagementScreen } from "@/modules/settings/currency-management-screen";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "币种管理",
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("config", "currencies.title");
|
||||
|
||||
export default function AdminCurrenciesPage() {
|
||||
return (
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
import { DrawFinanceConsole } from "@/modules/draws/draw-finance-console";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "期号收支",
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("draws", "subnav.finance");
|
||||
|
||||
export default async function AdminDrawFinancePage(props: {
|
||||
params: Promise<{ drawId: string }>;
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
import { DrawPublishConsole } from "@/modules/draws/draw-publish-console";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "开奖结果发布",
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("draws", "publishTitle");
|
||||
|
||||
export default async function AdminDrawPublishBatchPage(props: {
|
||||
params: Promise<{ drawId: string; batchId: string }>;
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
import { ModuleScaffold } from "@/components/admin/module-scaffold";
|
||||
import { drawsModuleMeta } from "@/modules/draws/meta";
|
||||
import { DrawsIndexConsole } from "@/modules/draws/draws-index-console";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: drawsModuleMeta.title,
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("draws", "statusListTitle");
|
||||
|
||||
export default function AdminDrawsPage() {
|
||||
return (
|
||||
|
||||
18
src/app/admin/(shell)/jackpot/page.tsx
Normal file
18
src/app/admin/(shell)/jackpot/page.tsx
Normal file
@@ -0,0 +1,18 @@
|
||||
import { Suspense } from "react";
|
||||
|
||||
import { JackpotConfigScreen } from "@/modules/jackpot/jackpot-config-screen";
|
||||
import { RulesPageShell } from "@/modules/rules/rules-page-shell";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = buildPageMetadata("jackpot", "configTitle");
|
||||
|
||||
export default function AdminJackpotPage() {
|
||||
return (
|
||||
<RulesPageShell>
|
||||
<Suspense fallback={<p className="text-sm text-muted-foreground">Loading…</p>}>
|
||||
<JackpotConfigScreen />
|
||||
</Suspense>
|
||||
</RulesPageShell>
|
||||
);
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
export default function AdminJackpotPoolsRedirectPage() {
|
||||
redirect("/admin/config/jackpot");
|
||||
redirect("/admin/jackpot");
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
export default function AdminJackpotRecordsRedirectPage() {
|
||||
redirect("/admin/config/jackpot#records");
|
||||
redirect("/admin/jackpot#records");
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
import { ModuleScaffold } from "@/components/admin/module-scaffold";
|
||||
import { DashboardConsole } from "@/modules/dashboard/dashboard-console";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "仪表盘",
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("dashboard", "title");
|
||||
|
||||
export default function AdminDashboardPage() {
|
||||
return (
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
import { ModuleScaffold } from "@/components/admin/module-scaffold";
|
||||
import { playersModuleMeta } from "@/modules/players/meta";
|
||||
import { PlayersConsole } from "@/modules/players/players-console";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: playersModuleMeta.title,
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("players", "title");
|
||||
|
||||
export default function AdminPlayersPage() {
|
||||
return (
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
import { ModuleScaffold } from "@/components/admin/module-scaffold";
|
||||
import { reconcileModuleMeta } from "@/modules/reconcile/meta";
|
||||
import { ReconcileConsole } from "@/modules/reconcile/reconcile-console";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: reconcileModuleMeta.title,
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("reconcile", "title");
|
||||
|
||||
export default function AdminReconcilePage() {
|
||||
return (
|
||||
|
||||
14
src/app/admin/(shell)/risk/cap/page.tsx
Normal file
14
src/app/admin/(shell)/risk/cap/page.tsx
Normal file
@@ -0,0 +1,14 @@
|
||||
import { RiskCapDocScreen } from "@/modules/config/doc/risk-cap-doc-screen";
|
||||
import { RulesPageShell } from "@/modules/rules/rules-page-shell";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = buildPageMetadata("config", "nav.riskCapTitle");
|
||||
|
||||
export default function AdminRiskCapPage() {
|
||||
return (
|
||||
<RulesPageShell>
|
||||
<RiskCapDocScreen />
|
||||
</RulesPageShell>
|
||||
);
|
||||
}
|
||||
9
src/app/admin/(shell)/rules/odds/page.tsx
Normal file
9
src/app/admin/(shell)/rules/odds/page.tsx
Normal file
@@ -0,0 +1,9 @@
|
||||
import { RulesOddsConfigScreen } from "@/modules/rules/rules-odds-config-screen";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = buildPageMetadata("config", "nav.rulesOddsTitle");
|
||||
|
||||
export default function AdminRulesOddsPage() {
|
||||
return <RulesOddsConfigScreen />;
|
||||
}
|
||||
14
src/app/admin/(shell)/rules/plays/page.tsx
Normal file
14
src/app/admin/(shell)/rules/plays/page.tsx
Normal file
@@ -0,0 +1,14 @@
|
||||
import { PlayConfigDocScreen } from "@/modules/config/doc/play-config-doc-screen";
|
||||
import { RulesPageShell } from "@/modules/rules/rules-page-shell";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = buildPageMetadata("config", "nav.rulesPlaysTitle");
|
||||
|
||||
export default function AdminRulesPlaysPage() {
|
||||
return (
|
||||
<RulesPageShell>
|
||||
<PlayConfigDocScreen />
|
||||
</RulesPageShell>
|
||||
);
|
||||
}
|
||||
@@ -1,9 +1,8 @@
|
||||
import { redirect } from "next/navigation";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "币种管理",
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("config", "currencies.title");
|
||||
|
||||
export default function AdminCurrencySettingsPage() {
|
||||
redirect("/admin/currencies");
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
import { ModuleScaffold } from "@/components/admin/module-scaffold";
|
||||
import { settingsModuleMeta } from "@/modules/settings/meta";
|
||||
import { SystemSettingsScreen } from "@/modules/settings/system-settings-screen";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: settingsModuleMeta.title,
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("common", "nav.settings");
|
||||
|
||||
export default function AdminSettingsPage() {
|
||||
return (
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
import { InvalidSettlementBatchId } from "@/modules/settlement/invalid-settlement-batch-id";
|
||||
import { SettlementBatchDetailsConsole } from "@/modules/settlement/settlement-batch-details-console";
|
||||
import { settlementModuleMeta } from "@/modules/settlement/meta";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: `结算明细 · ${settlementModuleMeta.title}`,
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("settlement", "details");
|
||||
|
||||
export default async function AdminSettlementBatchDetailsPage(props: {
|
||||
params: Promise<{ batchId: string }>;
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
import { SettlementBatchesConsole } from "@/modules/settlement/settlement-batches-console";
|
||||
import { settlementModuleMeta } from "@/modules/settlement/meta";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: settlementModuleMeta.title,
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("settlement", "batchList");
|
||||
|
||||
export default function AdminSettlementBatchesPage() {
|
||||
return <SettlementBatchesConsole />;
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
import { ModuleScaffold } from "@/components/admin/module-scaffold";
|
||||
import { ticketsModuleMeta } from "@/modules/tickets/meta";
|
||||
import { PlayerTicketsConsole } from "@/modules/tickets/player-tickets-console";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: ticketsModuleMeta.title,
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("tickets", "title");
|
||||
|
||||
export default function AdminTicketsPage() {
|
||||
return (
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
import { walletModuleMeta } from "@/modules/wallet/meta";
|
||||
import { PlayerWalletPanel } from "@/modules/wallet/wallet-console";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: `${walletModuleMeta.title} · 玩家钱包`,
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("wallet", "playerWalletQuery");
|
||||
|
||||
export default function AdminWalletPlayerPage() {
|
||||
return <PlayerWalletPanel />;
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
import { walletModuleMeta } from "@/modules/wallet/meta";
|
||||
import { WalletTxnsPanel } from "@/modules/wallet/wallet-console";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: `${walletModuleMeta.title} · 钱包流水`,
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("wallet", "walletTransactions");
|
||||
|
||||
export default function AdminWalletTransactionsPage() {
|
||||
return <WalletTxnsPanel />;
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
import { walletModuleMeta } from "@/modules/wallet/meta";
|
||||
import { TransferOrdersPanel } from "@/modules/wallet/wallet-console";
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: `${walletModuleMeta.title} · 转账单`,
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("wallet", "transferOrders");
|
||||
|
||||
export default function AdminWalletTransferOrdersPage() {
|
||||
return <TransferOrdersPanel />;
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
import { buildPageMetadata } from "@/lib/page-metadata";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
import { LoginForm } from "@/components/admin/login-form";
|
||||
import { authModuleMeta } from "@/modules/auth/meta";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: authModuleMeta.title,
|
||||
};
|
||||
export const metadata: Metadata = buildPageMetadata("auth", "title");
|
||||
|
||||
export default function AdminLoginPage() {
|
||||
return <LoginForm />;
|
||||
|
||||
@@ -16,10 +16,10 @@ const geistMono = Geist_Mono({
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: {
|
||||
template: "%s · 彩票后台",
|
||||
default: "彩票后台",
|
||||
template: "%s · Lottery Admin",
|
||||
default: "Lottery Admin",
|
||||
},
|
||||
description: "彩票后台管理端",
|
||||
description: "Lottery administration console",
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
|
||||
Reference in New Issue
Block a user