import { useEffect, useState } from 'react' import { Card, Table, Typography, Space, Tag, Button, Modal, Form, Input, InputNumber, Select, Switch, message, Divider, Descriptions, } from 'antd' import { PlusOutlined, ShopOutlined, CopyOutlined } from '@ant-design/icons' import { listSites, onboardSite, type Site, type OnboardSitePayload, type OnboardSiteResult } from '../api' export default function Sites({ isSuperadmin = true }: { isSuperadmin?: boolean }) { const [items, setItems] = useState([]) const [loading, setLoading] = useState(false) const [modalOpen, setModalOpen] = useState(false) const [submitting, setSubmitting] = useState(false) const [successResult, setSuccessResult] = useState(null) const [form] = Form.useForm() const loadData = () => { setLoading(true) listSites() .then(setItems) .catch(() => message.error('站点加载失败')) .finally(() => setLoading(false)) } useEffect(() => { loadData() }, []) const handleOpenModal = () => { form.resetFields() form.setFieldsValue({ member_type: 'operator', distributor_receive_ratio: 3.5, platform_sell_ratio: 4.0, service_fee_value: 2.5, display_account_enabled: true, tax_enabled: false, tax_rate_bps: 100, }) setModalOpen(true) } const handleOnboardSubmit = async (values: any) => { setSubmitting(true) try { const payload: OnboardSitePayload = { site_code: values.site_code.trim(), site_name: values.site_name.trim(), domain: values.domain.trim(), admin_username: values.admin_username.trim(), admin_password: values.admin_password, admin_nickname: values.admin_nickname?.trim() || undefined, member_type: values.member_type, display_account_enabled: values.display_account_enabled, tax_enabled: values.tax_enabled, tax_rate_bps: values.tax_enabled ? values.tax_rate_bps : 0, distributor_receive_ratio: Number(values.distributor_receive_ratio), platform_sell_ratio: Number(values.platform_sell_ratio), service_fee_value: Number(values.service_fee_value), } const res = await onboardSite(payload) message.success('分销站点及分销商管理员开通成功!') setModalOpen(false) setSuccessResult(res) loadData() } catch (err: any) { const msg = err?.response?.data?.message || '开通分销商失败,请检查站点标识或管理员用户名是否重复' message.error(msg) } finally { setSubmitting(false) } } return (
分销网站管理 管理全平台合作分销站点、域名配置与分销商管理员账号
{isSuperadmin && ( )}
( {v} ), }, { title: '站点标识', dataIndex: 'site_code', render: (v: string) => {v} }, { title: '绑定域名', dataIndex: 'domain' }, { title: '运行状态', dataIndex: 'status', render: (v: string) => ( {v === 'active' ? '正常运营' : v} ), }, { title: '账号展示', dataIndex: 'display_account_enabled', render: (v: boolean) => (v ? 开启 : 关闭), }, { title: '税费设定', render: (_: unknown, row: Site) => row.tax_enabled ? {row.tax_rate_bps / 100}% : 不征税, }, { title: '创建时间', dataIndex: 'created_at', render: (v: string) => (v ? new Date(v).toLocaleDateString() : '-'), }, ]} /> {/* 开通分销商 Modal */} setModalOpen(false)} footer={null} width={680} destroyOnClose >
1. 站点基础信息 2. 分销商管理员账号