4 Commits

Author SHA1 Message Date
ae23ec42ad fix: 动态分类子类别筛选修复
- 移除showDynamicCategory中的dynamicSubcategoryFilter重置
- 改为在侧边栏点击时重置筛选值
- 点击子类别按钮时保持筛选值不被重置
- 手机、电脑、汽车、摄像等动态分类现在可以正确筛选
2026-04-29 23:03:33 +08:00
080e00b6c6 fix: 修复子类别筛选按钮点击无效问题
- 用containerId判断currentFilter,而非categoryId
- 用previousElementSibling找全部按钮,而非parent.querySelector
- 确保点击子类别后样式正确切换
- 全部按钮和子类别按钮互斥选中状态
2026-04-29 22:58:44 +08:00
6e69f09842 fix: 移除重复的"全部"按钮,只更新样式
- HTML中已有"全部"按钮,不需要重复添加
- renderSubcategoryFilters只渲染子类别按钮
- 同时更新"全部"按钮的选中/未选中样式
- 选中时蓝色背景白色文字,未选中时白色背景灰色文字
2026-04-29 22:51:16 +08:00
2dd45854c1 fix: 后台管理子类别筛选按钮显示选中状态
- 添加"全部"按钮,点击可清除筛选
- 选中状态:蓝色背景白色文字
- 未选中状态:白色背景灰色文字+边框
- 用户点击后能看到明显的视觉变化
- 根据当前筛选值动态更新按钮样式
2026-04-29 22:38:50 +08:00

View File

@@ -534,11 +534,30 @@
container.innerHTML = '';
return;
}
// 获取当前筛选值 - 根据容器ID判断
let currentFilter = '';
if (containerId === 'model-subcategory-filters') currentFilter = modelSubcategoryFilter;
else if (containerId === 'gpu-subcategory-filters') currentFilter = gpuSubcategoryFilter;
else if (containerId === 'cpu-subcategory-filters') currentFilter = cpuSubcategoryFilter;
else if (containerId === 'dynamic-subcategory-filters') currentFilter = dynamicSubcategoryFilter;
// 渲染子类别按钮
container.innerHTML = cat.subcategories.map(sub => `
<button onclick="${filterFunction}('${sub.id}')" class="px-3 py-1 rounded text-sm bg-white border text-gray-600 hover:bg-gray-100">
<i class="${sub.icon} mr-1"></i>${sub.name}
<button onclick="${filterFunction}('${sub.id}')" class="px-3 py-1 rounded text-sm ${currentFilter === sub.id ? 'bg-indigo-600 text-white' : 'bg-white border text-gray-600 hover:bg-gray-100'}">
<i class="${sub.icon || 'ri-folder-line'} mr-1"></i>${sub.name}
</button>
`).join('');
// 更新"全部"按钮的样式 - 它是容器前面的那个按钮
const allBtn = container.previousElementSibling;
if (allBtn && allBtn.tagName === 'BUTTON') {
if (currentFilter === '') {
allBtn.className = 'px-3 py-1 rounded text-sm bg-indigo-600 text-white';
} else {
allBtn.className = 'px-3 py-1 rounded text-sm bg-white border text-gray-600 hover:bg-gray-100';
}
}
}
const colorMap = {
@@ -647,7 +666,7 @@
} else {
// 动态分类
html += `
<a href="#cat-${cat.id}" onclick="showDynamicCategory('${cat.id}')" class="sidebar-link flex items-center gap-2 px-3 py-2 rounded-lg text-gray-300" data-section="cat-${cat.id}">
<a href="#cat-${cat.id}" onclick="dynamicSubcategoryFilter='';showDynamicCategory('${cat.id}')" class="sidebar-link flex items-center gap-2 px-3 py-2 rounded-lg text-gray-300" data-section="cat-${cat.id}">
<i class="${cat.icon}"></i>
<span>${cat.name}管理</span>
</a>
@@ -669,7 +688,8 @@
// 显示动态分类数据
async function showDynamicCategory(categoryId) {
dynamicCategoryId = categoryId;
dynamicSubcategoryFilter = '';
// 不要每次都重置筛选值,除非是新切换的分类
// dynamicSubcategoryFilter = ''; // 移除这行
const cat = categories.find(c => c.id === categoryId);
const fields = cat ? (cat.fields || []) : [];
const fixedFields = ['id', 'created_at', 'updated_at', 'visible', 'raw_text', 'category_id', 'subcategory_id', 'is_pinned', 'images'];