tangning hace 3 días
padre
commit
4546c22fc5
Se han modificado 1 ficheros con 38 adiciones y 6 borrados
  1. 38 6
      src/view/case/photos/canvas-photo-editor.js

+ 38 - 6
src/view/case/photos/canvas-photo-editor.js

@@ -1155,18 +1155,21 @@ export class CanvasPhotoEditor {
     newPages[PageIndex].layoutMode = direction
     if (list.length == 2 && direction != 'double') {//两页改成一页
       newPageItem = {
-        coordinate: [newPages[PageIndex].coordinate[1]],
-        item: [newPages[PageIndex].item[1]],
-        layoutMode: direction,
-        list: [list[1]],
+        // coordinate: [newPages[PageIndex].coordinate[1]],
+        item: newPages[PageIndex].item[1],
+        // layoutMode: direction,
+        list: list[1],
       }
       newPages[PageIndex].list = list
       newPages[PageIndex].list.length = 1
       newPages[PageIndex].item.length = 1
-      newPages.splice(PageIndex + 1, 0, newPageItem)
+      newPages = this.resizePageAndReflow(newPages, PageIndex+1, newPageItem)
     }
     if (direction == 'double' && list.length != 2) {
-      newPages = this.autoFill(newPages, PageIndex, direction)
+      let newItem = newPages[PageIndex+1]
+      newPages[PageIndex].list.push(newItem.list[0])
+      newPages[PageIndex].item.push(newItem.item[0])
+      this.removeAndFill(newPages, PageIndex+1, 0)
     }
     if (!direction) this.selectedPageIndex++
     this.pages = newPages
@@ -1222,6 +1225,35 @@ export class CanvasPhotoEditor {
       }
       return newPages
   }
+    // 插入 + 自动向后递补(最后一项溢出,保持页数/每页长度不变)
+  // 把指定页截短,并让后面所有数据自动向后重新排版(每页最大长度 2)
+resizePageAndReflow(pages, pageIndex, itemValue) {
+  // 1. 插入
+  pages[pageIndex].list.splice(0, 0, itemValue.list);
+  pages[pageIndex].item.splice(0, 0, itemValue.item);
+  console.log(pages, 'pages')
+  // 2. 往后递补(只推,不拆分)
+  for (let i = pageIndex; i < pages.length; i++) {
+    let lastList = pages[i].list.pop();
+    let lastItem = pages[i].item.pop();
+    if(!pages[i + 1] && lastList){
+      pages[i + 1] = {
+        layoutMode: this.layoutMode, //页码布局类型
+        list:[lastList],
+        item: [lastItem]
+      }
+      return pages;
+    }
+    console.log(lastList, 'pageslastList')
+    if (lastList) {
+      pages[i + 1].list.unshift(lastList);
+      pages[i + 1].item.unshift(lastItem);
+    }
+
+  }
+  
+  return pages;
+}
   // 用法:删除第 index 个 item 里的第 subIndex 项
   removeAndFill(newPages, pageIndex, numIndex) {
     // 1. 删除