From 1dfb5a9d8f7dd548c38f0ff09c9571f846f34118 Mon Sep 17 00:00:00 2001 From: X1627315083 <1627315083@qq.com> Date: Thu, 24 Jul 2025 09:26:27 +0800 Subject: [PATCH] fix --- src/component/Canvas/canvasExample.vue | 5 +- src/component/HomePage/Generate.vue | 2 +- src/component/HomePage/scaleImage.vue | 12 ++-- src/component/home/design/collection.vue | 2 +- .../design/collection/ColorboardUpload.vue | 47 ++++++++-------- .../design/collection/PrintboardUpload.vue | 24 ++++++-- .../design/collection/SketchboardUpload.vue | 18 +++++- src/component/home/design/collection/more.vue | 53 ++++++++++++++++-- src/component/home/design/tools.vue | 13 +++-- src/tool/https.js | 1 - src/views/HomeView/library.vue | 55 ++++++++++++++++++- src/views/Login.vue | 11 ++-- 12 files changed, 190 insertions(+), 53 deletions(-) diff --git a/src/component/Canvas/canvasExample.vue b/src/component/Canvas/canvasExample.vue index 5f5aa084..9ce67844 100644 --- a/src/component/Canvas/canvasExample.vue +++ b/src/component/Canvas/canvasExample.vue @@ -17,7 +17,7 @@ const imageData = [ name: "风景照片", type: "风景", imgList: [ - { url: "/src/assets/work/1.PNG", name: "山景" }, + { url: "https://www.minio-api.aida.com.hk/aida-users/83/printboard/7a0cccfc-1e3c-4c38-af65-d6179f21a267.png?response-content-type=image%2Fpng&response-content-disposition=inline&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20250723%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250723T025046Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=3612d6c168207bebdae2fa7c7c2c86ea0f48358b99b8b41dec9e2ff15e197e15", name: "山景" }, { url: "/src/assets/work/2.PNG", name: "海景" }, ], }, @@ -264,7 +264,8 @@ body { } .app-container { - height: 100vh; + height: 100%; +// height: 100vh; display: flex; flex-direction: column; } diff --git a/src/component/HomePage/Generate.vue b/src/component/HomePage/Generate.vue index 4bde8846..3ddd8364 100644 --- a/src/component/HomePage/Generate.vue +++ b/src/component/HomePage/Generate.vue @@ -201,7 +201,7 @@ - + diff --git a/src/component/HomePage/scaleImage.vue b/src/component/HomePage/scaleImage.vue index c0057757..e73df63a 100644 --- a/src/component/HomePage/scaleImage.vue +++ b/src/component/HomePage/scaleImage.vue @@ -135,7 +135,7 @@
- + +
{{ $t('more.edit') }}
@@ -30,6 +31,7 @@ import { Https } from "@/tool/https"; import { useStore } from "vuex"; import { useI18n } from 'vue-i18n' import { downloadIamge } from "@/tool/util"; +import { Modal } from "ant-design-vue"; import modalCanvas from "@/component/modules/generalModalCanvas.vue"; export default defineComponent({ @@ -38,6 +40,7 @@ export default defineComponent({ }, props:{ moreList:{type:Array,default:()=>[]}, + list:{type:Array,default:()=>[]}, item:{type:Object,default:()=>{}}, index:{type:Number,default:0}, level1Type:{type:String,default:''}, @@ -45,6 +48,7 @@ export default defineComponent({ emits:['deleteFile','scaleImage'], setup(props,{emit}) { const store = useStore(); + const {t} = useI18n() const data = reactive({ show:false }) @@ -73,9 +77,50 @@ export default defineComponent({ } setShow() } - const saveBase64Img = (rv)=>{ - console.log(rv) - console.log(props.item) + const saveBase64Img = async (rv)=>{ + let isOverlay = false + await new Promise((resolve, reject) => { + Modal.confirm({ + title: t('scaleImage.overlayOrNot'), + icon: createVNode(ExclamationCircleOutlined), + okText: 'Yes', + cancelText: 'No', + mask:false, + centered:true, + onOk() { + resolve() + isOverlay = true + + }, + onCancel(){ + isOverlay = false + resolve() + } + }); + }) + let data = { + "base64": rv, + "category": props.item.categoryValue, + "gender": store.state.Workspace.probjects.sex, + "originalId":props.item.resData.id, + "isOverride":isOverlay, + originalIdSource:props.item.resData.designType, + type:props.level1Type, + } + Https.axiosPost(Https.httpUrls.modifySketch, data).then( + (rv) => { + rv.imgUrl = rv.url + rv.status = 'Success' + rv.resData = { + id:rv.id, + designType:props.item.resData.designType, + } + rv.category = props.item?.category + rv.categoryValue = props.item?.categoryValue + isOverlay?(props.list[props.index] = rv):(props.list.unshift(rv)) + } + ).catch(res=>{ + }); } return{ ...toRefs(dataDom), diff --git a/src/component/home/design/tools.vue b/src/component/home/design/tools.vue index 3c88b652..3e6e6289 100644 --- a/src/component/home/design/tools.vue +++ b/src/component/home/design/tools.vue @@ -58,6 +58,8 @@ + +
@@ -86,10 +88,12 @@ import editCanvas from "@/component/Canvas/CanvasEditor/index.vue"; import ExistsImageList from "@/component/Canvas/ExistsImageList/index.vue"; import JSZip, { forEach } from "jszip"; import publish from "@/component/WorksPage/publish.vue"; +import canvasAA from '@/component/Canvas/canvasExample.vue' + export default defineComponent({ components:{ - toProductRelight,poseTransfer,editCanvas,ExistsImageList,publish + toProductRelight,poseTransfer,editCanvas,ExistsImageList,publish,canvasAA }, props:{ source:{ @@ -268,6 +272,7 @@ export default defineComponent({ const saveCanvas = ()=>{ let canvasJSON = dataDom.editCanvas.getJSON() let canvasData = JSON.parse(canvasJSON) + if(!canvasData)return canvasData.canvas.objects.forEach((objectsItem:any) => { if(objectsItem.type == 'image')objectsItem.minioUrl = getMinioUrl(objectsItem.src) @@ -306,7 +311,7 @@ export default defineComponent({ let nameTail = imgItem.url?.split(".").pop().split("?").shift(); img.push({ imgUrl:imgItem.url, - name:`${item.type}${index}.${nameTail}` + name:`${item.type}${index}.${nameTail?nameTail:'png'}` }) }) } @@ -373,9 +378,7 @@ export default defineComponent({ } const share = async ()=>{ var imageDataURL = ''; - await dataDom.editCanvas.exportImage({isContainBg:true,isContainFixed:false}).then((rv:any)=>{ - imageDataURL = rv - }) + imageDataURL = await dataDom.editCanvas.exportImage({isContainBg:true,isContainFixed:false}) console.log(imageDataURL) let value = { imgUrl:imageDataURL, diff --git a/src/tool/https.js b/src/tool/https.js index 11a17cb1..c5091eca 100644 --- a/src/tool/https.js +++ b/src/tool/https.js @@ -101,7 +101,6 @@ axios.interceptors.response.use((res) =>{ } }, function(error) { if(error?.response?.status === 401 && router.currentRoute._value.name != 'setIdentification'){//如果是记录浏览器页面就不跳转login - return clonAllCookie() if(!isLoginTime){ isLoginTime = true diff --git a/src/views/HomeView/library.vue b/src/views/HomeView/library.vue index c3d2c7cd..cd0b05ef 100644 --- a/src/views/HomeView/library.vue +++ b/src/views/HomeView/library.vue @@ -225,6 +225,9 @@
+
+ +
@@ -464,6 +467,7 @@
+
@@ -483,6 +487,10 @@
+
+ +
+
@@ -502,13 +510,15 @@ - + + + @@ -521,6 +531,7 @@ import setLabel from '@/component/LibraryPage/setLabel.vue'; import brandDetail from '@/component/LibraryPage/brandDetail.vue'; import createBrand from '@/component/LibraryPage/createBrand.vue'; import searchLabel from '@/component/LibraryPage/searchLabel.vue'; +import modalCanvas from "@/component/modules/generalModalCanvas.vue"; // import RobotAssist from "@/component/HomePage/RobotAssist.vue"; import { Modal,message,Upload,CascaderProps } from 'ant-design-vue'; @@ -552,6 +563,7 @@ export default defineComponent({ generalMenu, UpgradePlan, mannequinEdit, + modalCanvas, }, props:{ }, @@ -595,12 +607,14 @@ export default defineComponent({ const dataDom = reactive({ createBrand:null as any, brandDetail:null as any, + modalCanvas:null as any, }) const pageData = reactive({ isBrandDetail:false, brandDNAList:[] as any, ageGroup:'', ageGroupList:computed(()=>store.state.UserHabit.ageGroup), + editIndex:-1, }) let designTypeList:any = ref({ Sketchboard:positionType, @@ -845,7 +859,42 @@ export default defineComponent({ const addBrand = ()=>{ dataDom.createBrand.openAddBrand() } - + const editImg = (item:any,index:number)=>{ + console.log(item) + pageData.editIndex = index + dataDom.modalCanvas.init(item,'') + // imgList + } + const saveBase64Img = (rv)=>{ + let item = imgList.value[pageData.editIndex] + if(uploadGenerate.value !='Upload'){ + item = generateList.value[selectCode.value] + item.designType = 'Generate' + item.level1Type = selectCode.value + return + } + let data = { + "base64": rv, + "category": item.level2Type, + "gender": sex.value, + "originalId":item.id, + "isOverride":true, + originalIdSource:item.designType, + type:item.level1Type, + } + Https.axiosPost(Https.httpUrls.modifySketch, data).then( + (rv) => { + // rv.imgUrl = rv.url + // rv.status = 'Success' + // rv.designType = item.designType + // rv.category = props.categoryValue + // rv.categoryValue = props.item?.categoryValue + // props.list[props.index] = rv + item.url = rv.url + } + ).catch(res=>{ + }); + } return { ...toRefs(dataDom), ...toRefs(pageData), @@ -907,6 +956,8 @@ export default defineComponent({ setSpeed, openBrandDetail, addBrand, + editImg, + saveBase64Img, } }, data(this_) { diff --git a/src/views/Login.vue b/src/views/Login.vue index a925520d..3010b8e8 100644 --- a/src/views/Login.vue +++ b/src/views/Login.vue @@ -25,7 +25,7 @@ AiDA, a first-to-market technology that empowers fashion designers, based on their creative inspirations, to work with AI to create original designs. -
+
Continue with one of these:
@@ -33,11 +33,11 @@ Individual
- +