2026-03-18 01:21:15 +08:00
|
|
|
|
# Frontend Design (Crawlful Hub)
|
|
|
|
|
|
|
|
|
|
|
|
> **定位**:Crawlful Hub 前端架构设计文档 - 包含技术栈、目录结构、核心模块及开发规范。
|
|
|
|
|
|
> **更新日期**: 2026-03-18
|
|
|
|
|
|
> **最高优先级参考**: [Business_Blueprint.md](../00_Business/Business_Blueprint.md)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 1. 技术栈 (Tech Stack)
|
|
|
|
|
|
|
|
|
|
|
|
| 层级 | 技术 | 版本 | 用途 |
|
|
|
|
|
|
|------|------|------|------|
|
|
|
|
|
|
| **Framework** | React | 18.x | UI 框架 |
|
|
|
|
|
|
| **Language** | TypeScript | 5.x | 开发语言 |
|
2026-03-18 19:12:38 +08:00
|
|
|
|
| **Build Tool** | Umi | 4.x | 构建工具 |
|
2026-03-18 01:21:15 +08:00
|
|
|
|
| **UI Library** | Ant Design | 5.x | 组件库 |
|
2026-03-18 19:12:38 +08:00
|
|
|
|
| **State** | Redux | 4.x | 状态管理 |
|
|
|
|
|
|
| **Router** | Umi Router | 4.x | 路由管理 |
|
|
|
|
|
|
| **Testing** | Jest | 29.x | 单元测试 |
|
2026-03-18 01:21:15 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 2. 目录结构 (Directory Structure)
|
|
|
|
|
|
|
|
|
|
|
|
```
|
2026-03-18 19:12:38 +08:00
|
|
|
|
dashboard/src/
|
|
|
|
|
|
│
|
|
|
|
|
|
├─ .umi/ # Umi 生成文件
|
|
|
|
|
|
│ ├─ core/
|
|
|
|
|
|
│ ├─ appData.json
|
|
|
|
|
|
│ └─ exports.ts
|
2026-03-18 01:21:15 +08:00
|
|
|
|
│
|
|
|
|
|
|
├─ components/ # 公共组件
|
2026-03-18 19:12:38 +08:00
|
|
|
|
│ ├─ ui/ # UI 组件库
|
|
|
|
|
|
│ │ ├─ Button.tsx
|
|
|
|
|
|
│ │ ├─ Card.tsx
|
|
|
|
|
|
│ │ ├─ ComponentLibrary.tsx
|
|
|
|
|
|
│ │ ├─ Input.tsx
|
|
|
|
|
|
│ │ ├─ ResponsiveLayout.tsx
|
|
|
|
|
|
│ │ └─ index.ts
|
|
|
|
|
|
│ ├─ LazyLoad.tsx # 懒加载组件
|
|
|
|
|
|
│ ├─ Table.tsx # 表格组件
|
|
|
|
|
|
│ ├─ VirtualList.tsx # 虚拟滚动组件
|
|
|
|
|
|
│ ├── README.md
|
|
|
|
|
|
│ └── index.ts
|
|
|
|
|
|
│
|
|
|
|
|
|
├─ models/ # 状态管理
|
|
|
|
|
|
│ ├─ StateManagement.ts # 状态管理主文件
|
|
|
|
|
|
│ ├─ global.ts # 全局状态
|
|
|
|
|
|
│ ├─ order.ts # 订单状态
|
|
|
|
|
|
│ ├─ product.ts # 商品状态
|
|
|
|
|
|
│ └── index.ts
|
2026-03-18 01:21:15 +08:00
|
|
|
|
│
|
|
|
|
|
|
├─ pages/ # 页面组件
|
2026-03-18 19:12:38 +08:00
|
|
|
|
│ ├─ ABTest/ # A/B测试
|
|
|
|
|
|
│ ├─ Ad/ # 广告管理
|
|
|
|
|
|
│ ├─ AfterSales/ # 售后服务
|
|
|
|
|
|
│ ├─ Auth/ # 认证
|
|
|
|
|
|
│ ├─ B2B/ # B2B贸易
|
|
|
|
|
|
│ ├─ B2BTrade/ # B2B贸易
|
|
|
|
|
|
│ ├─ Blacklist/ # 黑名单管理
|
|
|
|
|
|
│ ├─ Compliance/ # 合规管理
|
2026-03-18 01:21:15 +08:00
|
|
|
|
│ ├─ Finance/ # 财务管理
|
|
|
|
|
|
│ ├─ Inventory/ # 库存管理
|
2026-03-18 19:12:38 +08:00
|
|
|
|
│ ├─ Logistics/ # 物流管理
|
|
|
|
|
|
│ ├─ Marketing/ # 营销管理
|
|
|
|
|
|
│ ├─ Merchant/ # 商户管理
|
|
|
|
|
|
│ ├─ Orders/ # 订单管理
|
|
|
|
|
|
│ ├─ Product/ # 商品管理
|
|
|
|
|
|
│ ├─ Reports/ # 报表中心
|
|
|
|
|
|
│ ├─ Return/ # 退货管理
|
|
|
|
|
|
│ ├─ Settings/ # 设置
|
2026-03-18 01:21:15 +08:00
|
|
|
|
│ ├─ Suppliers/ # 供应商管理
|
2026-03-18 19:12:38 +08:00
|
|
|
|
│ ├─ UserAsset/ # 用户资产
|
|
|
|
|
|
│ └─ index.tsx # 首页/仪表盘
|
2026-03-18 01:21:15 +08:00
|
|
|
|
│
|
|
|
|
|
|
├─ services/ # API 服务
|
2026-03-18 19:12:38 +08:00
|
|
|
|
│ ├─ api/ # API 客户端
|
|
|
|
|
|
│ │ ├─ client.ts
|
|
|
|
|
|
│ │ ├─ index.ts
|
|
|
|
|
|
│ │ ├─ order.ts
|
|
|
|
|
|
│ │ ├─ product.ts
|
|
|
|
|
|
│ │ └─ user.ts
|
|
|
|
|
|
│ ├─ merchantOrderService.ts # 商户订单服务
|
|
|
|
|
|
│ ├─ merchantService.ts # 商户服务
|
|
|
|
|
|
│ ├─ merchantSettlementService.ts # 商户结算服务
|
|
|
|
|
|
│ └─ merchantShopService.ts # 商户店铺服务
|
2026-03-18 01:21:15 +08:00
|
|
|
|
│
|
2026-03-18 19:12:38 +08:00
|
|
|
|
├─ tests/ # 测试文件
|
|
|
|
|
|
│ ├─ frontend.functional.test.ts # 前端功能测试
|
|
|
|
|
|
│ └─ frontend.integration.test.ts # 前端集成测试
|
2026-03-18 01:21:15 +08:00
|
|
|
|
│
|
2026-03-18 19:12:38 +08:00
|
|
|
|
└─ utils/ # 工具函数
|
|
|
|
|
|
├─ PerformanceOptimization.ts # 性能优化
|
|
|
|
|
|
├─ performance.ts # 性能相关
|
|
|
|
|
|
├─ responsive.ts # 响应式相关
|
|
|
|
|
|
└─ security.ts # 安全相关
|
2026-03-18 01:21:15 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 3. 页面路由 (Routes)
|
|
|
|
|
|
|
|
|
|
|
|
### 3.1 路由结构
|
|
|
|
|
|
|
|
|
|
|
|
```typescript
|
|
|
|
|
|
const routes = [
|
|
|
|
|
|
// 公共路由
|
|
|
|
|
|
{ path: '/login', element: <Login /> },
|
|
|
|
|
|
|
|
|
|
|
|
// 受保护路由
|
|
|
|
|
|
{
|
|
|
|
|
|
path: '/',
|
|
|
|
|
|
element: <MainLayout />,
|
|
|
|
|
|
children: [
|
|
|
|
|
|
{ path: '/', element: <Dashboard /> },
|
|
|
|
|
|
{ path: '/products', element: <Products /> },
|
|
|
|
|
|
{ path: '/products/:id', element: <ProductDetail /> },
|
|
|
|
|
|
{ path: '/products/create', element: <ProductCreate /> },
|
|
|
|
|
|
{ path: '/products/review', element: <ProductReview /> },
|
|
|
|
|
|
{ path: '/orders', element: <Orders /> },
|
|
|
|
|
|
{ path: '/orders/:id', element: <OrderDetail /> },
|
|
|
|
|
|
{ path: '/orders/audit', element: <OrderAudit /> },
|
|
|
|
|
|
{ path: '/finance', element: <Finance /> },
|
|
|
|
|
|
{ path: '/finance/transactions', element: <Transactions /> },
|
|
|
|
|
|
{ path: '/finance/reconciliation', element: <Reconciliation /> },
|
|
|
|
|
|
{ path: '/inventory', element: <Inventory /> },
|
|
|
|
|
|
{ path: '/inventory/warehouses', element: <Warehouses /> },
|
|
|
|
|
|
{ path: '/inventory/forecast', element: <InventoryForecast /> },
|
|
|
|
|
|
{ path: '/marketing', element: <Marketing /> },
|
|
|
|
|
|
{ path: '/marketing/ads', element: <Ads /> },
|
|
|
|
|
|
{ path: '/marketing/competitors', element: <Competitors /> },
|
|
|
|
|
|
{ path: '/suppliers', element: <Suppliers /> },
|
|
|
|
|
|
{ path: '/suppliers/:id', element: <SupplierDetail /> },
|
|
|
|
|
|
{ path: '/reports', element: <Reports /> },
|
|
|
|
|
|
{ path: '/reports/profit', element: <ProfitReport /> },
|
|
|
|
|
|
{ path: '/reports/performance', element: <PerformanceReport /> },
|
|
|
|
|
|
{ path: '/settings', element: <Settings /> },
|
|
|
|
|
|
{ path: '/settings/profile', element: <ProfileSettings /> },
|
|
|
|
|
|
{ path: '/settings/tenant', element: <TenantSettings /> },
|
|
|
|
|
|
{ path: '/settings/users', element: <UserManagement /> },
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
];
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 3.2 权限路由
|
|
|
|
|
|
|
|
|
|
|
|
```typescript
|
|
|
|
|
|
// 基于角色的路由访问控制
|
|
|
|
|
|
const roleRoutes = {
|
|
|
|
|
|
ADMIN: ['*'], // 所有路由
|
|
|
|
|
|
MANAGER: ['*'], // 所有路由
|
|
|
|
|
|
OPERATOR: [
|
|
|
|
|
|
'/products',
|
|
|
|
|
|
'/orders',
|
|
|
|
|
|
'/inventory'
|
|
|
|
|
|
],
|
|
|
|
|
|
FINANCE: [
|
|
|
|
|
|
'/finance',
|
|
|
|
|
|
'/reports'
|
|
|
|
|
|
],
|
|
|
|
|
|
SOURCING: [
|
|
|
|
|
|
'/products',
|
|
|
|
|
|
'/suppliers'
|
|
|
|
|
|
],
|
|
|
|
|
|
LOGISTICS: [
|
|
|
|
|
|
'/orders',
|
|
|
|
|
|
'/inventory'
|
|
|
|
|
|
],
|
|
|
|
|
|
ANALYST: [
|
|
|
|
|
|
'/reports',
|
|
|
|
|
|
'/marketing/competitors'
|
|
|
|
|
|
]
|
|
|
|
|
|
};
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 4. 核心模块
|
|
|
|
|
|
|
|
|
|
|
|
### 4.1 商品管理模块
|
|
|
|
|
|
|
|
|
|
|
|
**功能列表**
|
|
|
|
|
|
- 商品列表展示 (分页、筛选、排序)
|
|
|
|
|
|
- 商品详情查看
|
|
|
|
|
|
- 商品创建/编辑
|
|
|
|
|
|
- 商品审核流程
|
|
|
|
|
|
- 批量操作
|
|
|
|
|
|
- 动态定价
|
|
|
|
|
|
- 套利分析
|
|
|
|
|
|
|
|
|
|
|
|
**页面组件**
|
2026-03-18 19:12:38 +08:00
|
|
|
|
- `Product/index.tsx` - 商品管理入口
|
|
|
|
|
|
- `Product/ProductDetail.tsx` - 商品详情页
|
|
|
|
|
|
- `Product/ProductPublishForm.tsx` - 商品发布表单
|
|
|
|
|
|
- `Product/MaterialUpload.tsx` - 物料上传
|
2026-03-18 01:21:15 +08:00
|
|
|
|
|
|
|
|
|
|
### 4.2 订单管理模块
|
|
|
|
|
|
|
|
|
|
|
|
**功能列表**
|
|
|
|
|
|
- 订单列表展示
|
|
|
|
|
|
- 订单详情查看
|
|
|
|
|
|
- 订单状态流转
|
|
|
|
|
|
- 批量审核
|
|
|
|
|
|
- 订单统计
|
2026-03-18 19:12:38 +08:00
|
|
|
|
- 异常订单处理
|
|
|
|
|
|
- 订单聚合分析
|
|
|
|
|
|
|
|
|
|
|
|
**页面组件**
|
|
|
|
|
|
- `Orders/index.tsx` - 订单管理入口
|
|
|
|
|
|
- `Orders/OrderList.tsx` - 订单列表页
|
|
|
|
|
|
- `Orders/OrderDetail.tsx` - 订单详情页
|
|
|
|
|
|
- `Orders/ExceptionOrder.tsx` - 异常订单处理
|
|
|
|
|
|
- `Orders/OrderAggregation.tsx` - 订单聚合分析
|
|
|
|
|
|
|
|
|
|
|
|
### 4.3 商户管理模块
|
|
|
|
|
|
|
|
|
|
|
|
**功能列表**
|
|
|
|
|
|
- 商户列表管理
|
|
|
|
|
|
- 商户订单管理
|
|
|
|
|
|
- 商户结算管理
|
|
|
|
|
|
- 商户店铺管理
|
|
|
|
|
|
|
|
|
|
|
|
**页面组件**
|
|
|
|
|
|
- `Merchant/index.tsx` - 商户管理入口
|
|
|
|
|
|
- `Merchant/MerchantManage.tsx` - 商户管理
|
|
|
|
|
|
- `Merchant/MerchantOrderManage.tsx` - 商户订单管理
|
|
|
|
|
|
- `Merchant/MerchantSettlementManage.tsx` - 商户结算管理
|
|
|
|
|
|
- `Merchant/MerchantShopManage.tsx` - 商户店铺管理
|
|
|
|
|
|
|
|
|
|
|
|
### 4.4 售后服务模块
|
|
|
|
|
|
|
|
|
|
|
|
**功能列表**
|
|
|
|
|
|
- 退货申请处理
|
|
|
|
|
|
- 退款流程管理
|
|
|
|
|
|
- 客户服务
|
|
|
|
|
|
|
|
|
|
|
|
**页面组件**
|
|
|
|
|
|
- `AfterSales/index.tsx` - 售后服务入口
|
|
|
|
|
|
- `AfterSales/ReturnApply.tsx` - 退货申请
|
|
|
|
|
|
- `AfterSales/RefundProcess.tsx` - 退款流程
|
|
|
|
|
|
- `AfterSales/CustomerService.tsx` - 客户服务
|
|
|
|
|
|
|
|
|
|
|
|
### 4.5 物流管理模块
|
|
|
|
|
|
|
|
|
|
|
|
**功能列表**
|
|
|
|
|
|
- 物流选择
|
|
|
|
|
|
- 运费计算
|
|
|
|
|
|
- 物流追踪
|
|
|
|
|
|
|
|
|
|
|
|
**页面组件**
|
|
|
|
|
|
- `Logistics/index.tsx` - 物流管理入口
|
|
|
|
|
|
- `Logistics/LogisticsSelect.tsx` - 物流选择
|
|
|
|
|
|
- `Logistics/FreightCalc.tsx` - 运费计算
|
|
|
|
|
|
- `Logistics/LogisticsTrack.tsx` - 物流追踪
|
|
|
|
|
|
|
|
|
|
|
|
### 4.6 合规管理模块
|
|
|
|
|
|
|
|
|
|
|
|
**功能列表**
|
|
|
|
|
|
- 合规检查
|
|
|
|
|
|
- 证书管理
|
|
|
|
|
|
- 证书过期提醒
|
|
|
|
|
|
|
|
|
|
|
|
**页面组件**
|
|
|
|
|
|
- `Compliance/index.tsx` - 合规管理入口
|
|
|
|
|
|
- `Compliance/ComplianceCheck.tsx` - 合规检查
|
|
|
|
|
|
- `Compliance/CertificateManage.tsx` - 证书管理
|
|
|
|
|
|
- `Compliance/CertificateExpiryReminder.tsx` - 证书过期提醒
|
|
|
|
|
|
|
|
|
|
|
|
### 4.7 黑名单管理模块
|
|
|
|
|
|
|
|
|
|
|
|
**功能列表**
|
|
|
|
|
|
- 黑名单管理
|
|
|
|
|
|
- 风险监控
|
|
|
|
|
|
|
|
|
|
|
|
**页面组件**
|
|
|
|
|
|
- `Blacklist/index.tsx` - 黑名单管理入口
|
|
|
|
|
|
- `Blacklist/BlacklistManage.tsx` - 黑名单管理
|
|
|
|
|
|
- `Blacklist/RiskMonitor.tsx` - 风险监控
|
|
|
|
|
|
|
|
|
|
|
|
### 4.8 B2B贸易模块
|
|
|
|
|
|
|
|
|
|
|
|
**功能列表**
|
|
|
|
|
|
- 企业报价
|
|
|
|
|
|
- 批量订单
|
|
|
|
|
|
- 合同管理
|
2026-03-18 01:21:15 +08:00
|
|
|
|
|
|
|
|
|
|
**页面组件**
|
2026-03-18 19:12:38 +08:00
|
|
|
|
- `B2B/index.tsx` - B2B贸易入口
|
|
|
|
|
|
- `B2B/EnterpriseQuote.tsx` - 企业报价
|
|
|
|
|
|
- `B2B/BatchOrder.tsx` - 批量订单
|
|
|
|
|
|
- `B2B/ContractManage.tsx` - 合同管理
|
2026-03-18 01:21:15 +08:00
|
|
|
|
|
2026-03-18 19:12:38 +08:00
|
|
|
|
### 4.9 广告管理模块
|
2026-03-18 01:21:15 +08:00
|
|
|
|
|
|
|
|
|
|
**功能列表**
|
2026-03-18 19:12:38 +08:00
|
|
|
|
- 广告投放管理
|
|
|
|
|
|
- ROI分析
|
|
|
|
|
|
- 广告计划
|
2026-03-18 01:21:15 +08:00
|
|
|
|
|
|
|
|
|
|
**页面组件**
|
2026-03-18 19:12:38 +08:00
|
|
|
|
- `Ad/index.tsx` - 广告管理入口
|
|
|
|
|
|
- `Ad/AdDelivery.tsx` - 广告投放
|
|
|
|
|
|
- `Ad/ROIAnalysis.tsx` - ROI分析
|
|
|
|
|
|
- `Ad/AdPlanPage.tsx` - 广告计划
|
2026-03-18 01:21:15 +08:00
|
|
|
|
|
2026-03-18 19:12:38 +08:00
|
|
|
|
### 4.10 财务管理模块
|
|
|
|
|
|
|
|
|
|
|
|
**功能列表**
|
|
|
|
|
|
- 财务概览
|
|
|
|
|
|
- 交易记录
|
|
|
|
|
|
- 对账记录
|
|
|
|
|
|
|
|
|
|
|
|
**页面组件**
|
|
|
|
|
|
- `Finance/index.tsx` - 财务管理入口
|
|
|
|
|
|
- `Finance/Transactions.tsx` - 交易记录
|
|
|
|
|
|
- `Finance/Reconciliation.tsx` - 对账记录
|
|
|
|
|
|
|
|
|
|
|
|
### 4.11 库存管理模块
|
2026-03-18 01:21:15 +08:00
|
|
|
|
|
|
|
|
|
|
**功能列表**
|
|
|
|
|
|
- 库存概览
|
|
|
|
|
|
- 仓库管理
|
|
|
|
|
|
- 库存预测
|
|
|
|
|
|
|
|
|
|
|
|
**页面组件**
|
2026-03-18 19:12:38 +08:00
|
|
|
|
- `Inventory/index.tsx` - 库存管理入口
|
|
|
|
|
|
- `Inventory/Warehouses.tsx` - 仓库管理
|
|
|
|
|
|
- `Inventory/InventoryForecast.tsx` - 库存预测
|
2026-03-18 01:21:15 +08:00
|
|
|
|
|
2026-03-18 19:12:38 +08:00
|
|
|
|
### 4.12 营销管理模块
|
2026-03-18 01:21:15 +08:00
|
|
|
|
|
|
|
|
|
|
**功能列表**
|
|
|
|
|
|
- 营销概览
|
|
|
|
|
|
- 广告管理
|
2026-03-18 19:12:38 +08:00
|
|
|
|
- 竞争对手分析
|
|
|
|
|
|
|
|
|
|
|
|
**页面组件**
|
|
|
|
|
|
- `Marketing/index.tsx` - 营销管理入口
|
|
|
|
|
|
- `Marketing/Ads.tsx` - 广告管理
|
|
|
|
|
|
- `Marketing/Competitors.tsx` - 竞争对手分析
|
|
|
|
|
|
|
|
|
|
|
|
### 4.13 供应商管理模块
|
|
|
|
|
|
|
|
|
|
|
|
**功能列表**
|
|
|
|
|
|
- 供应商列表
|
|
|
|
|
|
- 供应商详情
|
|
|
|
|
|
- 供应商产品管理
|
|
|
|
|
|
|
|
|
|
|
|
**页面组件**
|
|
|
|
|
|
- `Suppliers/index.tsx` - 供应商管理入口
|
|
|
|
|
|
- `Suppliers/SupplierDetail.tsx` - 供应商详情
|
|
|
|
|
|
|
|
|
|
|
|
### 4.14 报表中心模块
|
|
|
|
|
|
|
|
|
|
|
|
**功能列表**
|
|
|
|
|
|
- 报表概览
|
|
|
|
|
|
- 利润报表
|
|
|
|
|
|
- 绩效报表
|
|
|
|
|
|
|
|
|
|
|
|
**页面组件**
|
|
|
|
|
|
- `Reports/index.tsx` - 报表中心入口
|
|
|
|
|
|
- `Reports/ProfitReport.tsx` - 利润报表
|
|
|
|
|
|
- `Reports/PerformanceReport.tsx` - 绩效报表
|
|
|
|
|
|
|
|
|
|
|
|
### 4.15 设置模块
|
|
|
|
|
|
|
|
|
|
|
|
**功能列表**
|
|
|
|
|
|
- 设置概览
|
|
|
|
|
|
- 个人设置
|
|
|
|
|
|
- 租户设置
|
|
|
|
|
|
- 用户管理
|
2026-03-18 01:21:15 +08:00
|
|
|
|
|
|
|
|
|
|
**页面组件**
|
2026-03-18 19:12:38 +08:00
|
|
|
|
- `Settings/index.tsx` - 设置入口
|
|
|
|
|
|
- `Settings/ProfileSettings.tsx` - 个人设置
|
|
|
|
|
|
- `Settings/TenantSettings.tsx` - 租户设置
|
|
|
|
|
|
- `Settings/UserManagement.tsx` - 用户管理
|
|
|
|
|
|
|
|
|
|
|
|
### 4.16 A/B测试模块
|
|
|
|
|
|
|
|
|
|
|
|
**功能列表**
|
|
|
|
|
|
- A/B测试配置
|
|
|
|
|
|
- 测试结果分析
|
|
|
|
|
|
|
|
|
|
|
|
**页面组件**
|
|
|
|
|
|
- `ABTest/index.tsx` - A/B测试入口
|
|
|
|
|
|
- `ABTest/ABTestConfig.tsx` - A/B测试配置
|
|
|
|
|
|
- `ABTest/ABTestResults.tsx` - 测试结果分析
|
|
|
|
|
|
|
|
|
|
|
|
### 4.11 退货管理模块
|
|
|
|
|
|
|
|
|
|
|
|
**功能列表**
|
|
|
|
|
|
- 退货监控
|
|
|
|
|
|
- SKU管理
|
|
|
|
|
|
|
|
|
|
|
|
**页面组件**
|
|
|
|
|
|
- `Return/index.tsx` - 退货管理入口
|
|
|
|
|
|
- `Return/ReturnMonitor.tsx` - 退货监控
|
|
|
|
|
|
- `Return/SKUManage.tsx` - SKU管理
|
|
|
|
|
|
|
|
|
|
|
|
### 4.12 用户资产管理模块
|
|
|
|
|
|
|
|
|
|
|
|
**功能列表**
|
|
|
|
|
|
- 会员等级管理
|
|
|
|
|
|
- 积分管理
|
|
|
|
|
|
- 用户资产
|
|
|
|
|
|
|
|
|
|
|
|
**页面组件**
|
|
|
|
|
|
- `UserAsset/index.tsx` - 用户资产管理入口
|
|
|
|
|
|
- `UserAsset/MemberLevel.tsx` - 会员等级管理
|
|
|
|
|
|
- `UserAsset/PointsManage.tsx` - 积分管理
|
|
|
|
|
|
- `UserAsset/UserAssets.tsx` - 用户资产
|
2026-03-18 01:21:15 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 5. 组件规范
|
|
|
|
|
|
|
|
|
|
|
|
### 5.1 组件命名
|
|
|
|
|
|
|
|
|
|
|
|
- **页面组件**: PascalCase,以功能命名 (如 `ProductList`, `OrderDetail`)
|
|
|
|
|
|
- **公共组件**: PascalCase,以功能命名 (如 `DataTable`, `FilterPanel`)
|
|
|
|
|
|
- **Hooks**: camelCase,以 `use` 开头 (如 `useProducts`, `useAuth`)
|
|
|
|
|
|
|
|
|
|
|
|
### 5.2 组件结构
|
|
|
|
|
|
|
|
|
|
|
|
```typescript
|
|
|
|
|
|
// 页面组件示例
|
|
|
|
|
|
import React from 'react';
|
|
|
|
|
|
import { useQuery } from '@tanstack/react-query';
|
|
|
|
|
|
import { Table, Button } from 'antd';
|
|
|
|
|
|
import { useProducts } from '@/hooks/useProducts';
|
|
|
|
|
|
|
|
|
|
|
|
export const Products: React.FC = () => {
|
|
|
|
|
|
const { data, isLoading } = useProducts();
|
|
|
|
|
|
|
|
|
|
|
|
const columns = [
|
|
|
|
|
|
{ title: '商品名称', dataIndex: 'title' },
|
|
|
|
|
|
{ title: '平台', dataIndex: 'platform' },
|
|
|
|
|
|
{ title: '状态', dataIndex: 'status' },
|
|
|
|
|
|
{ title: '售价', dataIndex: 'sellingPrice' },
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
|
<div>
|
|
|
|
|
|
<h1>商品管理</h1>
|
|
|
|
|
|
<Table
|
|
|
|
|
|
dataSource={data}
|
|
|
|
|
|
columns={columns}
|
|
|
|
|
|
loading={isLoading}
|
|
|
|
|
|
/>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
);
|
|
|
|
|
|
};
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 5.3 状态管理
|
|
|
|
|
|
|
|
|
|
|
|
```typescript
|
2026-03-18 19:12:38 +08:00
|
|
|
|
// Redux Store 示例
|
|
|
|
|
|
import { createStore, combineReducers, applyMiddleware } from 'redux';
|
|
|
|
|
|
import thunk from 'redux-thunk';
|
|
|
|
|
|
import { createLogger } from 'redux-logger';
|
|
|
|
|
|
|
|
|
|
|
|
// 定义状态类型
|
|
|
|
|
|
interface AppState {
|
|
|
|
|
|
user: UserState;
|
|
|
|
|
|
products: ProductState;
|
|
|
|
|
|
orders: OrderState;
|
|
|
|
|
|
loading: boolean;
|
|
|
|
|
|
error: string | null;
|
2026-03-18 01:21:15 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-18 19:12:38 +08:00
|
|
|
|
// 组合reducers
|
|
|
|
|
|
const rootReducer = combineReducers({
|
|
|
|
|
|
user: userReducer,
|
|
|
|
|
|
products: productsReducer,
|
|
|
|
|
|
orders: ordersReducer,
|
|
|
|
|
|
app: appReducer,
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// 中间件
|
|
|
|
|
|
const middleware = [thunk];
|
|
|
|
|
|
if (process.env.NODE_ENV === 'development') {
|
|
|
|
|
|
middleware.push(createLogger());
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 创建store
|
|
|
|
|
|
const store = createStore(rootReducer, applyMiddleware(...middleware));
|
|
|
|
|
|
|
|
|
|
|
|
export default store;
|
2026-03-18 01:21:15 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 6. API 集成
|
|
|
|
|
|
|
2026-03-18 19:12:38 +08:00
|
|
|
|
### 6.1 API 客户端配置
|
2026-03-18 01:21:15 +08:00
|
|
|
|
|
|
|
|
|
|
```typescript
|
2026-03-18 19:12:38 +08:00
|
|
|
|
// services/api/client.ts
|
2026-03-18 01:21:15 +08:00
|
|
|
|
import axios from 'axios';
|
|
|
|
|
|
|
|
|
|
|
|
const api = axios.create({
|
2026-03-18 19:12:38 +08:00
|
|
|
|
baseURL: process.env.API_URL || 'http://localhost:3000/api',
|
2026-03-18 01:21:15 +08:00
|
|
|
|
timeout: 30000,
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// 请求拦截器
|
|
|
|
|
|
api.interceptors.request.use((config) => {
|
|
|
|
|
|
const token = localStorage.getItem('token');
|
|
|
|
|
|
if (token) {
|
|
|
|
|
|
config.headers.Authorization = `Bearer ${token}`;
|
|
|
|
|
|
}
|
|
|
|
|
|
return config;
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// 响应拦截器
|
|
|
|
|
|
api.interceptors.response.use(
|
|
|
|
|
|
(response) => response.data,
|
|
|
|
|
|
(error) => {
|
|
|
|
|
|
if (error.response?.status === 401) {
|
|
|
|
|
|
// 处理未授权
|
2026-03-18 19:12:38 +08:00
|
|
|
|
window.location.href = '/Auth/LoginPage';
|
2026-03-18 01:21:15 +08:00
|
|
|
|
}
|
|
|
|
|
|
return Promise.reject(error);
|
|
|
|
|
|
}
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
export default api;
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-03-18 19:12:38 +08:00
|
|
|
|
### 6.2 API 服务
|
2026-03-18 01:21:15 +08:00
|
|
|
|
|
|
|
|
|
|
```typescript
|
2026-03-18 19:12:38 +08:00
|
|
|
|
// services/api/product.ts
|
|
|
|
|
|
import api from './client';
|
|
|
|
|
|
|
|
|
|
|
|
export const productService = {
|
|
|
|
|
|
getAll: (params?: any) => {
|
|
|
|
|
|
return api.get('/products', { params });
|
|
|
|
|
|
},
|
|
|
|
|
|
getById: (id: string) => {
|
|
|
|
|
|
return api.get(`/products/${id}`);
|
|
|
|
|
|
},
|
|
|
|
|
|
create: (data: any) => {
|
|
|
|
|
|
return api.post('/products', data);
|
|
|
|
|
|
},
|
|
|
|
|
|
update: (id: string, data: any) => {
|
|
|
|
|
|
return api.put(`/products/${id}`, data);
|
|
|
|
|
|
},
|
|
|
|
|
|
delete: (id: string) => {
|
|
|
|
|
|
return api.delete(`/products/${id}`);
|
|
|
|
|
|
},
|
2026-03-18 01:21:15 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
2026-03-18 19:12:38 +08:00
|
|
|
|
// services/api/order.ts
|
|
|
|
|
|
import api from './client';
|
|
|
|
|
|
|
|
|
|
|
|
export const orderService = {
|
|
|
|
|
|
getAll: (params?: any) => {
|
|
|
|
|
|
return api.get('/orders', { params });
|
|
|
|
|
|
},
|
|
|
|
|
|
getById: (id: string) => {
|
|
|
|
|
|
return api.get(`/orders/${id}`);
|
|
|
|
|
|
},
|
|
|
|
|
|
updateStatus: (id: string, status: string) => {
|
|
|
|
|
|
return api.put(`/orders/${id}/status`, { status });
|
|
|
|
|
|
},
|
2026-03-18 01:21:15 +08:00
|
|
|
|
};
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 7. 开发规范
|
|
|
|
|
|
|
|
|
|
|
|
### 7.1 代码规范
|
|
|
|
|
|
|
|
|
|
|
|
- 使用 TypeScript 严格模式
|
|
|
|
|
|
- 组件使用函数式组件 + Hooks
|
|
|
|
|
|
- 使用绝对路径导入 (`@/components/...`)
|
|
|
|
|
|
- 避免使用 `any` 类型
|
|
|
|
|
|
|
|
|
|
|
|
### 7.2 样式规范
|
|
|
|
|
|
|
|
|
|
|
|
- 使用 Ant Design 组件默认样式
|
|
|
|
|
|
- 自定义样式使用 CSS Modules 或 Tailwind
|
|
|
|
|
|
- 遵循设计系统规范
|
|
|
|
|
|
|
|
|
|
|
|
### 7.3 错误处理
|
|
|
|
|
|
|
|
|
|
|
|
```typescript
|
|
|
|
|
|
// 错误边界
|
|
|
|
|
|
import { ErrorBoundary } from 'react-error-boundary';
|
|
|
|
|
|
|
|
|
|
|
|
const ErrorFallback = ({ error }: { error: Error }) => (
|
|
|
|
|
|
<div>
|
|
|
|
|
|
<h2>出错了</h2>
|
|
|
|
|
|
<p>{error.message}</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// 使用
|
|
|
|
|
|
<ErrorBoundary FallbackComponent={ErrorFallback}>
|
|
|
|
|
|
<App />
|
|
|
|
|
|
</ErrorBoundary>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 8. 构建与部署
|
|
|
|
|
|
|
|
|
|
|
|
### 8.1 环境变量
|
|
|
|
|
|
|
|
|
|
|
|
```env
|
|
|
|
|
|
VITE_API_URL=http://localhost:3000/api/v1
|
|
|
|
|
|
VITE_APP_NAME=Crawlful Hub
|
|
|
|
|
|
VITE_APP_VERSION=1.0.0
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 8.2 构建命令
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
npm install # 安装依赖
|
|
|
|
|
|
npm run dev # 开发模式
|
|
|
|
|
|
npm run build # 生产构建
|
|
|
|
|
|
npm run preview # 预览构建
|
|
|
|
|
|
npm run test # 运行测试
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 9. 相关文档
|
|
|
|
|
|
|
|
|
|
|
|
- [UI Components](./UI_Components.md)
|
|
|
|
|
|
- [Pages Flow](./Pages_Flow.md)
|
|
|
|
|
|
- [API Consumption](./API_Consumption.md)
|
|
|
|
|
|
- [Backend API Specs](../02_Backend/API_Specs/)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
*本文档基于业务蓝图设计,最后更新: 2026-03-18*
|