Преглед на файлове

Merge branch 'release_1.3.9' of http://git.qmth.com.cn/markingcloud/stmms-web into release_1.3.11

刘洋 преди 2 години
родител
ревизия
443e869633
променени са 3 файла, в които са добавени 56 реда и са изтрити 40 реда
  1. 31 33
      components.d.ts
  2. 3 2
      src/features/mark/CommonMarkBody.vue
  3. 22 5
      src/utils/utils.ts

+ 31 - 33
components.d.ts

@@ -1,41 +1,39 @@
 // generated by unplugin-vue-components
 // We suggest you to commit this file into source control
 // Read more: https://github.com/vuejs/core/pull/3399
-import '@vue/runtime-core'
+import "@vue/runtime-core";
 
-export {}
+export {};
 
-declare module '@vue/runtime-core' {
+declare module "@vue/runtime-core" {
   export interface GlobalComponents {
-    AButton: typeof import('ant-design-vue/es')['Button']
-    ACol: typeof import('ant-design-vue/es')['Col']
-    AConfigProvider: typeof import('ant-design-vue/es')['ConfigProvider']
-    ADropdown: typeof import('ant-design-vue/es')['Dropdown']
-    AForm: typeof import('ant-design-vue/es')['Form']
-    AFormItem: typeof import('ant-design-vue/es')['FormItem']
-    AInput: typeof import('ant-design-vue/es')['Input']
-    AInputSearch: typeof import('ant-design-vue/es')['InputSearch']
-    AMenu: typeof import('ant-design-vue/es')['Menu']
-    AMenuItem: typeof import('ant-design-vue/es')['MenuItem']
-    AModal: typeof import('ant-design-vue/es')['Modal']
-    APopconfirm: typeof import('ant-design-vue/es')['Popconfirm']
-    APopover: typeof import('ant-design-vue/es')['Popover']
-    ARadio: typeof import('ant-design-vue/es')['Radio']
-    ARadioGroup: typeof import('ant-design-vue/es')['RadioGroup']
-    ARow: typeof import('ant-design-vue/es')['Row']
-    ASelect: typeof import('ant-design-vue/es')['Select']
-    ASelectOption: typeof import('ant-design-vue/es')['SelectOption']
-    ASlider: typeof import('ant-design-vue/es')['Slider']
-    ASpin: typeof import('ant-design-vue/es')['Spin']
-    ASwitch: typeof import('ant-design-vue/es')['Switch']
-    ATextarea: typeof import('ant-design-vue/es')['Textarea']
-    ATooltip: typeof import('ant-design-vue/es')['Tooltip']
-    CommonMarkHeader: typeof import('./src/components/CommonMarkHeader.vue')['default']
-    PageError404: typeof import('./src/components/PageError404.vue')['default']
-    QmButton: typeof import('./src/components/QmButton.vue')['default']
-    QmDialog: typeof import('./src/components/QmDialog.vue')['default']
-    RouterLink: typeof import('vue-router')['RouterLink']
-    RouterView: typeof import('vue-router')['RouterView']
-    ZoomPaper: typeof import('./src/components/ZoomPaper.vue')['default']
+    AButton: typeof import("ant-design-vue/es")["Button"];
+    AConfigProvider: typeof import("ant-design-vue/es")["ConfigProvider"];
+    ADropdown: typeof import("ant-design-vue/es")["Dropdown"];
+    AForm: typeof import("ant-design-vue/es")["Form"];
+    AFormItem: typeof import("ant-design-vue/es")["FormItem"];
+    AInput: typeof import("ant-design-vue/es")["Input"];
+    AInputSearch: typeof import("ant-design-vue/es")["InputSearch"];
+    AMenu: typeof import("ant-design-vue/es")["Menu"];
+    AMenuItem: typeof import("ant-design-vue/es")["MenuItem"];
+    AModal: typeof import("ant-design-vue/es")["Modal"];
+    APopconfirm: typeof import("ant-design-vue/es")["Popconfirm"];
+    APopover: typeof import("ant-design-vue/es")["Popover"];
+    ARadio: typeof import("ant-design-vue/es")["Radio"];
+    ARadioGroup: typeof import("ant-design-vue/es")["RadioGroup"];
+    ARow: typeof import("ant-design-vue/es")["Row"];
+    ASelect: typeof import("ant-design-vue/es")["Select"];
+    ASelectOption: typeof import("ant-design-vue/es")["SelectOption"];
+    ASlider: typeof import("ant-design-vue/es")["Slider"];
+    ASpin: typeof import("ant-design-vue/es")["Spin"];
+    ASwitch: typeof import("ant-design-vue/es")["Switch"];
+    ATooltip: typeof import("ant-design-vue/es")["Tooltip"];
+    CommonMarkHeader: typeof import("./src/components/CommonMarkHeader.vue")["default"];
+    PageError404: typeof import("./src/components/PageError404.vue")["default"];
+    QmButton: typeof import("./src/components/QmButton.vue")["default"];
+    QmDialog: typeof import("./src/components/QmDialog.vue")["default"];
+    RouterLink: typeof import("vue-router")["RouterLink"];
+    RouterView: typeof import("vue-router")["RouterView"];
+    ZoomPaper: typeof import("./src/components/ZoomPaper.vue")["default"];
   }
 }

+ 3 - 2
src/features/mark/CommonMarkBody.vue

@@ -213,14 +213,15 @@ async function processSliceConfig() {
     const image = await loadImage(url);
     images[sliceConfig.i] = image;
     const { x, y, w, h } = sliceConfig;
-
+    x < 0 && (sliceConfig.x = 0);
+    y < 0 && (sliceConfig.y = 0);
     if (sliceConfig.w === 0 && sliceConfig.h === 0) {
       // 选择整图时,w/h 为0
       sliceConfig.w = image.naturalWidth;
       sliceConfig.h = image.naturalHeight;
     }
 
-    if (x < 1 && y < 1 && w < 1 && h < 1) {
+    if (x <= 1 && y <= 1 && w <= 1 && h <= 1) {
       sliceConfig.x = image.naturalWidth * x;
       sliceConfig.y = image.naturalHeight * y;
       sliceConfig.w = image.naturalWidth * w;

+ 22 - 5
src/utils/utils.ts

@@ -168,8 +168,8 @@ export async function getDataUrlForSplitConfig(
 }
 
 export async function preDrawImage(_currentTask: Task | undefined) {
-  console.log('preDrawImage=>curTask:',store.currentTask);
-  
+  console.log("preDrawImage=>curTask:", store.currentTask);
+
   if (!_currentTask?.libraryId) return;
 
   let maxSliceWidth = 0; // 最大的裁切块宽度,图片容器以此为准
@@ -192,11 +192,20 @@ export async function preDrawImage(_currentTask: Task | undefined) {
       const url = _currentTask.sliceUrls[sliceConfig.i - 1];
       const image = await loadImage(url);
       images[sliceConfig.i] = image;
+      const { x, y, w, h } = sliceConfig;
+      x < 0 && (sliceConfig.x = 0);
+      y < 0 && (sliceConfig.y = 0);
       if (sliceConfig.w === 0 && sliceConfig.h === 0) {
         // 选择整图时,w/h 为0
         sliceConfig.w = image.naturalWidth;
         sliceConfig.h = image.naturalHeight;
       }
+      if (x <= 1 && y <= 1 && w <= 1 && h <= 1) {
+        sliceConfig.x = image.naturalWidth * x;
+        sliceConfig.y = image.naturalHeight * y;
+        sliceConfig.w = image.naturalWidth * w;
+        sliceConfig.h = image.naturalHeight * h;
+      }
     }
 
     maxSliceWidth = Math.max(..._currentTask.sliceConfig.map((v) => v.w));
@@ -245,8 +254,8 @@ export async function preDrawImage(_currentTask: Task | undefined) {
 }
 
 export async function preDrawImageHistory(_currentTask: Task | undefined) {
-  console.log('preDrawImageHistory=>curTask:',store.currentTask);
-  
+  console.log("preDrawImageHistory=>curTask:", store.currentTask);
+
   if (!_currentTask?.libraryId) return;
 
   let maxSliceWidth = 0; // 最大的裁切块宽度,图片容器以此为准
@@ -269,11 +278,20 @@ export async function preDrawImageHistory(_currentTask: Task | undefined) {
       const url = _currentTask.sliceUrls[sliceConfig.i - 1];
       const image = await loadImage(url);
       images[sliceConfig.i] = image;
+      const { x, y, w, h } = sliceConfig;
+      x < 0 && (sliceConfig.x = 0);
+      y < 0 && (sliceConfig.y = 0);
       if (sliceConfig.w === 0 && sliceConfig.h === 0) {
         // 选择整图时,w/h 为0
         sliceConfig.w = image.naturalWidth;
         sliceConfig.h = image.naturalHeight;
       }
+      if (x <= 1 && y <= 1 && w <= 1 && h <= 1) {
+        sliceConfig.x = image.naturalWidth * x;
+        sliceConfig.y = image.naturalHeight * y;
+        sliceConfig.w = image.naturalWidth * w;
+        sliceConfig.h = image.naturalHeight * h;
+      }
     }
 
     maxSliceWidth = Math.max(..._currentTask.sliceConfig.map((v) => v.w));
@@ -321,7 +339,6 @@ export async function preDrawImageHistory(_currentTask: Task | undefined) {
   }
 }
 
-
 export function addFileServerPrefixToTask(rawTask: Task): Task {
   const newTask = JSON.parse(JSON.stringify(rawTask)) as Task;