import { useDayjs } from "@/composables/useDayjs"; import type { FileUploadDestination,LessonTask } from "@/types/api/lesson"; export const extractLessonStage = (lesson: LessonTask) => { const currentStep = lesson?.progressStatus || 0; const stages = { script_creating: currentStep >= 1, // 脚本制作 script_review: currentStep >= 2, // 脚本审核 script_confirmed: currentStep >= 3, // 脚本确认 video_creating: currentStep >= 4, // 视频制作 video_confirmed: currentStep >= 5, // 视频确认 step: 0, }; stages.step = currentStep; return stages; }; export const calcLessonProgress = (lesson: LessonTask) => { if (!lesson) return 0; // 根据 progressStatus 计算进度 // 0-未开始, 1-脚本制作, 2-脚本审核, 3-脚本确认, 4-视频拍摄与制作, 5-视频确认 switch (lesson.progressStatus) { case 5: // 视频确认 return 100; case 4: // 视频拍摄与制作 return 80; case 3: // 脚本确认 return 60; case 2: // 脚本审核 return 40; case 1: // 脚本制作 return 20; case 0: // 未开始 default: return 0; } }; export const getLessonSteps = (lesson: LessonTask, simplify: boolean = false) => { const dayjs = useDayjs(); const dateFormat = "YYYY-MM-DD HH:mm:ss"; const progress = extractLessonStage(lesson); const formatTime = (timestamp?: number | null) => { if (!timestamp || isNaN(timestamp) || timestamp <= 0) return '-'; const date = dayjs(timestamp * 1000); return date.isValid() ? date.format(dateFormat) : '-'; }; return [ { title: progress.script_creating ? "脚本制作" : undefined, description: progress.script_creating ? simplify ? "已完成" : `已于 ${formatTime(lesson.scriptCreateTime)} 完成脚本制作` : "开始制作脚本", }, { title: progress.script_review ? "脚本审核" : undefined, description: progress.script_review ? simplify ? "已完成" : `已于 ${formatTime(lesson.scriptReviewTime)} 完成脚本审核` : "提交脚本审核", }, { title: progress.script_confirmed ? "脚本确认" : undefined, description: progress.script_confirmed ? simplify ? "已完成" : `已于 ${formatTime(lesson.scriptConfirmTime)} 完成脚本确认` : "确认脚本内容", }, { title: progress.video_creating ? "视频拍摄制作" : undefined, description: progress.video_creating ? simplify ? "已完成" : `已于 ${formatTime(lesson.videoCreateTime)} 完成拍摄制作` : "视频拍摄制作", }, { title: progress.video_confirmed ? "视频确认" : undefined, description: progress.video_confirmed ? simplify ? "已完成" : `已于 ${formatTime(lesson.videoConfirmTime)} 完成视频确认` : "确认视频内容", }, ]; };