diff --git a/components.d.ts b/components.d.ts index 27d9abac..fb059677 100644 --- a/components.d.ts +++ b/components.d.ts @@ -9,8 +9,10 @@ export {} declare module 'vue' { export interface GlobalComponents { ABadge: typeof import('ant-design-vue/es')['Badge'] + ABreadcrumb: typeof import('ant-design-vue/es')['Breadcrumb'] ACheckbox: typeof import('ant-design-vue/es')['Checkbox'] AConfigProvider: typeof import('ant-design-vue/es')['ConfigProvider'] + ADatePicker: typeof import('ant-design-vue/es')['DatePicker'] ADrawer: typeof import('ant-design-vue/es')['Drawer'] ADropdown: typeof import('ant-design-vue/es')['Dropdown'] AImage: typeof import('ant-design-vue/es')['Image'] @@ -24,9 +26,13 @@ declare module 'vue' { ASelect: typeof import('ant-design-vue/es')['Select'] ASelectOption: typeof import('ant-design-vue/es')['SelectOption'] ASlider: typeof import('ant-design-vue/es')['Slider'] + ASpace: typeof import('ant-design-vue/es')['Space'] ASpin: typeof import('ant-design-vue/es')['Spin'] + ASubMenu: typeof import('ant-design-vue/es')['SubMenu'] ASwitch: typeof import('ant-design-vue/es')['Switch'] ATable: typeof import('ant-design-vue/es')['Table'] + ATabPane: typeof import('ant-design-vue/es')['TabPane'] + ATabs: typeof import('ant-design-vue/es')['Tabs'] AUpload: typeof import('ant-design-vue/es')['Upload'] ElCascader: typeof import('element-plus/es')['ElCascader'] RouterLink: typeof import('vue-router')['RouterLink'] diff --git a/src/component/Account/frontPage/bindPage.vue b/src/component/Account/frontPage/bindPage.vue index 61e81949..7ec33f51 100644 --- a/src/component/Account/frontPage/bindPage.vue +++ b/src/component/Account/frontPage/bindPage.vue @@ -28,7 +28,7 @@ -->
- +
@@ -276,7 +276,7 @@ export default defineComponent({ > .gallery_btn{ position: relative; z-index: 2; - pointer-events: none; + } #g_id_bind{ position: absolute; diff --git a/src/component/Canvas/CanvasEditor/index.vue b/src/component/Canvas/CanvasEditor/index.vue index 359f350a..39a2d0d1 100644 --- a/src/component/Canvas/CanvasEditor/index.vue +++ b/src/component/Canvas/CanvasEditor/index.vue @@ -468,13 +468,14 @@ onMounted(async () => { // 使用window的resize事件代替ResizeObserver // 只有当窗口大小变化时才更新画布尺寸 // window.addEventListener("resize", handleWindowResize); - if(props.config.initZoom) { const width = canvasManager.width; const height = canvasManager.height; const cwidth = props.config.width; const cheight = props.config.height; - setZoom(Math.min(width/cwidth,height/cheight)); // 设置画布缩放 + let zoom = Math.min(1,width/cwidth,height/cheight); + if(zoom < 1) zoom -= 0.05; + setZoom(zoom); // 设置画布缩放 } }); @@ -540,20 +541,20 @@ function handleWindowResize() { function resetZoom() { canvasManager.resetZoom(); } + function setZoom(zoom) { setTimeout(()=>{ if (!canvasManager) return; - const newZoom = Math.max(zoom / 1.1, 0.1); // 减少10%,最小0.1倍 - + const newZoom = Math.max(zoom, 0.1); // 减少10%,最小0.1倍 // 使用画布中心作为缩放点 const centerPoint = { x: canvasManager.canvas.width / 2, y: canvasManager.canvas.height / 2, }; - canvasManager.animateZoom(centerPoint, newZoom); }) } + function zoomIn() { if (!canvasManager) return; diff --git a/src/component/Canvas/CanvasEditor/managers/CanvasManager.js b/src/component/Canvas/CanvasEditor/managers/CanvasManager.js index 0070d03a..a0abed05 100644 --- a/src/component/Canvas/CanvasEditor/managers/CanvasManager.js +++ b/src/component/Canvas/CanvasEditor/managers/CanvasManager.js @@ -811,7 +811,7 @@ export class CanvasManager { * @param {Array} options.layerIdArray 导出多个图层ID数组 * @param {String} options.expPicType 导出图片类型 (png/jpg/svg) * @param {Boolean} options.restoreOpacityInRedGreen 红绿图模式下是否恢复透明度为1 - * @param {Boolean} options.isEnhanceImg 是否是增强图片 + * @param {Boolean} options.isEnhanceImg 是否是增强图片 * @returns {String} 导出的图片数据URL */ async exportImage(options = {}) { diff --git a/src/component/Canvas/CanvasEditor/managers/ExportManager.js b/src/component/Canvas/CanvasEditor/managers/ExportManager.js index d9107e26..14bca2bd 100644 --- a/src/component/Canvas/CanvasEditor/managers/ExportManager.js +++ b/src/component/Canvas/CanvasEditor/managers/ExportManager.js @@ -18,12 +18,12 @@ export class ExportManager { * @param {Object} options 导出选项 * @param {Boolean} options.isContainBg 是否包含背景图层 * @param {Boolean} options.isContainFixed 是否包含固定图层 - * @param {Boolean} options.isCropByBg 是否使用背景大小裁剪 + * @param {Boolean} options.isCropByBg 是否使用背景大小裁剪 * @param {String} options.layerId 导出具体图层ID * @param {Array} options.layerIdArray 导出多个图层ID数组 * @param {String} options.expPicType 导出图片类型 (png/jpg/svg) * @param {Boolean} options.restoreOpacityInRedGreen 红绿图模式下是否恢复透明度为1 - * @param {Boolean} options.isEnhanceImg 是否是增强图片 + * @param {Boolean} options.isEnhanceImg 是否是增强图片 * @returns {String} 导出的图片数据URL */ exportImage(options = {}) { @@ -48,7 +48,7 @@ export class ExportManager { isRedGreenMode, restoreOpacityInRedGreen, isCropByBg, - isEnhanceImg, + isEnhanceImg, // 是否是增强图片 ); } @@ -62,7 +62,7 @@ export class ExportManager { isRedGreenMode, restoreOpacityInRedGreen, isCropByBg, - isEnhanceImg + isEnhanceImg, // 是否是增强图片 ); } @@ -74,7 +74,7 @@ export class ExportManager { isRedGreenMode, restoreOpacityInRedGreen, isCropByBg, - isEnhanceImg + isEnhanceImg, // 是否是增强图片 ); } catch (error) { console.error("导出图片失败:", error); @@ -98,7 +98,7 @@ export class ExportManager { expPicType, isRedGreenMode, restoreOpacityInRedGreen, - isCropByBg, + isCropByBg, // 是否使用背景大小裁剪 isEnhanceImg, // 是否是增强图片 ) { if (!this.layerManager) { @@ -127,7 +127,9 @@ export class ExportManager { return this._exportWithRedGreenMode( objectsToExport, expPicType, - restoreOpacityInRedGreen + restoreOpacityInRedGreen, + isCropByBg, // 是否使用背景大小裁剪 + isEnhanceImg, // 是否是增强图片 ); } @@ -149,7 +151,7 @@ export class ExportManager { * @param {Boolean} isContainFixed 是否包含固定图层 * @param {Boolean} isRedGreenMode 是否为红绿图模式 * @param {Boolean} restoreOpacityInRedGreen 红绿图模式下是否恢复透明度为1 - * @param {Boolean} isCropByBg 是否根据背景裁剪 + * @param {Boolean} isCropByBg 是否使用背景大小裁剪 * @param {Boolean} isEnhanceImg 是否是增强图片 * @returns {String} 图片数据URL * @private @@ -161,7 +163,7 @@ export class ExportManager { isContainFixed, isRedGreenMode, restoreOpacityInRedGreen, - isCropByBg, // 是否根据背景裁剪 + isCropByBg, // 是否使用背景大小裁剪 isEnhanceImg, // 是否是增强图片 ) { if (!this.layerManager) { @@ -194,7 +196,7 @@ export class ExportManager { objectsToExport, expPicType, restoreOpacityInRedGreen, - isCropByBg, // 是否根据背景裁剪 + isCropByBg, // 是否使用背景大小裁剪 isEnhanceImg, // 是否是增强图片 ); } @@ -206,7 +208,7 @@ export class ExportManager { * @param {Boolean} isContainFixed 是否包含固定图层 * @param {Boolean} isRedGreenMode 是否为红绿图模式 * @param {Boolean} restoreOpacityInRedGreen 红绿图模式下是否恢复透明度为1 - * @param {Boolean} isCropByBg 是否根据背景裁剪 + * @param {Boolean} isCropByBg 是否使用背景大小裁剪 * @param {Boolean} isEnhanceImg 是否是增强图片 * @returns {String} 图片数据URL * @private @@ -217,8 +219,8 @@ export class ExportManager { isContainFixed, isRedGreenMode, restoreOpacityInRedGreen, - isCropByBg, - isEnhanceImg + isCropByBg, // 是否使用背景大小裁剪 + isEnhanceImg, // 是否是增强图片 ) { // 按图层顺序收集对象(从底到顶) const objectsToExport = this._collectObjectsByLayerOrder( @@ -272,7 +274,7 @@ export class ExportManager { expPicType, restoreOpacityInRedGreen, canvasClipPath, - isCropByBg, // 是否根据背景裁剪 + isCropByBg, // 是否使用背景大小裁剪 isEnhanceImg, // 是否是增强图片 ); } @@ -635,7 +637,7 @@ export class ExportManager { objectsToExport, expPicType, restoreOpacityInRedGreen, - maskObject, + maskObject, // 裁剪对象 isCropByBg, // 是否使用背景大小裁剪 isEnhanceImg, // 是否是增强图片 ) { @@ -656,7 +658,7 @@ export class ExportManager { trimWhitespace: true, // 裁剪空白 trimPadding: 0, // 裁剪边距 restoreOpacityInRedGreen, - isCropByBg, // 是否根据背景裁剪 + isCropByBg, // 是否使用背景大小裁剪 isEnhanceImg, // 是否是增强图片 }); diff --git a/src/component/Canvas/CanvasEditor/utils/selectionToImage.js b/src/component/Canvas/CanvasEditor/utils/selectionToImage.js index 70c6920f..2f518624 100644 --- a/src/component/Canvas/CanvasEditor/utils/selectionToImage.js +++ b/src/component/Canvas/CanvasEditor/utils/selectionToImage.js @@ -42,7 +42,7 @@ export const createRasterizedImage = async ({ clippingObject, isReturenDataURL, selectionManager, // 传递选区管理器 - isEnhanceImg, // 是否是增强图片 + isEnhanceImg, // 是否是增强图片 }); } @@ -83,7 +83,7 @@ const createClippedObjects = async ({ clippingObject, isReturenDataURL, selectionManager = null, // 新增选区管理器参数 - isEnhanceImg, // 是否是增强图片 + isEnhanceImg, // 是否是增强图片 }) => { try { console.log("🎯 使用新的图像遮罩裁剪方法创建对象"); @@ -113,7 +113,7 @@ const createClippedObjects = async ({ clippingObject, selectionBounds: optimizedBounds, // 使用优化后的边界框 featherAmount, - isEnhanceImg, // 是否是增强图片 + isEnhanceImg, // 是否是增强图片 }); } @@ -124,7 +124,7 @@ const createClippedObjects = async ({ clippingObject, selectionBounds: optimizedBounds, // 使用优化后的边界框 featherAmount, - isEnhanceImg, // 是否是增强图片 + isEnhanceImg, // 是否是增强图片 }); // 将DataURL转换为fabric.Image对象 @@ -178,7 +178,7 @@ const createClippedDataURLByCanvas = async ({ clippingObject, selectionBounds, featherAmount = 0, - isEnhanceImg = false, // 是否是增强图片 + isEnhanceImg = false, // 是否是增强图片 }) => { try { console.log("🖼️ 使用图像遮罩裁剪方法生成DataURL"); @@ -192,7 +192,7 @@ const createClippedDataURLByCanvas = async ({ // 使用高分辨率以保证质量 const pixelRatio = window.devicePixelRatio || 1; const qualityMultiplier = !!isEnhanceImg ? Math.max(2, pixelRatio) : 1; - + console.log("使用高分辨率以保证质量:" + isEnhanceImg, optimizedBounds); const canvasWidth = Math.ceil(optimizedBounds.width * qualityMultiplier); @@ -463,7 +463,7 @@ const createLegacyRasterization = async ({ quality, format, isReturenDataURL, - isCropByBg, // 是否根据背景裁剪 + isCropByBg, // 是否根据背景裁剪 isEnhanceImg, // 是否是增强图片 }) => { console.log("⚠️ 使用兼容的离屏渲染方法"); @@ -491,7 +491,7 @@ const createLegacyRasterization = async ({ format, currentZoom, isReturenDataURL, - isCropByBg, // 是否根据背景裁剪 + isCropByBg, // 是否根据背景裁剪 isEnhanceImg, // 是否是增强图片 }); }; diff --git a/src/component/Detail/DesignDetail.vue b/src/component/Detail/DesignDetail.vue index 4c18d58e..0da7011a 100644 --- a/src/component/Detail/DesignDetail.vue +++ b/src/component/Detail/DesignDetail.vue @@ -167,61 +167,64 @@ export default defineComponent({ } const showDesignDetailModal = (data:any,str:any)=>{ - // let url = Https.httpUrls.getDesignDetail + `?designItemId=${77770}&designPythonOutfitId=${77423}` - let url = Https.httpUrls.getDesignDetail + `?designItemId=${data.design.designItemId}&designPythonOutfitId=${data.design.designOutfitId}` - detailData.loadingShow = true - Https.axiosGet(url).then( - async (rv: any) => { - store.commit('DesignDetail/setDesignDetail',rv) - rv.clothes.forEach((item:any)=>{ - let a - item.designType='Library' - if(item.layersObject[0].imageCategory.indexOf("back") == -1){ - a = item.layersObject[0] - item.layersObject[0] = item.layersObject[1] - item.layersObject[1] = a - } - if(item.color){ - item.color.rgba = { - r:item.color.r, - g:item.color.g, - b:item.color.b, + return new Promise((resolve, reject) => { + store.commit('DesignDetail/clearDetailData') + // let url = Https.httpUrls.getDesignDetail + `?designItemId=${77770}&designPythonOutfitId=${77423}` + let url = Https.httpUrls.getDesignDetail + `?designItemId=${data.design.designItemId}&designPythonOutfitId=${data.design.designOutfitId}` + detailData.loadingShow = true + Https.axiosGet(url).then( + async (rv: any) => { + store.commit('DesignDetail/setDesignDetail',rv) + rv.clothes.forEach((item:any)=>{ + let a + item.designType='Library' + if(item.layersObject[0].imageCategory.indexOf("back") == -1){ + a = item.layersObject[0] + item.layersObject[0] = item.layersObject[1] + item.layersObject[1] = a } - }else{ - item.color = { - // rgba:{ - // r:undefined, - // g:undefined, - // b:undefined, - // } + if(item.color){ + item.color.rgba = { + r:item.color.r, + g:item.color.g, + b:item.color.b, + } + }else{ + item.color = { + // rgba:{ + // r:undefined, + // g:undefined, + // b:undefined, + // } + } } - } - if(item.gradient){ - item.color.gradient = item.gradient - } - if(item.printObject.prints == null)item.printObject.prints = [] - item.printObject.prints.forEach((element:any) => { - if(!element.designType){ - element.designType = 'Library' + if(item.gradient){ + item.color.gradient = item.gradient } - }); - }) - detailData.singleOveral.value = rv.singleOverall - detailData.designDetailShow = true - // this.deleteShow = false - initialize() - setRevocation() - detailData.loadingShow = false - if(rv.singleOverall == "single"){ - console.log(rv.clothes) - store.commit('DesignDetail/setDesignColthes',rv.clothes[0].id) + if(item.printObject.prints == null)item.printObject.prints = [] + item.printObject.prints.forEach((element:any) => { + if(!element.designType){ + element.designType = 'Library' + } + }); + }) + 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) + } + resolve(rv) } - - } - - ).catch(rv=>{ - detailData.loadingShow = false - }) + ).catch(rv=>{ + detailData.loadingShow = false + resolve(rv) + }) + }) + } const initialize = ()=>{//design后初始化 @@ -299,7 +302,6 @@ export default defineComponent({ // 0.35822305 // ] let isCurrent = list[i].id == detailData?.selectDetail?.id - console.log(isCurrent,newData) let color = (detailData.currentDetailType == 'color' && isCurrent && !detailData.isEditPattern.value)? (newData?.rgba?.r?`${newData.rgba.r} ${newData.rgba.g} ${newData.rgba.b}`:''): (list[i].color?.rgba?.r? @@ -380,6 +382,7 @@ export default defineComponent({ delete detailData.designDetail.newModel store.commit('DesignDetail/setPraeview',value) detailData.loadingShow = false + canvasReload() // setRevocation() }).catch(res=>{ detailData.loadingShow = false diff --git a/src/component/Detail/canvas/index.vue b/src/component/Detail/canvas/index.vue index 3b53ff1f..9d3d59cc 100644 --- a/src/component/Detail/canvas/index.vue +++ b/src/component/Detail/canvas/index.vue @@ -257,7 +257,6 @@ export default defineComponent({ detailData.isShowMark = true } const index = detailData.designDetail.clothes.findIndex(item => item.id === detailData.selectDetail.id); - console.log(index,detailData.selectDetail.id) await new Promise((resolve, reject) => { if(!detailDom?.editCanvas)return resolve() let canvasJSON = detailDom?.editCanvas?.getJSON() @@ -302,8 +301,7 @@ export default defineComponent({ if(front?.oldImageUrl)front.imageUrl = front.oldImageUrl if(front?.oldMaskUrl)front.maskUrl = front.oldMaskUrl if(back?.oldImageUrl)back.imageUrl = back.oldImageUrl - console.log(front) - if(front?.oldMaskUrl)store.commit('DesignDetail/updataDetailItem',{maskUrl:front.oldMaskUrl}) + if(front?.oldMaskUrl)store.commit('DesignDetail/updataDetailItem',{maskUrl:front.maskUrl}) sessionStorage.removeItem('frontBackEdit'); sessionStorage.removeItem('sketchEdit'); diff --git a/src/component/Detail/detailRight/editPrintElement.vue b/src/component/Detail/detailRight/editPrintElement.vue index 23ffa117..3f776923 100644 --- a/src/component/Detail/detailRight/editPrintElement.vue +++ b/src/component/Detail/detailRight/editPrintElement.vue @@ -334,7 +334,7 @@ export default defineComponent({ } if(!editPrintElementData.selectDetail.printObject.prints)return let state = true - editPrintElementData.stateOverallSingle = 'single' + // editPrintElementData.stateOverallSingle = 'single' let arr:any = editPrintElementData.selectDetail.printObject.prints if(props.type == 'element'){ arr = editPrintElementData.selectDetail.trims.prints @@ -344,7 +344,7 @@ export default defineComponent({ } if(arr && arr.length > 0){ arr.forEach((item:any)=>{ - if(!item.ifSingle){ + if(!item.ifSingle && arr.length == 1){ editPrintElementData.stateOverallSingle = 'overall', state = false } diff --git a/src/component/Detail/model/modelNav.vue b/src/component/Detail/model/modelNav.vue index 4c565ffe..3e924ebf 100644 --- a/src/component/Detail/model/modelNav.vue +++ b/src/component/Detail/model/modelNav.vue @@ -71,31 +71,31 @@ export default defineComponent({ },{immediate:true}) const selectDetailItem = (item:any,index:number)=>{ new Promise((resolve, reject) => { - // if(detailData.isEditPattern.value && - // detailData.selectDetail?.id && - // detailData?.getCanvasIfEdit?.fun&&detailData?.getCanvasIfEdit?.fun() > 0 - // ){ - // Modal.confirm({ - // title: t('collectionModal.jsContent2'), - // icon: createVNode(ExclamationCircleOutlined), - // okText: 'Yes', - // cancelText: 'No', - // mask:false, - // centered:true, - // onOk() { - // resolve(true) - // emit('canvasReload') - // }, - // onCancel(){ - // resolve(false) - // } - // }); - // }else{ + if(detailData.isEditPattern.value && + detailData.selectDetail?.id && + detailData?.getCanvasIfEdit?.fun&&detailData?.getCanvasIfEdit?.fun() > 0 + ){ + Modal.confirm({ + title: t('collectionModal.jsContent6'), + icon: createVNode(ExclamationCircleOutlined), + okText: 'Yes', + cancelText: 'No', + mask:false, + centered:true, + onOk() { + resolve(true) + emit('canvasReload') + }, + onCancel(){ + resolve(false) + } + }); + }else{ resolve(true) if(detailData.selectDetail.id !== item.id){ emit('canvasReload') } - // } + } }).then((rv)=>{ if(rv)store.commit('DesignDetail/setDesignColthes',item.id) }) diff --git a/src/component/Detail/model/modelPosition.vue b/src/component/Detail/model/modelPosition.vue index e57e5df3..c3ad850a 100644 --- a/src/component/Detail/model/modelPosition.vue +++ b/src/component/Detail/model/modelPosition.vue @@ -4,7 +4,7 @@
- +
@@ -239,38 +239,41 @@ export default defineComponent({ // } } const itemMoveMousedown = async (index:any,e:any)=>{ + if(detailData.selectDetail.id != detailData.frontBack.front[index].id)return let isOpen = false let isModal = false await new Promise((resolve, reject) => { - if( - detailData.isEditPattern.value && - selectItem.selectDetail?.id && - (detailData.frontBack.front[index].id != selectItem.selectDetail.id) - ){ - isModal = true - Modal.confirm({ - title: t('collectionModal.jsContent2'), - icon: createVNode(ExclamationCircleOutlined), - okText: 'Yes', - cancelText: 'No', - mask:false, - centered:true, - onOk() { - resolve(true) - isOpen = true - }, - onCancel(){ - resolve(false) - isOpen = false - } - }); - }else{ - if(detailData.frontBack.front[index].id != selectItem.selectDetail.id){ - isOpen = true - } - resolve(true) - isModal = false - } + // if( + // detailData.isEditPattern.value && + // selectItem.selectDetail?.id && + // (detailData.frontBack.front[index].id != selectItem.selectDetail.id) + // ){ + // isModal = true + // Modal.confirm({ + // title: t('collectionModal.jsContent2'), + // icon: createVNode(ExclamationCircleOutlined), + // okText: 'Yes', + // cancelText: 'No', + // mask:false, + // centered:true, + // onOk() { + // resolve(true) + // isOpen = true + // }, + // onCancel(){ + // resolve(false) + // isOpen = false + // } + // }); + // }else{ + // if(detailData.frontBack.front[index].id != selectItem.selectDetail.id){ + // isOpen = true + // } + // resolve(true) + // isModal = false + // } + resolve(true) + isOpen = true }).then((rv)=>{ }) if(isOpen){ diff --git a/src/component/HomePage/bindEmail.vue b/src/component/HomePage/bindEmail.vue index 7ffd5464..409e5fe6 100644 --- a/src/component/HomePage/bindEmail.vue +++ b/src/component/HomePage/bindEmail.vue @@ -365,7 +365,7 @@ export default defineComponent({ title:this.selectSex, surname:this.surname, givenName:this.givenName, - userId:this.userDetail.userId, + userId:this.userDetail?.userId, }; if(this.loginTime){ this.loginTime = false diff --git a/src/component/home/design/collection/MoodboardUpload.vue b/src/component/home/design/collection/MoodboardUpload.vue index 0b04d394..93d3ad27 100644 --- a/src/component/home/design/collection/MoodboardUpload.vue +++ b/src/component/home/design/collection/MoodboardUpload.vue @@ -339,7 +339,7 @@ export default defineComponent({ }, deleteFile(item: any) { - if(item.type_.type1 == 'generate' || item.type_.type1 == 'material'){ + if(item?.type_?.type1 == 'generate' || item?.type_?.type1 == 'material'){ item.jsContent1 = this.t('uploadFile.jsContent1',{maxImg:8}) item.state = 'delete' this.store.commit("addGenerateMaterialFils", item); diff --git a/src/component/home/design/collection/PrintboardUpload.vue b/src/component/home/design/collection/PrintboardUpload.vue index e92add64..d1d37d96 100644 --- a/src/component/home/design/collection/PrintboardUpload.vue +++ b/src/component/home/design/collection/PrintboardUpload.vue @@ -385,7 +385,7 @@ export default defineComponent({ deleteFile(item:any){ // this.fileList.splice(item, 1) // this.store.commit('setPrintboardFile',this.fileList) - if(item.type_.type1 == 'generate' || item.type_.type1 == 'material'){ + if(item?.type_?.type1 == 'generate' || item?.type_?.type1 == 'material'){ item.jsContent1 = this.t('uploadFile.jsContent1',{maxImg:16}) item.state = 'delete' this.store.commit("addGenerateMaterialFils", item); @@ -610,7 +610,6 @@ export default defineComponent({ } this.fileList.push(data) } - console.log(this.fileList) this.store.commit('setPrintboardFile',this.fileList) }, diff --git a/src/component/home/design/collection/more.vue b/src/component/home/design/collection/more.vue index a912c326..1c77c9ce 100644 --- a/src/component/home/design/collection/more.vue +++ b/src/component/home/design/collection/more.vue @@ -124,6 +124,14 @@ export default defineComponent({ designType:props.item.resData.designType, } }else{ + rv.imgUrl = rv.url + rv.category = props.item.category + rv.categoryValue = props.item.categoryValue + rv.resData = { + id:rv.id, + url:rv.url, + designType:props.item.resData.designType, + } props.list.unshift(rv) } } diff --git a/src/component/home/design/index.vue b/src/component/home/design/index.vue index afbb8946..7999a1ef 100644 --- a/src/component/home/design/index.vue +++ b/src/component/home/design/index.vue @@ -2129,13 +2129,14 @@ export default defineComponent({ type: string ) { // if() - if(this.isMove)return + if(this.isMove || this.isShowMark)return this.store.commit('setOpenChatStatus',false) if(design.resultType != "Design"){ this.selectEditBtn = design this.setEditDesignType(collectionList,index,design.resultType,'edit',type) return } + this.isShowMark = true design.designOutfitId = design.designPythonOutfitId?design.designPythonOutfitId:design.designOutfitId let data = { design: design, @@ -2146,7 +2147,9 @@ export default defineComponent({ this.detailDestroy = true nextTick(()=>{ let designDetail: any = this.$refs.designDetail; - designDetail.showDesignDetailModal(data); + designDetail.showDesignDetailModal(data).then(()=>{ + this.isShowMark = false + }) }) }, diff --git a/src/lang/cn.ts b/src/lang/cn.ts index 16463cb9..28913e24 100644 --- a/src/lang/cn.ts +++ b/src/lang/cn.ts @@ -583,6 +583,7 @@ export default { jsContent2: "上传的文件不会保存,是否继续? ", jsContent3: "您必须选择一种或多种颜色进行下一步。", jsContent5: "我们检测到您的({str})上的PIN数量超过了八个,这可能会导致一些已钉住的项目未被使用。您是否仍要继续?", + jsContent6: "画布内容没有保存,请点击预保存后继续。", }, DesignDetail: { Details: "详情", diff --git a/src/lang/en.ts b/src/lang/en.ts index 720d4f63..3d374a36 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -583,6 +583,7 @@ export default { jsContent2: "The uploaded files will not be saved, being sure to continue? ", jsContent3: "You must choose one or more colors for further process.", jsContent5: "We've detected that the number of pins on your ({str}) exceeds eight, which may result in some pinned items not being used. Would you like to continue anyway?", + jsContent6: 'The content on the canvas has not been saved. Please click "Preview" to continue.', }, DesignDetail: { Details: "Details", diff --git a/src/store/Detail/designDetail.ts b/src/store/Detail/designDetail.ts index 23f7b844..23c265e2 100644 --- a/src/store/Detail/designDetail.ts +++ b/src/store/Detail/designDetail.ts @@ -28,7 +28,21 @@ const DesignDetail : Module = { currentPrintElement:null, }, mutations:{ + clearDetailData(state){ + state.designDetail = null + state.designPreviewData = {} + state.frontBack = { + front:[], + back:[], + body:{}, + } + state.selectDetail = null + state.printZIndex = -1 + state.currentDetailType = '' + 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] } @@ -255,7 +269,7 @@ const DesignDetail : Module = { }) if(state.currentDetailType != 'models'){ state.selectDetail.change = item.change - if(state.selectDetail?.newDetail?.color){ + if(state.selectDetail?.newDetail?.color && currentType != 'color'){ state.selectDetail.color = state.selectDetail?.newDetail?.color state.selectDetail.newDetail.color = null } @@ -272,12 +286,20 @@ const DesignDetail : Module = { state.selectDetail.printObject = item.printObject state.selectDetail.trims = item.trims state.selectDetail.type = item.type + state.selectDetail.color = { + ...item.color, + rgba:{ + r:item.color?.r, + g:item.color?.g, + b:item.color?.b, + } + } state.selectDetail.undividedLayer = item.undividedLayer 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])delete state.selectDetail.newDetail[currentType] + if(currentType)if(state.selectDetail.newDetail?.[currentType] && currentType != 'color')delete state.selectDetail.newDetail[currentType] } } if(value.fun)value.fun() diff --git a/src/tool/https.js b/src/tool/https.js index e9844967..c74f825a 100644 --- a/src/tool/https.js +++ b/src/tool/https.js @@ -38,20 +38,6 @@ const CancelToken = axios.CancelToken; const source = CancelToken.source(); // console.log(import.meta.env.VITE_APP_BASE_URL); let isLoginTime = false -const filterHttpsUrl = [ - // '/api/portfolio/page', - '/api/third/party/parseGoogleCredential', - '/api/account/resetPwd', - '/api/portfolio/detail', - '/api/account/preLogin', - '/api/account/designWorksRegister', - '/api/account/schoolLogin', - '/api/account/enterpriseLogin', - '/api/account/login', - '/api/account/organizationNameSearch', - '/api/account/designWorksRegisterCode', - '/api/third/party/parseWeChatCode', - '/api/account/sendEmail'] //POST传参序列化(添加请求拦截器) axios.interceptors.request.use((config) => { //在发送请求之前做某件事 @@ -64,23 +50,7 @@ axios.interceptors.request.use((config) => { // config.data = JSON.stringify(config.data); } // config.headers.Authorization = 'Bearer-eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiIyIiwic3ViIjoie1wiaWRcIjoyLFwidXNlcm5hbWVcIjpcImxpcnNcIn0iLCJpYXQiOjE2NjU3NDEwODcsImlzcyI6IkRXSiIsImF1dGhvcml0aWVzIjoiW10iLCJleHAiOjE2NzQzODEwODd9.ShM9R_NNFD7oo1OvxrEgg7PFeWinOuAKkuInUCMQupp66s64Hhv8tN0Wwr83nIN4rHPqtn95wmd4msWcvaFYJA'; - if(filterHttpsUrl.indexOf(config.url) == -1){ - if (!getCookie('token')) { - console.log('无Token,取消请求'); - if(!isLoginTime){ - isLoginTime = true - router.replace('/') - message.warning('Please login and try again~') - setTimeout(()=>[ - isLoginTime = false - ],2000) - } - return Promise.reject(new Error('缺少Token,请求被拦截')); // 阻止请求 - } - config.headers.Authorization = getCookie('token'); - }else{ - config.headers.Authorization = ''; - } + config.headers.Authorization = getCookie('token'); return config; },(error) =>{ return Promise.reject(error); diff --git a/src/views/HomeMain.vue b/src/views/HomeMain.vue index 28fe6c47..ca3e155f 100644 --- a/src/views/HomeMain.vue +++ b/src/views/HomeMain.vue @@ -403,12 +403,10 @@ export default defineComponent({ homeMainData.openType = Object.keys(query)[0] homeMainData.openTypeChild = query[Object.keys(query)[0]] } - console.log('homeMainData.openType',homeMainData.openType,'route.path',route.path) - if (homeMainData.openType == 'history' && route.path !== '/home/history') { - homeMainData.openType = '' - homeMainData.openTypeChild = '' + if((query?.id || query?.history) && !await getIdExistToHistory()){ + router.push('/home') + return } - }else{ homeMainData.openType = '' homeMainData.openTypeChild = ''