1
0
tangning 9 часов назад
Родитель
Сommit
a2f4f00cdd
1 измененных файлов с 128 добавлено и 94 удалено
  1. 128 94
      src/view/case/photos/index.vue

+ 128 - 94
src/view/case/photos/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="phoneContent">
-      <div class="demo-image__preview">
+    <div class="demo-image__preview">
       <el-image-viewer
         hide-on-click-modal
         @close="
@@ -27,85 +27,93 @@
         <span>{{ title }}</span>
       </div>
       <div class="header-main">
+        <i
+          class="iconfont icon-backout"
+          :class="{ disable: currentIndex < 1 }"
+          @click="undo(true)"
+          style="margin-right: 24px"
+        ></i>
+        <i
+          class="iconfont icon-redo"
+          @click="undo(false)"
+          :class="{ disable: historylength == currentIndex + 1 }"
+          style="margin-right: 24px"
+        ></i>
+
+        <i
+          class="iconfont icon-screen_f"
+          @click="toggleFullScreen"
+          style="margin-right: 5px"
+        ></i>
+        <span>
+          <div class="border-icon">
+            <span :class="{ disable: indexing }">
+              <i
+                class="iconfont icon-new"
+                @click="() => insertBlankPage()"
+                v-if="pages.length == 1 || selectedPageIndex === -1"
+                style="margin-right: 24px"
+              ></i>
+              <el-dropdown
+                :class="{ disable: indexing }"
+                v-else
+                trigger="click"
+                @command="handleAddType"
+              >
+                <i class="iconfont icon-new" style="margin-right: 24px"></i>
+                <template #dropdown>
+                  <el-dropdown-menu>
+                    <el-dropdown-item :command="false">
+                      <i class="iconfont icon-new_left"></i>
+                      左侧新增</el-dropdown-item
+                    >
+                    <el-dropdown-item :command="true"
+                      ><i class="iconfont icon-new_right"></i>
+                      右侧新增</el-dropdown-item
+                    >
+                  </el-dropdown-menu>
+                </template>
+              </el-dropdown>
+            <el-dropdown trigger="click" @command="handleLayoutChange">
+              <i class="iconfont icon-layout"></i>
+              <template #dropdown>
+                <el-dropdown-menu>
+                  <el-dropdown-item command="double">
+                    <i class="iconfont icon-layout_two"></i>
+                    一页两张</el-dropdown-item
+                  >
+                  <el-dropdown-item command="single">
+                    <i class="iconfont icon-layout_h"></i>
+                    一张横板
+                  </el-dropdown-item>
+                  <el-dropdown-item command="landscape">
+                    <i class="iconfont icon-layout_one"></i
+                    >一张竖版</el-dropdown-item
+                  >
+                </el-dropdown-menu>
+              </template>
+            </el-dropdown></span
+            >
             <i
-              class="iconfont icon-backout"
-              :class="{ disable: currentIndex < 1 }"
-              @click="undo(true)"
-              style="margin-right: 24px"
+              class="iconfont icon-indexes"
+              @click="changeIndexing"
+              style="padding: 5px; margin-right: 24px"
+              :class="{
+                disable: pages.length == 1 && pages[0]?.layoutMode != 'double',
+                avtive: indexing,
+              }"
             ></i>
             <i
-              class="iconfont icon-redo"
-              @click="undo(false)"
-              :class="{ disable: historylength == currentIndex + 1 }"
-              style="margin-right: 24px"
+              class="iconfont icon-delete"
+              style="margin-right: 0"
+              @click="deleteSelectedPage"
+              :class="{
+                disable:
+                  pages.length == 1
+                    ? selectedPageItem.index == -1
+                    : selectedPageIndex === -1,
+              }"
             ></i>
-
-            <i
-              class="iconfont icon-screen_f"
-              @click="toggleFullScreen"
-              style="margin-right: 5px"
-            ></i>
-        <span :class="{ disable: indexing }">
-          <div class="border-icon">
-        <i
-          class="iconfont icon-indexes"
-          @click="changeIndexing"
-          style="padding: 5px; margin-right: 20px"
-          :class="{
-            disable: pages.length == 1 && pages[0]?.layoutMode != 'double',
-            avtive: indexing,
-          }"
-        ></i>
-          <i
-            class="iconfont icon-new"
-            @click="()=>insertBlankPage()"
-            v-if="pages.length == 1 || selectedPageIndex === -1"
-            style="margin-right: 24px"
-          ></i>
-          <el-dropdown v-else trigger="click" @command="handleAddType">
-            <i class="iconfont icon-new" style="margin-right: 24px"></i>
-            <template #dropdown>
-              <el-dropdown-menu>
-                <el-dropdown-item :command="false">
-                  <i class="iconfont icon-new_left"></i>
-                  左侧新增</el-dropdown-item
-                >
-                <el-dropdown-item :command="true"
-                  ><i class="iconfont icon-new_right"></i>
-                  右侧新增</el-dropdown-item
-                >
-              </el-dropdown-menu>
-            </template>
-          </el-dropdown>
-          <el-dropdown trigger="click" @command="handleLayoutChange">
-            <i class="iconfont icon-layout" ></i>
-            <template #dropdown>
-              <el-dropdown-menu>
-                <el-dropdown-item command="double">
-                  <i class="iconfont icon-layout_two"></i>
-                  一页两张</el-dropdown-item
-                >
-                <el-dropdown-item command="single">
-                  <i class="iconfont icon-layout_h"></i>
-                  一张横板
-                </el-dropdown-item>
-                <el-dropdown-item command="landscape">
-                  <i class="iconfont icon-layout_one"></i
-                  >一张竖版</el-dropdown-item
-                >
-              </el-dropdown-menu>
-            </template>
-          </el-dropdown>
-          <i
-            class="iconfont icon-delete"
-            @click="deleteSelectedPage"
-            :class="{
-              disable:
-                pages.length == 1
-                  ? selectedPageItem.index == -1
-                  : selectedPageIndex === -1,
-            }"
-          ></i>
           </div>
           <i
             @click="exportToPDF"
@@ -129,8 +137,11 @@
               v-for="(photo, index) in photos"
               :key="photo.id"
               class="photo-item"
-              @click="()=>{urlindex = index}"
-
+              @click="
+                () => {
+                  urlindex = index;
+                }
+              "
               @dragstart="handleDragStart($event, photo)"
               draggable
             >
@@ -244,15 +255,30 @@ const selectPhotos = computed(() => {
 
 const selectedPhotos = ref([]);
 const selectedPhotosbf = ref([]);
+const layoutMode = ref("double");
 const pages = ref([
   {
     list: [],
-    layoutMode: "double", //排版模式
+    layoutMode: layoutMode.value, //排版模式
+    coordinate: [], //坐标信息
+  },
+  {
+    list: [],
+    layoutMode: layoutMode.value, //排版模式
+    coordinate: [], //坐标信息
+  },
+  {
+    list: [],
+    layoutMode: layoutMode.value, //排版模式
+    coordinate: [], //坐标信息
+  },
+  {
+    list: [],
+    layoutMode: layoutMode.value, //排版模式
     coordinate: [], //坐标信息
   },
 ]);
 const scale = ref(1.0);
-const layoutMode = ref("double");
 const selectedPageIndex = ref(-1);
 const draggedPhoto = ref(null);
 const historylength = ref(0);
@@ -284,9 +310,7 @@ const getImgList = async () => {
     editor.value.pages = pages.value;
     editor.value.indexingLineList = content.indexingLineList || [];
   }
-  editor.value.drawAllPages(photos.value);
 };
-getImgList();
 const handleSee = async () => {
   const { id, filesTypeId } = router.currentRoute.value.query;
   const pages = editor.value?.pages;
@@ -317,7 +341,8 @@ const handleSee = async () => {
   }
 };
 // --- 初始化 ---
-onMounted(() => {
+onMounted(async () => {
+  const { id } = router.currentRoute.value.query;
   if (canvas.value) {
     // 创建编辑器实例
     editor.value = new CanvasPhotoEditor(canvas.value, {
@@ -333,9 +358,12 @@ onMounted(() => {
         currentIndex.value = value.currentIndex;
         console.log("updata", value);
       },
-      clearIndexing: changeIndexing
+      clearIndexing: changeIndexing,
     });
-
+    await getImgList();
+    if (!id) {
+      editor.value._pages = pages.value;
+    }
     // 绑定容器(用于居中计算)
     editor.value.bindScrollWrapper(canvas.value.parentElement);
 
@@ -435,7 +463,13 @@ const handleLayoutChange = async (value) => {
     let isActiveItem = editor.value.isActiveImg();
     // selectedPageIndex.value = editor.value.selectedPageIndex
     const check = await editor.value.checkIndexing();
-    console.log("isActiveItem", editor.value.selectedPageIndex, check, isActiveItem, selectedPageIndex.value);
+    console.log(
+      "isActiveItem",
+      editor.value.selectedPageIndex,
+      check,
+      isActiveItem,
+      selectedPageIndex.value
+    );
     if (selectedPageIndex.value == -1 || isActiveItem) {
       //未选中页面
       editor.value.layoutMode = layoutMode.value;
@@ -505,14 +539,14 @@ const deleteSelectedPage = async () => {
     // selectedPageIndex.value = editor.value.selectedPageIndex;
   }
 };
-const handleKeyDown = (e) =>{
-  console.log("handleKeyDown", e)
+const handleKeyDown = (e) => {
+  console.log("handleKeyDown", e);
 
-  if (e.key === 'Delete' || e.key === 'Backspace') {
-    e.preventDefault()
-    deleteSelectedPage()
+  if (e.key === "Delete" || e.key === "Backspace") {
+    e.preventDefault();
+    deleteSelectedPage();
   }
-}
+};
 // 重置缩放
 const resetZoom = () => {
   if (editor.value) {
@@ -581,8 +615,8 @@ const exportToPDF = (paperType) => {
   exportCasePhotos({ showPagesRef: editor.value });
 };
 const handleContextMenu = (e) => {
-  e.preventDefault()
-}
+  e.preventDefault();
+};
 </script>
 <style lang="sass">
 @import "./style.scss"