更新画布菜单交互逻辑,画布生成或画布编辑图片更新外面版本图片

This commit is contained in:
X1627315083@163.com
2026-04-17 15:46:28 +08:00
parent b4fc3addb8
commit 6517560bd8
8 changed files with 100 additions and 10 deletions

View File

@@ -279,3 +279,24 @@ export const threeToThreeViewsApi = (data:threeToThreeViewsData) => {
} }
}) })
} }
/**
* 根据sketchId更新VersionNode的sketch的URL值
* @param data 根据sketchId更新VersionNode的sketchL值的参数
* @param data.sketchId sketch id
* @param data.newUrl 生成的3d模型地址
* @returns 根据sketchId更新VersionNode的sketch的URL值
*/
export interface threeToThreeViewsData {
sketchId?: string
newUrl?: string
}
export const updateVersionSketchUrlApi = (data:threeToThreeViewsData) => {
return request({
url: `/api/canvas/sketchIdAndUrl/${data.sketchId}`,
method: 'put',
data:{
newUrl: data.newUrl,
}
})
}

View File

@@ -12,7 +12,7 @@
" "
> >
<span class="icon"> <span class="icon">
<svg-icon :name="v.type + '-2'" size="15" size-unit="px" /> <svg-icon :name="v.type.split('_')[0] + '-2'" size="15" size-unit="px" />
</span> </span>
<span class="title">{{ v.title }}</span> <span class="title">{{ v.title }}</span>
</div> </div>
@@ -63,6 +63,25 @@
}, },
] ]
} }
},{
tier: NODE_DATATIER.SURFACE_EDIT_,
type: NODE_DATATYPE.SURFACE_EDIT_,
title: t('FlowCanvas.surfaceEditTitle'),
secondaryMenu: {
title: t('FlowCanvas.surfaceEditTitle'),
icon: NODE_DATATYPE.SURFACE_EDIT_,
selectList: [
{
tier: NODE_DATATIER.CANVAS_MODE_,
type: NODE_DATATYPE.CANVAS_MODE_,
title: t('FlowCanvas.surfaceEditCanvasTitle'),
},{
tier: NODE_DATATIER.Fast_MODE_,
type: NODE_DATATYPE.Fast_MODE_,
title: t('FlowCanvas.surfaceEditTitle'),
},
]
}
}, },
{ {
tier: NODE_DATATIER.SCENE_COMPOSITION, tier: NODE_DATATIER.SCENE_COMPOSITION,

View File

@@ -13,6 +13,7 @@
import myEvent from '@/utils/myEvent' import myEvent from '@/utils/myEvent'
import { getCurrentTime } from '../../../../tools/tools.ts' import { getCurrentTime } from '../../../../tools/tools.ts'
import { NODE_DATATIER } from '../../../tools/index.d' import { NODE_DATATIER } from '../../../tools/index.d'
import { updateVersionSketchUrlApi } from '@/api/flow-canvas'
const attrs = useAttrs() const attrs = useAttrs()
const stateManager = inject('stateManager') as any const stateManager = inject('stateManager') as any
const nodeManager = inject('nodeManager') as any const nodeManager = inject('nodeManager') as any
@@ -24,7 +25,7 @@
return { return {
} }
} }
const opCanvas = ()=>{ const opCanvas = (tier)=>{
const superiorNodeUrl = stateManager.getSuperiorNodeImage(attrs?.node?.data?.superiorID || null) const superiorNodeUrl = stateManager.getSuperiorNodeImage(attrs?.node?.data?.superiorID || null)
if (!superiorNodeUrl) console.log('superiorNodeUrl 找不到原始图片') if (!superiorNodeUrl) console.log('superiorNodeUrl 找不到原始图片')
const data = { const data = {
@@ -46,7 +47,7 @@
superiorID: attrs.node.id, superiorID: attrs.node.id,
superiorNodeType: attrs.node?.data?.type, superiorNodeType: attrs.node?.data?.type,
createIndexPosition: 0 + subordNodes.length, createIndexPosition: 0 + subordNodes.length,
tier: NODE_DATATIER.RESULT_IMAGE, tier,
isActive: subordNodes.length == 0, isActive: subordNodes.length == 0,
data: { data: {
imageProcessTasks:[workbenchData], imageProcessTasks:[workbenchData],
@@ -54,6 +55,11 @@
} }
} }
}) })
//更新VersionNode的sketchIDAndUrl中指定key的URL值
updateVersionSketchUrlApi({
sketchId: stateManager.sketchId.value,
newUrl: options.url,
})
}, },
} }
eventManager.removeEvents() eventManager.removeEvents()

View File

@@ -3,7 +3,7 @@
<div class="header"> <div class="header">
<svg-icon <svg-icon
v-if="attrs.node?.data?.secondaryMenu?.icon || !currentComponent?.hideIcon" v-if="attrs.node?.data?.secondaryMenu?.icon || !currentComponent?.hideIcon"
:name="attrs.node?.data?.secondaryMenu?.icon || currentComponent?.type" :name="attrs.node?.data?.secondaryMenu?.icon || currentComponent?.type.split('_')[0]"
color="#fff" color="#fff"
size="16" size="16"
size-unit="px" size-unit="px"
@@ -73,7 +73,7 @@
{ {
tier: NODE_DATATIER.TO_REAL_VARIANTS, tier: NODE_DATATIER.TO_REAL_VARIANTS,
type: NODE_DATATYPE.TO_REAL_VARIANTS, type: NODE_DATATYPE.TO_REAL_VARIANTS,
title: 'To Real Variants', title: t('FlowCanvas.toRealVariantsTitle'),
component: ToRealVariants, component: ToRealVariants,
api: toRealVariantsApi api: toRealVariantsApi
}, },
@@ -92,7 +92,25 @@
hideFooter: true, hideFooter: true,
showCanvasEdit: true, showCanvasEdit: true,
on: ()=>{ on: ()=>{
componentRef.value?.opCanvas() componentRef.value?.opCanvas(0)
}
},
{
tier: NODE_DATATIER.Fast_MODE_,
type: NODE_DATATYPE.Fast_MODE_,
title: t('FlowCanvas.surfaceEditTitle'),
component: SurfaceEdit,
api: sketchAddPrintApi
},
{
tier: NODE_DATATIER.CANVAS_MODE_,
type: NODE_DATATYPE.CANVAS_MODE_,
title: t('FlowCanvas.surfaceEditCanvasTitle'),
component: FastMode,
hideFooter: true,
showCanvasEdit: true,
on: ()=>{
componentRef.value?.opCanvas(1)
} }
}, },
{ {
@@ -155,6 +173,7 @@
const onGenerateClick = async () => { const onGenerateClick = async () => {
const data = componentRef.value?.getApiData?.() || {} const data = componentRef.value?.getApiData?.() || {}
const subordNodes = stateManager.getSubordNodes(attrs.node.id) const subordNodes = stateManager.getSubordNodes(attrs.node.id)
const maxPosition = subordNodes.length == 0?0:(subordNodes[subordNodes.length - 1].data.createIndexPosition + 1)
const superiorNodeUrl = stateManager.getSuperiorNodeImage(attrs.node.data.superiorID) const superiorNodeUrl = stateManager.getSuperiorNodeImage(attrs.node.data.superiorID)
if(!superiorNodeUrl)return console.log('superiorNodeUrl 找不到原始图片') if(!superiorNodeUrl)return console.log('superiorNodeUrl 找不到原始图片')
emit('update-data', componentRef.value?.data) emit('update-data', componentRef.value?.data)
@@ -175,12 +194,16 @@
NODE_DATATYPE.CANVAS_MODE, NODE_DATATYPE.CANVAS_MODE,
NODE_DATATYPE.SCENE_COMPOSITION, NODE_DATATYPE.SCENE_COMPOSITION,
NODE_DATATYPE.COLOR_PALETTE, NODE_DATATYPE.COLOR_PALETTE,
NODE_DATATYPE.Fast_MODE_,
NODE_DATATYPE.CANVAS_MODE_,
] ]
let tritList = [ let tritList = [
NODE_DATATIER.Fast_MODE, NODE_DATATIER.Fast_MODE,
NODE_DATATIER.CANVAS_MODE, NODE_DATATIER.CANVAS_MODE,
NODE_DATATIER.SCENE_COMPOSITION, NODE_DATATIER.SCENE_COMPOSITION,
NODE_DATATIER.COLOR_PALETTE, NODE_DATATIER.COLOR_PALETTE,
NODE_DATATIER.Fast_MODE_,
NODE_DATATIER.CANVAS_MODE_,
] ]
let tier = (tritList.includes(currentComponent.value.tier) && typeList.includes(currentComponent.value.type))?currentComponent.value.tier - 1:currentComponent.value.tier let tier = (tritList.includes(currentComponent.value.tier) && typeList.includes(currentComponent.value.type))?currentComponent.value.tier - 1:currentComponent.value.tier
if(NODE_DATATYPE.TO_REAL_STYLE == currentComponent.value.type && false){ if(NODE_DATATYPE.TO_REAL_STYLE == currentComponent.value.type && false){
@@ -206,7 +229,7 @@
superiorID: attrs.node.id, superiorID: attrs.node.id,
superiorNodeType: attrs.node?.data?.type, superiorNodeType: attrs.node?.data?.type,
superiorGenerateImg: superiorNodeUrl || null, superiorGenerateImg: superiorNodeUrl || null,
createIndexPosition: index + subordNodes.length, createIndexPosition: index + maxPosition,
tier: tier, tier: tier,
isActive: index == 0 && subordNodes.length == 0, isActive: index == 0 && subordNodes.length == 0,
data: { data: {

View File

@@ -66,6 +66,7 @@
import HighlightAdmin from '@/components/highlightAdmin.vue' import HighlightAdmin from '@/components/highlightAdmin.vue'
import { NODE_DATATIER, NODE_DATATYPE } from '../../tools/index.d' import { NODE_DATATIER, NODE_DATATYPE } from '../../tools/index.d'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { updateVersionSketchUrlApi } from '@/api/flow-canvas'
const { t } = useI18n() const { t } = useI18n()
const openImagePreview = inject('openImagePreview') as (url: string) => void const openImagePreview = inject('openImagePreview') as (url: string) => void
const openThreeModelPreview = inject('openThreeModelPreview') as (obj: any) => void const openThreeModelPreview = inject('openThreeModelPreview') as (obj: any) => void
@@ -225,6 +226,11 @@
} }
depthCanvasWorkbench(workbenchData) depthCanvasWorkbench(workbenchData)
depthCanvasClose() depthCanvasClose()
//更新VersionNode的sketchIDAndUrl中指定key的URL值
updateVersionSketchUrlApi({
sketchId: stateManager.sketchId.value,
newUrl: options.url,
})
}, },
onClose:depthCanvasClose onClose:depthCanvasClose
} }

View File

@@ -10,6 +10,7 @@
import { ref } from 'vue' import { ref } from 'vue'
import { getSketchFlowCanvas } from '@/api/flow-canvas' import { getSketchFlowCanvas } from '@/api/flow-canvas'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import myEvent from '@/utils/myEvent'
const dialogVisible = ref(false) const dialogVisible = ref(false)
const config = ref({}) as any const config = ref({}) as any
@@ -33,6 +34,7 @@
} }
const close = async () => { const close = async () => {
dialogVisible.value = false dialogVisible.value = false
myEvent.emit('closeFlowCanvas')
} }
defineExpose({ defineExpose({
open, open,

View File

@@ -1,5 +1,6 @@
import { getTaskidResult } from '@/api/flow-canvas' import { getTaskidResult } from '@/api/flow-canvas'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { updateVersionSketchUrlApi } from '@/api/flow-canvas'
// interface NodeOptions { // interface NodeOptions {
// } // }
@@ -54,6 +55,12 @@ export class GenerateManager {
nodeDataItem.url = item.url nodeDataItem.url = item.url
nodeDataItem.createTime = item.createTime nodeDataItem.createTime = item.createTime
nodeDataItem.status = item.status nodeDataItem.status = item.status
//更新VersionNode的sketchIDAndUrl中指定key的URL值
updateVersionSketchUrlApi({
sketchId: this.stateManager.sketchId.value,
newUrl: item.url,
})
if(item.glbPath){ if(item.glbPath){
nodeDataItem.glbPath = item.glbPath nodeDataItem.glbPath = item.glbPath
nodeDataItem.glbInfoObj = item.glbInfoObj nodeDataItem.glbInfoObj = item.glbInfoObj

View File

@@ -28,6 +28,9 @@ export const NODE_DATATYPE = {
SURFACE_EDIT: 'surface-edit', SURFACE_EDIT: 'surface-edit',
CANVAS_MODE: 'canvas-mode', CANVAS_MODE: 'canvas-mode',
Fast_MODE: 'fast-mode', Fast_MODE: 'fast-mode',
SURFACE_EDIT_: 'surface-edit_',
CANVAS_MODE_: 'canvas-mode_',
Fast_MODE_: 'fast-mode_',
SCENE_COMPOSITION: 'scene-composition', SCENE_COMPOSITION: 'scene-composition',
COLOR_PALETTE: 'color-palette', COLOR_PALETTE: 'color-palette',
TO_3D_MODEL: 'to-3d-model', TO_3D_MODEL: 'to-3d-model',
@@ -41,9 +44,12 @@ export const NODE_DATATIER = {
CARDS_SELECT: 0, CARDS_SELECT: 0,
TO_REAL_STYLE: 1, TO_REAL_STYLE: 1,
TO_REAL_VARIANTS: 1, TO_REAL_VARIANTS: 1,
SURFACE_EDIT: 2, SURFACE_EDIT: 1,
CANVAS_MODE: 2, CANVAS_MODE: 1,
Fast_MODE: 2, Fast_MODE: 1,
SURFACE_EDIT_: 2,
CANVAS_MODE_: 2,
Fast_MODE_: 2,
SCENE_COMPOSITION: 2, SCENE_COMPOSITION: 2,
COLOR_PALETTE: 2, COLOR_PALETTE: 2,
TO_3D_MODEL: 2, TO_3D_MODEL: 2,