Draft
As a 系统管理员 I want 能够在管理后台的订单管理页面导出订单数据为xlsx格式 so that 进行数据分析和报表制作
[Source: architecture/tech-stack.md#现有技术栈维护]
[Source: architecture/source-tree.md#实际项目结构]
web/src/client/admin/pages/Orders.tsxweb/src/client/api.tspackages/server/src/api/admin/orders/index.ts[Source: docs/prd/epic-005-travel-service-core.md#实际可导出数据字段] 可导出数据字段:
iduser.username, user.phoneroute.name, route.descriptionpassengerCounttotalAmountstatus (待支付、待出发、行程中、已完成、已取消)paymentStatus (待支付、支付中、已支付、支付失败、已退款、已关闭)createdAtupdatedAtpassengerSnapshots (包含姓名、证件类型、证件号码等)[Source: architecture/generic-crud-standards.md#核心组件]
[Source: architecture/admin-dashboard-standards.md#页面开发规范]
[Source: docs/prd/epic-005-travel-service-core.md#技术实现方案]
xlsx 库生成Excel文件pageSize参数支持大量数据查询[Source: docs/prd/epic-005-travel-service-core.md#前端实现细节]
// 订单导出功能实现 - 基于实际Orders.tsx页面结构
const handleExportOrders = async () => {
try {
// 1. 显示导出进度
setExporting(true);
// 2. 获取当前页面筛选条件(基于现有filters和searchParams)
const exportFilters = {
status: filters.status,
paymentStatus: filters.paymentStatus,
search: searchParams.search,
pageSize: 10000 // 使用大pageSize获取所有数据
};
// 3. 调用API获取订单数据
// 4. 使用xlsx库生成Excel文件
// 5. 创建下载链接并触发下载
// 6. 隐藏导出进度
} catch (error) {
// 错误处理
} finally {
setExporting(false);
}
};
[Source: architecture/coding-standards.md#增强特定标准]
tests/ 目录中,按类型分层组织web/tests/unit/client/admin/pages/Orders.test.tsxweb/tests/integration/client/admin/pages/Orders.test.tsxtests/e2e/admin/order-export.spec.ts| Date | Version | Description | Author |
|---|---|---|---|
| 2025-10-25 | 1.0 | 创建故事文档 | Bob (Scrum Master) |
Claude Sonnet 4.5
Ready for Review