style(distribution): 完成分销后台品牌与登录页轻改
This commit is contained in:
@@ -596,7 +596,7 @@ export default function Accounts() {
|
||||
icon={<SyncOutlined spin={syncing} />}
|
||||
loading={syncing}
|
||||
onClick={handleOpenSyncModal}
|
||||
style={{ background: '#1677ff' }}
|
||||
style={{ background: '#1e4d42' }}
|
||||
>
|
||||
一键同步主站商品
|
||||
</Button>
|
||||
@@ -660,7 +660,7 @@ export default function Accounts() {
|
||||
{/* Batch actions */}
|
||||
{selectedRowKeys.length > 0 && (
|
||||
<Space>
|
||||
<Typography.Text strong style={{ color: '#1677ff' }}>
|
||||
<Typography.Text strong style={{ color: '#1e4d42' }}>
|
||||
已选 {selectedRowKeys.length} 项
|
||||
</Typography.Text>
|
||||
<Button
|
||||
@@ -776,7 +776,7 @@ export default function Accounts() {
|
||||
className="mono-code"
|
||||
style={{
|
||||
fontSize: 13,
|
||||
color: '#1677ff',
|
||||
color: '#1e4d42',
|
||||
whiteSpace: 'nowrap',
|
||||
wordBreak: 'keep-all',
|
||||
display: 'inline-flex',
|
||||
@@ -1004,7 +1004,7 @@ export default function Accounts() {
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Typography.Text type="secondary">主站基准价:</Typography.Text>
|
||||
<strong style={{ color: '#1677ff' }}>¥{((targetAccount.price_cent || 0) / 100).toFixed(2)}</strong>
|
||||
<strong style={{ color: '#1e4d42' }}>¥{((targetAccount.price_cent || 0) / 100).toFixed(2)}</strong>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Typography.Text type="secondary">主站基准比例:</Typography.Text>
|
||||
@@ -1265,7 +1265,7 @@ export default function Accounts() {
|
||||
<Modal
|
||||
title={
|
||||
<Space>
|
||||
<SyncOutlined style={{ color: '#1677ff' }} />
|
||||
<SyncOutlined style={{ color: '#1e4d42' }} />
|
||||
<span>一键同步主站商品设置</span>
|
||||
</Space>
|
||||
}
|
||||
@@ -1362,7 +1362,7 @@ export default function Accounts() {
|
||||
<Statistic
|
||||
title="已在货架保持"
|
||||
value={syncResult?.skipped_count ?? 0}
|
||||
valueStyle={{ color: '#1677ff', fontWeight: 'bold' }}
|
||||
valueStyle={{ color: '#1e4d42', fontWeight: 'bold' }}
|
||||
suffix="个"
|
||||
/>
|
||||
</Card>
|
||||
|
||||
@@ -235,7 +235,7 @@ export default function Announcements() {
|
||||
<Card>
|
||||
<Space direction="vertical" size="small" style={{ width: '100%' }}>
|
||||
<Space align="center" size={8}>
|
||||
<BellOutlined style={{ color: '#1677ff' }} />
|
||||
<BellOutlined style={{ color: '#1e4d42' }} />
|
||||
<Typography.Title level={4} style={{ margin: 0 }}>
|
||||
公告中心
|
||||
</Typography.Title>
|
||||
|
||||
@@ -260,7 +260,7 @@ export default function Dashboard() {
|
||||
title="今日收号 / 累计收号"
|
||||
value={analytics?.today_received_count ?? 0}
|
||||
suffix={`/ ${analytics?.total_received_count ?? 0} 个`}
|
||||
valueStyle={{ color: '#1677ff', fontWeight: 'bold' }}
|
||||
valueStyle={{ color: '#1e4d42', fontWeight: 'bold' }}
|
||||
/>
|
||||
<div style={{ marginTop: 8 }}>
|
||||
<Link to="/receive" style={{ fontSize: 12 }}>查看收号资产 <ArrowRightOutlined /></Link>
|
||||
@@ -300,9 +300,9 @@ export default function Dashboard() {
|
||||
<Statistic
|
||||
title="钱包可提现余额"
|
||||
value={((analytics?.available_balance_cent ?? 0) / 100).toFixed(2)}
|
||||
prefix={<WalletOutlined style={{ color: '#1677ff' }} />}
|
||||
prefix={<WalletOutlined style={{ color: '#1e4d42' }} />}
|
||||
suffix="元"
|
||||
valueStyle={{ color: '#1677ff', fontWeight: 'bold' }}
|
||||
valueStyle={{ color: '#1e4d42', fontWeight: 'bold' }}
|
||||
/>
|
||||
<div style={{ marginTop: 8 }}>
|
||||
<Link to="/wallet" style={{ fontSize: 12 }}>立即提现 <ArrowRightOutlined /></Link>
|
||||
@@ -422,7 +422,7 @@ export default function Dashboard() {
|
||||
className="mono-code"
|
||||
style={{
|
||||
fontSize: 13,
|
||||
color: '#1677ff',
|
||||
color: '#1e4d42',
|
||||
fontWeight: 600,
|
||||
whiteSpace: 'nowrap',
|
||||
wordBreak: 'keep-all',
|
||||
@@ -461,7 +461,7 @@ export default function Dashboard() {
|
||||
title: '实付金额',
|
||||
width: 120,
|
||||
render: (_: unknown, row: DistributionOrder) => (
|
||||
<Typography.Text strong style={{ color: '#1677ff', fontSize: 15, whiteSpace: 'nowrap' }}>
|
||||
<Typography.Text strong style={{ color: '#1e4d42', fontSize: 15, whiteSpace: 'nowrap' }}>
|
||||
{formatMoney(row.net_paid_amount_cent || row.gross_paid_amount_cent || 0)}
|
||||
</Typography.Text>
|
||||
),
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { useState } from 'react'
|
||||
import { Card, Form, Input, Button, Alert, Typography, Space } from 'antd'
|
||||
import { UserOutlined, LockOutlined, SafetyCertificateOutlined } from '@ant-design/icons'
|
||||
import { UserOutlined, LockOutlined } from '@ant-design/icons'
|
||||
import { login, type CurrentMember } from '../api'
|
||||
import { BrandLogo } from '../BrandLogo'
|
||||
|
||||
interface LoginProps {
|
||||
onSuccess: (member: CurrentMember) => void
|
||||
@@ -28,16 +29,32 @@ export default function Login({ onSuccess }: LoginProps) {
|
||||
|
||||
return (
|
||||
<div className="login-container">
|
||||
<aside className="login-brand">
|
||||
<BrandLogo height={46} variant="light" className="login-brand__logo" />
|
||||
<div className="login-brand__eyebrow">JIEYOU · DISTRIBUTION</div>
|
||||
<h1>
|
||||
分销运营台
|
||||
<span>把站点、订单与结算放在一处</span>
|
||||
</h1>
|
||||
<p>独立站点、独立流水与周期对账。每一笔分销收益都能回溯到订单。</p>
|
||||
<ul>
|
||||
<li>多站点隔离,权限按角色收敛</li>
|
||||
<li>订单归属与分成比例逐单留痕</li>
|
||||
<li>结算批次、钱包与提现统一核对</li>
|
||||
</ul>
|
||||
<span className="login-brand__seal">解忧</span>
|
||||
</aside>
|
||||
|
||||
<Card className="login-card" bordered={false}>
|
||||
<div className="login-header">
|
||||
<div className="login-logo">
|
||||
<SafetyCertificateOutlined style={{ fontSize: 32, color: '#1677ff' }} />
|
||||
<div className="login-header__mobile-logo">
|
||||
<BrandLogo height={34} />
|
||||
</div>
|
||||
<Typography.Title level={3} style={{ margin: '12px 0 4px' }}>
|
||||
HFB 分销系统
|
||||
<Typography.Title level={3} style={{ margin: '0 0 6px' }}>
|
||||
登录分销台
|
||||
</Typography.Title>
|
||||
<Typography.Text type="secondary">
|
||||
独立分销商 · 多站点综合管理后台
|
||||
使用分销管理员账号进入 · distribution.zuhaoc.com
|
||||
</Typography.Text>
|
||||
</div>
|
||||
|
||||
@@ -83,7 +100,7 @@ export default function Login({ onSuccess }: LoginProps) {
|
||||
block
|
||||
style={{ height: 44, fontWeight: 500 }}
|
||||
>
|
||||
登录分销后台
|
||||
进入解忧分销台
|
||||
</Button>
|
||||
</Form.Item>
|
||||
</Form>
|
||||
|
||||
@@ -348,7 +348,7 @@ export default function Orders({ kind }: { kind: 'all' | 'sold' | 'receive' }) {
|
||||
copyable={{ text: row.listing_no }}
|
||||
style={{
|
||||
fontSize: 13,
|
||||
color: '#1677ff',
|
||||
color: '#1e4d42',
|
||||
fontWeight: 600,
|
||||
fontFamily: 'monospace',
|
||||
whiteSpace: 'nowrap',
|
||||
@@ -406,7 +406,7 @@ export default function Orders({ kind }: { kind: 'all' | 'sold' | 'receive' }) {
|
||||
const netPaid = row.net_paid_amount_cent || row.gross_paid_amount_cent || 0
|
||||
return (
|
||||
<div>
|
||||
<Typography.Text strong style={{ color: '#1677ff', fontSize: 15, whiteSpace: 'nowrap', display: 'block' }}>
|
||||
<Typography.Text strong style={{ color: '#1e4d42', fontSize: 15, whiteSpace: 'nowrap', display: 'block' }}>
|
||||
{formatMoney(netPaid)}
|
||||
</Typography.Text>
|
||||
{row.deposit_amount_cent ? (
|
||||
@@ -611,7 +611,7 @@ export default function Orders({ kind }: { kind: 'all' | 'sold' | 'receive' }) {
|
||||
strong
|
||||
style={{
|
||||
fontSize: 13,
|
||||
color: '#1677ff',
|
||||
color: '#1e4d42',
|
||||
fontFamily: 'monospace',
|
||||
whiteSpace: 'nowrap',
|
||||
display: 'inline-flex',
|
||||
@@ -908,7 +908,7 @@ export default function Orders({ kind }: { kind: 'all' | 'sold' | 'receive' }) {
|
||||
).toFixed(2)}
|
||||
precision={2}
|
||||
prefix="¥"
|
||||
valueStyle={{ color: '#1677ff' }}
|
||||
valueStyle={{ color: '#1e4d42' }}
|
||||
/>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
@@ -952,7 +952,7 @@ export default function Orders({ kind }: { kind: 'all' | 'sold' | 'receive' }) {
|
||||
copyable={{ text: selectedOrder.listing_no, tooltips: ['复制商品编号', '已复制'] }}
|
||||
strong
|
||||
className="mono-code"
|
||||
style={{ color: '#1677ff', fontSize: 13, whiteSpace: 'nowrap', wordBreak: 'keep-all', display: 'inline-flex', alignItems: 'center' }}
|
||||
style={{ color: '#1e4d42', fontSize: 13, whiteSpace: 'nowrap', wordBreak: 'keep-all', display: 'inline-flex', alignItems: 'center' }}
|
||||
>
|
||||
{selectedOrder.listing_no}
|
||||
</Typography.Text>
|
||||
@@ -1040,7 +1040,7 @@ export default function Orders({ kind }: { kind: 'all' | 'sold' | 'receive' }) {
|
||||
>
|
||||
<div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: 8 }}>
|
||||
<span style={{ color: '#595959' }}>1. 租客实付租金总额:</span>
|
||||
<strong style={{ color: '#1677ff' }}>
|
||||
<strong style={{ color: '#1e4d42' }}>
|
||||
¥
|
||||
{(
|
||||
(selectedOrder.net_paid_amount_cent || selectedOrder.gross_paid_amount_cent || 0) /
|
||||
|
||||
@@ -146,8 +146,8 @@ export default function Rules() {
|
||||
>
|
||||
<Space direction="vertical" style={{ width: '100%' }}>
|
||||
<div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>
|
||||
<DollarCircleOutlined style={{ color: '#1677ff', fontSize: 20 }} />
|
||||
<Typography.Text strong style={{ fontSize: 16, color: '#0958d9' }}>
|
||||
<DollarCircleOutlined style={{ color: '#1e4d42', fontSize: 20 }} />
|
||||
<Typography.Text strong style={{ fontSize: 16, color: '#153a32' }}>
|
||||
卖号分成 40%
|
||||
</Typography.Text>
|
||||
</div>
|
||||
|
||||
@@ -625,7 +625,7 @@ export default function SiteSettings() {
|
||||
<Space direction="vertical" style={{ width: '100%' }} size="middle">
|
||||
<div>
|
||||
<Space align="center">
|
||||
<MessageOutlined style={{ fontSize: 18, color: '#1677ff' }} />
|
||||
<MessageOutlined style={{ fontSize: 18, color: '#1e4d42' }} />
|
||||
<Typography.Title level={5} style={{ margin: 0 }}>
|
||||
独立短信验证码配置
|
||||
</Typography.Title>
|
||||
@@ -1277,8 +1277,8 @@ export default function SiteSettings() {
|
||||
<img src={logoUrl} alt="Logo" style={{ height: 26, objectFit: 'contain' }} />
|
||||
) : (
|
||||
<span style={{ display: 'flex', flexDirection: 'column' }}>
|
||||
<strong style={{ fontSize: 14, color: '#1677ff' }}>
|
||||
{currentSite?.site_name || 'HFB 分销商城'}
|
||||
<strong style={{ fontSize: 14, color: '#1e4d42' }}>
|
||||
{currentSite?.site_name || '解忧分销商城'}
|
||||
</strong>
|
||||
<small style={{ fontSize: 10, color: '#94a3b8' }}>
|
||||
{storefrontText.tagline.trim() || DEFAULT_STOREFRONT_TEXT.tagline}
|
||||
@@ -1405,7 +1405,7 @@ export default function SiteSettings() {
|
||||
>
|
||||
<div>{footerInfo.copyright || `© 2026 ${currentSite?.site_name || '分销网'}`}</div>
|
||||
{footerInfo.icp && <div>{footerInfo.icp}</div>}
|
||||
{footerInfo.contact && <div style={{ color: '#1677ff' }}>{footerInfo.contact}</div>}
|
||||
{footerInfo.contact && <div style={{ color: '#1e4d42' }}>{footerInfo.contact}</div>}
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
|
||||
@@ -301,7 +301,7 @@ export default function Sites({ isSuperadmin = true }: { isSuperadmin?: boolean
|
||||
width: 180,
|
||||
render: (v: string) => (
|
||||
<Space>
|
||||
<ShopOutlined style={{ color: '#1677ff' }} />
|
||||
<ShopOutlined style={{ color: '#1e4d42' }} />
|
||||
<strong>{v}</strong>
|
||||
</Space>
|
||||
),
|
||||
|
||||
@@ -155,7 +155,7 @@ export default function Users() {
|
||||
width: 170,
|
||||
render: (phone: string) => (
|
||||
<Space size="small">
|
||||
<Typography.Text strong style={{ fontFamily: 'monospace', fontSize: 13, color: '#1677ff' }}>
|
||||
<Typography.Text strong style={{ fontFamily: 'monospace', fontSize: 13, color: '#1e4d42' }}>
|
||||
{phone}
|
||||
</Typography.Text>
|
||||
<Tooltip title={copiedPhone === phone ? '已复制' : '点击复制完整手机号'}>
|
||||
@@ -179,7 +179,7 @@ export default function Users() {
|
||||
size="small"
|
||||
src={row.avatar_url || undefined}
|
||||
icon={!row.avatar_url ? <UserOutlined /> : undefined}
|
||||
style={{ backgroundColor: '#1677ff' }}
|
||||
style={{ backgroundColor: '#1e4d42' }}
|
||||
/>
|
||||
<Typography.Text style={{ fontSize: 13 }}>{row.nickname || '-'}</Typography.Text>
|
||||
</Space>
|
||||
@@ -351,11 +351,11 @@ export default function Users() {
|
||||
<Statistic
|
||||
title="关联用户总规模"
|
||||
value={total}
|
||||
prefix={<UserOutlined style={{ color: '#1677ff' }} />}
|
||||
prefix={<UserOutlined style={{ color: '#1e4d42' }} />}
|
||||
suffix="人"
|
||||
valueStyle={{ color: '#1677ff', fontWeight: 'bold' }}
|
||||
valueStyle={{ color: '#1e4d42', fontWeight: 'bold' }}
|
||||
/>
|
||||
<div style={{ marginTop: 6, fontSize: 12, color: '#1677ff' }}>
|
||||
<div style={{ marginTop: 6, fontSize: 12, color: '#1e4d42' }}>
|
||||
本站注册或产生过消费行为的全部用户总计
|
||||
</div>
|
||||
</Card>
|
||||
|
||||
@@ -198,7 +198,7 @@ export default function Wallet() {
|
||||
|
||||
<Row gutter={16}>
|
||||
<Col flex="1">
|
||||
<Card bordered={false} style={{ background: 'linear-gradient(135deg, #1677ff 0%, #0958d9 100%)', color: '#fff' }}>
|
||||
<Card bordered={false} style={{ background: 'linear-gradient(135deg, #1e4d42 0%, #153a32 100%)', color: '#fff' }}>
|
||||
<Statistic
|
||||
title={<span style={{ color: 'rgba(255,255,255,0.85)' }}>可提现余额</span>}
|
||||
value={((wallet?.available_balance_cent ?? 0) / 100).toFixed(2)}
|
||||
@@ -213,9 +213,9 @@ export default function Wallet() {
|
||||
<Statistic
|
||||
title="待释放收益 (冷却期内)"
|
||||
value={((wallet?.pending_release_cent ?? 0) / 100).toFixed(2)}
|
||||
prefix={<HourglassOutlined style={{ color: '#1677ff' }} />}
|
||||
prefix={<HourglassOutlined style={{ color: '#1e4d42' }} />}
|
||||
suffix="元"
|
||||
valueStyle={{ color: '#1677ff' }}
|
||||
valueStyle={{ color: '#1e4d42' }}
|
||||
/>
|
||||
</Card>
|
||||
</Col>
|
||||
|
||||
Reference in New Issue
Block a user