1. 07 Feb, 2026 5 commits
    • - message 页面:添加下拉刷新功能
      - product-center 页面:保留搜索、tabs、计划书弹窗
      - material-list 页面:保留分类缓存、搜索防抖
      - search 页面:保留双列表、自动 tab 切换、三种状态
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • - 创建通用加载更多列表组件 LoadMoreList
        * 支持自定义头部、列表项、空状态插槽
        * 内置触底加载、加载状态、动画效果
        * 优化动画延迟策略(前10项逐个显示,其余立即显示)
      - 迁移 week-hot-material 页面使用新组件
        * 代码量减少 ~18%
        * 移除重复的分页逻辑和样式
      - 修复样式问题
        * 修复列表项黑色圆点(list-style: none)
        * 使用原生 Less 替代 TailwindCSS(兼容性更好)
      - 创建迁移指南文档
      - 减少 mock 数据延迟(100-300ms)用于开发测试
      
      技术栈: Vue 3 + Composition API + Taro
      收益: 提高代码复用性,降低维护成本,统一用户体验
      hookehuyr authored
    • - 修复搜索页面布局:顶部固定(NavHeader+SearchBar+Tabs+ResultCount)+ 列表滚动
      - 修复搜索分页hasMore计算时机bug(首次搜索显示没有更多的问题)
      - 实现环境判断的Mock数据自动切换
        - 开发环境(pnpm dev:weapp)使用mock数据
        - 生产环境(pnpm build:weapp)使用真实API
        - 使用process.env.NODE_ENV === 'development'自动判断
      - 更新5个页面使用环境变量判断
      - 新增开发工作流文档到lessons-learned.md
      
      修改文件:
      - src/pages/search/index.vue: 修复布局和分页逻辑
      - src/pages/week-hot-material/index.vue: 环境判断
      - src/pages/message/index.vue: 环境判断
      - src/pages/material-list/index.vue: 环境判断
      - src/pages/product-center/index.vue: 环境判断
      - docs/lessons-learned.md: 新增开发工作流章节Mock数据环境自动切换模式
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • - 新增"最新更新"部分,记录计划书功能优化、样式改进、认证优化
      - 更新常见问题快速解决表,新增嵌套弹窗和401重定向问题
      - 更新 Composables 表格,新增 useCollectOperation
      - 更新页面列表,新增消息、产品中心、周热门资料、分类列表页面
      - 更新组件库说明,新增 PlanFields 组件集
      - 同步组件自包含原则到最佳实践部分
      
      🤖 Generated with assistance from Claude Code
      hookehuyr authored
    • - 将边框颜色从 gray-50 更新为 gray-200
      - 更新 PlanPopup 组件类型定义导入路径
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
  2. 06 Feb, 2026 30 commits
    • 使用 Vue provide/inject 模式实现父子弹窗通信:
      - PlanPopup 提供 popupControl 给所有后代组件
      - 子组件注入 popupControl 并在打开/关闭时调用
      - 当子弹窗打开时,自动隐藏父弹窗的底部按钮
      - 子弹窗关闭时,自动恢复父弹窗的底部按钮
      
      影响文件:
      - PlanPopup: 提供 popupControl,添加 childPopupCount 计数器
      - AgePicker/DatePicker/SelectPicker: 注入 popupControl
      - AmountInput: 添加弹窗控制支持
      - index: 小调整
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • - 按钮文本:从返回首页改为完成
      - 按钮逻辑:使用 Taro.navigateBack() 返回上一页
      - 移除 useGo hook 依赖
      
      原因:结果页可能从多个入口进入,返回上一页更符合用户操作流程
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • hookehuyr authored
    • - 将列表容器从 view 改为 scroll-view 组件以支持滚动加载
      - 实现 scroll-view 的 @scrolltolower 事件处理
      - 添加防抖机制避免频繁触发加载(300ms)
      - 移除所有 console.log 调试语句
      - 优化代码结构,移除未使用的函数参数
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • - 增大产品卡片标题字体(28rpx → 32rpx)
      - 调整标签样式(更圆润、优化内边距)
      - 调整文档列表项(图标更大、文件名显示2行)
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • hookehuyr authored
    • 详细记录:
      - 修复401重定向死循环问题
      - 修复登录页返回报错问题
      - 智能跳转优化
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • 核心改动:
      1. 401拦截器智能选择跳转方式
         - 导航栈只有1页时使用 reLaunch(清空栈)
         - 导航栈有多页时使用 redirectTo(替换当前页)
         - 保存当前路径到 router store(用于登录后跳回)
      
      2. NavHeader组件智能返回逻辑
         - 检查导航栈长度
         - 导航栈只有1页时跳转首页(避免返回报错)
         - 导航栈有多页时正常返回
      
      3. 登录页智能跳转
         - 登录成功后读取 router store 保存的路径
         - 有保存路径则跳转回原页面
         - 无保存路径则跳转到首页
      
      解决问题:
      - ✅ 修复401重定向导致的死循环问题
      - ✅ 修复登录页点击返回报错 "navigateBack:fail cannot navigate back at first page"
      - ✅ 提升用户体验(登录后回到原页面而非总是首页)
      
      技术细节:
      - 正确使用 Pinia store:const store = routerStore()
      - 理解导航 API 差异:navigateTo(入栈)、redirectTo(替换)、reLaunch(清空栈)
      
      影响文件:
      - src/utils/request.js - 401拦截器优化
      - src/components/NavHeader.vue - 返回逻辑优化
      - src/pages/login/index.vue - 登录成功后智能跳转
      - components.d.ts - TypeScript声明自动更新
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • - 全局基础字体大小从默认值增加到 30rpx
      - 首页网格导航图标容器从 88rpx 增加到 100rpx
      - 首页网格导航图标大小从 24 增加到 28
      - 首页网格导航标签文字从 26rpx 增加到 28rpx
      - 底部导航栏图标大小从 24 增加到 28
      - 底部导航栏文字从 20rpx 增加到 24rpx
      
      这些改动改善了触摸目标和文字可读性,特别是在移动设备上。
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • - 从 2 列网格布局改为单列水平卡片布局
      - 图片尺寸从 200rpx 增加到 220rpx
      - 使用圆形文字按钮替代 NutUI 按钮组件
      - 优化标签显示逻辑,显示所有标签而非仅前 2 个
      
      技术细节:
      - 布局:flex 布局,图片固定宽度 220rpx
      - 按钮:纯文字按钮,详情为浅蓝背景,计划书为深蓝背景
      - 间距:使用 gap、mt-auto 等优化视觉层次
      
      影响文件:
      - src/pages/product-center/index.vue
      - components.d.ts (自动更新)
      - docs/CHANGELOG.md
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • 移除 h-screen flex-col 布局,改用页面级滚动
      - NavHeader 和搜索栏使用 sticky top-0 固定
      - 列表容器使用页面级滚动(移除 overflow-y-auto)
      - 删除 mock 数据相关代码
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • 更新内容:
      - 添加 mock 数据系统说明
      - 记录滚动加载功能修复
      - 记录技术改进细节
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • 新增功能:
      - 添加 mock 数据系统(src/api/mock/product.js)
        - 生成 100 个测试产品数据
        - 支持 5 个产品分类
        - 支持随机图片(Lorem Picsum 服务)
        - 支持搜索和分类过滤
        - 模拟网络延迟(300-800ms)
      - 在 get_product.js 中添加 mock 数据开关(USE_MOCK_DATA)
        - 方便开发测试和后端联调
      
      修复问题:
      - 修复产品中心页面滚动加载不触发的问题
      - 使用 page-level scroll 替代 container scroll
      - 使用 sticky 定位固定顶部导航和搜索栏
      - useReachBottom 现在可以正确监听页面触底事件
      
      技术细节:
      - 移除 h-screen(小程序不支持 100vh)
      - 使用 sticky top-0 固定顶部区域
      - 列表区域使用页面级滚动
      - 添加调试日志方便排查问题
      
      相关文件:
      - src/api/mock/product.js(新增)
      - src/api/get_product.js(修改)
      - src/pages/product-center/index.vue(修改)
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • hookehuyr authored
    • - 移除 product-center 页面的 scroll-view 组件,改用原生 view
      - 删除冗余的 onScrollToLower 函数
      - 将触底加载逻辑内联到 useReachBottom hook 中
      - 为 product-detail 页面的 PlanFormContainer 添加条件渲染
      - 避免 productDetail 为 null 时的 prop 类型检查错误
      
      影响文件:
      - src/pages/product-center/index.vue
      - src/pages/product-detail/index.vue
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • hookehuyr authored
    • 修复了产品中心页面进入时的 Vue prop 类型验证警告:
      - 明确指定 product prop 的 type 为 Object
      - 将 required 设为 false 并允许 null 默认值
      - 添加空值检查,防止访问 null.form_sn 报错
      - 在 product-center 页面添加 v-if 条件渲染
      
      影响范围:
      - src/components/PlanFormContainer.vue
      - src/pages/product-center/index.vue
      
      相关文档:
      - 更新 API 联调日志(搜索模块完成)
      - 更新 CLAUDE.md(可复用组件说明)
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • - 新增 MaterialCard 和 ProductCard 组件,减少代码重复
      - 重构首页、搜索页、本周热门资料页使用新组件
      - 搜索页面集成真实API,支持分页加载和实时查询
      - 移除测试数据,全部对接后端接口
      
      影响文件:
      - src/components/MaterialCard.vue (新增)
      - src/components/ProductCard.vue (新增)
      - src/pages/index/index.vue
      - src/pages/search/index.vue
      - src/pages/week-hot-material/index.vue
      - components.d.ts
      - docs/CHANGELOG.md
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • 记录本次修复的内容:
      - 问题描述、根本原因
      - 技术方案和实现细节
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • 问题描述:
      - 提交成功后,有时表单会保留上次的数据
      - 表现不稳定:大部分时候正常,偶尔会有残留数据
      - 影响用户体验,需要手动清除数据
      
      根本原因:
      - 依赖 watch 监听器重置表单存在竞态条件
      - watch(visible) 只在弹窗打开时重置,关闭时不重置
      - 组件可能被缓存(v-show),状态未清理
      - 响应式更新时序问题导致残留
      
      解决方案:
      1. 在 submit() 成功后立即调用 resetForm()
      2. 在 close() 关闭弹窗前调用 resetForm()
      3. 优化 watch(visible) 作为安全网,检测残留数据
      4. 为所有模板组件添加 clearErrors() 方法
      
      技术改进:
      - 新增 resetForm() 函数:重置表单和错误状态
      - submit() 中调用 resetForm(),确保提交后立即清空
      - close() 中调用 resetForm(),确保关闭时清空
      - watch(visible) 仅在检测到残留数据时才重置
      - 统一模板组件接口:validate + clearErrors
      
      影响文件:
      - src/components/PlanFormContainer.vue
      - src/components/PlanTemplates/SavingsTemplate.vue
      - src/components/PlanTemplates/LifeInsuranceTemplate.vue
      - src/components/PlanTemplates/CriticalIllnessTemplate.vue
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • - 为计划书表单添加完整验证机制
      - 更新重疾险产品货币为 USD
      - 各个 PlanFields 组件支持错误提示
      - CriticalIllnessTemplate 和 LifeInsuranceTemplate 实现验证逻辑
      - PlanFormContainer 添加提交前验证流程
      
      技术细节:
      - PlanFormContainer 通过 ref 调用子组件 validate 方法
      - 各个表单字段组件添加 error 状态显示
      - 使用 usePlanFormValidation composable 管理验证逻辑
      - 验证失败时阻止提交并显示错误信息
      
      影响文件:
      - src/components/PlanFormContainer.vue
      - src/components/PlanFields/*.vue
      - src/components/PlanTemplates/CriticalIllnessTemplate.vue
      - src/components/PlanTemplates/LifeInsuranceTemplate.vue
      - src/config/plan-templates.js
      - docs/CHANGELOG.md
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • - 创建 form-sn-mapping.md 文档,提供完整的 form_sn 到模版组件的映射关系
      - 创建 form-sn-mapping.json 文件,提供机器可读的映射数据
      - 包含 8 个产品的映射(人寿保险 2 个、重疾保险 3 个、储蓄保险 4 个)
      - 提供后端集成指南,包括 API 返回示例、命名规范、新产品接入流程
      - 明确职责分工:后端只负责返回 form_sn 字段,前端处理具体配置
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • - 创建计划书模块架构和经验教训总结文档
      - 创建快速使用指南(5分钟快速集成)
      - 更新架构文档,明确提取计划三层结构
      - 添加 SavingsTemplate 组件(储蓄型产品模板)
      - 修复 PlanFormContainer 中的模板导入路径
      
      影响文件:
      - docs/lessons-learned/plan-entry-module-summary.md (新增)
      - docs/plan/plan-entry-quick-guide.md (新增)
      - docs/CHANGELOG.md (更新)
      - docs/plan/plan-entry-architecture.md (更新)
      - src/components/PlanTemplates/SavingsTemplate.vue (新增)
      - src/components/PlanFormContainer.vue (修复)
      hookehuyr authored
    • 根据客户需求,移除计划书模版中的保险期间显示字段。
      配置文件中的 insurance_period 配置保留,以备未来需要。
      
      - 移除 LifeInsuranceTemplate 中的保险期间显示
      - 移除 CriticalIllnessTemplate 中的保险期间显示
      - 保留配置文件中的 insurance_period 配置
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • - 修复 AmountInput 组件键盘输入报错问题
      - 修复快速输入时显示 [object Object] 的异常
      - 优化输入体验,引入内部状态分离显示值与模型值
      - 修复标签和币种提示分两行显示的样式问题
      - 统一计划书模版组件间距,增强视觉一致性
      - 为重疾保险模版添加配置缺失提示
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • - 在 commit-msg hook 中添加 plan 到允许的 scope 列表
      - 更新帮助文档,说明 plan 为计划书模块
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • - 添加 JSDoc 注释提升代码可读性
      - 修复 ESLint 错误:isNaN 改为 Number.isNaN
      - 优化 AgePicker 和 DatePicker 组件逻辑
      - 统一组件代码风格和结构
      - 更新 CHANGELOG 记录变更
      
      Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
      hookehuyr authored
    • hookehuyr authored
    • - 添加递归函数支持任意深度嵌套
      - 修复 list 字段无法展开的问题
      - 支持四层嵌套结构
      - 重新生成所有 API 文档
      - 修复 AmountInput ESLint 错误
      hookehuyr authored
  3. 05 Feb, 2026 5 commits