2026-03-20 19:01:14 +08:00

35 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Search.vue
**路径**`src/views/Search.vue`
**路由**`/search`name: `search`
## 功能用途
搜索页独立实现,按 Pencil 设计稿同文件实现双态页面:
- `p4Kcp`:搜索页(搜索框、搜索记录、推荐标签)
- `mN9t2`:搜索结果页(顶部搜索框 + 结果卡片列表)
- 页面容器改为移动端自适应宽度(`width: 100%`),不再固定 `402px`
## 使用方式
- 访问路由 `/search`
- 在搜索输入框中输入关键词后,手机键盘回车键会显示为“搜索”(`enterkeyhint="search"`
- 输入停止一小段时间后会自动发起请求 `GET /PmEvent/getPmEventPublic`(入参 `q`),并将关键词写入本地搜索历史;当展示搜索结果时会隐藏搜索记录
- **文案国际化**:页面文案与推荐标签使用 `vue-i18n``searchPage.*``zh-CN` / `zh-TW` / `en` / `ko` / `ja`
- **无结果**:接口成功但列表为空时展示 `searchPage.noResults`**不使用示例假数据**;请求失败或业务错误码时展示 `searchPage.errorFailed` 或接口返回的 `msg`
- 搜索前展示 `p4Kcp` 结构:
- 顶部标题、占位、记录/推荐标题等取自 i18n
- 搜索记录卡:从本地真实读取的搜索历史(最多 10 条),每行右侧带关闭图标
- 推荐标签卡:三项标签文案同样走 i18n
- 搜索后切换到 `mN9t2` 结构:
- 顶部同样保留标题与搜索框
- 下方展示结果卡片列表(图标、标题、百分比、时间);无结果时展示空状态文案
- 切换结果态时不会因滚动条变化导致顶部/底部导航轻微位移
- 点击某条结果:`mapEventItemToCard` 后按与 `MarketCard` 相同规则跳转——**多 market** 进 `/event/:id/markets`(可带 `slug` query**单 market** 进 `/trade-detail/:id`query 含 `title``marketInfo``chance``marketId``slug` 等与首页一致)
## 扩展方式
1. **结果跳转**:已与 `MarketCard` 对齐;若后端字段变化可只调 `mapEventItemToCard`
2. **标签联动搜索**:点击标签触发关键词搜索并跳转到结果页。
3. **响应式优化**:可按断点进一步细分字号与间距,但保持 1:1 视觉层级。