diff --git a/src/api/flow-canvas.ts b/src/api/flow-canvas.ts index 062708d..d4590cc 100644 --- a/src/api/flow-canvas.ts +++ b/src/api/flow-canvas.ts @@ -31,6 +31,9 @@ export const putSketchFlowCanvas = (data:saveSketchFlowCanvasData) => { return request({ url: `/api/canvas/detail/${data.id}`, method: 'put', + headers: { + 'Content-Type': 'application/json' + }, data: data.canvasData }) } @@ -52,3 +55,54 @@ export const deleteSketchFlowCanvas = (data:deleteSketchFlowCanvasData) => { method: 'delete', }) } + +/** + * 根据taskId查询结果 + * @param data 根据taskId查询结果的参数 + * @param data.taskIds taskIds列表 + * @returns 根据taskId查询结果 + */ +export interface taskIdList { + taskIds?: Array +} +export const getTaskidResult = (data:taskIdList) => { + return request({ + url: `/api/image/tasks/batch`, + method: 'post', + data: { + taskIds: data.taskIds + } + }) +} + +/** + * 图片转真是风格 + * @param data 图片转真是风格的参数 + * @param data.sketchId sketch id + * @param data.mode 选择的模型 + * @param data.size 生成图片的大小 + * @param data.imageUrl 进行生成的图片。minio地址和正常地址都可以 + * @param data.userPrompt 生成图片的提示词 + * @returns 图片转真是风格 + */ +export interface toRealStyleData { + sketchId?: string + mode?: string + size?: string + imageUrl?: string + userPrompt?: string +} +export const toRealStyleApi = (data:toRealStyleData) => { + return request({ + url: `/api/image/to-real-style`, + method: 'post', + data:{ + sketchId: data.sketchId, + mode: data.mode, + size: data.size, + imageUrl: data.imageUrl, + userPrompt: data.userPrompt + } + }) +} + diff --git a/src/components/Canvas/FlowCanvas/components/node.vue b/src/components/Canvas/FlowCanvas/components/node.vue index 06938b6..4a3ec70 100644 --- a/src/components/Canvas/FlowCanvas/components/node.vue +++ b/src/components/Canvas/FlowCanvas/components/node.vue @@ -60,8 +60,12 @@ ) const onAdd = () => { const tier_ = tier.value + 1 + // 从data中获取originalImage + let nodeData = props.node?.data?.data.imageProcessTasks.filter((v) => v.taskId === props.node?.data?.data.selectTaskId) + const originalImage = nodeData[0]?.url + if(!originalImage)console.log('originalImage 找不到原始图片') props.stateManager.nodeManager.createCardsSelect({ - data: { tier: tier_, superiorID: props.node.id } + data: { tier: tier_, superiorID: props.node.id, originalImage } }) } const posCenter = computed(() => { diff --git a/src/components/Canvas/FlowCanvas/components/nodes/cards/cards-select.vue b/src/components/Canvas/FlowCanvas/components/nodes/cards/cards-select.vue index 839f78b..4fa4e73 100644 --- a/src/components/Canvas/FlowCanvas/components/nodes/cards/cards-select.vue +++ b/src/components/Canvas/FlowCanvas/components/nodes/cards/cards-select.vue @@ -60,7 +60,8 @@ data: { tier: v.tier, type: v.type, - superiorID + superiorID, + originalImage: props.node.data?.originalImage, } }) } diff --git a/src/components/Canvas/FlowCanvas/components/nodes/cards/index.vue b/src/components/Canvas/FlowCanvas/components/nodes/cards/index.vue index a9fe0e8..f880db6 100644 --- a/src/components/Canvas/FlowCanvas/components/nodes/cards/index.vue +++ b/src/components/Canvas/FlowCanvas/components/nodes/cards/index.vue @@ -36,6 +36,8 @@ import To3View from './to-3view.vue' import To3DModel from './to-3d-model.vue' + import { toRealStyleApi } from '@/api/flow-canvas' + // import ToVideo from './to-video.vue' // import AddPrint from './add-print.vue' // import ToCAD from './to-cad.vue' @@ -46,19 +48,20 @@ title: 'Advanced Tools', component: CardsSelect, hideFooter: true, - hideIcon: true + hideIcon: true, }, { tier: NODE_DATATIER.TO_REAL_STYLE, type: NODE_DATATYPE.TO_REAL_STYLE, title: 'To Real Style', - component: ToRealStyle + component: ToRealStyle, + api: toRealStyleApi }, { tier: NODE_DATATIER.SURFACE_EDIT, type: NODE_DATATYPE.SURFACE_EDIT, title: 'Surface Edit', - component: SurfaceEdit + component: SurfaceEdit, }, { tier: NODE_DATATIER.SCENE_COMPOSITION, @@ -100,6 +103,10 @@ | 'to-3view', default: 'to-real-style' }, + sketchId: { + type: String, + default: '' + }, data: { type: Object, default: () => ({}) @@ -110,17 +117,32 @@ return components.find((item) => item.type === props.type) }) const componentRef = ref(null) - const onGenerateClick = () => { + + const onGenerateClick = async () => { const data = componentRef.value.data const subordNode = stateManager.getSubordNodeByID(attrs.node.id) emit('update-data', data) + console.log(attrs.node,data) + if(!attrs.node?.data?.originalImage)console.log('originalImage 找不到原始图片') + + const apiData = { + sketchId: props.sketchId, + mode: data.mode, + size: data.pixelRatio, + imageUrl: attrs.node?.data?.originalImage, + userPrompt: data.prompt, + } + const taskList = await currentComponent.value.api(apiData).then((rv)=>{ + return rv + }) || [] if (!subordNode) { nodeManager.createResultNode({ data: { superiorID: attrs.node.id, tier: currentComponent.value.tier, data: { - url: 'https://s3-alpha-sig.figma.com/img/ea2f/590e/9638f62a2fc91e31f33db0022db1642c?Expires=1773014400&Key-Pair-Id=APKAQ4GOSFWCW27IBOMQ&Signature=M0B8oJJOk~dGG0aZAqOIocAp7T0LFdJ9FYmCrEZVTCRzYxM6SJRNtYMTX-rTO3Z~s14QINh~o-S41XiZnBv-0zcKjuWot~VVaNHfd0~1LesfNe2KwvCinT~72btFut1pheLnKE-wWCX5ewtonxU77bnw386YPMTqv7DBZzksf2udsJA7NmOYD6~TUG3Q2dWSt~zPH~lkaidscPqpCnCbqzljCEi4RiHY4U3A45l5XypcX2umqn1UaYUFCTqV9471J4qdB6Dg2pcKocdp-7-3s1De6Q~2SmBOrSgDQ~KEADCB2lhKfhxgWmy0lwMvhTd4l90ygVZDWZRABgjHNrGUvg__' + imageProcessTasks:taskList, + selectTaskId:taskList[0].taskId, } } }) diff --git a/src/components/Canvas/FlowCanvas/components/nodes/result-image.vue b/src/components/Canvas/FlowCanvas/components/nodes/result-image.vue index e9da2d3..98e3057 100644 --- a/src/components/Canvas/FlowCanvas/components/nodes/result-image.vue +++ b/src/components/Canvas/FlowCanvas/components/nodes/result-image.vue @@ -1,49 +1,56 @@