diff --git a/reading-platform-frontend/src/api/collections.ts b/reading-platform-frontend/src/api/collections.ts index d4f213b..95a9be8 100644 --- a/reading-platform-frontend/src/api/collections.ts +++ b/reading-platform-frontend/src/api/collections.ts @@ -202,9 +202,21 @@ export function getCollectionStatusInfo(status: string) { return COLLECTION_STATUS_MAP[status] || { label: status, color: 'default' }; } -// 解析适用年级 -export function parseGradeLevels(gradeLevels: string | string[]): string[] { - if (Array.isArray(gradeLevels)) return gradeLevels; +// 解析适用年级(统一处理列表展示与创建时的格式) +export function parseGradeLevels(gradeLevels: string | string[] | undefined): string[] { + if (!gradeLevels) return []; + if (Array.isArray(gradeLevels)) { + if (gradeLevels.length === 0) return []; + // 兼容后端错误格式:["[\"小班\"", " \"中班\""] -> 拼接后解析 + if (gradeLevels[0]?.toString().startsWith('[')) { + try { + return JSON.parse(gradeLevels.join('')); + } catch { + return []; + } + } + return gradeLevels; + } try { return JSON.parse(gradeLevels || '[]'); } catch { diff --git a/reading-platform-frontend/src/views/admin/collections/CollectionDetailView.vue b/reading-platform-frontend/src/views/admin/collections/CollectionDetailView.vue index 84f7772..68e56c8 100644 --- a/reading-platform-frontend/src/views/admin/collections/CollectionDetailView.vue +++ b/reading-platform-frontend/src/views/admin/collections/CollectionDetailView.vue @@ -31,10 +31,14 @@ - + @@ -284,10 +288,12 @@ const handleAddPackage = async () => { addingPackage.value = true; try { - // 获取当前课程包列表 - const currentPackageIds = collection.value?.packages?.map(p => p.id) || []; - // 添加新的课程包ID - const newPackageIds = [...currentPackageIds, selectedPackageId.value]; + // 获取当前课程包列表(去重) + const currentPackageIds = [...new Set(collection.value?.packages?.map(p => p.id) || [])]; + // 添加新的课程包ID(避免重复) + const newPackageIds = currentPackageIds.includes(selectedPackageId.value) + ? currentPackageIds + : [...currentPackageIds, selectedPackageId.value]; await collectionsApi.setCollectionPackages(route.params.id, newPackageIds); message.success('添加成功'); @@ -304,8 +310,8 @@ const handleAddPackage = async () => { // 移除课程包 const handleRemovePackage = async (packageId: number) => { try { - // 获取当前课程包列表,移除指定的课程包 - const currentPackageIds = collection.value?.packages?.map(p => p.id) || []; + // 获取当前课程包列表(去重),移除指定的课程包 + const currentPackageIds = [...new Set(collection.value?.packages?.map(p => p.id) || [])]; const newPackageIds = currentPackageIds.filter(id => id !== packageId); await collectionsApi.setCollectionPackages(route.params.id, newPackageIds); diff --git a/reading-platform-frontend/src/views/admin/collections/CollectionListView.vue b/reading-platform-frontend/src/views/admin/collections/CollectionListView.vue index cad39d4..c5e1a0a 100644 --- a/reading-platform-frontend/src/views/admin/collections/CollectionListView.vue +++ b/reading-platform-frontend/src/views/admin/collections/CollectionListView.vue @@ -6,38 +6,25 @@
- + 草稿 - 待审核 - 已通过 已发布 已下架 - 已驳回
- +