ppms-uni-vue3-huertian/src/utils/lesson.ts

94 lines
3.0 KiB
TypeScript

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)} 完成视频确认`
: "确认视频内容",
},
];
};