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 @@
-
+
+
+
新建套餐
-
+
草稿
- 待审核
- 已通过
已发布
已下架
- 已驳回
-
+
{{ formatPrice(record.price) }}
@@ -57,6 +44,14 @@
查看
编辑
+
+
+ 发布
+
+
+
+ 发布
+
删除
@@ -72,6 +67,14 @@
查看
修改
+
+
+ 发布
+
+
+
+ 发布
+
@@ -91,9 +94,13 @@
查看
+ 编辑
重新发布
+
+ 删除
+
diff --git a/reading-platform-frontend/src/views/admin/courses/CourseDetailView.vue b/reading-platform-frontend/src/views/admin/courses/CourseDetailView.vue
index 2b6206f..f470525 100644
--- a/reading-platform-frontend/src/views/admin/courses/CourseDetailView.vue
+++ b/reading-platform-frontend/src/views/admin/courses/CourseDetailView.vue
@@ -14,7 +14,7 @@