refactor: 合并多语言支持的显示名称字段,优化奖池手动爆发功能的返回数据结构,增强管理端权限控制
This commit is contained in:
@@ -32,7 +32,11 @@ import {
|
||||
TableHeader,
|
||||
TableRow,
|
||||
} from "@/components/ui/table";
|
||||
import { adminHasAnyPermission } from "@/lib/admin-permissions";
|
||||
import { PRD_DRAW_RESULT_MANAGE, PRD_RISK_MANAGE } from "@/lib/admin-prd";
|
||||
import { useAdminProfile } from "@/stores/admin-session";
|
||||
import { useAdminCurrencyCatalog } from "@/hooks/use-admin-currency-catalog";
|
||||
import { useConfirmAction } from "@/hooks/use-confirm-action";
|
||||
import { useExportLabels } from "@/hooks/use-export-labels";
|
||||
import { formatAdminMinorUnits } from "@/lib/money";
|
||||
import { cn } from "@/lib/utils";
|
||||
@@ -77,6 +81,12 @@ export function RiskPoolsConsole({
|
||||
allowSortChange = false,
|
||||
}: RiskPoolsConsoleProps) {
|
||||
const { t } = useTranslation(["risk", "common"]);
|
||||
const { request: requestConfirm, ConfirmDialog } = useConfirmAction();
|
||||
const profile = useAdminProfile();
|
||||
const canManageRiskPools = adminHasAnyPermission(profile?.permissions, [
|
||||
PRD_RISK_MANAGE,
|
||||
PRD_DRAW_RESULT_MANAGE,
|
||||
]);
|
||||
const pageTitle = titleKey ? t(titleKey) : (title ?? t("poolsTitle"));
|
||||
const exportLabels = useExportLabels("riskPools");
|
||||
useAdminCurrencyCatalog();
|
||||
@@ -148,6 +158,7 @@ export function RiskPoolsConsole({
|
||||
);
|
||||
|
||||
return (
|
||||
<>
|
||||
<Card className="admin-list-card">
|
||||
<CardHeader className="admin-list-header space-y-3">
|
||||
<CardTitle className="admin-list-title">{pageTitle}</CardTitle>
|
||||
@@ -292,15 +303,28 @@ export function RiskPoolsConsole({
|
||||
</TableCell>
|
||||
<TableCell className="text-right">
|
||||
<div className="flex justify-end gap-2">
|
||||
<Button
|
||||
type="button"
|
||||
size="sm"
|
||||
variant={row.is_sold_out ? "outline" : "destructive"}
|
||||
disabled={acting}
|
||||
onClick={() => void handleManualStatus(row)}
|
||||
>
|
||||
{row.is_sold_out ? t("recover") : t("close")}
|
||||
</Button>
|
||||
{canManageRiskPools ? (
|
||||
<Button
|
||||
type="button"
|
||||
size="sm"
|
||||
variant={row.is_sold_out ? "outline" : "destructive"}
|
||||
disabled={acting}
|
||||
onClick={() =>
|
||||
requestConfirm({
|
||||
title: row.is_sold_out
|
||||
? t("confirm.recoverTitle")
|
||||
: t("confirm.closeTitle"),
|
||||
description: row.is_sold_out
|
||||
? t("confirm.recoverDescription", { number: row.normalized_number })
|
||||
: t("confirm.closeDescription", { number: row.normalized_number }),
|
||||
confirmVariant: row.is_sold_out ? "default" : "destructive",
|
||||
onConfirm: () => handleManualStatus(row),
|
||||
})
|
||||
}
|
||||
>
|
||||
{row.is_sold_out ? t("recover") : t("close")}
|
||||
</Button>
|
||||
) : null}
|
||||
<Link
|
||||
href={`/admin/draws/${drawId}/risk/pools/${row.normalized_number}`}
|
||||
className={cn(
|
||||
@@ -338,5 +362,7 @@ export function RiskPoolsConsole({
|
||||
)}
|
||||
</CardContent>
|
||||
</Card>
|
||||
<ConfirmDialog />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user