feat: 优化分类页内容管理

This commit is contained in:
R524809
2026-06-15 15:39:46 +08:00
parent 25a37fc5e2
commit 11469f7dca
5 changed files with 47 additions and 11 deletions
@@ -13,6 +13,8 @@ type WorksheetItem = {
tagsText: string;
status: 'draft' | 'active' | 'hidden';
sortOrder: number;
downloads: number;
likes: number;
updatedAt: string;
// display helpers
ageBand: string;
@@ -48,9 +50,24 @@ const STATUS_CONFIG: Record<
string,
{ text: string; action: string; target: string; actionType: string }
> = {
draft: { text: '草稿', action: '激活', target: 'active', actionType: 'green' },
active: { text: '线上', action: '下架', target: 'hidden', actionType: 'default' },
hidden: { text: '已隐藏', action: '恢复', target: 'draft', actionType: 'primary' },
draft: {
text: '草稿',
action: '激活',
target: 'active',
actionType: 'green',
},
active: {
text: '线上',
action: '下架',
target: 'hidden',
actionType: 'default',
},
hidden: {
text: '已隐藏',
action: '恢复',
target: 'draft',
actionType: 'primary',
},
};
function formatWorksheet(raw: Record<string, unknown>): WorksheetItem {
@@ -70,9 +87,13 @@ function formatWorksheet(raw: Record<string, unknown>): WorksheetItem {
ageMax,
difficulty,
tags: Array.isArray(raw.tags) ? raw.tags.map(String) : [],
tagsText: Array.isArray(raw.tags) ? raw.tags.map(String).join('、') : '',
tagsText: Array.isArray(raw.tags)
? raw.tags.map(String).join('、')
: '',
status: status as WorksheetItem['status'],
sortOrder: Number(raw.sortOrder) || 0,
downloads: Number(raw.downloads) || 0,
likes: Number(raw.likes) || 0,
updatedAt: raw.updatedAt ? String(raw.updatedAt) : '',
ageBand: `${ageMin}-${ageMax}`,
difficultyLabel: DIFFICULTY_LABELS[difficulty] || '基础',
@@ -120,16 +141,21 @@ Page({
try {
const result = await callCloudFunction<WorksheetItem[]>(
'worksheetsQuery',
{ category: this.data.activeCategoryId },
{
category: this.data.activeCategoryId,
rawStats: true,
},
);
if (!result.success) {
throw new Error(result.message || '查询失败');
}
const worksheets = (result.data || []).map((raw) =>
formatWorksheet(raw as unknown as Record<string, unknown>),
);
const worksheets = (result.data || [])
.map((raw) =>
formatWorksheet(raw as unknown as Record<string, unknown>),
)
.sort((a, b) => b.downloads - a.downloads);
this.setData({
loading: false,
@@ -191,8 +217,7 @@ Page({
await this.loadWorksheets();
} catch (error) {
wx.showToast({
title:
error instanceof Error ? error.message : '操作失败',
title: error instanceof Error ? error.message : '操作失败',
icon: 'none',
});
} finally {