import { useEffect, useState } from 'react' import { Card, Table, Typography, Space, Select, Tag, InputNumber, Button, message } from 'antd' import { bindPaymentChannel, listPaymentChannels, listSites, unbindPaymentChannel, getMe, type PaymentChannel, type Site } from '../api' import { useMember } from '../MemberContext' export default function Payments() { const member = useMember() const [sites, setSites] = useState([]) const [siteID, setSiteID] = useState(member?.site_id) const [channels, setChannels] = useState([]) const [configID, setConfigID] = useState(null) const [priority, setPriority] = useState(0) const [loading, setLoading] = useState(false) async function load(id: number) { setLoading(true) try { setChannels(await listPaymentChannels(id)) } 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 && rows.length > 0) { setSiteID(rows[0].id) void load(rows[0].id) } } catch { // ignore } } } void init() }, [member]) async function handleBind() { if (!siteID || !configID) { message.warning('请选择站点并填写商户配置 ID') return } try { await bindPaymentChannel(siteID, configID, priority) message.success('支付通道已绑定') setConfigID(null) void load(siteID) } catch (error: unknown) { const respMessage = (error as { response?: { data?: { message?: string } } })?.response?.data?.message message.error(respMessage ?? '绑定失败') } } async function handleUnbind(id: number) { try { await unbindPaymentChannel(id) message.success('已解绑') if (siteID) void load(siteID) } catch { message.error('解绑失败') } } return ( 支付通道 {member?.is_superadmin && sites.length > 1 && (