tangning před 16 hodinami
rodič
revize
199c46e3f1
1 změnil soubory, kde provedl 28 přidání a 9 odebrání
  1. 28 9
      src/view/case/photos/canvas-photo-editor.js

+ 28 - 9
src/view/case/photos/canvas-photo-editor.js

@@ -380,7 +380,6 @@ export class CanvasPhotoEditor {
 
   // --- 缩放逻辑(缩放必须重绘,无法通过坐标偏移实现)---
   handleWheel(e) {
-    console.log('handleWheel', e.target)
     e.preventDefault()
 
     const rect = this.canvas.getBoundingClientRect()
@@ -1214,7 +1213,8 @@ export class CanvasPhotoEditor {
     this.saveHistory()
     return this.pages
   }
-  autoFill(newPages, PageIndex, direction){
+  autoFill(newPagess, PageIndex, direction){
+    const newPages = [...newPagess]
       let newPageList = {
         list: [],
         item: []
@@ -1234,10 +1234,14 @@ export class CanvasPhotoEditor {
         }
       })
       console.log(newPageList, 'newPageList', PageIndex, )
-
-      newPages[PageIndex].list[direction == 'double'?1:this.selectedPageItem.index] = newPageList.list[0]
-      newPages[PageIndex].item[direction == 'double'?1:this.selectedPageItem.index] = newPageList.item[0]
       let numberId = 1
+      if(direction == 'double'){//修改排版  一张变两张
+        newPages[PageIndex].list[1] = newPageList.list[0]
+        newPages[PageIndex].item[1] = newPageList.item[0]
+      }else{
+        newPages[PageIndex].list[direction == 'double'?1:this.selectedPageItem.index] = newPageList.list[0]
+        newPages[PageIndex].item[direction == 'double'?1:this.selectedPageItem.index] = newPageList.item[0]
+      }
       for (var i =PageIndex + 1; i < newPages.length; i++) {
         let newPageslist = [newPageList.list[numberId]]
         let newPagesitem = [newPageList.item[numberId]]
@@ -1258,6 +1262,24 @@ export class CanvasPhotoEditor {
       }
       return newPages
   }
+  // 用法:删除第 index 个 item 里的第 subIndex 项
+  removeAndFill(newPages, pageIndex, numIndex) {
+    // 1. 删除
+      newPages[pageIndex].list.splice(numIndex, 1);
+      newPages[pageIndex].item.splice(numIndex, 1);
+
+      // 2. 后面整体往前递补
+      for (let i = pageIndex; i < newPages.length - 1; i++) {
+        let take = newPages[i + 1].list.shift();
+        let item = newPages[i + 1].item.shift();
+        take !== undefined && newPages[i].list.push(take);
+        item !== undefined && newPages[i].item.push(item);
+      }
+
+      // 3. 最后一个补空位
+      newPages[newPages.length - 1].list.push(null);
+      newPages[newPages.length - 1].item.push(null);
+  }
   async deleteSelectedPage(backFun) {
     console.log(this.selectedPageItem, this.selectedPageIndex, 'selectedPageItem', this.pages)
     if(this.selectedPageItem.pageIndex === -1){//未选中页面直接返回
@@ -1270,11 +1292,8 @@ export class CanvasPhotoEditor {
       newPages.splice(this.selectedPageIndex, 1)
     } else {//删除单个图片
       const check = await this.checkIndexing();
-      newPages[this.selectedPageIndex].list[this.selectedPageItem.index] = null
-      newPages[this.selectedPageIndex].item[this.selectedPageItem.index] = null
-      newPages = this.autoFill(newPages, this.selectedPageIndex, newPages[this.selectedPageIndex].layoutMode)
+      newPages = this.removeAndFill(newPages, this.selectedPageIndex, this.selectedPageItem.index)
     }
-    // this.saveHistory()
     this.selectedPageIndex = -1
     this.selectedPageItem.pageIndex = -1
     // this.selectedPageIndex = Math.min(this.selectedPageIndex, this.pages.length - 1)