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) => (
))}
}
type="button"
variant="primary"
onClick={onEdit}
>
编辑配置
);
}
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);
}