From 329660bccca6f0a305f133af47d6d7f08c85d823 Mon Sep 17 00:00:00 2001 From: X1627315083 <1627315083@qq.com> Date: Fri, 26 Sep 2025 21:53:52 +0800 Subject: [PATCH] =?UTF-8?q?detail=E7=BC=BA=E5=B0=91=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E6=89=93=E5=BC=80detail=E5=90=8E=E5=85=88=E8=B0=83=E7=94=A8pre?= =?UTF-8?q?view?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/component/Detail/DesignDetail.vue | 26 ++++- src/component/Detail/canvas/index.vue | 8 +- .../Detail/detailRight/editPrintElement.vue | 5 +- src/component/Detail/model/index.vue | 4 +- src/component/Detail/model/modelPosition.vue | 4 +- src/store/Detail/designDetail.ts | 110 ++++++++++++++---- 6 files changed, 120 insertions(+), 37 deletions(-) diff --git a/src/component/Detail/DesignDetail.vue b/src/component/Detail/DesignDetail.vue index 044865d8..66183452 100644 --- a/src/component/Detail/DesignDetail.vue +++ b/src/component/Detail/DesignDetail.vue @@ -62,6 +62,7 @@ @addSketch="()=>isEditPattern.value=false" @revocation="revocation" @oppositeRevocation="oppositeRevocation" + @modelOnLoad="modelOnLoad" >
@@ -154,6 +155,7 @@ export default defineComponent({ fun:null, }, positionKey:0, + isUndividedLayerWithSinglePrint:false, }) provide('getCanvasIfEdit',detailData.getCanvasIfEdit) @@ -207,16 +209,24 @@ export default defineComponent({ element.designType = 'Library' } }); + if(!item.layersObject[0].undividedLayerWithSinglePrint){ + detailData.isUndividedLayerWithSinglePrint = true + } }) detailData.singleOveral.value = rv.singleOverall detailData.designDetailShow = true // this.deleteShow = false initialize() setRevocation() - detailData.loadingShow = false if(rv.singleOverall == "single"){ store.commit('DesignDetail/setDesignColthes',rv.clothes[0].id) } + + + if(detailData.isUndividedLayerWithSinglePrint){ + }else{ + detailData.loadingShow = false + } resolve(rv) } ).catch(rv=>{ @@ -339,7 +349,7 @@ export default defineComponent({ sketchString:list[i].sketchString?list[i].sketchString:'', trims:(newData && detailData.currentDetailType == 'element' && isCurrent && !detailData.isEditPattern.value)?{prints:newData}:list[i].trims?.prints?list[i].trims:{prints:[]}, } - if((list[i].color?.gradient || list[i].newDetail?.color?.gradient) && !detailData.isEditPattern.value){ + if((detailData.isEditPattern.value && list[i].color?.gradient) || (!detailData.isEditPattern.value && (list[i].newDetail?.color?.gradient || list[i].color?.gradient))){ gradient = list[i].newDetail?.color?.gradient || list[i].color.gradient gradient.colorImg = await setGradual(gradient,320,700) data.gradient = gradient @@ -351,9 +361,9 @@ export default defineComponent({ const getSubmitData = async (str:string)=>{ // return let workspace = store.state.Workspace.probjects - if(!detailData.selectDetail.path && !detailData.selectDetail.newDetail?.sketch?.minIOPath)return + if(!detailData?.selectDetail?.path && !detailData?.selectDetail?.newDetail?.sketch?.minIOPath)return let clothes:any - if(detailData.currentDetailType == 'models'){ + if(detailData.currentDetailType == 'models' || detailData.isUndividedLayerWithSinglePrint){ clothes = await setClothes(detailData.designDetail.clothes) }else{ clothes = await setClothes([detailData.selectDetail]) @@ -382,6 +392,7 @@ export default defineComponent({ delete detailData.designDetail.newModel store.commit('DesignDetail/setPraeview',value) detailData.loadingShow = false + detailData.isUndividedLayerWithSinglePrint = false canvasReload() // setRevocation() }).catch(res=>{ @@ -431,6 +442,12 @@ export default defineComponent({ let data = getSubmitData('preview') store.dispatch('DesignDetail/setSubmit',data) } + const modelOnLoad = ()=>{ + if(!detailData.isUndividedLayerWithSinglePrint)return + setTimeout(()=>{ + previwe() + }) + } const detailEdit = async (str:any)=>{ if(str == 'edit'){ if(detailData.isEditPattern.value){ @@ -475,6 +492,7 @@ export default defineComponent({ oppositeRevocation, detailEdit, canvasReload, + modelOnLoad, } }, diff --git a/src/component/Detail/canvas/index.vue b/src/component/Detail/canvas/index.vue index d096b738..f3743511 100644 --- a/src/component/Detail/canvas/index.vue +++ b/src/component/Detail/canvas/index.vue @@ -9,7 +9,7 @@ --> - +
  • @@ -148,6 +148,7 @@ export default defineComponent({ }, loadingShow:false, printElementList:null as any, + isSketchLoad:false, }) const collItemSize = reactive({ collValue:18, @@ -208,6 +209,7 @@ export default defineComponent({ }) } const addPrintELement = async (data:any)=>{ + if(!editPrintElementData.isSketchLoad)return let {scale,location} = await setScaleLocation(data) let item = { angle:0, @@ -379,6 +381,7 @@ export default defineComponent({ }) watch(()=>((editPrintElementData.selectDetail?.undividedLayer || editPrintElementData.selectDetail?.id)),(newVal)=>{ if(!newVal)return + editPrintElementData.isSketchLoad = false, editPrintElementData.printStyleList[props.type] = { single:[], overall:[], diff --git a/src/component/Detail/model/index.vue b/src/component/Detail/model/index.vue index 07245dac..8a599934 100644 --- a/src/component/Detail/model/index.vue +++ b/src/component/Detail/model/index.vue @@ -23,7 +23,7 @@
- +
@@ -42,7 +42,7 @@ export default defineComponent({ components:{ position,modelNav }, - emits:['detailEdit','canvasReload','addSketch','revocation','oppositeRevocation'], + emits:['detailEdit','canvasReload','addSketch','revocation','oppositeRevocation','modelOnLoad'], setup(props,{emit}) { const {t} = useI18n() const store = useStore(); diff --git a/src/component/Detail/model/modelPosition.vue b/src/component/Detail/model/modelPosition.vue index f2dc4cea..cc4d9bd3 100644 --- a/src/component/Detail/model/modelPosition.vue +++ b/src/component/Detail/model/modelPosition.vue @@ -49,7 +49,7 @@ export default defineComponent({ type:Boolean, } }, - emits:['canvasReload','addSketch'], + emits:['canvasReload','addSketch','modelOnLoad'], setup(props,{emit}) { const {t} = useI18n() const store = useStore(); @@ -116,6 +116,8 @@ export default defineComponent({ // detailData.frontBack.back[index].style[key] = value*sacle+'px' } }); + console.log(111,detailData.frontBack?.body?.path) + emit('modelOnLoad') }; img.src = detailData.frontBack?.body?.path; }) diff --git a/src/store/Detail/designDetail.ts b/src/store/Detail/designDetail.ts index 05f038b2..dd8a39ab 100644 --- a/src/store/Detail/designDetail.ts +++ b/src/store/Detail/designDetail.ts @@ -1,5 +1,6 @@ import {Module} from 'vuex' import {RootState} from '../index' +import { forEach } from 'jszip' interface DesignDetail{ designDetail:any, @@ -42,7 +43,6 @@ const DesignDetail : Module = { state.currentPrintElement = null }, setDesignDetail(state,data){ - console.log(data) if(data.others.length > 0 && data.others[0].type == "Body"){ state.frontBack.body = data.others[0] } @@ -72,11 +72,13 @@ const DesignDetail : Module = { // front[index].style.zIndex = v.priority front[index].id = v.id front[index].undividedLayer = v.undividedLayer + front[index].undividedLayerWithSinglePrint = v?.undividedLayerWithSinglePrint }else{ back[index] = v.layersObject[i] back[index].style.zIndex = v.priority back[index].id = v.id back[index].undividedLayer = v.undividedLayer + back[index].undividedLayerWithSinglePrint = v?.undividedLayerWithSinglePrint // back[index].style.zIndex = backIndex==0?v.layersObject[i]:backIndex++ } if(state.printZIndex < v.priority){ @@ -152,7 +154,6 @@ const DesignDetail : Module = { } }, setDesignColthes(state,data){ - console.log(data) if(!state.currentDetailType)state.currentDetailType = 'sketch' //切换选择 // state.currentDetailType = '' @@ -195,6 +196,7 @@ const DesignDetail : Module = { trims:null, type:null, undividedLayer:null, + undividedLayerWithSinglePrint:null, } if(!state.currentDetailType)state.currentDetailType = 'sketch' state.designDetail.clothes.forEach((item:any) => { @@ -206,7 +208,6 @@ const DesignDetail : Module = { }, async setPraeview(state,value){//preview let data = value?.rv || value - console.log(data,'preview') let currentType = value?.currentType if(state.designDetail.oldModel?.url)state.frontBack.body.path = state.designDetail.oldModel.url if(value?.rv?.currentFullBodyView)state.designDetail.currentFullBodyView = value.rv.currentFullBodyView @@ -218,14 +219,21 @@ const DesignDetail : Module = { } let id_:any if(state.currentDetailType != 'models'){ - id_ = state.selectDetail.id || state.selectDetail.newDetail?.sketch?.id + if(data.clothes.length > 2){ + //缺少字段临时添加 + id_ = item.id || state.selectDetail.newDetail?.sketch?.id + }else{ + id_ = state.selectDetail.id || state.selectDetail.newDetail?.sketch?.id + } }else{ id_ = item.id } + console.log(id_) let el:any = document.querySelector('.molepositon .perview_img') await new Promise((resolve, reject) => { if(!state.frontBack?.body?.path){ state.frontBack.front[0].undividedLayer = value.rv.clothes[0].undividedLayer + state.frontBack.front[0].undividedLayerWithSinglePrint = value.rv.clothes[0]?.undividedLayerWithSinglePrint resolve('') } const img = new Image(); @@ -256,11 +264,13 @@ const DesignDetail : Module = { // state.frontBack.front[index].style.zIndex = v.priority state.frontBack.front[index].id = item.id state.frontBack.front[index].undividedLayer = item.undividedLayer + state.frontBack.front[index].undividedLayerWithSinglePrint = item?.undividedLayerWithSinglePrint }else{ state.frontBack.back[index] = item.layersObject[i] // state.frontBack.back[index].style.zIndex = v.priority state.frontBack.back[index].id = item.id state.frontBack.back[index].undividedLayer = item.undividedLayer + state.frontBack.back[index].undividedLayerWithSinglePrint = item?.undividedLayerWithSinglePrint } } } @@ -268,25 +278,27 @@ const DesignDetail : Module = { resolve('') }; }) - if(state.currentDetailType != 'models'){ - state.selectDetail.change = item.change - if(state.selectDetail?.newDetail?.color && currentType != 'color'){ - state.selectDetail.color = state.selectDetail?.newDetail?.color - state.selectDetail.newDetail.color = null + let uploadDetail = (detailItem)=>{ + detailItem.change = item.change + if(detailItem?.newDetail?.color && currentType != 'color'){ + detailItem.color = detailItem?.newDetail?.color + detailItem.newDetail.color = null } if(item.partialDesign){ - state.selectDetail.partialDesign = item.partialDesign + detailItem.partialDesign = item.partialDesign } - state.selectDetail.designType = item.designType - state.selectDetail.layersObject = item.layersObject - state.selectDetail.path = item.path - state.selectDetail.minIOPath = item.minIOPath - state.selectDetail.scale = [1,1] - state.selectDetail.offset = [0,0] - state.selectDetail.printObject = item.printObject - state.selectDetail.trims = item.trims - state.selectDetail.type = item.type - state.selectDetail.color = { + detailItem.designType = item.designType + detailItem.layersObject = item.layersObject + detailItem.path = item.path + detailItem.minIOPath = item.minIOPath + detailItem.scale = [1,1] + detailItem.offset = [0,0] + detailItem.printObject = item.printObject + detailItem.trims = item.trims + detailItem.type = item.type + detailItem.maskMinioUrl = item.layersObject?.[0]?.maskMinioUrl + detailItem.maskUrl = item.layersObject?.[0]?.maskUrl + detailItem.color = { ...item.color, rgba:{ r:item.color?.r, @@ -295,12 +307,60 @@ const DesignDetail : Module = { }, gradient:item.gradient, } - state.selectDetail.undividedLayer = item.undividedLayer - if(state.selectDetail.newDetail?.sketch?.id && !state.selectDetail.id){ - state.designDetail.clothes.push(state.selectDetail) + detailItem.undividedLayer = item.undividedLayer + detailItem.undividedLayerWithSinglePrint = item?.undividedLayerWithSinglePrint + if(detailItem.newDetail?.sketch?.id && !detailItem.id){ + state.designDetail.clothes.push(detailItem) } - state.selectDetail.id = item.id - if(currentType)if(state.selectDetail.newDetail?.[currentType] && currentType != 'color')delete state.selectDetail.newDetail[currentType] + detailItem.id = item.id + if(currentType)if(detailItem.newDetail?.[currentType] && currentType != 'color')delete detailItem.newDetail[currentType] + } + if(data.clothes.length > 2){ + state.designDetail.clothes.forEach((detailItem:any) => { + if(detailItem.id == id_){ + uploadDetail(detailItem) + } + }); + }else{ + uploadDetail(state.selectDetail) + } + + if(state.currentDetailType != 'models'){ + // state.selectDetail.change = item.change + // if(state.selectDetail?.newDetail?.color && currentType != 'color'){ + // state.selectDetail.color = state.selectDetail?.newDetail?.color + // state.selectDetail.newDetail.color = null + // } + // if(item.partialDesign){ + // state.selectDetail.partialDesign = item.partialDesign + // } + // state.selectDetail.designType = item.designType + // state.selectDetail.layersObject = item.layersObject + // state.selectDetail.path = item.path + // state.selectDetail.minIOPath = item.minIOPath + // state.selectDetail.scale = [1,1] + // state.selectDetail.offset = [0,0] + // state.selectDetail.printObject = item.printObject + // state.selectDetail.trims = item.trims + // state.selectDetail.type = item.type + // state.selectDetail.maskMinioUrl = item.layersObject?.[0]?.maskMinioUrl + // state.selectDetail.maskUrl = item.layersObject?.[0]?.maskUrl + // state.selectDetail.color = { + // ...item.color, + // rgba:{ + // r:item.color?.r, + // g:item.color?.g, + // b:item.color?.b, + // }, + // gradient:item.gradient, + // } + // state.selectDetail.undividedLayer = item.undividedLayer + // state.selectDetail.undividedLayerWithSinglePrint = item?.undividedLayerWithSinglePrint + // if(state.selectDetail.newDetail?.sketch?.id && !state.selectDetail.id){ + // state.designDetail.clothes.push(state.selectDetail) + // } + // state.selectDetail.id = item.id + // if(currentType)if(state.selectDetail.newDetail?.[currentType] && currentType != 'color')delete state.selectDetail.newDetail[currentType] } } if(value.fun)value.fun()