import AddOutlined from "@mui/icons-material/AddOutlined"; import EditOutlined from "@mui/icons-material/EditOutlined"; import RefreshOutlined from "@mui/icons-material/RefreshOutlined"; import MenuItem from "@mui/material/MenuItem"; import TextField from "@mui/material/TextField"; import { AdminActionIconButton } from "@/shared/ui/AdminListLayout.jsx"; import { Button } from "@/shared/ui/Button.jsx"; import { TimeText } from "@/shared/ui/TimeText.jsx"; import { stageOptions } from "@/features/lucky-gift/constants.js"; import { formFromConfig } from "@/features/lucky-gift/configModel.js"; import styles from "@/features/lucky-gift/lucky-gift.module.css"; export function LuckyGiftConfigSummary({ canUpdate, config, configLoading, onAddPool, onEdit, onPoolChange, onRefresh, poolId, poolOptions, }) { const form = formFromConfig(config); return (
幸运礼物配置 奖池 {poolId}
{formatPercent(config?.targetRTPPercent)} {formatPercent(config?.poolRatePercent)} {formatNumber(config?.settlementWindowWager)} {formatPercent(config?.controlBandPercent)} {formatNumber(config?.giftPriceReference)} {formatNumber(config?.noviceMaxEquivalentDraws)} {formatNumber(config?.normalMaxEquivalentDraws)} {formatNumber(config?.maxSinglePayout)} {formatNumber(config?.roomHourlyPayoutCap)} {formatStages(form.stages)} {config?.createdAtMs ? : configLoading ? "加载中" : "-"}
onPoolChange(event.target.value)} > {(poolOptions || [poolId]).map((option) => ( {option} ))}
); } function formatStages(stages) { if (!Array.isArray(stages) || stages.length === 0) { return "-"; } return stageOptions .map(([stageKey, stageLabel]) => { const stage = stages.find((item) => item.stage === stageKey); return `${stageLabel} ${stage?.tiers?.length || 0}`; }) .join(" / "); } function SummaryItem({ children, label }) { return (
{label} {children}
); } function ConfigStatus({ config, loading }) { return ( {config?.enabled ? "已开启" : loading ? "加载中" : "已关闭"} ); } function formatPercent(value) { const number = Number(value || 0); if (!number) { return "-"; } return `${number.toFixed(2).replace(/\.?0+$/, "")}%`; } function formatNumber(value) { const number = Number(value || 0); if (!number) { return "-"; } return new Intl.NumberFormat("zh-CN").format(number); }