You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
2.9 KiB

  1. # 品种选择功能说明
  2. ## 功能概述
  3. 根据设计图要求,新建了一个专门的品种选择页面,替换了原有的弹窗式品种选择功能。
  4. ## 主要特性
  5. ### 1. 页面布局
  6. - **系统导航栏**:橙色背景,显示"选择品种"标题
  7. - **搜索栏**:支持实时搜索品种名称
  8. - **品种列表**:按字母分组显示,支持滚动
  9. - **字母索引**:右侧固定位置,支持快速跳转到指定字母
  10. ### 2. 功能实现
  11. #### 品种数据获取
  12. - 根据宠物类型(猫/狗)获取对应的品种数据
  13. - 支持从API动态获取品种列表
  14. #### 搜索功能
  15. - 实时搜索,支持中文和英文搜索
  16. - 搜索结果实时更新显示
  17. #### 字母分组
  18. - 自动按品种名称首字母分组
  19. - 支持中文字符的拼音首字母映射
  20. - 按字母顺序排列显示
  21. - 每个字母组内的品种按中文拼音排序
  22. #### 快速导航
  23. - 右侧字母索引支持点击跳转
  24. - 滚动动画效果
  25. - 当前字母高亮显示
  26. - 滚动时自动更新激活的字母索引
  27. ### 3. 页面路由
  28. **新增页面路径**:`/pages/personalCenter/breedSelect`
  29. **页面配置**:
  30. ```json
  31. {
  32. "path": "pages/personalCenter/breedSelect",
  33. "style": {
  34. "navigationBarTitleText": "选择品种",
  35. "navigationBarBackgroundColor": "#FF6B35",
  36. "enablePullDownRefresh": false,
  37. "navigationBarTextStyle": "white"
  38. }
  39. }
  40. ```
  41. ### 4. 使用方式
  42. 在需要选择品种的地方,调用以下代码跳转到品种选择页面:
  43. ```javascript
  44. uni.navigateTo({
  45. url: `/pages/personalCenter/breedSelect?petType=${petType}&selectedBreed=${encodeURIComponent(selectedBreed || '')}`
  46. });
  47. ```
  48. ### 5. 数据传递
  49. - **输入参数**:
  50. - `petType`:宠物类型('cat' 或 'dog')
  51. - `selectedBreed`:当前已选择的品种(可选)
  52. - **输出结果**:
  53. - 选择品种后自动返回上一页
  54. - 自动更新上一页的品种数据
  55. ### 6. 样式特点
  56. - 使用系统导航栏,符合设计图要求
  57. - 简洁的白色背景设计
  58. - 流畅的动画效果
  59. - 响应式布局
  60. - 字母索引激活状态有橙色背景高亮
  61. ## 技术实现
  62. ### 核心组件
  63. - `breedSelect.vue`:品种选择页面主组件
  64. - 修改了 `petBaseInfo.vue`:移除原有弹窗,改为页面跳转
  65. ### 主要方法
  66. - `getPetBreeds()`:获取品种数据
  67. - `groupBreedsByLetter()`:按字母分组
  68. - `onSearchChange()`:搜索处理
  69. - `selectBreed()`:选择品种
  70. - `scrollToLetter()`:字母跳转
  71. - `onScroll()`:滚动事件处理
  72. - `updateCurrentLetter()`:更新当前激活字母
  73. ### 数据映射
  74. - 中文字符到拼音首字母的映射表
  75. - 支持常见的中文品种名称
  76. ## 兼容性
  77. - 完全兼容原有的品种选择逻辑
  78. - 保持数据格式不变
  79. - 支持现有API接口
  80. ## 注意事项
  81. 1. 确保API接口 `getDictList` 正常工作
  82. 2. 品种数据需要包含 `dictLabel` 字段
  83. 3. 页面需要正确配置在 `pages.json`
  84. 4. 建议在真机上测试滚动和点击效果