fix(distribution-admin): bind site context to member and enhance shelf product filters
This commit is contained in:
@@ -27,14 +27,17 @@ import {
|
||||
listSites,
|
||||
fetchDashboardAnalytics,
|
||||
formatMoney,
|
||||
getMe,
|
||||
type Site,
|
||||
type DistributionAnalytics,
|
||||
type DistributionOrder,
|
||||
} from '../api'
|
||||
import { useMember } from '../MemberContext'
|
||||
|
||||
export default function Dashboard() {
|
||||
const member = useMember()
|
||||
const [sites, setSites] = useState<Site[]>([])
|
||||
const [siteID, setSiteID] = useState<number>()
|
||||
const [siteID, setSiteID] = useState<number | undefined>(member?.site_id)
|
||||
const [analytics, setAnalytics] = useState<DistributionAnalytics | null>(null)
|
||||
const [recentOrders, setRecentOrders] = useState<DistributionOrder[]>([])
|
||||
const [loading, setLoading] = useState(false)
|
||||
@@ -56,18 +59,39 @@ export default function Dashboard() {
|
||||
}, [])
|
||||
|
||||
useEffect(() => {
|
||||
listSites()
|
||||
.then((rows) => {
|
||||
setSites(rows)
|
||||
if (rows.length > 0) {
|
||||
setSiteID(rows[0].id)
|
||||
void loadData(rows[0].id)
|
||||
async function init() {
|
||||
let currentMember = member
|
||||
if (!currentMember) {
|
||||
try {
|
||||
currentMember = await getMe()
|
||||
} catch {
|
||||
// ignore
|
||||
}
|
||||
})
|
||||
.catch(() => message.error('站点加载失败'))
|
||||
}, [loadData])
|
||||
}
|
||||
const activeSiteID = currentMember?.site_id
|
||||
if (activeSiteID) {
|
||||
setSiteID(activeSiteID)
|
||||
void loadData(activeSiteID)
|
||||
}
|
||||
|
||||
const selectedSite = sites.find((s) => s.id === siteID)
|
||||
if (currentMember?.is_superadmin) {
|
||||
try {
|
||||
const rows = await listSites()
|
||||
setSites(rows)
|
||||
if (!activeSiteID && rows.length > 0) {
|
||||
setSiteID(rows[0].id)
|
||||
void loadData(rows[0].id)
|
||||
}
|
||||
} catch {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
}
|
||||
void init()
|
||||
}, [member, loadData])
|
||||
|
||||
const selectedSiteName =
|
||||
member?.site_name || sites.find((s) => s.id === siteID)?.site_name || '当前分销商'
|
||||
|
||||
return (
|
||||
<Space direction="vertical" size="large" className="page" style={{ width: '100%' }}>
|
||||
@@ -77,20 +101,22 @@ export default function Dashboard() {
|
||||
运营数据大盘
|
||||
</Typography.Title>
|
||||
<Typography.Text type="secondary">
|
||||
当前站点:{selectedSite?.site_name || '默认分销站'} ({selectedSite?.site_code}) · 实时聚合收号、货架、订单与结算收益
|
||||
当前站点:{selectedSiteName} · 实时聚合收号、货架、订单与结算收益
|
||||
</Typography.Text>
|
||||
</div>
|
||||
<Space>
|
||||
<Select
|
||||
placeholder="切换分销网站"
|
||||
style={{ width: 220 }}
|
||||
value={siteID}
|
||||
options={sites.map((site) => ({ label: `${site.site_name} (${site.site_code})`, value: site.id }))}
|
||||
onChange={(val) => {
|
||||
setSiteID(val)
|
||||
void loadData(val)
|
||||
}}
|
||||
/>
|
||||
{member?.is_superadmin && sites.length > 1 && (
|
||||
<Select
|
||||
placeholder="切换分销网站"
|
||||
style={{ width: 220 }}
|
||||
value={siteID}
|
||||
options={sites.map((site) => ({ label: `${site.site_name} (${site.site_code})`, value: site.id }))}
|
||||
onChange={(val) => {
|
||||
setSiteID(val)
|
||||
void loadData(val)
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
<Link to="/wallet">
|
||||
<Button type="primary" icon={<WalletOutlined />}>
|
||||
去提现
|
||||
|
||||
Reference in New Issue
Block a user