修复印花线稿合成图显示异常
This commit is contained in:
@@ -85,7 +85,7 @@
|
|||||||
" alt="">
|
" alt="">
|
||||||
</div>
|
</div>
|
||||||
<div class="contentRight" v-else-if="currentDetailType && !isEditPattern.value">
|
<div class="contentRight" v-else-if="currentDetailType && !isEditPattern.value">
|
||||||
<detailRight ref="detailRight"></detailRight>
|
<detailRight ref="detailRight" :sketchSize="sketchSize"></detailRight>
|
||||||
<div class="btn"
|
<div class="btn"
|
||||||
v-show="
|
v-show="
|
||||||
currentDetailType !== 'color' &&
|
currentDetailType !== 'color' &&
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="contentRight canvas" v-if="selectDetail && selectDetail.id && currentDetailType" :class="{'active': isEditPattern.value}">
|
<div class="contentRight canvas" v-if="selectDetail && selectDetail.id && currentDetailType" :class="{'active': isEditPattern.value}">
|
||||||
<canvasBox ref="canvasBox" :key="canvasKey" @setSloganData="setSloganData" :isEditPattern="isEditPattern.value" :updateOtherLayers="updateOtherLayers"></canvasBox>
|
<canvasBox ref="canvasBox" :key="canvasKey" :sketchSize="sketchSize" @setSloganData="setSloganData" :isEditPattern="isEditPattern.value" :updateOtherLayers="updateOtherLayers"></canvasBox>
|
||||||
</div>
|
</div>
|
||||||
<!-- 画布 -->
|
<!-- 画布 -->
|
||||||
<!-- <div class="content" v-else-if="selectDetail && selectDetail.id">
|
<!-- <div class="content" v-else-if="selectDetail && selectDetail.id">
|
||||||
@@ -170,13 +170,29 @@ export default defineComponent({
|
|||||||
},
|
},
|
||||||
positionKey:0,
|
positionKey:0,
|
||||||
detailLeftColorKey:0,
|
detailLeftColorKey:0,
|
||||||
|
sketchSize:{
|
||||||
|
width:0,
|
||||||
|
height:0,
|
||||||
|
}
|
||||||
})
|
})
|
||||||
watch(()=>detailData.selectDetail,(newValue,oldValue)=>{
|
const getSketchSize:any = async ()=>{
|
||||||
|
let img = new Image();
|
||||||
|
img.src = detailData.selectDetail.path;
|
||||||
|
await new Promise((resolve, reject) => {
|
||||||
|
img.onload = () => {
|
||||||
|
detailData.sketchSize.width = img.width
|
||||||
|
detailData.sketchSize.height = img.height
|
||||||
|
resolve([img.width, img.height]);
|
||||||
|
}
|
||||||
|
img.onerror = reject;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
watch(()=>detailData.selectDetail,async (newValue,oldValue)=>{
|
||||||
detailData.imgDomIndex = detailData.frontBack.front.findIndex((item:any)=>item.id == newValue.id)
|
detailData.imgDomIndex = detailData.frontBack.front.findIndex((item:any)=>item.id == newValue.id)
|
||||||
|
if(newValue)await getSketchSize()
|
||||||
detailData.canvasKey += 1
|
detailData.canvasKey += 1
|
||||||
// privewDetail(oldValue)
|
// privewDetail(oldValue)
|
||||||
},{immediate: true})
|
},{immediate: true})
|
||||||
|
|
||||||
provide('getCanvasIfEdit',detailData.getCanvasIfEdit)
|
provide('getCanvasIfEdit',detailData.getCanvasIfEdit)
|
||||||
provide('singleOveral',detailData.singleOveral)
|
provide('singleOveral',detailData.singleOveral)
|
||||||
provide('isEditPattern',detailData.isEditPattern)
|
provide('isEditPattern',detailData.isEditPattern)
|
||||||
|
|||||||
@@ -13,8 +13,6 @@
|
|||||||
:clothingImageUrl="selectDetail.path"
|
:clothingImageUrl="selectDetail.path"
|
||||||
:clothingImageUrl2="selectDetail.layersObject[0].maskUrl"
|
:clothingImageUrl2="selectDetail.layersObject[0].maskUrl"
|
||||||
showFixedLayer
|
showFixedLayer
|
||||||
:width="sketchWidth"
|
|
||||||
:height="sketchHeight"
|
|
||||||
:canvasJSON="canvasJSON"
|
:canvasJSON="canvasJSON"
|
||||||
@canvasLoadJsonSuccess="canvasLoadJsonSuccess"
|
@canvasLoadJsonSuccess="canvasLoadJsonSuccess"
|
||||||
:clothing-image-opts="{
|
:clothing-image-opts="{
|
||||||
@@ -81,7 +79,11 @@ export default defineComponent({
|
|||||||
updateOtherLayers:{
|
updateOtherLayers:{
|
||||||
type:Function,
|
type:Function,
|
||||||
default:()=>{}
|
default:()=>{}
|
||||||
}
|
},
|
||||||
|
sketchSize:{
|
||||||
|
type:Object,
|
||||||
|
default:()=>{}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
setup(props,{emit}) {
|
setup(props,{emit}) {
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
@@ -121,8 +123,6 @@ export default defineComponent({
|
|||||||
printObject: store.state.DesignDetail.selectDetail.printObject,
|
printObject: store.state.DesignDetail.selectDetail.printObject,
|
||||||
trims: store.state.DesignDetail.selectDetail.trims,
|
trims: store.state.DesignDetail.selectDetail.trims,
|
||||||
})),
|
})),
|
||||||
sketchWidth:0,
|
|
||||||
sketchHeight:0,
|
|
||||||
})
|
})
|
||||||
watch(()=>detailData.selectDetail,(newValue,oldValue)=>{
|
watch(()=>detailData.selectDetail,(newValue,oldValue)=>{
|
||||||
detailData.imgDomIndex = detailData.frontBack.front.findIndex((item:any)=>item.id == newValue.id)
|
detailData.imgDomIndex = detailData.frontBack.front.findIndex((item:any)=>item.id == newValue.id)
|
||||||
@@ -177,7 +177,11 @@ export default defineComponent({
|
|||||||
const privewDetail = async (oldSelectDetail = detailData.selectDetail)=>{
|
const privewDetail = async (oldSelectDetail = detailData.selectDetail)=>{
|
||||||
// if(!detailDom.editCanvas)return
|
// if(!detailDom.editCanvas)return
|
||||||
return new Promise(async (res,reject)=>{
|
return new Promise(async (res,reject)=>{
|
||||||
await detailDom.editCanvas.exportImage({isContainFixed:true}).then((rv)=>{
|
await detailDom.editCanvas.exportImage({
|
||||||
|
isContainFixed:true,
|
||||||
|
width:props.sketchSize.width,
|
||||||
|
height:props.sketchSize.height,
|
||||||
|
}).then((rv)=>{
|
||||||
if(oldSelectDetail?.partialDesign)oldSelectDetail.partialDesign.partialDesignBase64 = rv
|
if(oldSelectDetail?.partialDesign)oldSelectDetail.partialDesign.partialDesignBase64 = rv
|
||||||
})
|
})
|
||||||
//包含平铺图层 single+overall模式的图
|
//包含平铺图层 single+overall模式的图
|
||||||
@@ -188,6 +192,7 @@ export default defineComponent({
|
|||||||
// await detailDom.editCanvas.exportImage({isContainFixed:true,isPrintTrimsNoRepeat:false,isPrintTrimsRepeat:true,isContainNormalLayer:false}).then((rv)=>{
|
// await detailDom.editCanvas.exportImage({isContainFixed:true,isPrintTrimsNoRepeat:false,isPrintTrimsRepeat:true,isContainNormalLayer:false}).then((rv)=>{
|
||||||
// oldSelectDetail.undividedLayer = rv
|
// oldSelectDetail.undividedLayer = rv
|
||||||
// })
|
// })
|
||||||
|
await setUndivideLayer()
|
||||||
res('')
|
res('')
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -203,11 +208,14 @@ export default defineComponent({
|
|||||||
let img = new Image()
|
let img = new Image()
|
||||||
img.onload = ()=>{
|
img.onload = ()=>{
|
||||||
let wH = [1,1]
|
let wH = [1,1]
|
||||||
let domHeight = detailDom.canvasContent.offsetHeight - 200
|
let domHeight = detailDom.canvasContent?.offsetHeight - 200
|
||||||
let imgHeight = img.height
|
let imgHeight = img.height
|
||||||
wH = [1,domHeight/imgHeight]
|
wH = [1,domHeight/imgHeight]
|
||||||
detailData.canvasConfig.width = img.width * wH[1]
|
// detailData.canvasConfig.width = img.width * wH[1]
|
||||||
detailData.canvasConfig.height = domHeight
|
// detailData.canvasConfig.height = domHeight
|
||||||
|
console.log(detailData.canvasConfig,'===============')
|
||||||
|
detailData.canvasConfig.width = img.width
|
||||||
|
detailData.canvasConfig.height = img.height
|
||||||
|
|
||||||
res('')
|
res('')
|
||||||
}
|
}
|
||||||
@@ -335,34 +343,45 @@ export default defineComponent({
|
|||||||
// }
|
// }
|
||||||
const canvasLoadJsonSuccess = async ()=>{
|
const canvasLoadJsonSuccess = async ()=>{
|
||||||
let otherData = await props.updateOtherLayers()
|
let otherData = await props.updateOtherLayers()
|
||||||
updateOtherLayers(otherData)
|
|
||||||
if(!detailData.selectDetail.undividedLayerColor){
|
await updateOtherLayers(otherData)
|
||||||
await detailDom.editCanvas.exportImage({isContainFixed:true,isPrintTrimsRepeat:false,isPrintTrimsNoRepeat:false,isContainNormalLayer:false}).then((rv)=>{
|
await setUndivideLayer()
|
||||||
detailData.selectDetail.undividedLayerColor = rv
|
}
|
||||||
})
|
const setUndivideLayer = async ()=>{
|
||||||
}
|
await new Promise<void>(async (resolve, reject) => {
|
||||||
if(!detailData.selectDetail.undividedLayer){
|
// if(!detailData.selectDetail.undividedLayerColor){
|
||||||
await detailDom.editCanvas.exportImage({isContainFixed:true,isPrintTrimsNoRepeat:false,isPrintTrimsRepeat:true,isContainNormalLayer:false}).then((rv)=>{
|
await detailDom.editCanvas.exportImage({
|
||||||
detailData.selectDetail.undividedLayer = rv
|
isContainFixed:true,
|
||||||
})
|
isPrintTrimsRepeat:false,
|
||||||
}
|
isPrintTrimsNoRepeat:false,
|
||||||
|
isContainNormalLayer:false,
|
||||||
|
width:props.sketchSize.width,
|
||||||
|
height:props.sketchSize.height}).then((rv)=>{
|
||||||
|
detailData.selectDetail.undividedLayerColor = rv
|
||||||
|
})
|
||||||
|
// }
|
||||||
|
// if(!detailData.selectDetail.undividedLayer){
|
||||||
|
await detailDom.editCanvas.exportImage({
|
||||||
|
isContainFixed:true,
|
||||||
|
isPrintTrimsNoRepeat:false,
|
||||||
|
isPrintTrimsRepeat:true,
|
||||||
|
isContainNormalLayer:false,
|
||||||
|
width:props.sketchSize.width,
|
||||||
|
height:props.sketchSize.height,
|
||||||
|
}).then((rv)=>{
|
||||||
|
console.log(rv,'======')
|
||||||
|
detailData.selectDetail.undividedLayer = rv
|
||||||
|
})
|
||||||
|
// }
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const submitBase64Data = ()=>{
|
const submitBase64Data = ()=>{
|
||||||
return detailDom.generalMiniCanvas.submitBase64Data()
|
return detailDom.generalMiniCanvas.submitBase64Data()
|
||||||
}
|
}
|
||||||
const sketchSize:any = async ()=>{
|
|
||||||
let img = new Image();
|
|
||||||
img.src = detailData.selectDetail.path;
|
|
||||||
await new Promise((resolve, reject) => {
|
|
||||||
img.onload = () => {
|
|
||||||
detailData.sketchWidth = img.width
|
|
||||||
detailData.sketchHeight = img.height
|
|
||||||
resolve([img.width, img.height]);
|
|
||||||
}
|
|
||||||
img.onerror = reject;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
onBeforeUnmount(()=>{
|
onBeforeUnmount(()=>{
|
||||||
let front = detailData.frontBack.front[detailData.imgDomIndex]
|
let front = detailData.frontBack.front[detailData.imgDomIndex]
|
||||||
let back = detailData.frontBack.back[detailData.imgDomIndex]
|
let back = detailData.frontBack.back[detailData.imgDomIndex]
|
||||||
@@ -403,7 +422,6 @@ export default defineComponent({
|
|||||||
});
|
});
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
await sketchSize()
|
|
||||||
setCanvas(detailData.selectDetail.path).then(()=>{
|
setCanvas(detailData.selectDetail.path).then(()=>{
|
||||||
detailData.canvasLoad = true
|
detailData.canvasLoad = true
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -110,7 +110,7 @@
|
|||||||
</ul> -->
|
</ul> -->
|
||||||
</div>
|
</div>
|
||||||
<div class="designOpenrtion_pingpu" v-else>
|
<div class="designOpenrtion_pingpu" v-else>
|
||||||
<pingpu :list="printStyleList[type].overall" ref="pingpuRef" @change-canvas="updateCanvas"></pingpu>
|
<pingpu :list="printStyleList[type].overall" :width="sketchSize.width" :height="sketchSize.height" ref="pingpuRef" @change-canvas="updateCanvas"></pingpu>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -141,7 +141,11 @@ export default defineComponent({
|
|||||||
type: {
|
type: {
|
||||||
type: String,
|
type: String,
|
||||||
default: 'print',
|
default: 'print',
|
||||||
}
|
},
|
||||||
|
sketchSize:{
|
||||||
|
type:Object,
|
||||||
|
default:()=>{}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
setup(props,{emit}) {
|
setup(props,{emit}) {
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
@@ -352,18 +356,9 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
editPrintElementData.printZIndex++
|
editPrintElementData.printZIndex++
|
||||||
item.pattern = pattern
|
item.pattern = pattern
|
||||||
function isJSONString(str) {
|
|
||||||
try {
|
|
||||||
JSON.parse(str);
|
|
||||||
return true; // 解析成功,是有效的JSON字符串
|
|
||||||
} catch (e) {
|
|
||||||
return false; // 解析失败,不是有效的JSON字符串
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(item.object){
|
if(item.object){
|
||||||
if(isJSONString(item.object)){
|
|
||||||
item.object = JSON.parse(item.object)
|
|
||||||
}
|
|
||||||
}else{
|
}else{
|
||||||
item.object = {
|
item.object = {
|
||||||
top: 0,
|
top: 0,
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
</div> -->
|
</div> -->
|
||||||
<sketchType v-if="currentDetailType === 'sketch'"></sketchType>
|
<sketchType v-if="currentDetailType === 'sketch'"></sketchType>
|
||||||
<!-- <printType v-if="currentDetailType === 'print'"></printType> -->
|
<!-- <printType v-if="currentDetailType === 'print'"></printType> -->
|
||||||
<editPrintElement ref="editPrintElement" v-if="currentDetailType === 'print'" type="print"></editPrintElement>
|
<editPrintElement ref="editPrintElement" v-if="currentDetailType === 'print'" type="print" :sketchSize="sketchSize"></editPrintElement>
|
||||||
<editPrintElement ref="editPrintElement" v-if="currentDetailType === 'element'" type="element"></editPrintElement>
|
<editPrintElement ref="editPrintElement" v-if="currentDetailType === 'element'" type="element" :sketchSize="sketchSize"></editPrintElement>
|
||||||
<modelsType ref="modelsType" v-if="currentDetailType === 'models'"></modelsType>
|
<modelsType ref="modelsType" v-if="currentDetailType === 'models'"></modelsType>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -24,6 +24,12 @@ export default defineComponent({
|
|||||||
components:{
|
components:{
|
||||||
sketchType,printType,editPrintElement,modelsType
|
sketchType,printType,editPrintElement,modelsType
|
||||||
},
|
},
|
||||||
|
props:{
|
||||||
|
sketchSize:{
|
||||||
|
type:Object,
|
||||||
|
default:()=>{}
|
||||||
|
},
|
||||||
|
},
|
||||||
setup(props,{emit}) {
|
setup(props,{emit}) {
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
const detailData = reactive({
|
const detailData = reactive({
|
||||||
|
|||||||
@@ -54,6 +54,25 @@ const DesignDetail : Module<DesignDetail,RootState> = {
|
|||||||
data.clothes.forEach((v:any,index:any)=>{
|
data.clothes.forEach((v:any,index:any)=>{
|
||||||
// if(!v?.partialDesignDTO){
|
// if(!v?.partialDesignDTO){
|
||||||
// }
|
// }
|
||||||
|
function isJSONString(str) {
|
||||||
|
try {
|
||||||
|
JSON.parse(str);
|
||||||
|
return true; // 解析成功,是有效的JSON字符串
|
||||||
|
} catch (e) {
|
||||||
|
return false; // 解析失败,不是有效的JSON字符串
|
||||||
|
}
|
||||||
|
}
|
||||||
|
v?.printObject?.prints?.forEach((item:any) => {
|
||||||
|
console.log(item.object)
|
||||||
|
if(isJSONString(item.object)){
|
||||||
|
item.object = JSON.parse(item.object)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
v?.trims?.prints?.forEach((item:any) => {
|
||||||
|
if(isJSONString(item.object)){
|
||||||
|
item.object = JSON.parse(item.object)
|
||||||
|
}
|
||||||
|
});
|
||||||
for (let i = v.layersObject.length-1; i >= 0; i--) {
|
for (let i = v.layersObject.length-1; i >= 0; i--) {
|
||||||
v.layersObject[i].style = {
|
v.layersObject[i].style = {
|
||||||
top:v.layersObject[i].position?.[0],
|
top:v.layersObject[i].position?.[0],
|
||||||
|
|||||||
Reference in New Issue
Block a user