BUG1:点击类型卡片的时候,其他类型卡片的操作日志数量为0。

统计计数用了已过滤后的列表 —— applyFilter 里 calcStats(list) 是基于类型筛选后的列表算的,所以点"类型卡片"后其它卡片都变 0

点击点击类型卡片日志数量实际为0的卡片,会让整个统计栏消失,用户没法切回来
统计栏 wx:if="{{filteredLogs.length > 0}}" 守护 —— 当某个类型实际就是 0 条日志时,点它会让整个统计栏消失,用户没法切回来。

Bug 根因 1:统计计数被类型筛选污染

原 applyFilter 先按 activeType 过滤列表,再把这个已被类型筛过的 list 传给 calcStats,所以点"入库"后 stats.outbound/stats.stocktake 等全部变 0。

修复:把类型筛选放在最末段,先用「日期+操作人+星标+关键词」得到 listForStats,统计基于 listForStats 计算;类型筛选只作用于最终展示列表 list。这样 7 个类型卡片始终展示真实数量,与 activeType 解耦。

Bug 根因 2:统计栏 wx:if="{{filteredLogs.length > 0}}" 守卫

当某类型实际就是 0 条时,点该卡片 → filteredLogs.length === 0 → 整条统计栏消失,用户再也点不回其它类型。

修复:改为 wx:if="{{allLogs.length > 0}}"。只要存在日志就始终显示统计栏,确保用户无论点哪个类型都能切回。

改进后的交互:

点"入库"→ 列表只剩入库日志,但7 个卡片数字不变,可继续点"出库"切过去
如果点击的卡片是 0 条 → 列表显示空状态("没有匹配的日志"),但统计栏依然在,可以点其它卡片恢复
日期/操作人/星标/关键词筛选变化时,统计卡片数字会同步收窄(比如选"今天"后只剩今天的入库数),符合直觉

最后修改:2026 年 09 月 22 日
如果觉得我的文章对你有用,请随意赞赏