Files
FiDA_Front/src/components/Canvas/FlowCanvas/manager/GenerateManager.ts

79 lines
2.2 KiB
TypeScript
Raw Normal View History

2026-03-11 16:57:27 +08:00
import { getTaskidResult } from '@/api/flow-canvas'
2026-03-13 10:09:15 +08:00
import { ElMessage } from 'element-plus'
2026-03-13 11:24:29 +08:00
2026-03-12 17:07:04 +08:00
// interface NodeOptions {
// }
2026-03-11 16:57:27 +08:00
export class GenerateManager {
stateManager: any
taskIds: string[] = []
2026-03-12 17:07:04 +08:00
getTaskIdsImgTime: any
2026-03-11 16:57:27 +08:00
constructor(options) {
this.stateManager = options.stateManager;
}
/** 删除taskId */
deleteTaskId(taskId: string) {
}
/** 添加taskId */
2026-03-12 17:07:04 +08:00
addTaskId(generateData: any,nodeId: string) {
this.taskIds.push({
...generateData,
nodeId,
})
this.getTasksIdImg()
2026-03-11 16:57:27 +08:00
}
/** 添加taskId */
2026-03-12 17:07:04 +08:00
async getTasksIdImg() {
clearInterval(this.getTaskIdsImgTime)
this.getTaskIdsImgTime = setInterval(()=>{
let taskIds = this.taskIds.map((item)=>item.taskId)
getTaskidResult({taskIds}).then((rv:any)=>{
2026-03-13 10:09:15 +08:00
//找出成功和失败的任务
let returnedTasks = rv.filter((item)=>item.status == 'RETURNED' || item.status == 'FAILED')
2026-03-12 17:07:04 +08:00
if(returnedTasks.length == 0)return
//剔除调成功的
let taskIds_ = JSON.parse(JSON.stringify(this.taskIds))
this.taskIds = taskIds_.filter(itemA =>
!returnedTasks.some(itemB => itemB.taskId === itemA.taskId)
)
//把成功的提取出来并且更新到node中
const result = returnedTasks.filter(itemA =>
taskIds_.some(itemB => {
itemA.nodeId = itemB.nodeId
return itemB.taskId === itemA.taskId
})
)
result.forEach(item => {
this.stateManager.getNodeById(item.nodeId).data.data.imageProcessTasks.forEach((nodeDataItem:any)=>{
if(item.taskId == nodeDataItem.taskId){
2026-03-13 10:09:15 +08:00
if(item.status == 'FAILED'){
this.stateManager.deleteNode(item.nodeId)
ElMessage.error(item.errorMessage)
}else if(item.status == 'RETURNED'){
nodeDataItem.url = item.url
nodeDataItem.createTime = item.createTime
nodeDataItem.status = item.status
}
2026-03-12 17:07:04 +08:00
}
})
})
if(this.taskIds.length == 0)clearInterval(this.getTaskIdsImgTime)
}).catch(()=>{
clearInterval(this.getTaskIdsImgTime)
console.warn('获取taskId图片失败')
})
}, 3000)
}
/** 更新taskId */
updateTaskId(taskId: string) {
this.stateManager.getNodeById()
2026-03-11 16:57:27 +08:00
}
2026-03-11 17:02:32 +08:00
dispose() {
this.taskIds = []
2026-03-12 17:07:04 +08:00
clearInterval(this.getTaskIdsImgTime)
2026-03-11 17:02:32 +08:00
}
2026-03-11 16:57:27 +08:00
}