Merge branch 'dev_vite' of ssh://18.167.251.121:10002/aidlab/aida_front into dev_vite
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1335,7 +1335,7 @@ backgroundObject.scaleY,'CanvasManager resetCanvasSizeByFixedLayer')
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
loadJSON(json, calllBack) {
|
loadJSON(json, calllBack) {
|
||||||
|
this.canvas.loading.value = true;
|
||||||
// 确保传入的json是字符串格式
|
// 确保传入的json是字符串格式
|
||||||
if (typeof json === "object") {
|
if (typeof json === "object") {
|
||||||
json = JSON.stringify(json);
|
json = JSON.stringify(json);
|
||||||
@@ -1507,7 +1507,6 @@ backgroundObject.scaleY,'CanvasManager resetCanvasSizeByFixedLayer')
|
|||||||
*/
|
*/
|
||||||
async createOtherLayers(otherData) {
|
async createOtherLayers(otherData) {
|
||||||
if (!otherData) return console.warn("otherData 为空不需要添加");
|
if (!otherData) return console.warn("otherData 为空不需要添加");
|
||||||
this.canvas.loading.value = true;
|
|
||||||
let resolve = ()=>{};
|
let resolve = ()=>{};
|
||||||
this.awaitCanvasRun = ()=>(new Promise((v) => resolve = v))
|
this.awaitCanvasRun = ()=>(new Promise((v) => resolve = v))
|
||||||
const otherData_ = JSON.parse(JSON.stringify(otherData));
|
const otherData_ = JSON.parse(JSON.stringify(otherData));
|
||||||
@@ -1555,7 +1554,6 @@ backgroundObject.scaleY,'CanvasManager resetCanvasSizeByFixedLayer')
|
|||||||
console.log("==========创建其他图层成功");
|
console.log("==========创建其他图层成功");
|
||||||
resolve();
|
resolve();
|
||||||
this.awaitCanvasRun = null;
|
this.awaitCanvasRun = null;
|
||||||
this.canvas.loading.value = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置画布对象的裁剪信息
|
// 设置画布对象的裁剪信息
|
||||||
|
|||||||
@@ -1580,7 +1580,7 @@ export class LayerManager {
|
|||||||
/**
|
/**
|
||||||
* 排序图层,确保图层顺序: 普通图层 > 固定图层 > 背景图层
|
* 排序图层,确保图层顺序: 普通图层 > 固定图层 > 背景图层
|
||||||
*/
|
*/
|
||||||
sortLayers() {
|
async sortLayers() {
|
||||||
// 对图层进行排序:背景图层在最底层(数组最后),固定图层在中间
|
// 对图层进行排序:背景图层在最底层(数组最后),固定图层在中间
|
||||||
this.layers.value.sort((a, b) => {
|
this.layers.value.sort((a, b) => {
|
||||||
// 如果a是背景图层,它应该排在后面(最底层)
|
// 如果a是背景图层,它应该排在后面(最底层)
|
||||||
@@ -1604,17 +1604,17 @@ export class LayerManager {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// 更新画布对象顺序
|
// 更新画布对象顺序
|
||||||
this._rearrangeObjects();
|
await this._rearrangeObjects();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重新排列画布上的对象以匹配图层顺序
|
* 重新排列画布上的对象以匹配图层顺序
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
_rearrangeObjects() {
|
async _rearrangeObjects() {
|
||||||
if (this.layerSort) {
|
if (this.layerSort) {
|
||||||
// 使用LayerSort的高级排序
|
// 使用LayerSort的高级排序
|
||||||
this.layerSort.rearrangeObjects();
|
await this.layerSort.rearrangeObjects();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,27 +30,30 @@ export class LayerSort {
|
|||||||
if (canvasObjects.length === 0) return;
|
if (canvasObjects.length === 0) return;
|
||||||
|
|
||||||
// 使用画布渲染优化
|
// 使用画布渲染优化
|
||||||
await optimizeCanvasRendering(this.canvas, () => {
|
await new Promise((resolve) => {
|
||||||
// 计算每个对象应该在的 z-index 位置
|
optimizeCanvasRendering(this.canvas, () => {
|
||||||
const objectZIndexMap = this.calculateObjectZIndexes();
|
// 计算每个对象应该在的 z-index 位置
|
||||||
|
const objectZIndexMap = this.calculateObjectZIndexes();
|
||||||
|
|
||||||
// 按照新的 z-index 排序对象
|
// 按照新的 z-index 排序对象
|
||||||
const sortedObjects = canvasObjects
|
const sortedObjects = canvasObjects
|
||||||
.map((obj) => ({
|
.map((obj) => ({
|
||||||
object: obj,
|
object: obj,
|
||||||
targetZIndex: objectZIndexMap.get(obj.id) ?? -1,
|
targetZIndex: objectZIndexMap.get(obj.id) ?? -1,
|
||||||
}))
|
}))
|
||||||
.filter((item) => item.targetZIndex >= 0) // 过滤掉无效对象
|
.filter((item) => item.targetZIndex >= 0) // 过滤掉无效对象
|
||||||
.sort((a, b) => a.targetZIndex - b.targetZIndex);
|
.sort((a, b) => a.targetZIndex - b.targetZIndex);
|
||||||
|
|
||||||
// 使用 fabric.js 的 moveTo 方法重新排序
|
// 使用 fabric.js 的 moveTo 方法重新排序
|
||||||
sortedObjects.forEach((item, index) => {
|
sortedObjects.forEach((item, index) => {
|
||||||
const currentIndex = this.canvas.getObjects().indexOf(item.object);
|
const currentIndex = this.canvas.getObjects().indexOf(item.object);
|
||||||
if (currentIndex !== index && currentIndex !== -1) {
|
if (currentIndex !== index && currentIndex !== -1) {
|
||||||
// 将对象移动到正确的位置
|
// 将对象移动到正确的位置
|
||||||
this.canvas.moveTo(item.object, index);
|
this.canvas.moveTo(item.object, index);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -759,7 +759,6 @@ export default defineComponent({
|
|||||||
const uploadSelectDetail = async ()=>{//更新选中的detail
|
const uploadSelectDetail = async ()=>{//更新选中的detail
|
||||||
// await detailDom.canvasBox.saveCanvas()
|
// await detailDom.canvasBox.saveCanvas()
|
||||||
const allInfo = await (detailDom.canvasBox as any).getCanvasElement()
|
const allInfo = await (detailDom.canvasBox as any).getCanvasElement()
|
||||||
console.log(allInfo)
|
|
||||||
let color:any = {}
|
let color:any = {}
|
||||||
if(allInfo.color?.color?.rgba || allInfo.color?.color?.gradient){
|
if(allInfo.color?.color?.rgba || allInfo.color?.color?.gradient){
|
||||||
let canvasColor = allInfo.color.color;
|
let canvasColor = allInfo.color.color;
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
is-edit
|
is-edit
|
||||||
:clothingImageUrl="selectDetail.path"
|
:clothingImageUrl="selectDetail.path"
|
||||||
:clothingImageUrl2="selectDetail.maskUrl || selectDetail.layersObject[0].maskUrl"
|
:clothingImageUrl2="selectDetail.maskUrl || selectDetail.layersObject[0].maskUrl"
|
||||||
:clothingMinIOPath="selectDetail.minIOPath"
|
|
||||||
showFixedLayer
|
showFixedLayer
|
||||||
:canvasJSON="canvasJSON"
|
:canvasJSON="canvasJSON"
|
||||||
@canvasLoadJsonSuccess="canvasLoadJsonSuccess"
|
@canvasLoadJsonSuccess="canvasLoadJsonSuccess"
|
||||||
@@ -52,9 +51,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mark_loading" v-show="isShowMark">
|
<!-- <div class="mark_loading" v-show="isShowMark">
|
||||||
<a-spin size="large" />
|
<a-spin size="large" />
|
||||||
</div>
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -273,7 +273,7 @@ export default defineComponent({
|
|||||||
minIOPath:data.minIOPath || data.originalUrl,
|
minIOPath:data.minIOPath || data.originalUrl,
|
||||||
path:data.url,
|
path:data.url,
|
||||||
priority:printIndex,
|
priority:printIndex,
|
||||||
scale,
|
scale:editPrintElementData.stateOverallSingle == 'single'?scale:[1,1],
|
||||||
globalCompositeOperation:'',
|
globalCompositeOperation:'',
|
||||||
}
|
}
|
||||||
getItemPosition(item)
|
getItemPosition(item)
|
||||||
@@ -300,7 +300,7 @@ export default defineComponent({
|
|||||||
// location = [item.pattern.style.left,item.pattern.style.top]
|
// location = [item.pattern.style.left,item.pattern.style.top]
|
||||||
}
|
}
|
||||||
let value ={
|
let value ={
|
||||||
angle : item.pattern.transform.rotateZ,
|
angle:0,
|
||||||
// angle : !this.overallSingle ? 0:item.pattern.transform.rotateZ,
|
// angle : !this.overallSingle ? 0:item.pattern.transform.rotateZ,
|
||||||
location : location,
|
location : location,
|
||||||
priority:item.priority,
|
priority:item.priority,
|
||||||
@@ -312,7 +312,9 @@ export default defineComponent({
|
|||||||
ifSingle:!!item.ifSingle,
|
ifSingle:!!item.ifSingle,
|
||||||
globalCompositeOperation:'',
|
globalCompositeOperation:'',
|
||||||
}
|
}
|
||||||
if(item.object)value.object = item.object
|
if(item.object)value.object = item.object;
|
||||||
|
value.angle = value.ifSingle?item.pattern.transform.rotateZ:item.angle
|
||||||
|
|
||||||
return value
|
return value
|
||||||
}
|
}
|
||||||
if(editPrintElementData.printStyleList[props.type].single.length>0){
|
if(editPrintElementData.printStyleList[props.type].single.length>0){
|
||||||
@@ -359,7 +361,7 @@ export default defineComponent({
|
|||||||
//overall
|
//overall
|
||||||
left = item.location[0] / editPrintElementData.sketchWH.scale[0]
|
left = item.location[0] / editPrintElementData.sketchWH.scale[0]
|
||||||
top = item.location[1] / editPrintElementData.sketchWH.scale[1]
|
top = item.location[1] / editPrintElementData.sketchWH.scale[1]
|
||||||
item.scale = [1,1]
|
item.scale = item.scale || [1,1]
|
||||||
}
|
}
|
||||||
let pattern = {
|
let pattern = {
|
||||||
centers:{left:0,top:0},
|
centers:{left:0,top:0},
|
||||||
@@ -915,6 +917,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
const inputFillAngle = (angle:any)=>{
|
const inputFillAngle = (angle:any)=>{
|
||||||
let arr = editPrintElementData.printStyleList[props.type].overall
|
let arr = editPrintElementData.printStyleList[props.type].overall
|
||||||
|
console.log(angle)
|
||||||
arr[editPrintElementData.imgDomIndex].angle = angle
|
arr[editPrintElementData.imgDomIndex].angle = angle
|
||||||
editPrintElementDom.pingpuRef.updataList([
|
editPrintElementDom.pingpuRef.updataList([
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
<div class="repeat-setting-item">
|
<div class="repeat-setting-item">
|
||||||
<span class="label">Gap X</span>
|
<span class="label">Gap X</span>
|
||||||
<slider
|
<slider
|
||||||
:min="0"
|
:min="1"
|
||||||
:max="1000"
|
:max="1000"
|
||||||
:step="1"
|
:step="1"
|
||||||
is-input
|
is-input
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
<div class="repeat-setting-item">
|
<div class="repeat-setting-item">
|
||||||
<span class="label">Gap Y</span>
|
<span class="label">Gap Y</span>
|
||||||
<slider
|
<slider
|
||||||
:min="0"
|
:min="1"
|
||||||
:max="1000"
|
:max="1000"
|
||||||
:step="1"
|
:step="1"
|
||||||
is-input
|
is-input
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
const scale = computed(() => {
|
const scale = computed(() => {
|
||||||
// let scaleValue = props.object?.scale/10;
|
// let scaleValue = props.object?.scale/10;
|
||||||
// return props.object?.scale/10;
|
// return props.object?.scale/10;
|
||||||
return props.object?.scale[0] * 100;
|
return (props.object?.scale[0] * 100).toFixed(0);
|
||||||
});
|
});
|
||||||
const scalePrint = computed(() => {
|
const scalePrint = computed(() => {
|
||||||
let index = sketchWH.value[0] > sketchWH.value[1]?0:1;
|
let index = sketchWH.value[0] > sketchWH.value[1]?0:1;
|
||||||
|
|||||||
@@ -272,12 +272,12 @@ const navTypeList = (t)=>{
|
|||||||
// },
|
// },
|
||||||
|
|
||||||
|
|
||||||
{
|
// {
|
||||||
icon:'fi fi-rr-puzzle-alt',
|
// icon:'fi fi-rr-puzzle-alt',
|
||||||
value:'deReconstruction',
|
// value:'deReconstruction',
|
||||||
label:t('Header.toolsDeReconstruction'),
|
// label:t('Header.toolsDeReconstruction'),
|
||||||
router:'tools=deReconstruction'
|
// router:'tools=deReconstruction'
|
||||||
},
|
// },
|
||||||
{
|
{
|
||||||
icon:'fi fi-ss-box-open',
|
icon:'fi fi-ss-box-open',
|
||||||
value:'toProduct',
|
value:'toProduct',
|
||||||
@@ -294,18 +294,18 @@ const navTypeList = (t)=>{
|
|||||||
label:t('Header.toolsToTransferPose'),
|
label:t('Header.toolsToTransferPose'),
|
||||||
router:'tools=poseTransfer'
|
router:'tools=poseTransfer'
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
icon:'fi fi-rr-cubes',
|
// icon:'fi fi-rr-cubes',
|
||||||
value:'patternMaking3D',
|
// value:'patternMaking3D',
|
||||||
label:t('Header.toolsPatternMaking'),
|
// label:t('Header.toolsPatternMaking'),
|
||||||
router:'tools=patternMaking3D'
|
// router:'tools=patternMaking3D'
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
icon:'fi fi-rr-pen-swirl',
|
// icon:'fi fi-rr-pen-swirl',
|
||||||
value:'canvasUpload',
|
// value:'canvasUpload',
|
||||||
label:t('Header.toolsCanvas'),
|
// label:t('Header.toolsCanvas'),
|
||||||
router:'tools=canvasUpload'
|
// router:'tools=canvasUpload'
|
||||||
},
|
// },
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
library:{
|
library:{
|
||||||
|
|||||||
Reference in New Issue
Block a user