@@ -83,7 +100,7 @@ export default function Login({ onSuccess }: LoginProps) {
block
style={{ height: 44, fontWeight: 500 }}
>
- 登录分销后台
+ 进入解忧分销台
diff --git a/distribution-admin/src/pages/Orders.tsx b/distribution-admin/src/pages/Orders.tsx
index 47ff768..d14391d 100644
--- a/distribution-admin/src/pages/Orders.tsx
+++ b/distribution-admin/src/pages/Orders.tsx
@@ -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 (
-
+
{formatMoney(netPaid)}
{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' }}
/>
@@ -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}
@@ -1040,7 +1040,7 @@ export default function Orders({ kind }: { kind: 'all' | 'sold' | 'receive' }) {
>
1. 租客实付租金总额:
-
+
¥
{(
(selectedOrder.net_paid_amount_cent || selectedOrder.gross_paid_amount_cent || 0) /
diff --git a/distribution-admin/src/pages/Rules.tsx b/distribution-admin/src/pages/Rules.tsx
index 3e618c1..23e49f6 100644
--- a/distribution-admin/src/pages/Rules.tsx
+++ b/distribution-admin/src/pages/Rules.tsx
@@ -146,8 +146,8 @@ export default function Rules() {
>
-
-
+
+
卖号分成 40%
diff --git a/distribution-admin/src/pages/SiteSettings.tsx b/distribution-admin/src/pages/SiteSettings.tsx
index 183506a..86b63fd 100644
--- a/distribution-admin/src/pages/SiteSettings.tsx
+++ b/distribution-admin/src/pages/SiteSettings.tsx
@@ -625,7 +625,7 @@ export default function SiteSettings() {
-
+
独立短信验证码配置
@@ -1277,8 +1277,8 @@ export default function SiteSettings() {
) : (
-
- {currentSite?.site_name || 'HFB 分销商城'}
+
+ {currentSite?.site_name || '解忧分销商城'}
{storefrontText.tagline.trim() || DEFAULT_STOREFRONT_TEXT.tagline}
@@ -1405,7 +1405,7 @@ export default function SiteSettings() {
>
{footerInfo.copyright || `© 2026 ${currentSite?.site_name || '分销网'}`}
{footerInfo.icp && {footerInfo.icp}
}
- {footerInfo.contact && {footerInfo.contact}
}
+ {footerInfo.contact && {footerInfo.contact}
}
diff --git a/distribution-admin/src/pages/Sites.tsx b/distribution-admin/src/pages/Sites.tsx
index b54d50b..5482c0b 100644
--- a/distribution-admin/src/pages/Sites.tsx
+++ b/distribution-admin/src/pages/Sites.tsx
@@ -301,7 +301,7 @@ export default function Sites({ isSuperadmin = true }: { isSuperadmin?: boolean
width: 180,
render: (v: string) => (
-
+
{v}
),
diff --git a/distribution-admin/src/pages/Users.tsx b/distribution-admin/src/pages/Users.tsx
index 4879568..e9910e3 100644
--- a/distribution-admin/src/pages/Users.tsx
+++ b/distribution-admin/src/pages/Users.tsx
@@ -155,7 +155,7 @@ export default function Users() {
width: 170,
render: (phone: string) => (
-
+
{phone}
@@ -179,7 +179,7 @@ export default function Users() {
size="small"
src={row.avatar_url || undefined}
icon={!row.avatar_url ? : undefined}
- style={{ backgroundColor: '#1677ff' }}
+ style={{ backgroundColor: '#1e4d42' }}
/>
{row.nickname || '-'}
@@ -351,11 +351,11 @@ export default function Users() {
}
+ prefix={
}
suffix="人"
- valueStyle={{ color: '#1677ff', fontWeight: 'bold' }}
+ valueStyle={{ color: '#1e4d42', fontWeight: 'bold' }}
/>
-
+
本站注册或产生过消费行为的全部用户总计
diff --git a/distribution-admin/src/pages/Wallet.tsx b/distribution-admin/src/pages/Wallet.tsx
index 29c58ad..bf87712 100644
--- a/distribution-admin/src/pages/Wallet.tsx
+++ b/distribution-admin/src/pages/Wallet.tsx
@@ -198,7 +198,7 @@ export default function Wallet() {
-
+
可提现余额}
value={((wallet?.available_balance_cent ?? 0) / 100).toFixed(2)}
@@ -213,9 +213,9 @@ export default function Wallet() {
}
+ prefix={}
suffix="元"
- valueStyle={{ color: '#1677ff' }}
+ valueStyle={{ color: '#1e4d42' }}
/>
diff --git a/distribution-admin/src/style.css b/distribution-admin/src/style.css
index 2b5382f..07b890a 100644
--- a/distribution-admin/src/style.css
+++ b/distribution-admin/src/style.css
@@ -1,7 +1,15 @@
:root {
- font-family: Inter, -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
- color: #1f2937;
- background: #f5f7fa;
+ --brand-ink: #1e4d42;
+ --brand-ink-deep: #153a32;
+ --brand-seal: #a64332;
+ --brand-brass: #b08a4a;
+ --brand-line: #e4ded2;
+ --brand-paper: #f6f2e8;
+ --brand-paper-warm: #fffdf8;
+ font-family: 'Noto Sans SC', Inter, -apple-system, BlinkMacSystemFont, 'PingFang SC',
+ 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
+ color: #1c2521;
+ background: var(--brand-paper);
}
* {
@@ -32,7 +40,8 @@ body,
overflow: hidden;
flex-shrink: 0;
z-index: 100;
- box-shadow: 2px 0 8px rgba(0, 0, 0, 0.12);
+ background: var(--brand-ink-deep);
+ box-shadow: 4px 0 24px rgba(21, 58, 50, 0.18);
}
.app-sider .ant-layout-sider-children {
@@ -56,17 +65,38 @@ body,
.brand {
height: 64px;
- line-height: 64px;
- padding: 0 20px;
- color: #fff;
- font-size: 16px;
+ padding: 0 18px;
+ color: #f0f4f2;
+ font-size: 15px;
font-weight: 600;
letter-spacing: 0.5px;
display: flex;
align-items: center;
gap: 10px;
flex-shrink: 0;
- border-bottom: 1px solid rgba(255, 255, 255, 0.08);
+ border-bottom: 1px solid rgba(236, 208, 177, 0.14);
+}
+
+.brand__tag {
+ padding: 2px 7px;
+ border: 1px solid rgba(236, 208, 177, 0.45);
+ border-radius: 2px;
+ color: #ecd0b1;
+ font-size: 10px;
+ font-weight: 400;
+ letter-spacing: 0.12em;
+}
+
+.brand__sub {
+ padding: 8px 20px 10px;
+ color: rgba(236, 208, 177, 0.5);
+ font-size: 9px;
+ letter-spacing: 0.2em;
+}
+
+.app-sider .ant-menu {
+ background: transparent;
+ border-inline-end: 0 !important;
}
.app-layout {
@@ -76,7 +106,7 @@ body,
flex-direction: column;
overflow: hidden;
min-width: 0;
- background: #f5f7fa;
+ background: var(--brand-paper);
}
.header {
@@ -86,10 +116,10 @@ body,
display: flex;
align-items: center;
justify-content: space-between;
- background: #fff;
+ background: var(--brand-paper-warm);
padding: 0 24px;
- border-bottom: 1px solid #edf0f5;
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03);
+ border-bottom: 1px solid var(--brand-line);
+ box-shadow: 0 1px 2px rgba(30, 77, 66, 0.03);
z-index: 99;
}
@@ -116,7 +146,7 @@ body,
min-height: 0;
overflow-y: auto;
overflow-x: hidden;
- background: #f5f7fa;
+ background: var(--brand-paper);
}
.app-content::-webkit-scrollbar {
@@ -136,6 +166,8 @@ body,
.page {
width: 100%;
+ max-width: 1600px;
+ margin: 0 auto;
padding: 24px;
}
@@ -172,43 +204,148 @@ body,
/* Login Page Styles */
.login-container {
min-height: 100vh;
+ display: grid;
+ grid-template-columns: minmax(0, 1.05fr) minmax(420px, 0.95fr);
+ gap: 28px;
+ padding: 28px;
+ background:
+ radial-gradient(circle at 16% 18%, rgba(166, 67, 50, 0.07), transparent 42%),
+ var(--brand-paper);
+}
+
+.login-brand {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ overflow: hidden;
+ padding: 48px 54px;
+ border-radius: 14px;
+ background: var(--brand-ink);
+ color: #f0f4f2;
+}
+
+.login-brand::after {
+ content: '';
+ position: absolute;
+ inset: 14px;
+ border: 1px solid rgba(236, 208, 177, 0.22);
+ border-radius: 10px;
+ pointer-events: none;
+}
+
+.login-brand__logo {
+ margin-bottom: 34px;
+}
+
+.login-brand__eyebrow {
+ color: #ecd0b1;
+ font-size: 10px;
+ letter-spacing: 0.22em;
+}
+
+.login-brand h1 {
+ margin: 12px 0 16px;
+ color: #f6f2e8;
+ font-family: 'Noto Serif SC', 'Songti SC', serif;
+ font-size: 38px;
+ font-weight: 600;
+ line-height: 1.28;
+ letter-spacing: 0.04em;
+}
+
+.login-brand h1 span {
+ display: block;
+ margin-top: 8px;
+ color: #b9cbc3;
+ font-size: 15px;
+ font-weight: 400;
+ letter-spacing: 0.08em;
+}
+
+.login-brand p {
+ max-width: 430px;
+ margin: 0 0 24px;
+ color: #b9cbc3;
+ font-size: 13px;
+ line-height: 1.9;
+}
+
+.login-brand ul {
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+ margin: 0;
+ padding: 0;
+ color: #d9e5df;
+ font-size: 12px;
+ list-style: none;
+}
+
+.login-brand li::before {
+ content: '·';
+ margin-right: 8px;
+ color: #ecd0b1;
+}
+
+.login-brand__seal {
+ position: absolute;
+ right: 42px;
+ bottom: 40px;
display: flex;
align-items: center;
justify-content: center;
- background: linear-gradient(135deg, #0f172a 0%, #1e293b 50%, #0f172a 100%);
- padding: 20px;
+ width: 64px;
+ height: 64px;
+ border: 2px solid var(--brand-seal);
+ color: #ecd0b1;
+ font-family: 'Noto Serif SC', 'Songti SC', serif;
+ font-size: 15px;
+ transform: rotate(-4deg);
}
.login-card {
+ align-self: center;
width: 100%;
- max-width: 420px;
- border-radius: 16px;
- box-shadow: 0 20px 40px rgba(0, 0, 0, 0.25);
- background: #ffffff;
- padding: 12px 8px;
+ max-width: 460px;
+ margin: 0 auto;
+ padding: 20px 16px;
+ border: 1px solid var(--brand-line);
+ border-radius: 14px;
+ background: var(--brand-paper-warm);
+ box-shadow: 0 24px 48px rgba(30, 77, 66, 0.08);
}
.login-header {
+ margin-bottom: 26px;
text-align: center;
- margin-bottom: 28px;
}
-.login-logo {
- width: 56px;
- height: 56px;
- margin: 0 auto 8px;
- background: #e6f4ff;
- border-radius: 14px;
- display: flex;
- align-items: center;
- justify-content: center;
+.login-header__mobile-logo {
+ display: none;
+ margin-bottom: 18px;
}
.login-footer {
text-align: center;
margin-top: 24px;
padding-top: 16px;
- border-top: 1px solid #f0f0f0;
+ border-top: 1px solid var(--brand-line);
+}
+
+@media (max-width: 980px) {
+ .login-container {
+ grid-template-columns: minmax(0, 1fr);
+ padding: 16px;
+ }
+
+ .login-brand {
+ display: none;
+ }
+
+ .login-header__mobile-logo {
+ display: block;
+ }
}
@media (max-width: 720px) {
diff --git a/distribution-admin/src/vite-env.d.ts b/distribution-admin/src/vite-env.d.ts
new file mode 100644
index 0000000..11f02fe
--- /dev/null
+++ b/distribution-admin/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/docs/Phase1-验收报告.md b/docs/Phase1-验收报告.md
index a17bf1b..8bf5e3b 100644
--- a/docs/Phase1-验收报告.md
+++ b/docs/Phase1-验收报告.md
@@ -101,10 +101,20 @@
- `MobileHomePage`:深绿品牌首屏、搜索、快捷筛选、PullToRefresh、商品卡列表、空/错误状态。
- `MobileListingDetailPage`:商品图、价格/押金/哈夫币、账号说明、资产摘要、在线时间、固定底部操作栏。
- `MobileProfilePage`:登录状态、实名状态、订单/消息入口、退出登录。
-- `/m/orders`、`/m/messages` 先用统一占位页,下一批迁移真实业务。
+- `/m/orders`、`/m/messages` 已在后续批次接入真实接口(见 `Phase2-移动端订单与消息验收.md`)。
- 移动端 CSS 变量已接入解忧商行品牌色,不使用 Vant/旧站视觉。
+### 1.9 分销后台品牌轻改
+
+- 品牌 SVG 复制到 `distribution-admin/src/assets/brand/`,新增 `BrandLogo` 组件。
+- `ConfigProvider` 主题改为深绿 `#1E4D42`,同步 Layout / Menu 深色侧栏 token。
+- 侧栏改深绿底 + 反白横版 Logo + 「分销台」印记;顶栏改暖白底。
+- 登录页改为双栏:左侧品牌介绍与印章,右侧登录表单;窄屏自动收起品牌栏。
+- `index.html` 标题、favicon、`theme-color` 改为解忧商行。
+- 全量替换旧蓝 `#1677ff` → `#1E4D42`、`#0958d9` → `#153A32`,页面结构未重写。
+- `package.json` 包名改为 `jieyou-distribution-admin`。
+
---
## 2. 验证结果
@@ -183,11 +193,11 @@ dist/assets/MobileListingDetailPage-*.js 27.31 kB │ gzip 10.70 kB
1. 移动端订单列表/详情与消息中心已接入真实接口;下单、支付、交接、归还、结账等操作仍待迁移。
2. 后台除仪表盘、订单列表与订单详情外,其余页面仍为统一占位。
-3. 分销后台尚未做品牌轻改。
+3. 分销后台已完成主题、Logo、登录页与 Shell 轻改,页面结构未重写。
4. 后台菜单权限码基于旧项目推断:订单页已核对为 `order:list`(列表)与 `order:view`(详情),其余页面仍需逐一核对。
5. SVG 中文尚未转曲。
6. 首屏包体仍偏大。
-7. 移动端批次 `ef01486`、后台订单批次 `17b985a` 已提交;移动订单与消息在后续批次提交。
+7. 移动端 `ef01486`、后台订单 `17b985a`、移动订单与消息 `e8a20eb` 已提交;分销后台轻改在后续批次提交。
---