From 6393952e527af53026c8ac9992e682c9826dfb7d Mon Sep 17 00:00:00 2001 From: wxd <1627315083@qq.com> Date: Fri, 13 Sep 2024 21:26:17 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/component/Detail/DesignDetail.vue | 2 +- src/component/Detail/DesignDetailAlter.vue | 4 +- src/component/Detail/DesignElements.vue | 71 +++++++-------- src/component/Detail/DesignElementsMobile.vue | 87 ++++++++++--------- src/component/Detail/DesignPrintOperation.vue | 2 +- .../Detail/DesignPrintOperationMobile.vue | 6 +- src/component/LibraryPage/searchLabel.vue | 10 +-- src/lang/cn.ts | 1 + src/lang/en.ts | 1 + src/store/userHabit/userHabit.ts | 4 +- src/views/HomeView/library.vue | 14 ++- 11 files changed, 108 insertions(+), 94 deletions(-) diff --git a/src/component/Detail/DesignDetail.vue b/src/component/Detail/DesignDetail.vue index 0f997d21..17e9f000 100644 --- a/src/component/Detail/DesignDetail.vue +++ b/src/component/Detail/DesignDetail.vue @@ -123,7 +123,7 @@
-
Current Elements
+
{{ $t('DesignDetail.CurrentElements') }}
diff --git a/src/component/Detail/DesignDetailAlter.vue b/src/component/Detail/DesignDetailAlter.vue index b89506cf..e90622c1 100644 --- a/src/component/Detail/DesignDetailAlter.vue +++ b/src/component/Detail/DesignDetailAlter.vue @@ -589,8 +589,8 @@ export default defineComponent({ this.upload.level1Type = 'Sketchboard' this.uploadList = this.apparelList this.designTypeList = this.sketchCatecoryList - this.designType = this.current.type - // this.designType = this.designTypeList[0].value + // this.designType = this.current.type + this.designType = this.designTypeList[0].value }else if (num == 2){ this.selectCode = 'Printboard' this.upload.level1Type = 'Printboard' diff --git a/src/component/Detail/DesignElements.vue b/src/component/Detail/DesignElements.vue index 48cf7d8e..599ac3fb 100644 --- a/src/component/Detail/DesignElements.vue +++ b/src/component/Detail/DesignElements.vue @@ -277,8 +277,6 @@ export default defineComponent({ location:[0,0] }) this.refetchTemplate(currentIndex) - - }, //设置移动 itemMoveMousedown(index,event){ @@ -378,7 +376,6 @@ export default defineComponent({ //判断尺寸是否到边 this.printStyleList[this.imgDomIndex].style.width = width this.printStyleList[this.imgDomIndex].style.height = height - }, //鼠标抬起 sizeMouseup(e){ @@ -441,38 +438,44 @@ export default defineComponent({ await this.setPrintWH(item.path) this.designSelectElementsList let sketch = document.getElementsByClassName("designElements_modal")[0]?.getElementsByClassName('designElements_sketch')[0] - let sketchNum = this.sketch.width.replace(/rem/g,'')*10/sketch.offsetWidth - let scale - scale = (this.print.width.replace(/px/g,'')*sketchNum/this.print.width.replace(/px/g,'')) - let zIndex = 1 - let left = item.location[0]/sketchNum+'px' - let top = item.location[1]/sketchNum+'px' - if(sketch.offsetWidth < item.location[0]/sketchNum){ - left = sketch.offsetWidth +'px' - } - if(sketch.offsetHeight < item.location[1]/sketchNum){ - top = sketch.offsetHeight +'px' - } - this.printStyleList[index]={ - centers:{ - left:0, - top:0, - }, - style:{ - left:left, - top:top, - right:"auto", - bottom:"auto", - width:this.print.width.replace(/px/g,'')/sketchNum*item.scale+'px', - height:this.print.height.replace(/px/g,'')/sketchNum*item.scale+'px', - zIndex:zIndex++ - }, - transform:{ - // scale:scale<.2?.2:scale,//0.2-3 - rotateZ:item.angle, - }, - designElementsBtn:false + let sketchImg = new Image() + sketchImg.onload = ()=>{ + let sketchNum = this.sketch.width.replace(/rem/g,'')*10/sketch.offsetWidth + let scale + scale = (this.print.width.replace(/px/g,'')*sketchNum/this.print.width.replace(/px/g,'')) + let zIndex = 1 + let left = item.location[0]/sketchNum+'px' + let top = item.location[1]/sketchNum+'px' + if(sketch.offsetWidth < item.location[0]/sketchNum){ + left = sketch.offsetWidth +'px' + } + if(sketch.offsetHeight < item.location[1]/sketchNum){ + top = sketch.offsetHeight +'px' + } + this.printStyleList[index]={ + centers:{ + left:0, + top:0, + }, + style:{ + left:left, + top:top, + right:"auto", + bottom:"auto", + width:this.print.width.replace(/px/g,'')/sketchNum*item.scale+'px', + height:this.print.height.replace(/px/g,'')/sketchNum*item.scale+'px', + zIndex:zIndex++ + }, + transform:{ + // scale:scale<.2?.2:scale,//0.2-3 + rotateZ:item.angle, + }, + designElementsBtn:false + } + sketchImg.remove() } + sketchImg.src = sketch.src + }, computeZindex(resolve,prints){ prints.sort((a, b) => { diff --git a/src/component/Detail/DesignElementsMobile.vue b/src/component/Detail/DesignElementsMobile.vue index 2d013746..692f6cc1 100644 --- a/src/component/Detail/DesignElementsMobile.vue +++ b/src/component/Detail/DesignElementsMobile.vue @@ -43,7 +43,7 @@ v-for="item,index in exhibitionElementsList" :key="item" :style="[printStyleList?.[index]?.style]" - @touchstart.stop="itemMoveMousedown(index,$event)" + @touchstart.passive="itemMoveMousedown(index,$event)" class="modal_imgItem" ref="content" > @@ -52,7 +52,7 @@
-
    +
    • @@ -305,12 +305,12 @@ export default defineComponent({ itemSizeMousedown(direction,event){ this.direction = direction this.imgDom = document.getElementsByClassName('designElementsMobile_modal')[0].getElementsByClassName("modal_imgItem")[this.imgDomIndex] - let scale = Number(this.imgDom.style.transform?.split('scale(')[1]?.split(')')[0]) - let rotateZ = Number(this.imgDom.style.transform?.split('rotateZ(')[1]?.split('deg')[0]) + let scale = Number(this.imgDom.children[0].style.transform?.split('scale(')[1]?.split(')')[0]) + let rotateZ = Number(this.imgDom.children[0].style.transform?.split('rotateZ(')[1]?.split('deg')[0]) this.printStyleList[this.imgDomIndex].designElementsBtn = true this.printStyleList[this.imgDomIndex].transform = { scale:scale, - rotateZ:rotateZ, + rotateZ:rotateZ?rotateZ:0, } let imgDomWH = this.imgDom.getBoundingClientRect() let li = document.getElementsByClassName('designElementsMobile_modal')[0].getElementsByClassName("designElementsMobile_btn_top")[0].offsetWidth/2 @@ -393,13 +393,9 @@ export default defineComponent({ document.removeEventListener("touchmove", this.sizeMousemove); }, touchend(e) { - document.removeEventListener("touchend", this.touchend); document.removeEventListener("touchmove", this.moveMousemove); }, - - - deletePrint(){ this.exhibitionElementsList.splice(this.imgDomIndex,1) this.printStyleList.splice(this.imgDomIndex,1) @@ -442,38 +438,46 @@ export default defineComponent({ await this.setPrintWH(item.path) this.designElementsList let sketch = document.getElementsByClassName("designElementsMobile_modal")[0]?.getElementsByClassName('designElementsMobile_sketch')[0] - let sketchNum = this.sketch.width.replace(/rem/g,'')*10/sketch.offsetWidth - let scale - scale = (this.print.width.replace(/px/g,'')*sketchNum/this.print.width.replace(/px/g,'')) - let zIndex = 1 - let left = item.location[0]/sketchNum+'px' - let top = item.location[1]/sketchNum+'px' - if(sketch.offsetWidth < item.location[0]/sketchNum){ - left = sketch.offsetWidth +'px' - } - if(sketch.offsetHeight < item.location[1]/sketchNum){ - top = sketch.offsetHeight +'px' - } - this.printStyleList[index]={ - centers:{ - left:0, - top:0, - }, - style:{ - left:left, - top:top, - right:"auto", - bottom:"auto", - width:this.print.width.replace(/px/g,'')/sketchNum*item.scale+'px', - height:this.print.height.replace(/px/g,'')/sketchNum*item.scale+'px', - zIndex:zIndex++ - }, - transform:{ - // scale:scale<.2?.2:scale,//0.2-3 - rotateZ:item.angle, - }, - designElementsBtn:false + let sketchImg = new Image() + sketchImg.onload = ()=>{ + let sketchNum = this.sketch.width.replace(/rem/g,'')*10/sketch.offsetWidth + let scale + scale = (this.print.width.replace(/px/g,'')*sketchNum/this.print.width.replace(/px/g,'')) + let zIndex = 1 + let left = item.location[0]/sketchNum+'px' + let top = item.location[1]/sketchNum+'px' + if(sketch.offsetWidth < item.location[0]/sketchNum){ + left = sketch.offsetWidth +'px' + } + if(sketch.offsetHeight < item.location[1]/sketchNum){ + top = sketch.offsetHeight +'px' + } + console.log(sketch.offsetWidth,this.sketch.width.replace(/rem/g,'')); + + this.printStyleList[index]={ + centers:{ + left:0, + top:0, + }, + style:{ + left:left, + top:top, + right:"auto", + bottom:"auto", + width:this.print.width.replace(/px/g,'')/sketchNum*item.scale+'px', + height:this.print.height.replace(/px/g,'')/sketchNum*item.scale+'px', + zIndex:zIndex++ + }, + transform:{ + // scale:scale<.2?.2:scale,//0.2-3 + rotateZ:item.angle, + }, + designElementsBtn:false + } + sketchImg.remove() } + sketchImg.src = sketch.src + }, computeZindex(resolve,prints){ prints.sort((a, b) => { @@ -523,9 +527,6 @@ export default defineComponent({ index = ind } }) - let priority = designItemDetail.clothes.map((v)=>{ - return v.type - }) // let data = { // ...designItemDetail, // priority:priority, diff --git a/src/component/Detail/DesignPrintOperation.vue b/src/component/Detail/DesignPrintOperation.vue index 55629ae6..fae1bcc5 100644 --- a/src/component/Detail/DesignPrintOperation.vue +++ b/src/component/Detail/DesignPrintOperation.vue @@ -474,7 +474,7 @@ export default defineComponent({ this.printStyleList[this.stateOverallSingle][this.imgDomIndex].designOpenrtionBtn = true this.printStyleList[this.stateOverallSingle][this.imgDomIndex].transform = { scale:scale, - rotateZ:rotateZ, + rotateZ:rotateZ?rotateZ:0, } let imgDomWH = this.imgDom.getBoundingClientRect() let li = document.getElementsByClassName('designOpenrtion_modal')[0].getElementsByClassName("designOpenrtion_btn_top")[0].offsetWidth/2 diff --git a/src/component/Detail/DesignPrintOperationMobile.vue b/src/component/Detail/DesignPrintOperationMobile.vue index a6e03391..7980bce2 100644 --- a/src/component/Detail/DesignPrintOperationMobile.vue +++ b/src/component/Detail/DesignPrintOperationMobile.vue @@ -467,12 +467,12 @@ export default defineComponent({ itemSizeMousedown(direction,event){ this.direction = direction this.imgDom = document.getElementsByClassName('designOpenrtionMobile_modal')[0].getElementsByClassName("modal_imgItem")[this.imgDomIndex] - let scale = Number(this.imgDom.style.transform?.split('scale(')[1]?.split(')')[0]) - let rotateZ = Number(this.imgDom.style.transform?.split('rotateZ(')[1]?.split('deg')[0]) + let scale = Number(this.imgDom.children[0].style.transform?.split('scale(')[1]?.split(')')[0]) + let rotateZ = Number(this.imgDom.children[0].style.transform?.split('rotateZ(')[1]?.split('deg')[0]) this.printStyleList[this.stateOverallSingle][this.imgDomIndex].designOpenrtionBtn = true this.printStyleList[this.stateOverallSingle][this.imgDomIndex].transform = { scale:scale, - rotateZ:rotateZ, + rotateZ:rotateZ?rotateZ:0, } let imgDomWH = this.imgDom.getBoundingClientRect() let li = document.getElementsByClassName('designOpenrtionMobile_modal')[0].getElementsByClassName("designOpenrtionMobile_btn_top")[0].offsetWidth/2 diff --git a/src/component/LibraryPage/searchLabel.vue b/src/component/LibraryPage/searchLabel.vue index 03cf4693..aa155d3c 100644 --- a/src/component/LibraryPage/searchLabel.vue +++ b/src/component/LibraryPage/searchLabel.vue @@ -235,13 +235,13 @@ export default defineComponent({ let arr:any = [] rv.forEach((item:any) => { arr.push({ - name:item.name, - value:item.value, + name:item.value, + value:item.name, }) }); - this.designType = rv[0] - this.editDesignType = rv[0] - this.disignTypeList = rv + this.designType = arr[0] + this.editDesignType = arr[0] + this.disignTypeList = arr // this.workspaceItem.position = this.singleTypeList[0].label } }) diff --git a/src/lang/cn.ts b/src/lang/cn.ts index f714cfb2..d024ec82 100644 --- a/src/lang/cn.ts +++ b/src/lang/cn.ts @@ -450,6 +450,7 @@ export default { editSketchTitle:'修改草图', CurrentPrint:'当前印花', CurrentColor:'当前颜色', + CurrentElements:'当前元素', }, DesignDetailAlter:{ Upload:'上传', diff --git a/src/lang/en.ts b/src/lang/en.ts index f03c56c7..5fa6bb18 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -451,6 +451,7 @@ export default { editSketchTitle:'Modify sketch', CurrentPrint:'Current Print', CurrentColor:'Current Color', + CurrentElements:'Current Elements', }, DesignDetailAlter:{ Upload:'Upload', diff --git a/src/store/userHabit/userHabit.ts b/src/store/userHabit/userHabit.ts index b7a56e44..9cd15597 100644 --- a/src/store/userHabit/userHabit.ts +++ b/src/store/userHabit/userHabit.ts @@ -103,7 +103,7 @@ const userHabit : Module = { }); }) }, - getLangType(context){ + async getLangType(context){ let allPromise = []; let getList = ['DesignElementsEnum','PrintboardLevel2TypeEnum','FemalePosition','MalePosition'] let axiosGet = (item:any)=>{ @@ -130,7 +130,7 @@ const userHabit : Module = { }) }) } - return Promise.all(getList.map(item => axiosGet(item))) + return await Promise.all(getList.map(item => axiosGet(item))) // Https.axiosGet(Https.httpUrls.workspaceenumValues,{params:{enumName:'DesignElementsEnum'}}).then((rv: any) => { // if (rv) { // rv.forEach((item:any) => { diff --git a/src/views/HomeView/library.vue b/src/views/HomeView/library.vue index 6ec82f65..ea4f043f 100644 --- a/src/views/HomeView/library.vue +++ b/src/views/HomeView/library.vue @@ -342,7 +342,7 @@ -
      +
      @@ -388,6 +388,11 @@ export default defineComponent({ sketchCategory, createSlogan, }, + props:{ + getLangIsShowMark:{ + type:Boolean, + } + }, setup() { const store = useStore(); let menuList = computed(()=>{ @@ -613,7 +618,6 @@ export default defineComponent({ this.uploadUrl = getUploadUrl() this.getLibraryList('') this.getClass() - this.getSex() this.token = getCookie("token") || ""; this.workspace = computed(()=>{ return this.store?.state?.Workspace?.workspace @@ -646,7 +650,8 @@ export default defineComponent({ // params = 'MalePosition' // } this.store.commit('setPosition',this.sex) - this.designType = this.designTypeList.Sketchboard?.[0].value + this.designType = this.store.state.UserHabit.Position?.[0].value + // this.designType = this.designTypeList?.Sketchboard?.[0].value // await Https.axiosGet(Https.httpUrls.workspaceenumValues,{params:{enumName:params}}).then((rv: any) => { // if (rv) { @@ -722,6 +727,9 @@ export default defineComponent({ if(this.selectCode != 'DesignElements'){ this.getClass() } + if(this.selectCode == 'Sketchboard')this.getSex() + + this.getLibraryList('') this.captionGeneration = '' this.selectGenerateList = [] From d7e16e046fff54075a5246945d91105237789c4e Mon Sep 17 00:00:00 2001 From: wxd <1627315083@qq.com> Date: Sat, 14 Sep 2024 23:16:48 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AF=BC=E5=87=BAbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/component/HomePage/ExportModel.vue | 136 ++++++++++++++----------- 1 file changed, 77 insertions(+), 59 deletions(-) diff --git a/src/component/HomePage/ExportModel.vue b/src/component/HomePage/ExportModel.vue index d9ff6eb6..ce24cc82 100644 --- a/src/component/HomePage/ExportModel.vue +++ b/src/component/HomePage/ExportModel.vue @@ -277,7 +277,6 @@
      all
      -
      @@ -310,6 +309,7 @@ import { exportSele,JSRectUpdata,JSchangeType,JScanvasMouseDown,JScanvasMouseMov import { useI18n } from "vue-i18n"; import {isMoible,calculateGradientCoordinate,base64ToFile} from '@/tool/util' import publish from "@/component/WorksPage/publish.vue"; +import { connect } from "echarts"; export default defineComponent({ components: { @@ -326,7 +326,7 @@ export default defineComponent({ }) let showUpgradePlan = ref(false); - let canvas = reactive({}); + let canvas = ref({}); // let canvasDom = ref() let canvasWH = ref({ width: 400, @@ -363,11 +363,11 @@ export default defineComponent({ let isLoadCanvas = false//撤回或者反撤回false为撤回 let userlikeGroupId = 0 let init = (productData) => { + showUpgradePlan.value = true; userlikeGroupId = productData.userlikeGroupId canvasWH.value.height = 100 normalCanvasState.value = [] reverseCanvasState.value = [] - showUpgradePlan.value = true; allBoardData.value.likeDesignCollectionList = likeDesignCollectionList; allBoardData.value[productData.key] = productData.imgList; @@ -470,6 +470,7 @@ export default defineComponent({ //循环渲染顺序 let imgWidth = setImageWidth(key); //这是设置画布等宽 + // alert(imgWidth) let sketchGroupingItem = []; if ( item == "moodboardFiles" && @@ -501,62 +502,66 @@ export default defineComponent({ allItem.designOutfitUrl; } fabric.Image.fromURL(itemCanvasImg,(img) => { - let scaleWH = imgWidth / img.width; //计算放到画布上缩小倍率 - if(key == "sketchboardFiles"){ - if(allItemIndex == 0){ - position.x = 0; - position.y = maxHeight; - } - }else{ - if (position.x + img.width * scaleWH > canvasWH.value.width || oldKey != key) { - position.x = 0; - position.y = maxHeight; - } - } - setCanvasImage(img,key,position.x,position.y,allItem)//设置图片 - position.height = img.height * scaleWH + margin; - if (key == "sketchboardFiles") { - if (sketchGroupingItem.length <3) { - sketchGroupingItem.push(JSON.parse(JSON.stringify(position))); - } - if (sketchGroupingItem.length >2) { - let sketchXyIndex = { - maxIndex: 0, - maxNum: 0, - minNum: 999999, - minIndex: 0, - }; - sketchGroupingItem.forEach( - (sketchItem,sketchIndex) => { - if (sketchItem.y + sketchItem.height < sketchXyIndex.minNum) { - sketchXyIndex.minNum = sketchItem.y + sketchItem.height - sketchXyIndex.minIndex = sketchIndex; - } - if (sketchItem.y + sketchItem.height > sketchXyIndex.maxNum) { - sketchXyIndex.maxNum = sketchItem.y + sketchItem.height - sketchXyIndex.maxIndex = sketchIndex; - } - } - ); - sketchGroupingItem[sketchXyIndex.minIndex].y = sketchXyIndex.minNum - // sketchGroupingItem[sketchXyIndex.maxIndex].y = sketchXyIndex.maxNum - if (allBoardData.value[key].length == allItemIndex + 1) { - maxHeight = sketchXyIndex.maxNum - } else { - position = sketchGroupingItem[sketchXyIndex.minIndex]; + img.on('added', () => { + img.set({ crossOrigin: 'anonymous' }); + let scaleWH = imgWidth / img.width; //计算放到画布上缩小倍率 + if(key == "sketchboardFiles"){ + if(allItemIndex == 0){ + position.x = 0; + position.y = maxHeight; + } + }else{ + if (position.x + img.width * scaleWH > canvasWH.value.width || oldKey != key) { + position.x = 0; + position.y = maxHeight; } } - } - if(key == "sketchboardFiles" && sketchGroupingItem.length >2){ - }else{ - position.x += img.width * scaleWH + margin; - } - img.lock_rotation = true; - canvas.add(img); - oldKey = key; - // setTimeout(() => { + setCanvasImage(img,key,position.x,position.y,allItem)//设置图片 + position.height = img.height * scaleWH + margin; + if (key == "sketchboardFiles") { + if (sketchGroupingItem.length <3) { + sketchGroupingItem.push(JSON.parse(JSON.stringify(position))); + } + if (sketchGroupingItem.length >2) { + let sketchXyIndex = { + maxIndex: 0, + maxNum: 0, + minNum: 999999, + minIndex: 0, + }; + sketchGroupingItem.forEach( + (sketchItem,sketchIndex) => { + if (sketchItem.y + sketchItem.height < sketchXyIndex.minNum) { + sketchXyIndex.minNum = sketchItem.y + sketchItem.height + sketchXyIndex.minIndex = sketchIndex; + } + if (sketchItem.y + sketchItem.height > sketchXyIndex.maxNum) { + sketchXyIndex.maxNum = sketchItem.y + sketchItem.height + sketchXyIndex.maxIndex = sketchIndex; + } + } + ); + sketchGroupingItem[sketchXyIndex.minIndex].y = sketchXyIndex.minNum + // sketchGroupingItem[sketchXyIndex.maxIndex].y = sketchXyIndex.maxNum + if (allBoardData.value[key].length == allItemIndex + 1) { + maxHeight = sketchXyIndex.maxNum + } else { + position = sketchGroupingItem[sketchXyIndex.minIndex]; + } + } + } + if(key == "sketchboardFiles" && sketchGroupingItem.length >2){ + }else{ + position.x += img.width * scaleWH + margin; + } + let str = `${img.width} + ${scaleWH}` + img.lock_rotation = true; + oldKey = key; resolve() - // }, 1000); + }) + + canvas.add(img); + },{ crossOrigin: "Anonymous" }); } }); @@ -793,6 +798,7 @@ export default defineComponent({ let xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET", url, true); xmlhttp.responseType = "blob"; + xmlhttp.withCredentials = false; xmlhttp.onload = function () { if (this.status == 200) { resolve(this.response); @@ -812,15 +818,27 @@ export default defineComponent({ // 下载文件, 并存成ArrayBuffer对象(blob) zip.file(item.name, data, { binary: true }); // 逐个添加文件 cache[item.title] = data; - }); + }) promises.push(promise); } - Promise.all(promises) + Promise.all(promises) .then(() => { + function downloadBlob(blob, filename) { + const link = document.createElement('a'); + const url = URL.createObjectURL(blob); + link.href = url; + link.download = filename; + document.body.appendChild(link); + link.click(); + URL.revokeObjectURL(url); + document.body.removeChild(link); + } zip.generateAsync({ type: "blob" }).then((content) => { // 生成二进制流 - FileSaver.saveAs(content, "DesignFiles"); // 利用file-saver保存文件 自定义文件名 + downloadBlob(content,'DesignFiles') + // FileSaver.saveAs(content, "DesignFiles"); // 利用file-saver保存文件 自定义文件名 isShowMark.value = false; + }); setSubmit()//导出的时候保存 initAligningGuidelines(canvas,true)