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

2.2 KiB
Raw Blame History

Search.vue

路径src/views/Search.vue
路由/searchname: search

功能用途

搜索页独立实现,按 Pencil 设计稿同文件实现双态页面:

  • p4Kcp:搜索页(搜索框、搜索记录、推荐标签)
  • mN9t2:搜索结果页(顶部搜索框 + 结果卡片列表)
  • 页面容器改为移动端自适应宽度(width: 100%),不再固定 402px

使用方式

  • 访问路由 /search
  • 在搜索输入框中输入关键词后,手机键盘回车键会显示为“搜索”(enterkeyhint="search"
  • 输入停止一小段时间后会自动发起请求 GET /PmEvent/getPmEventPublic(入参 q),并将关键词写入本地搜索历史;当展示搜索结果时会隐藏搜索记录
  • 文案国际化:页面文案与推荐标签使用 vue-i18nsearchPage.*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/:idquery 含 titlemarketInfochancemarketIdslug 等与首页一致)

扩展方式

  1. 结果跳转:已与 MarketCard 对齐;若后端字段变化可只调 mapEventItemToCard
  2. 标签联动搜索:点击标签触发关键词搜索并跳转到结果页。
  3. 响应式优化:可按断点进一步细分字号与间距,但保持 1:1 视觉层级。