import { useEffect, useState, useCallback } from 'react' import { Card, Table, Typography, Space, Select, Tag, message, Row, Col, Divider, Alert, Button } from 'antd' import { SafetyCertificateOutlined, DollarCircleOutlined, ThunderboltOutlined, CheckCircleOutlined, LockOutlined, } from '@ant-design/icons' import { listRules, listSites, updateRuleStatus, getMe, type Rule, type Site } from '../api' import { useMember } from '../MemberContext' const MODE_LABELS: Record = { two_party_distributor_receive: '分销收号模式 (主站售出 / 散户在本站上传)', two_party_platform_receive: '分销卖号模式 (分站售出 / 主站共享号源池)', three_party: '分销跨站协同模式 (分站A收号 + 分站B卖出)', site_self_sell: '分站自收自卖模式', } export default function Rules() { const member = useMember() const [sites, setSites] = useState([]) const [siteID, setSiteID] = useState(member?.site_id) const [rules, setRules] = useState([]) const [loading, setLoading] = useState(false) const load = useCallback(async (site?: number) => { setLoading(true) try { setRules(await listRules(site)) } catch { message.error('分成规则加载失败') } finally { setLoading(false) } }, []) useEffect(() => { async function init() { let currentMember = member if (!currentMember) { try { currentMember = await getMe() } catch { // ignore } } const activeSiteID = currentMember?.site_id if (activeSiteID) { setSiteID(activeSiteID) void load(activeSiteID) } if (currentMember?.is_superadmin) { try { const rows = await listSites() setSites(rows) if (!activeSiteID) { void load(undefined) } } catch { // ignore } } } void init() }, [member, load]) async function toggleStatus(rule: Rule) { const next = rule.status === 'active' ? 'disabled' : 'active' try { await updateRuleStatus(rule.id, next) message.success(`规则已${next === 'active' ? '启用' : '停用'}`) void load(siteID) } catch { message.error('状态更新失败') } } const isSuperadmin = member?.is_superadmin return (
{isSuperadmin ? '分成规则配置与管理' : '分销商合作协议与分成政策'} {isSuperadmin ? '主站超管可维护各交易模式的分账比例、服务费与税费政策' : '查看当前分销站签约的收益权益、分成政策与资金结算恒等式说明'}
{isSuperadmin && sites.length > 1 && (