- 09 Feb, 2026 19 commits
-
-
- 升级 @nutui/nutui-taro: 4.3.13 → 4.3.14 - 升级 Taro 框架: 4.1.9 → 4.1.11 - 所有 @tarojs/* 核心包升级 - 新增 @tarojs/service 依赖 - 更新 pnpm-lock.yaml 改进内容: - NutUI 4.3.14 的 bug 修复和性能优化 - Taro 4.1.11 的小程序平台兼容性改进 - 更好的 TypeScript 支持 影响文件: - package.json - pnpm-lock.yaml Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
hookehuyr authored
-
将 Mock 数据相关文档从 docs/api-specs/数据文档/ 移动到 docs/guides/数据文档/ 变更内容: - 重命名: Mock 数据完整总结.md - 重命名: Mock 数据设置指南.md Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
将文档移动到更合理的目录位置: - 移动 GlobalPopupManager-弹窗管理器.md 到 docs/guides/ - 移动 lessons-learned.md 到 docs/lessons-learned/ 子目录 - 提升文档组织清晰度 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
- 新增 2026-02-09 变更记录 - 记录 API 集成日志更新(3个接口联调完成) - 记录经验教训文档更新(新增复杂功能修改流程) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
API 集成日志: - 完成 3 个待联调接口联调(addAPI, weekHotAPI, fileListAPI) - 新增待联调接口快速清单(便于快速定位) - 新增 myPlanListAPI 接口定义(我的计划书列表) - 更新进度追踪:29个接口,82.8% 已完成 经验教训文档: - 新增"复杂功能修改的系统性问题"章节 - 记录计划书模块开发中的系统性问题 - 提供系统化修改流程解决方案(5步完整流程) - 包含反面案例和正面案例对比 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
- 删除 80+ 行自定义 Less 样式代码 - 使用 Tailwind CSS 工具类实现现代化 UI - 添加磨砂玻璃效果和动态流光背景 - 优化布局层次和视觉层次 - 改进光标动画效果 - 统一使用项目样式规范(Tailwind 优先) 优化收益: - 减少代码量,提高可维护性 - 视觉效果更现代化 - 符合项目 Tailwind 优先原则 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
- 删除 AgePicker.vue(已被 AgePickerGlobal.vue 替代) - 删除 DatePicker.vue(已被 DatePickerGlobal.vue 替代) - 删除 SelectPicker.vue(已被 SelectPickerGlobal.vue 替代) 所有模板文件已统一使用 Global 版本组件
hookehuyr authored -
- 创建 7 个分类目录:navigation, list, forms, cards, documents, plan, icons - 移动所有组件到对应功能分类目录 - 更新所有组件导入路径(41 个文件) - 删除 3 个未使用组件(qrCode, FilterTabs.example, PlanPopup) - 修复组件内部和页面的导入路径 代码行变化:-7905 +147
hookehuyr authored -
- 为所有 PlanFields 选择器添加 close-on-click-overlay="false" - 添加 catch-move 防止触摸事件穿透 - 优化弹窗交互体验,避免误操作关闭 影响文件: - src/components/PlanFields/AgePicker.vue - src/components/PlanFields/AgePickerGlobal.vue - src/components/PlanFields/DatePicker.vue - src/components/PlanFields/DatePickerGlobal.vue - src/components/PlanFields/SelectPicker.vue - src/components/PlanFields/SelectPickerGlobal.vue - src/components/PlanPopup/index.vue Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
- 删除未使用组件: indexNav, qrCodeSearch, time-picker-data, PosterBuilder - 删除旧版计划组件: PlanSchemes (SchemeA, SchemeB, PlanPopup) - 删除重复组件: 旧版 SavingsTemplate 和 AmountInput - 统一使用 AmountKeyboard 作为金额输入组件 - 总计删除 13 个文件,约 1500-2000 行代码
hookehuyr authored -
- 所有输入框组件添加灰色背景(bg-gray-50) - AmountInput 和 AmountKeyboard 添加数字输入震动反馈 - 修复金额显示自动添加小数点问题(输入12显示12而非12.00) - 优化 AmountKeyboard 弹窗和键盘打开时的值初始化 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
- 将 PlanPopup 引用路径从 PlanPopup/index.vue 更新为 PlanSchemes/PlanPopup.vue - 同步更新组件类型声明
hookehuyr authored -
hookehuyr authored
-
- 记录取消操作显示异常的修复 - 记录输入限制的用户体验优化 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
Bug 修复: - 修复点击遮罩关闭后显示 "123." 等不完整值的问题 - 在 watch(showKeyboard) 中添加逻辑,键盘关闭时清除临时输入值 - 优化 displayValue 计算属性,确保始终显示格式化后的金额 用户体验优化: - 添加输入限制的震动反馈(Taro.vibrateShort) - 添加 Toast 轻提示提示用户输入限制 - 重复输入小数点时提示"只能输入一个小数点" - 超过2位小数时提示"最多只能输入2位小数" 影响文件: - src/components/PlanFields/AmountKeyboard.vue Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
hookehuyr authored
-
- 08 Feb, 2026 17 commits
-
-
将独立的接口联调文档合并到统一的 API 集成日志中 变更内容: - 将计划书模块接口文档合并到 docs/api-docs/API 集成日志.md - 新增计划书模块(2个接口) • 接口1: 提交计划书表单(待后端开发) • 接口2: 查询计划书状态(待后端开发) - 更新总体进度:27 → 29 个接口 - 更新版本号:v2.5 → v2.6 - 删除独立的 docs/接口联调注意事项.md 文档规范: - 遵循项目统一的接口文档结构 - 所有接口集成记录集中在 API 集成日志中维护 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
修复问题: - 修复表单提交时数据为空的问题(submit 中立即重置导致) - 添加金额字段格式化显示(分 → 元),便于调试查看 代码改动: - 移除 submit() 中的 resetForm() 调用,让父组件先处理数据 - 新增 formatAmounts() 函数转换金额单位(分 → 元) - 优化日志输出:同时显示格式化数据(元)和原始数据(分) - 表单重置逻辑统一由 close() 函数处理 文档新增: - docs/接口联调注意事项.md - 完整的 API 联调指南 - 数据单位规范(金额字段单位为"分") - 接口联调流程和注意事项 - 金额转换工具函数 - 常见问题和解决方案 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
创建 AmountKeyboard 组件替代 AmountInput 输入框,实现数字键盘交互: 核心功能: - 点击弹出数字键盘(右列模式,包含小数点) - 金额显示弹窗(渐变背景 + 装饰圆圈) - 输入验证(1个小数点,2位小数) - 千分位分隔符显示 - 集成 GlobalPopupManager 解决嵌套弹窗层级 技术实现: - nut-number-keyboard @input 事件(单字符传递) - 字符累加逻辑:String(inputValue) + String(val) - 输入验证:split('.') 检查小数点和小数位数量 - toFixed(2) 确保保存格式一致性 - watch(showKeyboard) 同步键盘和弹窗状态 问题解决: 1. Vue渲染错误:使用 kebab-case 组件名 2. 键盘被底部按钮遮挡:使用 GlobalPopupManager 3. 单字符输入:实现字符累加 4. 字符串相加变数字相加:显式 String() 转换 5. 输入验证阻塞:初始化为空字符串 6. 保存格式问题:使用 toFixed(2) 7. 自动关闭bug:时间判断过滤 8. 状态同步:watch 同步关闭金额弹窗 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>hookehuyr authored -
新增功能: - 创建 GlobalPopupManager 全局弹窗管理器 - 实现 useParentPopup 和 useGlobalPopup 接口 - 支持多弹窗同时打开和多层嵌套 新增组件: - PlanPopupNew: 支持全局弹窗管理的父弹窗组件 - DatePickerGlobal: 使用全局管理器的日期选择器 - SelectPickerGlobal: 使用全局管理器的下拉选择器 - AgePickerGlobal: 使用全局管理器的年龄选择器 技术方案: - 子弹窗打开时自动隐藏父弹窗底部按钮 - 所有子弹窗关闭时自动恢复底部按钮 - 使用 watch 监听全局状态,解决时序问题 - 支持多个子弹窗同时打开 迁移工作: - 更新 PlanFormContainer 使用 PlanPopupNew - 更新所有计划模板使用 Global 版本字段组件 文档: - 创建 GlobalPopupManager 技术文档 - 包含架构设计、API 文档、使用指南 影响文件: - src/components/PlanFormContainer.vue (修复结束标签错误) - src/components/PlanPopupNew.vue (新组件) - src/components/PlanFields/GlobalPopupManager.js (核心管理器) - src/components/PlanFields/DatePickerGlobal.vue (新组件) - src/components/PlanFields/SelectPickerGlobal.vue (新组件) - src/components/PlanFields/AgePickerGlobal.vue (新组件) - src/components/PlanTemplates/*.vue (更新导入) - docs/GlobalPopupManager-弹窗管理器.md (技术文档) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
修复问题: - 表单关闭后再次打开数据依然存在 - 第一次点击确认按钮没有值 - 输入过程中数据意外丢失 问题根因: - Vue 3 v-model 每次更新都创建新对象 - reactive() 只在初始化时读取 props - watch 监听策略不当导致数据丢失 解决方案: - 区分"重置"和"正常更新" - 重置判断:从有数据 → 空对象 - 正常更新:只合并新字段,不删除已有字段 影响文件: - PlanFormContainer.vue - 父组件,使用 nextTick 延迟重置 - LifeInsuranceTemplate.vue - 子组件,优化 watch 策略 - CriticalIllnessTemplate.vue - 子组件,优化 watch 策略 - SavingsTemplate.vue - 子组件,优化 watch 策略 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
- 移除年龄联动相关的所有 console.log 调试语句 - 更新 CHANGELOG.md 记录年龄与出生年月日联动优化 影响文件: - src/components/PlanFields/AgePicker.vue - src/components/PlanTemplates/LifeInsuranceTemplate.vue - src/components/PlanTemplates/CriticalIllnessTemplate.vue - src/components/PlanTemplates/SavingsTemplate.vue - docs/CHANGELOG.md
hookehuyr authored -
- 调整字段顺序:年龄在前,出生年月日在后 - 实现年龄 → 出生年月日自动计算(默认1月1日) - 保留出生年月日 → 年龄双向联动 - 简化占位符文案,避免用户理解混乱 - 修复 AgePicker 组件不触发 change 事件的问题 - 添加调试日志便于排查问题 影响文件: - src/components/PlanFields/AgePicker.vue: 添加 change 事件支持 - src/components/PlanTemplates/LifeInsuranceTemplate.vue: 调整逻辑 - src/components/PlanTemplates/CriticalIllnessTemplate.vue: 调整逻辑 - src/components/PlanTemplates/SavingsTemplate.vue: 调整逻辑 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
### 新增功能 - LoadMoreList 组件支持动态高度测量 - 使用 Taro.createSelectorQuery() 运行时测量 - 新增 hasFooter prop(TabBar 页面) - 新增 extraBottomSpace prop(固定按钮等) - 支持响应式监听 props 变化 - 支持页面生命周期重新测量(useDidShow) - 自动处理底部安全区域 ### 修复 - 修复 4 个页面的双重滚动问题 - feedback-list, favorites, material-list, product-center - 添加页面容器 height: 100vh 和 overflow: hidden - 移除所有调试 console.log,保持代码整洁 ### 配置更新 - feedback-list: extraBottomSpace=280(固定按钮) - favorites: hasFooter=false - material-list: hasFooter=false - product-center: hasFooter=false - search: hasFooter=false - message: hasFooter=false - week-hot-material: hasFooter=false ### 文档 - CHANGELOG.md: 记录双重滚动问题修复 - lessons-learned.md: 添加坑 5(双重滚动问题) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
- 更新当前实现状态,说明LoadMoreList已使用scroll-view - 补充缺少的功能清单(scrollTop prop、@scroll事件等) - 明确不实施原因:需求不明确、技术储备充足、优先级评估 - 新增实施时机判断标准和启动条件 - 新增工作量评估(5.5-9.5小时) - 新增风险评估(5个风险项及缓解措施) - 新增实施建议(技术验证、分阶段实施、充分测试) - 添加文档维护记录 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
更新内容: - 记录 LoadMoreList 组件底部 padding 堆叠问题的修复 - 记录搜索页滚动加载优化 - 记录 LESS 修饰符类样式堆叠坑的经验教训 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
问题描述: - .load-more-content 基础类有 padding: 32rpx(所有边) - .load-more-content.scrollable 修饰符类添加 padding-bottom - 两者堆叠导致底部 padding ≈ 192rpx + safe-area(过高) 解决方案: - 修改 .scrollable 修饰符类,从只添加 padding-bottom 改为覆盖整个 padding 属性 - 使用 padding: 32rpx 32rpx calc(160rpx + env(safe-area-inset-bottom)) - 防止与基础类的 padding 堆叠 影响文件: - src/components/LoadMoreList/index.vue: 修复 padding 堆叠问题 - docs/lessons-learned.md: 添加 LESS 修饰符类样式堆叠坑的记录 - src/pages/search/index.config.js: 添加 disableScroll 配置 - src/pages/search/index.vue: 简化 shouldEnableScrollLoad 逻辑 测试: - ✅ material-list 页面底部 padding 正常 - ✅ search 页面底部 padding 正常 - ✅ 所有使用 LoadMoreList 的页面都受益于这个修复 经验教训: ⚠️ LESS 嵌套选择器中,修饰符类的属性会与基础类堆叠 ✅ 需要覆盖基础类的 padding/margin/border 等属性时,重写整个属性而不是只写子属性 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
hookehuyr authored
-
## 新增功能 - 创建事件总线工具 (src/utils/eventBus.js) - 支持跨页面事件通信,无需直接依赖 ## 页面修改 - feedback-list 页面:监听反馈提交事件并刷新列表 - favorites 页面:监听收藏更新事件并刷新列表 - feedback 页面:提交成功后发送事件 ## Composable 修改 - useCollectOperation:收藏操作成功后发送事件 ## 问题修复 - 修复 favorites 和 feedback-list 页面使用 useDidShow 导致的列表意外刷新问题 - 改用事件总线模式,仅在特定事件触发时刷新列表 - LoadMoreList 页面仅使用 useLoad 进行一次性初始化 ## 文档更新 - 更新 docs/lessons-learned.md,新增"跨页面通信"章节 - 记录事件总线实现模式和 useDidShow 陷阱解决方案 ## 技术方案 - 跨页面操作:使用事件总线(收藏、提交反馈) - 单页面操作:使用本地更新(删除收藏) - LoadMoreList 页面:useLoad + 事件总线,避免 useDidShow Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
- 添加"文档重组:全面中文化"条目 - 清理重复的 LoadMoreList 迁移记录 - 记录文档文件名全面改为中文的变更 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
- 删除旧版英文/混合命名文档,迁移到中文文件名 - 重新组织 docs/guides/ 和 docs/reports/ 目录 - 更新 docs/README.md 以反映新结构 - 删除已废弃的 form-sn-mapping.json(配置已迁移到代码) 影响范围: - 文档重组(guides、reports、mcp、plan 目录) - 新增中文命名文档(API 使用指南、变更日志检查等) - 更新文档索引和交叉引用 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
- 添加文档整理条目 - 记录文档结构重组和中文命名规则 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored -
**主要变更**: - 将组件相关文档移动到 guides/components/ - LoadMoreList 迁移指南.md - LoadMoreList 完整使用指南.md - 将 API/Mock 相关文档移动到 api-specs/数据文档/ - Mock 数据完整总结.md - Mock 数据设置指南.md - API 集成日志.md - 将测试相关文档移动到相应目录 - 滚动加载测试指南.md → guides/testing/ - 计划测试实施报告.md → reports/测试报告/ - 更新所有文档中的相对路径引用 - 添加文档命名使用中文规则到全局规则 **详细信息**: - **影响文件**: docs/ 目录下所有文档 - **技术栈**: 文档组织 - **测试状态**: N/A - **备注**: 提升文档可维护性和查找效率 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
hookehuyr authored
-
- 07 Feb, 2026 4 commits
-
-
hookehuyr authored
-
- 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
-