diff --git a/components-diy/diy-category-item.vue b/components-diy/diy-category-item.vue index 76ab68e..4fe9db6 100644 --- a/components-diy/diy-category-item.vue +++ b/components-diy/diy-category-item.vue @@ -651,10 +651,9 @@ export default { return this.value.template == 1 && this.value.level == 3; }, /** - * 模板1三级分类: 渲染所有二级分类(包括无商品的空分类) - * 不再按"是否有商品"过滤, 保证一级分类下的二级分类全部显示, - * 避免 10 个二级分类只显示 8 个(2 个被当成空分类过滤掉)的问题 - * 加载中(template1ChildLoading[id] === true)的二级分类暂不渲染, 避免闪烁 + * 模板1三级分类: 只渲染"有商品"的二级分类 + * 无商品的二级分类整块(标题 + 网格)都不渲染; 加载中的二级分类也暂不渲染(避免闪烁) + * 判定时机: 该二级分类加载完成(template1ChildLoading[id] === false)且商品列表非空 */ filteredGroupedChildren() { if (!this.isGroupedDisplay) return []; @@ -662,8 +661,9 @@ export default { return this.category.child_list.filter(one => { // 还在加载中: 暂不渲染(避免闪烁) if (this.template1ChildLoading[one.category_id]) return false; - // 加载完成(无论是否有商品)都渲染, 无商品时显示空状态 - return true; + // 加载完成: 只有该二级分类下有商品时才显示, 无商品则整块隐藏 + const list = this.template1ChildGoodsList[one.category_id]; + return !!(list && list.length); }); }, /**