+ loading={loadingRebates}
+ dataSource={rebates}
+ rowKey="id"
+ pagination={{
+ current: rebatePage,
+ pageSize: 15,
+ total: rebatesTotal,
+ onChange: (p) => loadRebates(selectedSiteID, p),
+ showTotal: (total) => `共 ${total} 条返利流水`,
+ }}
+ columns={[
+ {
+ title: '订单号',
+ dataIndex: 'order_no',
+ render: (no) => {no},
+ },
+ {
+ title: '分成端',
+ dataIndex: 'trade_role',
+ render: (role) =>
+ role === 'buyer' ? (
+ 买家端 (本站售出)
+ ) : (
+ 卖家端 (本站收号)
+ ),
+ },
+ {
+ title: '收益基准',
+ dataIndex: 'single_side_basis_cent',
+ render: (cent) => formatMoney(cent),
+ },
+ {
+ title: '分成比例',
+ dataIndex: 'rate_applied',
+ render: (r, row) => (
+
+ {(r * 100).toFixed(1)}%
+
+ {row.cycle_stage === 'first_month'
+ ? '首月'
+ : row.cycle_stage === 'second_month'
+ ? '次月'
+ : '长期'}
+
+
+ ),
+ },
+ {
+ title: '返利发放金额',
+ dataIndex: 'rebate_amount_cent',
+ render: (cent) => (
+
+ +{formatMoney(cent)}
+
+ ),
+ },
+ {
+ title: '获益邀请人',
+ key: 'inviter',
+ render: (_, r) => (
+
+
{r.inviter_nickname || '用户' + r.inviter_id}
+
+ {r.inviter_phone || '--'}
+
+
+ ),
+ },
+ {
+ title: '结算时间',
+ dataIndex: 'settled_at',
+ },
+ ]}
+ />
+
+ ),
+ },
+ ]
+
+ return (
+
+
+
+
+ 本站邀请返利自主设置
+
+
+ 分销站点可根据自身经营策略,自由调整本站邀请返利比例并监控本站返利支出与用户绑定流水。
+
+
+
+ {isSuperadmin && sites.length > 0 ? (
+
+ 切换分销网站:
+
+ ) : (
+
+ 当前站点: {member?.site_name} ({member?.site_code})
+
+ )}
+
+
+
+
+
+ )
+}
diff --git a/frontend/src/features/admin/views/AdminInvitationsView.vue b/frontend/src/features/admin/views/AdminInvitationsView.vue
index d08ecf7..7a48841 100644
--- a/frontend/src/features/admin/views/AdminInvitationsView.vue
+++ b/frontend/src/features/admin/views/AdminInvitationsView.vue
@@ -126,7 +126,7 @@ async function loadInvitations() {
params.distribution_site_id = invitationQuery.distribution_site_id
}
- const { data } = await apiClient.get('/invitations', { params })
+ const { data } = await apiClient.get('/admin/invitations', { params })
invitations.value = data.data.items || []
invitationsTotal.value = data.data.total || 0
} catch (err) {
@@ -150,7 +150,7 @@ async function loadRebates() {
params.distribution_site_id = rebateQuery.distribution_site_id
}
- const { data } = await apiClient.get('/invitations/rebates', { params })
+ const { data } = await apiClient.get('/admin/invitations/rebates', { params })
rebates.value = data.data.items || []
rebatesTotal.value = data.data.total || 0
} catch (err) {
@@ -231,6 +231,14 @@ function cycleLabel(cycle: string) {
+
+ 💡
+ 说明:当前配置为【主站平台订单默认分成比例】(分站未设置专属比例时作为全局兜底)。各加盟分销站可在其专属【分销后台】中自主调整属于该分站的返利比例,分成支出由分站自身收益承担。
+
+
+ 💡
+ 说明:当前正在为指定分销站维护专属返利比例(该分站管理员亦可在其独立分销后台中自主设置,分成支出由该分站自身收益承担)。
+
@@ -507,9 +515,19 @@ function cycleLabel(cycle: string) {
display: flex;
align-items: center;
gap: 12px;
- padding-bottom: 18px;
+ padding-bottom: 14px;
border-bottom: 1px solid #f1f5f9;
- margin-bottom: 20px;
+ margin-bottom: 14px;
+}
+
+.site-desc-hint {
+ font-size: 13px;
+ color: #475569;
+ background: #f8fafc;
+ border-left: 3px solid #3b82f6;
+ padding: 8px 12px;
+ border-radius: 4px;
+ margin-bottom: 18px;
}
.rate-input-box {
diff --git a/frontend/src/features/invitation/api/invitation.ts b/frontend/src/features/invitation/api/invitation.ts
index 28fc134..a6bd0e6 100644
--- a/frontend/src/features/invitation/api/invitation.ts
+++ b/frontend/src/features/invitation/api/invitation.ts
@@ -110,7 +110,7 @@ export async function fetchMyRebates(
/** 管理端获取返利比例配置(siteId 为 0 时为主站) */
export async function fetchAdminRebateConfig(siteId = 0): Promise
{
const { data } = await apiClient.get>(
- '/invitations/configs',
+ '/admin/invitations/configs',
{
params: { distribution_site_id: siteId },
}
@@ -129,7 +129,7 @@ export async function updateAdminRebateConfig(
}
): Promise {
const { data } = await apiClient.put>(
- '/invitations/configs',
+ '/admin/invitations/configs',
config,
{
params: { distribution_site_id: siteId },