diff --git a/reading-platform-frontend/src/api/course.ts b/reading-platform-frontend/src/api/course.ts index c14b0a7..54f303e 100644 --- a/reading-platform-frontend/src/api/course.ts +++ b/reading-platform-frontend/src/api/course.ts @@ -232,7 +232,7 @@ export function submitCourse(id: number | string): Promise { // 撤销审核 (暂时使用更新接口,需要确认后端是否有此功能) export function withdrawCourse(id: number): Promise { - return api.updateCourse(id, { status: "DRAFT" }) as any; + return api.updateCourse(id, { status: "UNSUBMITTED" }) as any; } // 审核通过 @@ -304,6 +304,7 @@ export const COURSE_STATUS_MAP: Record< { label: string; color: string } > = { DRAFT: { label: "草稿", color: "default" }, + UNSUBMITTED: { label: "未提交", color: "geekblue" }, PENDING: { label: "审核中", color: "processing" }, REJECTED: { label: "已驳回", color: "error" }, PUBLISHED: { label: "已发布", color: "success" }, diff --git a/reading-platform-frontend/src/utils/tagMaps.ts b/reading-platform-frontend/src/utils/tagMaps.ts index 469e0c8..7b1d4c8 100644 --- a/reading-platform-frontend/src/utils/tagMaps.ts +++ b/reading-platform-frontend/src/utils/tagMaps.ts @@ -400,6 +400,7 @@ export function getStepTypeStyle(type: string): { // 课程状态映射(英文 → 中文) export const COURSE_STATUS_MAP: Record = { DRAFT: "草稿", + UNSUBMITTED: "未提交", PENDING: "审核中", APPROVED: "已通过", REJECTED: "已驳回", @@ -423,6 +424,7 @@ export const COURSE_STATUS_COLORS: Record< { bg: string; text: string } > = { 草稿: { bg: "#F5F5F5", text: "#666666" }, + 未提交: { bg: "#E8EAF6", text: "#5C6BC0" }, 审核中: { bg: "#E3F2FD", text: "#1976D2" }, 已驳回: { bg: "#FFEBEE", text: "#E53935" }, 已通过:{ bg: "#E8F5E9", text: "#43A047" }, diff --git a/reading-platform-frontend/src/views/admin/courses/CourseDetailView.vue b/reading-platform-frontend/src/views/admin/courses/CourseDetailView.vue index c0c1fd3..611f366 100644 --- a/reading-platform-frontend/src/views/admin/courses/CourseDetailView.vue +++ b/reading-platform-frontend/src/views/admin/courses/CourseDetailView.vue @@ -10,7 +10,7 @@ 数据 - 删除 @@ -509,7 +509,7 @@ const themeTagStyle = computed(() => // 审核中(待审核)不可编辑,仅草稿/已驳回/已下架可编辑 const canEdit = computed(() => { const s = course.value.status; - return s === 'DRAFT' || s === 'REJECTED' || s === 'ARCHIVED'; + return s === 'DRAFT' || s === 'UNSUBMITTED' || s === 'REJECTED' || s === 'ARCHIVED'; }); // 是否有课程介绍内容 @@ -658,6 +658,7 @@ const getStatusStyle = (status: string) => { const translateStatus = (status: string) => { const map: Record = { 'DRAFT': '草稿', + 'UNSUBMITTED': '未提交', 'PENDING': '待审核', 'PUBLISHED': '已发布', 'ARCHIVED': '已下架', diff --git a/reading-platform-frontend/src/views/admin/courses/CourseEditView.vue b/reading-platform-frontend/src/views/admin/courses/CourseEditView.vue index 85d1963..8c9e34c 100644 --- a/reading-platform-frontend/src/views/admin/courses/CourseEditView.vue +++ b/reading-platform-frontend/src/views/admin/courses/CourseEditView.vue @@ -316,9 +316,11 @@ const handleSaveDraft = async () => { // 保存 const handleSave = async (isDraft = false) => { - // 保存前校验当前步骤 - const ok = await validateCurrentStep(); - if (!ok) return; + // 正式保存才校验当前步骤;保存草稿允许未完成配置,不校验 + if (!isDraft) { + const ok = await validateCurrentStep(); + if (!ok) return; + } // 防止重复提交 if (saving.value) return; @@ -351,7 +353,15 @@ const handleSave = async (isDraft = false) => { scheduleRefData: formData.scheduleRefData, // 环创建设 environmentConstruction: formData.environmentConstruction, - }; + } as Record; + + if (isDraft) { + courseData.status = 'DRAFT'; + } else if (currentStep.value === 6) { + // 最后一步「保存/创建」:表单完整且本步校验通过 → 未提交(可提交审核/发布) + courseData.status = 'UNSUBMITTED'; + } + // 编辑态在中间步骤点「保存」:不传 status,避免把未提交误改回草稿 console.log('Saving course data...', { isDraft, isEdit: isEdit.value }); diff --git a/reading-platform-frontend/src/views/admin/courses/CourseListView.vue b/reading-platform-frontend/src/views/admin/courses/CourseListView.vue index 58e1290..1babe60 100644 --- a/reading-platform-frontend/src/views/admin/courses/CourseListView.vue +++ b/reading-platform-frontend/src/views/admin/courses/CourseListView.vue @@ -14,6 +14,7 @@ 草稿 + 未提交 审核中 已驳回 已发布 @@ -91,8 +92,16 @@