feat: 优化分类页内容管理
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user