fix: 后台管理显示全部数据,包括隐藏的

- 分类API添加all=1参数
- 动态分类数据API添加all=1参数
- 动态分类表格增加显示开关列
- 所有表格的眼睛按钮添加title提示
- 隐藏数据用灰色背景/透明度区分
- showRawData支持动态分类数据
This commit is contained in:
2026-04-11 02:12:55 +08:00
parent dfd7234fd6
commit 7a2b1da9ff
2 changed files with 19 additions and 10 deletions

View File

@@ -29,7 +29,8 @@
"icon": "ri-smartphone-line", "icon": "ri-smartphone-line",
"color": "orange", "color": "orange",
"description": "各品牌手机参数规格", "description": "各品牌手机参数规格",
"order": 4 "order": 4,
"visible": false
}, },
{ {
"id": "laptops", "id": "laptops",

View File

@@ -395,21 +395,28 @@ GPT-4是OpenAI发布的大语言模型参数量约1.8万亿支持128K上
document.getElementById('dynamic-title').textContent = cat.name + '管理'; document.getElementById('dynamic-title').textContent = cat.name + '管理';
// 加载该分类的数据 // 加载该分类的数据(后台显示全部,包括隐藏的)
const res = await fetch(`/api/items/${categoryId}`); const res = await fetch(`/api/items/${categoryId}?all=1`);
const items = await res.json(); const items = await res.json();
if (items.length === 0) { if (items.length === 0) {
document.getElementById('admin-dynamic-table').innerHTML = '<tr><td class="text-center text-gray-400 py-8">暂无数据,点击上方"添加数据"按钮添加</td></tr>'; document.getElementById('admin-dynamic-table').innerHTML = '<tr><td class="text-center text-gray-400 py-8">暂无数据,点击上方"添加数据"按钮添加</td></tr>';
} else { } else {
const keys = Object.keys(items[0]).filter(k => !['id', 'created_at', 'updated_at'].includes(k)); const keys = Object.keys(items[0]).filter(k => !['id', 'created_at', 'updated_at', 'visible', 'raw_text'].includes(k));
let html = `<thead class="bg-gray-50 border-b"><tr>`; let html = `<thead class="bg-gray-50 border-b"><tr>`;
keys.forEach(k => { html += `<th class="px-4 py-3 text-left text-sm font-medium text-gray-600">${k}</th>`; }); keys.forEach(k => { html += `<th class="px-4 py-3 text-left text-sm font-medium text-gray-600">${k}</th>`; });
html += `<th class="px-4 py-3 text-center text-sm font-medium text-gray-600">显示</th>`;
html += `<th class="px-4 py-3 text-center text-sm font-medium text-gray-600">操作</th></tr></thead><tbody>`; html += `<th class="px-4 py-3 text-center text-sm font-medium text-gray-600">操作</th></tr></thead><tbody>`;
items.forEach(item => { items.forEach(item => {
html += `<tr class="border-b hover:bg-gray-50">`; html += `<tr class="border-b hover:bg-gray-50 ${item.visible === false ? 'bg-gray-100 opacity-60' : ''}">`;
keys.forEach(k => { html += `<td class="px-4 py-3 text-gray-600">${item[k] || '-'}</td>`; }); keys.forEach(k => { html += `<td class="px-4 py-3 text-gray-600">${item[k] || '-'}</td>`; });
html += `<td class="px-4 py-3 text-center">
<button onclick="toggleVisible('dynamic', '${item.id}')" class="${item.visible === false ? 'text-gray-400' : 'text-green-600'} hover:opacity-80" title="${item.visible === false ? '点击显示' : '点击隐藏'}">
<i class="${item.visible === false ? 'ri-eye-off-line' : 'ri-eye-line'}"></i>
</button>
${item.raw_text ? `<button onclick="showRawData('${item.id}', 'dynamic')" class="text-gray-400 hover:text-gray-600 ml-1" title="查看原始数据"><i class="ri-file-text-line"></i></button>` : ''}
</td>`;
html += `<td class="px-4 py-3 text-center"> html += `<td class="px-4 py-3 text-center">
<button onclick="editDynamicItem('${item.id}')" class="text-blue-600 hover:text-blue-800 mr-2"><i class="ri-edit-line"></i></button> <button onclick="editDynamicItem('${item.id}')" class="text-blue-600 hover:text-blue-800 mr-2"><i class="ri-edit-line"></i></button>
<button onclick="deleteDynamicItem('${item.id}')" class="text-red-600 hover:text-red-800"><i class="ri-delete-bin-line"></i></button> <button onclick="deleteDynamicItem('${item.id}')" class="text-red-600 hover:text-red-800"><i class="ri-delete-bin-line"></i></button>
@@ -499,7 +506,7 @@ GPT-4是OpenAI发布的大语言模型参数量约1.8万亿支持128K上
// 加载分类列表 // 加载分类列表
async function loadAdminCategories() { async function loadAdminCategories() {
const res = await fetch('/api/categories'); const res = await fetch('/api/categories?all=1');
categories = await res.json(); categories = await res.json();
if (categories.length === 0) { if (categories.length === 0) {
@@ -514,7 +521,7 @@ GPT-4是OpenAI发布的大语言模型参数量约1.8万亿支持128K上
<td class="px-4 py-3 font-medium text-gray-800">${c.name}</td> <td class="px-4 py-3 font-medium text-gray-800">${c.name}</td>
<td class="px-4 py-3 text-gray-600 text-sm">${c.description || '-'}</td> <td class="px-4 py-3 text-gray-600 text-sm">${c.description || '-'}</td>
<td class="px-4 py-3 text-center"> <td class="px-4 py-3 text-center">
<button onclick="toggleVisible('category', '${c.id}')" class="${c.visible === false ? 'text-gray-400' : 'text-green-600'} hover:opacity-80"> <button onclick="toggleVisible('category', '${c.id}')" class="${c.visible === false ? 'text-gray-400' : 'text-green-600'} hover:opacity-80" title="${c.visible === false ? '点击显示' : '点击隐藏'}">
<i class="${c.visible === false ? 'ri-eye-off-line' : 'ri-eye-line'}"></i> <i class="${c.visible === false ? 'ri-eye-off-line' : 'ri-eye-line'}"></i>
</button> </button>
</td> </td>
@@ -539,7 +546,7 @@ GPT-4是OpenAI发布的大语言模型参数量约1.8万亿支持128K上
<td class="px-4 py-3 text-gray-600">${m.context_length || '-'}</td> <td class="px-4 py-3 text-gray-600">${m.context_length || '-'}</td>
<td class="px-4 py-3">${m.is_open_source ? '<span class="text-green-600">开源</span>' : '<span class="text-gray-600">商业</span>'}</td> <td class="px-4 py-3">${m.is_open_source ? '<span class="text-green-600">开源</span>' : '<span class="text-gray-600">商业</span>'}</td>
<td class="px-4 py-3 text-center"> <td class="px-4 py-3 text-center">
<button onclick="toggleVisible('model', '${m.id}')" class="${m.visible === false ? 'text-gray-400' : 'text-green-600'} hover:opacity-80"> <button onclick="toggleVisible('model', '${m.id}')" class="${m.visible === false ? 'text-gray-400' : 'text-green-600'} hover:opacity-80" title="${m.visible === false ? '点击显示' : '点击隐藏'}">
<i class="${m.visible === false ? 'ri-eye-off-line' : 'ri-eye-line'}"></i> <i class="${m.visible === false ? 'ri-eye-off-line' : 'ri-eye-line'}"></i>
</button> </button>
${m.raw_text ? `<button onclick="showRawData('${m.id}', 'model')" class="text-gray-400 hover:text-gray-600 ml-1" title="查看原始数据"><i class="ri-file-text-line"></i></button>` : ''} ${m.raw_text ? `<button onclick="showRawData('${m.id}', 'model')" class="text-gray-400 hover:text-gray-600 ml-1" title="查看原始数据"><i class="ri-file-text-line"></i></button>` : ''}
@@ -565,7 +572,7 @@ GPT-4是OpenAI发布的大语言模型参数量约1.8万亿支持128K上
<td class="px-4 py-3 text-gray-600">${g.architecture || '-'}</td> <td class="px-4 py-3 text-gray-600">${g.architecture || '-'}</td>
<td class="px-4 py-3 text-gray-600">${formatPrice(g)}</td> <td class="px-4 py-3 text-gray-600">${formatPrice(g)}</td>
<td class="px-4 py-3 text-center"> <td class="px-4 py-3 text-center">
<button onclick="toggleVisible('gpu', '${g.id}')" class="${g.visible === false ? 'text-gray-400' : 'text-green-600'} hover:opacity-80"> <button onclick="toggleVisible('gpu', '${g.id}')" class="${g.visible === false ? 'text-gray-400' : 'text-green-600'} hover:opacity-80" title="${g.visible === false ? '点击显示' : '点击隐藏'}">
<i class="${g.visible === false ? 'ri-eye-off-line' : 'ri-eye-line'}"></i> <i class="${g.visible === false ? 'ri-eye-off-line' : 'ri-eye-line'}"></i>
</button> </button>
${g.raw_text ? `<button onclick="showRawData('${g.id}', 'gpu')" class="text-gray-400 hover:text-gray-600 ml-1" title="查看原始数据"><i class="ri-file-text-line"></i></button>` : ''} ${g.raw_text ? `<button onclick="showRawData('${g.id}', 'gpu')" class="text-gray-400 hover:text-gray-600 ml-1" title="查看原始数据"><i class="ri-file-text-line"></i></button>` : ''}
@@ -591,7 +598,7 @@ GPT-4是OpenAI发布的大语言模型参数量约1.8万亿支持128K上
<td class="px-4 py-3 text-gray-600">${c.base_clock_ghz || '-'}-${c.boost_clock_ghz || '-'}GHz</td> <td class="px-4 py-3 text-gray-600">${c.base_clock_ghz || '-'}-${c.boost_clock_ghz || '-'}GHz</td>
<td class="px-4 py-3 text-gray-600">${formatPrice(c)}</td> <td class="px-4 py-3 text-gray-600">${formatPrice(c)}</td>
<td class="px-4 py-3 text-center"> <td class="px-4 py-3 text-center">
<button onclick="toggleVisible('cpu', '${c.id}')" class="${c.visible === false ? 'text-gray-400' : 'text-green-600'} hover:opacity-80"> <button onclick="toggleVisible('cpu', '${c.id}')" class="${c.visible === false ? 'text-gray-400' : 'text-green-600'} hover:opacity-80" title="${c.visible === false ? '点击显示' : '点击隐藏'}">
<i class="${c.visible === false ? 'ri-eye-off-line' : 'ri-eye-line'}"></i> <i class="${c.visible === false ? 'ri-eye-off-line' : 'ri-eye-line'}"></i>
</button> </button>
${c.raw_text ? `<button onclick="showRawData('${c.id}', 'cpu')" class="text-gray-400 hover:text-gray-600 ml-1" title="查看原始数据"><i class="ri-file-text-line"></i></button>` : ''} ${c.raw_text ? `<button onclick="showRawData('${c.id}', 'cpu')" class="text-gray-400 hover:text-gray-600 ml-1" title="查看原始数据"><i class="ri-file-text-line"></i></button>` : ''}
@@ -958,6 +965,7 @@ GPT-4是OpenAI发布的大语言模型参数量约1.8万亿支持128K上
if (type === 'model') endpoint = `/api/models/${id}`; if (type === 'model') endpoint = `/api/models/${id}`;
else if (type === 'gpu') endpoint = `/api/gpus/${id}`; else if (type === 'gpu') endpoint = `/api/gpus/${id}`;
else if (type === 'cpu') endpoint = `/api/cpus/${id}`; else if (type === 'cpu') endpoint = `/api/cpus/${id}`;
else if (type === 'dynamic') endpoint = `/api/items/${dynamicCategoryId}/${id}`;
try { try {
const res = await fetch(endpoint); const res = await fetch(endpoint);