2025-07-03 05:51:09 +08:00

90 lines
2.7 KiB
TypeScript

import {
TaskObject,
SketchItem,
VideoItem,
getRandomMockData
} from './constants';
// 当前选择的mock数据
let selectedMockData = getRandomMockData();
// 模拟接口请求 获取任务详情
export const getTaskDetail = async (taskId: string): Promise<TaskObject> => {
// 每次获取任务详情时重新随机选择数据
selectedMockData = getRandomMockData();
const data: TaskObject = {
projectId: selectedMockData.detail.projectId,
projectName: selectedMockData.detail.projectName,
taskId: taskId,
taskName: selectedMockData.detail.taskName,
taskDescription: selectedMockData.detail.taskDescription,
taskStatus: selectedMockData.detail.taskStatus,
taskProgress: 0,
mode: selectedMockData.detail.mode,
resolution: selectedMockData.detail.resolution.toString(),
};
return data;
};
// 模拟接口请求 每次获取一个分镜草图 轮询获取
export const getTaskSketch = async (
taskId: string,
onProgress: (sketch: SketchItem, index: number) => void
): Promise<void> => {
const sketchData = selectedMockData.sketch;
const totalSketches = sketchData.length;
// 模拟分批获取分镜草图
for (let i = 0; i < totalSketches; i++) {
await new Promise(resolve => setTimeout(resolve, 2000)); // 模拟2秒延迟
const newSketch: SketchItem = {
id: `sketch-${i}`,
url: sketchData[i].url,
script: sketchData[i].script,
status: 'done'
};
onProgress(newSketch, i);
}
};
// 模拟接口请求 每次获取一个角色 轮询获取
export const getTaskRole = async (taskId: string): Promise<void> => {
await new Promise(resolve => setTimeout(resolve, 2000)); // 模拟2秒延迟
};
// 模拟接口请求 获取背景音
export const getTaskBackgroundAudio = async (taskId: string): Promise<void> => {
await new Promise(resolve => setTimeout(resolve, 2000)); // 模拟2秒延迟
};
// 模拟接口请求 获取最终成品
export const getTaskFinalProduct = async (taskId: string): Promise<void> => {
await new Promise(resolve => setTimeout(resolve, 2000)); // 模拟2秒延迟
};
// 模拟接口请求 每次获取一个分镜视频 轮询获取
export const getTaskVideo = async (
taskId: string,
sketchCount: number,
onProgress: (video: VideoItem, index: number) => void
): Promise<void> => {
const videoData = selectedMockData.video;
const totalVideos = videoData.length;
// 模拟分批获取分镜视频
for (let i = 0; i < totalVideos; i++) {
await new Promise(resolve => setTimeout(resolve, 5000)); // 模拟5秒延迟
const newVideo: VideoItem = {
id: `video-${i}`,
url: videoData[i].url,
script: videoData[i].script,
status: 'done'
};
onProgress(newVideo, i);
}
};