Merge branch 'dev_vite' of ssh://18.167.251.121:10002/aidlab/aida_front into dev_vite

This commit is contained in:
2026-02-09 14:35:33 +08:00
9 changed files with 1711 additions and 1731 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -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;
} }
// 设置画布对象的裁剪信息 // 设置画布对象的裁剪信息

View File

@@ -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;
} }

View File

@@ -30,7 +30,8 @@ export class LayerSort {
if (canvasObjects.length === 0) return; if (canvasObjects.length === 0) return;
// 使用画布渲染优化 // 使用画布渲染优化
await optimizeCanvasRendering(this.canvas, () => { await new Promise((resolve) => {
optimizeCanvasRendering(this.canvas, () => {
// 计算每个对象应该在的 z-index 位置 // 计算每个对象应该在的 z-index 位置
const objectZIndexMap = this.calculateObjectZIndexes(); const objectZIndexMap = this.calculateObjectZIndexes();
@@ -51,6 +52,8 @@ export class LayerSort {
this.canvas.moveTo(item.object, index); this.canvas.moveTo(item.object, index);
} }
}); });
resolve();
});
}); });
} }

View File

@@ -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;

View File

@@ -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>

View File

@@ -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([
{ {

View File

@@ -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;

View File

@@ -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:{