2026-06-23.md
1.41 KB
2026-06-23 工作日志
悬浮球快照方案 — 完整改造方案
分析了 exercising 健身小程序中 trainingStore(Pinia)被三个功能模块(动作训练、超级组、每日模板编辑/修改)共享导致的数据冲突问题。
问题根因
-
grid-cell-content-popup.vue的编辑按钮 (templateEdit) 调用loadDailyTemplateForEdit()覆盖 store -
wode-xinjian-moban.vue的goBack()/handleSave()调用clearTrainingStore()清空 store -
meiri-moban-xiugai.vue的修改弹窗(弹窗模式)已通过快照解决,但编辑和新建是页面跳转模式,快照来不及归还
最终方案:悬浮球持有快照
核心思路:最小化时将 trainingStore 全量深拷贝到共享 reactive 模块 trainingSnapshot(存在 JS 堆内存,非 Pinia),悬浮球由此独立控制显隐和回显。
改动清单:
-
新建
sheep/store/trainingSnapshot.js— 共享 reactive 快照模块 -
重写
pages/TrainingFloating.vue— 自有 showBall + 回显逻辑 + 计时器补偿 -
修改
pages4/.../xunji-dongzuo-lianxi.vueopenMin() — 保存快照到共享模块 -
删除
sheep/store/trainingStore.jsclearTrainingStore() 中this.min = false - 不改 grid-cell-content-popup.vue 和 wode-xinjian-moban.vue
- 修复 meiri-moban-xiugai.vue 中 Object.assign → $patch
总计约 113 行,4 文件改动,2 文件不动。