# shop-app 页面目录约定

## 主包 `pages/`（仅 5 页）

```
pages/
├── index/index.vue      # 首页 Tab
├── category/index.vue   # 分类 Tab
├── cart/index.vue       # 购物车 Tab（按店分组、同店结算）
├── mine/index.vue       # 我的 Tab（我的服务入口）
└── login/index.vue      # 登录
```

## 分包 `subpackage/`（其它业务页一律放这里）

```
subpackage/
├── account/             # 会员 · 我的服务
│   ├── register.vue
│   ├── profile.vue
│   ├── password.vue
│   ├── address-list.vue
│   ├── address-edit.vue
│   ├── entry-apply.vue
│   ├── entry-list.vue
│   ├── entry-detail.vue
│   ├── shop-follow-list.vue
│   ├── message-list.vue       # 站内消息列表
│   └── message-detail.vue     # 消息详情
├── category/            # 分类子页
│   ├── level1.vue
│   └── goods-list.vue
├── goods/               # 商品
│   ├── detail.vue
│   └── reviews.vue
└── search/              # 搜索
    ├── index.vue
    └── result.vue
└── shop/                # 店铺主页
    ├── index.vue
    └── search.vue
└── order/               # 订单确认、我的订单、支付结果
    ├── checkout.vue         # 立即购买 · 单商品
    ├── checkout-cart.vue    # 购物车 · 多商品同店
    ├── pay-result.vue
    ├── list.vue             # 我的订单列表
    ├── detail.vue           # 订单详情
    ├── review-list.vue      # 评价列表
    ├── review-edit.vue      # 发表评价
    ├── aftersale-list.vue   # 退款/售后列表
    ├── aftersale-detail.vue # 售后详情
    └── aftersale-submit.vue # 申请售后
```

后续示例（待建）：

```
subpackage/
├── order/               # 订单、确认订单
├── cart/                # 购物车子页（Tab 仍在 pages/cart）
└── user/                # 地址、设置等（Tab 仍在 pages/mine）
```

## 新建页面三步

1. **建文件**：`subpackage/{模块}/{页面}.vue`
2. **注册路由**：`pages.json` → `subPackages`（勿写入顶部 `pages` 主包列表）
3. **路径常量**：`utils/pageRoute.js` 增加 `PAGE_*`，跳转时引用

## 路由示例

| 常量（pageRoute.js） | 完整路径 |
|----------------------|----------|
| `PAGE_HOME` | `/pages/index/index` |
| `PAGE_GOODS_DETAIL` | `/subpackage/goods/detail` |
| `PAGE_SEARCH_INDEX` | `/subpackage/search/index` |
| `PAGE_CHECKOUT` | `/subpackage/order/checkout` |
| `PAGE_CHECKOUT_CART` | `/subpackage/order/checkout-cart` |
| `PAGE_PAY_RESULT` | `/subpackage/order/pay-result` |
| `PAGE_ORDER_LIST` | `/subpackage/order/list` |
| `PAGE_ORDER_DETAIL` | `/subpackage/order/detail` |
| `PAGE_ORDER_REVIEW_LIST` | `/subpackage/order/review-list` |
| `PAGE_ORDER_REVIEW_EDIT` | `/subpackage/order/review-edit` |
| `PAGE_ORDER_REVIEW_VIEW` | `/subpackage/order/review-view` |
| `PAGE_ORDER_AFTERSALE_LIST` | `/subpackage/order/aftersale-list` |
| `PAGE_ORDER_AFTERSALE_DETAIL` | `/subpackage/order/aftersale-detail` |
| `PAGE_ORDER_AFTERSALE_SUBMIT` | `/subpackage/order/aftersale-submit` |
| `PAGE_SHOP_FOLLOW_LIST` | `/subpackage/account/shop-follow-list` |
| `PAGE_MESSAGE_LIST` | `/subpackage/account/message-list` |
| `PAGE_MESSAGE_DETAIL` | `/subpackage/account/message-detail` |
| `PAGE_SHOP_HOME` | `/subpackage/shop/index` |
| `PAGE_SHOP_SEARCH` | `/subpackage/shop/search` |
| `PAGE_REGISTER` | `/subpackage/account/register` |

配置详见 `pages.json` 中 `subPackages` 与 `preloadRule`。
