2026-06-23.md 1.41 KB

2026-06-23 工作日志

悬浮球快照方案 — 完整改造方案

分析了 exercising 健身小程序中 trainingStore(Pinia)被三个功能模块(动作训练、超级组、每日模板编辑/修改)共享导致的数据冲突问题。

问题根因

  • grid-cell-content-popup.vue 的编辑按钮 (templateEdit) 调用 loadDailyTemplateForEdit() 覆盖 store
  • wode-xinjian-moban.vuegoBack() / handleSave() 调用 clearTrainingStore() 清空 store
  • meiri-moban-xiugai.vue 的修改弹窗(弹窗模式)已通过快照解决,但编辑和新建是页面跳转模式,快照来不及归还

最终方案:悬浮球持有快照

核心思路:最小化时将 trainingStore 全量深拷贝到共享 reactive 模块 trainingSnapshot(存在 JS 堆内存,非 Pinia),悬浮球由此独立控制显隐和回显。

改动清单:

  1. 新建 sheep/store/trainingSnapshot.js — 共享 reactive 快照模块
  2. 重写 pages/TrainingFloating.vue — 自有 showBall + 回显逻辑 + 计时器补偿
  3. 修改 pages4/.../xunji-dongzuo-lianxi.vue openMin() — 保存快照到共享模块
  4. 删除 sheep/store/trainingStore.js clearTrainingStore() 中 this.min = false
  5. 不改 grid-cell-content-popup.vue 和 wode-xinjian-moban.vue
  6. 修复 meiri-moban-xiugai.vue 中 Object.assign → $patch

总计约 113 行,4 文件改动,2 文件不动。