V4.0.9版本更新合伙人H5端调整
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
import { useCallback, useEffect, useMemo, useState } from 'react';
|
||||
import { Link, useNavigate } from 'react-router-dom';
|
||||
import type { PartnerAssocStats, PartnerLeaderboardEntry } from '@dukang/shared-types';
|
||||
import type { PartnerAssocStats, PartnerLeaderboardEntry, PartnerSettlementPreviewDto } from '@dukang/shared-types';
|
||||
import PullToRefresh from '@dukang/shared-ui/PullToRefresh';
|
||||
import { usePartnerPageView } from '../lib/usePageView';
|
||||
import { isLoggedIn, request } from '../lib/api';
|
||||
import { fetchPartnerLeaderboard } from '../lib/leaderboard';
|
||||
import { formatBillPeriod, formatIssueLabel } from '../lib/settlement';
|
||||
import {
|
||||
canAccessPartnerDashboard,
|
||||
canAccessPartnerOrders,
|
||||
@@ -154,6 +155,7 @@ export default function HomePage() {
|
||||
const [orders, setOrders] = useState<Array<Record<string, unknown>>>([]);
|
||||
const [leaderboardEntries, setLeaderboardEntries] = useState<PartnerLeaderboardEntry[]>([]);
|
||||
const [assocStats, setAssocStats] = useState<PartnerAssocStats | null>(null);
|
||||
const [preview, setPreview] = useState<PartnerSettlementPreviewDto | null>(null);
|
||||
|
||||
useEffect(() => {
|
||||
document.title = '工作台';
|
||||
@@ -203,9 +205,13 @@ export default function HomePage() {
|
||||
request<PartnerAssocStats>('PARTNER_H5', '/partner/assoc/stats', { silent: true })
|
||||
.then(setAssocStats)
|
||||
.catch(() => setAssocStats(null)),
|
||||
request<PartnerSettlementPreviewDto>('PARTNER_H5', '/partner/settlement/preview', { silent: true })
|
||||
.then(setPreview)
|
||||
.catch(() => setPreview(null)),
|
||||
);
|
||||
} else {
|
||||
setAssocStats(null);
|
||||
setPreview(null);
|
||||
}
|
||||
|
||||
tasks.push(
|
||||
@@ -245,27 +251,20 @@ export default function HomePage() {
|
||||
? Math.round(((monthNew - lastMonthNew) / lastMonthNew) * 100)
|
||||
: (monthNew > 0 ? 100 : 0);
|
||||
|
||||
const orderCount = Number(dash?.orderCount || orderStats.todayCount || 0);
|
||||
const revenue = orderCount * 128.45;
|
||||
const profit = revenue * 0.25;
|
||||
|
||||
return (
|
||||
<PullToRefresh onRefresh={loadHome} className="page partner-home partner-home--flush-top">
|
||||
<main className="partner-home-body">
|
||||
{isPrimary && (
|
||||
<>
|
||||
<section className="partner-revenue-card">
|
||||
<p className="partner-revenue-label">
|
||||
实时营业额 (CNY)
|
||||
<span className="material-symbols-outlined" style={{ fontSize: 14 }}>info</span>
|
||||
<p className="partner-revenue-label">预付款金额 (CNY)</p>
|
||||
<div className="partner-revenue-amount">{fmtMoney(preview?.prepaymentAmount ?? 0)}</div>
|
||||
<p className="partner-revenue-label" style={{ marginTop: 8, opacity: 0.85, lineHeight: 1.5 }}>
|
||||
账期 {formatBillPeriod(preview?.periodStart, preview?.periodEnd)} · {formatIssueLabel(preview)}
|
||||
</p>
|
||||
<p className="partner-revenue-label" style={{ marginTop: 6, opacity: 0.75 }}>
|
||||
本周酒单与核销预估佣金,实际以账单为准
|
||||
</p>
|
||||
<div className="partner-revenue-amount">{fmtMoney(revenue)}</div>
|
||||
<div className="partner-revenue-grid">
|
||||
<div>
|
||||
<p className="partner-revenue-label">预计利润</p>
|
||||
<p className="headline-md" style={{ color: '#fff', marginTop: 4 }}>¥ {fmtMoney(profit)}</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section className="partner-bento-card" style={{ marginBottom: 16 }}>
|
||||
<div className="partner-quick-actions">
|
||||
|
||||
Reference in New Issue
Block a user